A compound image is an image that depicts multiple types of content with completely different characteristics. For a non-limiting example, a screenshot may contain textual images (such as simple text) rendered on solid background as well as continuous-tone images. Since the characteristics of textual images and continuous-tone images are substantially different—textual images typically have very few colors with sharp edges separating pixels of different colors, whereas continuous-tone images tend to have a large number of colors with smooth transitions between neighboring pixels, it is very difficult to design a single compression approach that works well for compound images.
One way to address the challenge of compressing compound images is to adopt the Mixed Raster Content (MRC) model, which segments a compound image into multiple layers and compresses each of the multiple layers with a separate compressor. For a non-limiting example, a screenshot can be segmented into a layer containing text and simple graphics as well as a layer containing continuous-tone images. Since MRC distributes the pixels of an image across multiple layers, each layer typically contains “don't care” pixels (or holes) whose values are determined by other layers. Some compression methods segment an image into blocks of pixels and operate on these blocks. A block of pixels in any layer of an image may contain “don't care” pixels only and, therefore, is not required for the reconstruction of the image from the individual layers. Such a block is referred to hereinafter as a “don't care” block. If a block contains at least one non-“don't care” pixel, it is not a “don't care” block. For the efficient compression of a compound image, where a layer of the image to be compressed contains “don't care” pixels and blocks, it is important to reduce or eliminate overhead in the compressed byte stream caused by unnecessary operation on the “don't care” blocks in the layers. In certain applications, it is also important to enable the compression of the compound image in web-based execution environments without altering the actual compressor(s) being used.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent upon a reading of the specification and a study of the drawings.
a)-(e) illustrate an example of block-based recomposition of a compound image in accordance with
The approach is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” or “one” or “some” embodiment(s) in this disclosure are not necessarily to the same embodiment, and such references mean at least one.
A new approach is proposed that contemplates systems and methods to support block-based compression of a compound image by skipping “don't care” blocks in the layers of the image while neither introducing significant overhead nor requiring changes to the compression method used. More specifically, the block-based compression approach first segments a compound image into multiple layers. The approach then recomposes a new set of image layers, possibly with new dimensions, from only the non-“don't care” blocks in the layers of the original image, effectively skipping the “don't care” blocks in the original image, before proceeding to compress the newly composed image. This step does not impact the dimensions or resolution of the decompressed image. The approach may later decompress the compressed image layers and restore the image by copying the decompressed blocks to their respective positions in the original image. Since such an approach does not require source code access, it works with any “off-the-shelf” compression methods and can leverage highly optimized compression functions that may already be available in the target environment, such as a JPEG decoder/compressor in the native Flash runtime environment or hardware-optimized JPEG decoders on mobile devices. In addition, such approach does not introduce any overhead in practical applications such as screen-sharing.
As used hereinafter, a (two-dimensional) image may be segmented into one or more layers, wherein each layer has M×N number of blocks measuring M blocks in x-dimension and N blocks in y-dimension, respectively, wherein each block is of the size of L×L pixels. Thus, each layer in the image has M×L pixels in x-dimension and N×L pixels in y-dimension with a total of M×N×L×L pixels.
In the example of
In the example of
In the example of
In the example of
In the example of
If all non-“don't care” blocks fit into the maximum width of the compressor being used, the layer recomposition engine 104 simply arranges all non-“don't care” blocks in the layer in a single row, i.e., the layer recomposition engine 104 selects dimensions (N*L)×L;
Otherwise: the layer recomposition engine 104 computes the prime factors of N=k0*k1* . . . *kn, where kis are prime factors of N, and tries to select dimensions by splitting the set of prime factors into two separate sets and computing the width and height, respectively, by multiplying the prime factors in the two sets, i.e., the layer recomposition engine 104 selects dimensions (kx0*kx1* . . . *kxw*L)×(ky0*ky1* . . . *kyh*L) for the new recomposed layer with non-“don't care” blocks only.
If no valid dimensions are found in the previous step, the layer recomposition engine 104 increases N by one and repeats the previous step until it finds valid dimensions.
After determining the dimensions for each of the one or layers, the layer recomposition engine 104 recomposes each of the one or more new image layers by copying all non-“don't care” blocks in each of the original image layers, from top-to-bottom and left-to-right, into the corresponding newly composed image layer.
By recomposing the new image layers from only the non-“don't care” blocks in the layers of the original image layers, the layer recomposition engine 104 eliminates or reduces the overhead introduced by “don't care” blocks when compressing a layer with the afore-mentioned blocked-based compression approach. More specifically, no value, not even arbitrary, average, or uniform one, needs to be assigned to any of the “don't care” pixels in the “don't care” blocks for compression efficiency considerations, since these pixels and blocks will not be compressed at all. Furthermore, no separate header is needed for each of the “don't care” or non-“don't care” blocks that are to be compressed or skipped, effectively eliminating the overhead introduced by such headers during compression. In addition, since only layers of the recomposed new image that skips all “don't care” blocks are to be compressed, there is no need to modify the compressors to skip such “don't care” blocks, effectively eliminating the need to access, change, or optimize the source code of the compressors being used, which is often either straight-out impossible in some environments (e.g., AJAX running inside of a browser) or prohibitively expensive in other environments (e.g., ActionScript being executed by Adobe's Flash Player) due to slow execution speeds.
In the example of
In the example of
While the system 100 depicted in
In the example of
a)-(e) illustrate an example of block-based recomposition of a compound image in accordance with
One embodiment may be implemented using a conventional general purpose or a specialized digital computer or microprocessor(s) programmed according to the teachings of the present disclosure, as will be apparent to those skilled in the computer art. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art. The invention may also be implemented by the preparation of integrated circuits or by interconnecting an appropriate network of conventional component circuits, as will be readily apparent to those skilled in the art.
One embodiment includes a computer program product which is a machine readable medium (media) having instructions stored thereon/in which can be used to program one or more hosts to perform any of the features presented herein. The machine readable medium can include, but is not limited to, one or more types of disks including floppy disks, optical discs, DVD, CD-ROMs, micro drive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data. Stored on any one of the computer readable medium (media), the present invention includes software for controlling both the hardware of the general purpose/specialized computer or microprocessor, and for enabling the computer or microprocessor to interact with a human viewer or other mechanism utilizing the results of the present invention. Such software may include, but is not limited to, device drivers, operating systems, execution environments/containers, and applications.
The foregoing description of various embodiments of the claimed subject matter has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the claimed subject matter to the precise forms disclosed. Many modifications and variations will be apparent to the practitioner skilled in the art. Particularly, while the concept “component” is used in the embodiments of the systems and methods described above, it will be evident that such concept can be interchangeably used with equivalent concepts such as, class, method, type, interface, module, object model, and other suitable concepts. Embodiments were chosen and described in order to best describe the principles of the invention and its practical application, thereby enabling others skilled in the relevant art to understand the claimed subject matter, the various embodiments and with various modifications that are suited to the particular use contemplated.
Number | Name | Date | Kind |
---|---|---|---|
5168532 | Seppi et al. | Dec 1992 | A |
5576548 | Clarke et al. | Nov 1996 | A |
5631982 | Inselberg et al. | May 1997 | A |
5933540 | Lakshminarayanan et al. | Aug 1999 | A |
6324305 | Holladay et al. | Nov 2001 | B1 |
6941024 | Mukherjee | Sep 2005 | B2 |
6975742 | Cheng | Dec 2005 | B2 |
6990252 | Shekter | Jan 2006 | B2 |
7027647 | Mukherjee et al. | Apr 2006 | B2 |
7043079 | Malvar et al. | May 2006 | B2 |
7139433 | Li | Nov 2006 | B2 |
7321674 | Vuylsteke | Jan 2008 | B2 |
7397952 | Malvar et al. | Jul 2008 | B2 |
20020034337 | Shekter | Mar 2002 | A1 |
20020064313 | Cheng | May 2002 | A1 |
20030048954 | Matthews | Mar 2003 | A1 |
20030082503 | Suzuki et al. | May 2003 | A1 |
20030123729 | Mukherjee et al. | Jul 2003 | A1 |
20030133617 | Mukherjee | Jul 2003 | A1 |
20030185454 | Simard et al. | Oct 2003 | A1 |
20030214296 | Carlini et al. | Nov 2003 | A1 |
20040114789 | Saha et al. | Jun 2004 | A1 |
20040167387 | Wollenweber et al. | Aug 2004 | A1 |
20040179742 | Li | Sep 2004 | A1 |
20040223636 | Edic et al. | Nov 2004 | A1 |
20040227758 | Curry et al. | Nov 2004 | A1 |
20050008115 | Tsukagoshi | Jan 2005 | A1 |
20050180647 | Curry et al. | Aug 2005 | A1 |
20050180648 | Curry et al. | Aug 2005 | A1 |
20050190878 | De Man et al. | Sep 2005 | A1 |
20050281474 | Huang | Dec 2005 | A1 |
20060029285 | Hein et al. | Feb 2006 | A1 |
20060045357 | Schwartz et al. | Mar 2006 | A1 |
20060269151 | Sakuyama | Nov 2006 | A1 |
20060277520 | Gennari | Dec 2006 | A1 |
20070189615 | Liu et al. | Aug 2007 | A1 |
20080050023 | Feng et al. | Feb 2008 | A1 |
20080144952 | Chen et al. | Jun 2008 | A1 |
Number | Date | Country |
---|---|---|
WO2005106784 | Nov 2005 | WO |
Entry |
---|
De Queiroz, Ricardo L., “On Data Filling Algorithms for MRC Layers”, Image Processing 2000. Processingm, 2000 International Conference on Sep. 10-13, 2000, IEEE, Piscatawaay NJ, USA, Sep. 10, 2000, vol. 2, pp. 586-589, 4 pgs. |
Simard, Patrice et al., “A Wavelet Coder for Masked Images”, 20010327; 20010327-20010329, Mar. 27, 2001, pp. 93-102, 10 pgs. |
Mixed Raster Content (MRC) model (Mixed Raster Content Model for Compound Image Compression, Ricardo de Queiroz, Robert Buckley and Ming Xu, Corporate Research & Technology, Xerox Corp. Proc. SPIE 3653, Visual Communications and Processing '99, 1106 (Dec. 28, 1998); doi:10.1117/12.334618. |
Compound Image Compression for Real-Time Computer Screen Image Transmission, IEEE Transactions on Image Processing, vol. 14, No. 8, pp. 993-1005, Aug. 2005; T. Lin and P. Hao. |
JPEG-Matched MRC Compression of Compound Documents, in ICIP '01, pp. 434-437, 2001; D. Mukherjee, N. Memon, and A. Said. |
Lossless Compression of Layered Documents: how to Set the “Don't Care” pixels, Anna Ansalone and Bruno Capentieri, Proceedings of the 5th WSEAS Int. Conf. on Data Networks, Communications & Computers, Bucharest, Romania, Oct. 16-17, 2006. |
Number | Date | Country | |
---|---|---|---|
20100290704 A1 | Nov 2010 | US |