WO2001035340A1 - System and method for image compression - Google Patents

System and method for image compression Download PDF

Info

Publication number
WO2001035340A1
WO2001035340A1 PCT/CA2000/001307 CA0001307W WO0135340A1 WO 2001035340 A1 WO2001035340 A1 WO 2001035340A1 CA 0001307 W CA0001307 W CA 0001307W WO 0135340 A1 WO0135340 A1 WO 0135340A1
Authority
WO
WIPO (PCT)
Prior art keywords
tile
background color
masks
color
represent
Prior art date
Application number
PCT/CA2000/001307
Other languages
French (fr)
Inventor
Kent Montgomery Brothers
Original Assignee
Creo Products, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Creo Products, Inc. filed Critical Creo Products, Inc.
Priority to JP2001536998A priority Critical patent/JP2003514416A/en
Priority to AU12612/01A priority patent/AU1261201A/en
Priority to EP00974209A priority patent/EP1238370A1/en
Publication of WO2001035340A1 publication Critical patent/WO2001035340A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Definitions

  • the present invention relates generally to data reduction techniques for digitized images and, more particularly, to data reduction utilizing different image representation techniques for different parts of the image.
  • Digital imaging systems have improved the process of creating, editing and rendering images. In particular, such systems have decreased the amount of processing time necessary to produce a final product. Nonetheless, the ability of digital imaging systems to process and, particularly, to render images is limited by the memory capacity of the systems.
  • an image is often divided into fixed spatial coordinates on a rectangular grid where each sample point has one color and is referred to as a picture element, commonly known as a pixel or a "dot" (not to be confused with the halftone dot used in the printing industry).
  • a picture element commonly known as a pixel or a "dot" (not to be confused with the halftone dot used in the printing industry).
  • Such an image is usually referred to as a raster image and is typically represented and stored in a format which uses one or more bits per pixel to identify the color of each pixel.
  • the total amount of data necessary to represent an image depends on several factors, some of which include the image size, the resolution of the image, and the number of bits per pixel.
  • Raster Image Processor would typically not be able to handle the volume of data in a printing format of a 1200 dot per inch (dpi) image file represented in contone raster format, such as what might be required for imaging data for a map.
  • a standard printing form sized 32 inches by 44 inches full of 1200 dpi, 8 bits-per-pixel images would require about 2 gigabytes of memory, well beyond that available on most rendering/RIP workstations.
  • the image consists of some photographic content and a large portion of "line work", i.e., text or geometric objects which delineate areas of constant color which are amenable to representation with a small number of bits per pixel.
  • the present invention provides a system and method of reducing the volume of data required to represent an image by "tiling" the image (i.e., subdividing the image into smaller, preferably rectangular areas) and representing each tile using a "fill” operation and/or one or more 1 -bit-per-pixel masks, or by representing each tile with an indexed image when such a representation of the tile requires fewer bits per pixel than in the original image.
  • a digital image described by raster content encoding the pixels using an original number of bits per pixel is initially provided.
  • the image is then divided into smaller sub-areas or tiles.
  • Each of the tiles is individually analyzed to determine whether a data volume savings is worthwhile if the techniques of the present invention is utilized. In particular, this is accomplished by comparing the required number of masks necessary to represent the tile to a threshold number of masks, typically set equal to the original number of bits per pixel representing the image or predetermined to be some smaller number deemed to result in a worthwhile data volume savings.
  • the threshold number of masks can be predetermined or user-defined via a user input or a system configuration setting.
  • a representation for the tile using fills and/or masks is generated. Otherwise, a representation using the original number of bits per pixel or using an indexed image requiring fewer bits per pixel for the tile is used.
  • a representation of an image may specify a "default" color (typically white but also commonly colorless) so that any pixel which has that color does not need to be represented explicitly.
  • a default color typically white but also commonly colorless
  • a test is made to determine whether there are no default-colored pixels in the tile (a determination based on the image) and whether a non-default background color should be chosen (a user option).
  • the default is selected as the background color.
  • a non-default color is selected as the background color and a representation is generated to fill the tile with the selected non-default background color. Then, if there are any non-background colors, for each such color, a representation is generated for the pixels in an area of the tile using a 1-bit-per-pixel mask.
  • the area of the mask can be defined by the boundaries of the tile or, alternatively, it can be a minimally sized area within the tile in which pixels of the current color are located.
  • the test could query whether there are only a few default-colored pixels in the tile. If there are only a few and default-colored pixels can be explicitly represented (a function of the representation system or conditions established prior to rendering the image), then a non-default background is selected and a representation is generated to fill the tile with the selected non-default background color as described above. However, if there are a large number of default-colored pixels in the tile, the default is selected as the background color.
  • the test could simply query whether there are any default-colored pixels in the tile without testing whether 5 a non-default background should be chosen. In this case, if there are no default-colored pixels in the tile, a non-default background will be selected. If there are any default-colored pixels, a default background is selected. In yet another embodiment, a background color is simply selected and, if it needs to be rendered, instructions to fill the tile with that color are generated. In still another further
  • a background color is not chosen at all and the tile is represented using masks alone, if a data savings was deemed achievable by use of such masks.
  • the required number of masks to represent the tile is greater than or equal to the threshold number
  • a representation is generated for the tile using the original number of bits per pixel provided by the original raster content.
  • the original format and number of bits per pixel are used to represent the entire tile.
  • the original format and number of bits per pixel can be used only in a minimal area within the tile. In this case, the tile is examined to
  • the tile may be represented such that the value of each pixel is encoded as an index which references
  • a table of the colors in the tile (as distinct from the entire image) as will be appreciated by those skilled in the art and others. For example, if there are 16 or fewer colors in the tile then a 4-bit index is sufficient to identify the color so that only 4 bits per pixel are required for the tile. In this embodiment, a test can be performed to indicate whether a data savings can be achieved using the index as compared to using the original bits per pixel for the tile. If so, an index is used to represent the colors in the tile. If not, the original bits per pixel are used.
  • a technique of indexing tiles in the image could be used.
  • the original image is first divided into tiles. Then, for each tile, the colors are identified and a test is performed to determine whether a data savings can be achieved using an indexed representation for the tile. If so, the tile is represented using an index. If not, the tile is represented using the original bits per pixel.
  • FIGURE 1 is a block diagram of a system in which the present invention is implemented
  • FIGURE 2 is a flow diagram illustrating the logic of the present invention
  • FIGURE 3 is a flow diagram illustrating how the tiles are represented using fills and/or masks
  • FIGURE 4 is a flow diagram illustrating alternative logic for representing a tile with its original number of bits per pixel or a smaller index
  • FIGURE 5 is a flow diagram illustrating yet further alternative logic for representing a tile with its original number of bits per pixel or a smaller index
  • FIGURE 6 is a flow diagram illustrating alternative logic to that shown in FIGURE 2.
  • FIGURE 1 is a simplified block diagram of a system 20 in which the present invention is implemented.
  • the system 20 includes a processing unit 24 that receives and processes an original digital image 22 in accordance with the present invention.
  • the original image 22 is created using methods well known in the art.
  • the original image 22 is stored in a computer-readable file having a file format for representing bit-mapped graphic data either directly or in an indexed manner. Examples of such file formats include tagged image file format (TIFF), TIFF for Information Technology (TIFF/IT), Scitex (Handshake or native) Line Work (LW), and others.
  • TIFF tagged image file format
  • TIFF/IT TIFF for Information Technology
  • Scitex Handshake or native Line Work
  • LW Line Work
  • the original digital image includes a plurality of pixels. Each of the pixels in the original image is represented by an original number of data bits, which may be an index, necessary for describing the characteristics of the pixel, such as color.
  • the original image 22 is transmitted to the processing unit 24 from any data source including, but not limited to, a local data source such as a computer workstation or server directly connected to the processing unit, a remote data source, or a computer-readable medium storing the original image such as a floppy disk.
  • the processing unit 24 includes an input/output port for receiving the transmitted original image 22.
  • the original image 22 can simply be stored on and retrieved from memory of the processing unit 24.
  • the processing unit 24 also includes a memory 23 for storing data and instructions necessary for reducing the volume of data representing the original digital image and a processor 25 for executing the instructions. More specifically, the memory 23 stores a data reduction program 27 formed in accordance with the present invention for reducing the volume of data representing the original image by using tiling, masking and/or indexing techniques. Once the processor 25 executes the data reduction program 27, a reduced-data-volume digital image 26 is produced. The reduced-data-volume digital image 26 can then be transmitted to another device for further processing or may be further processed by the processing unit 24.
  • the processing unit 24 can be a general purpose computer workstation or can be located within a Raster Image Processor (RIP) or any image rendering device. Accordingly, the reduced data volume digital image 26 may be directly transferred to other processes typically implemented by any of these devices.
  • RIP Raster Image Processor
  • the data reduction program 27 reduces the volume of data necessary to represent an image, in a format such as PostScript or Portable Document Format (PDF) which accommodates a mixture of raster formats, by using tiling, masking, and/or indexing techniques.
  • PDF Portable Document Format
  • the image is divided into smaller sub-areas or tiles.
  • Each of the tiles is then individually analyzed to determine whether a data volume savings is possible and worthwhile. This is essentially accomplished by comparing the number of bits per pixel required to represent the tile if the data reduction methods of the present invention are utilized with the original number of bits per pixel describing the image or some other threshold. If a data volume savings is possible and worthwhile, the data reduction methods of the present invention are used.
  • a background color for the tile is chosen and a representation for filling the tile with the background color is provided.
  • a representation is generated for identifying any remaining non-background colors in the tile using masks or an indexed representation.
  • the "color" of a pixel is not necessarily restricted just to an intensity for each component of a color space such as red-green-blue (RGB) or cyan-magenta-yellow-black (CMYK), but can also include degrees of transparency or other properties.
  • RGB red-green-blue
  • CYK cyan-magenta-yellow-black
  • a representation of an image may specify a "default" color (typically white but also commonly colorless) so that any pixel which has that color does not need to be represented explicitly.
  • a default color typically white but also commonly colorless
  • a given tile may be designated with a "background” color, which is typically the dominant color in the tile.
  • a mask is a 1-bit-per-pixel raster image. A mask is applied to an area of an image by first selecting a color and then, for each pixel of the mask which has the value 1, the corresponding pixel of the image area to which the mask is applied is changed to the selected color. For each pixel of the mask which has value 0, the corresponding pixel of the image area is left unchanged.
  • FIGURE 2 is a flow diagram that illustrates the logic of the data reduction program 27 of the present invention as implemented by the processing unit 24.
  • an image is divided into tiles or blocks such that each tile represents a portion of the overall image. This can be accomplished in a predetermined fashion or in a dynamic fashion based on the tile content.
  • the tiles may be uniformly sized. However, it will be appreciated by those skilled in the art and others that the tile size can be varied from tile to tile.
  • the number of tiles into which the image is divided can also vary and depends primarily upon the number of colors represented in each tile. The purpose of dividing the image into tiles is to create smaller areas with fewer colors that, therefore, need less data to represent the image than required by the original raster content.
  • a first tile is retrieved. Then, the colors in the tile are identified.
  • an array which includes, for each color in the total image, a counter for the number of pixels for that color as well as elements for storing the minimum and maximum horizontal and vertical coordinates of pixels of that color in the tile.
  • Each pixel in the tile is analyzed such that every time a pixel of a particular color is found, the counter and minimum and maximum coordinates for that particular color are updated.
  • the counters are initially set to a "0" value, if a counter has a positive value after analyzing the pixels in the tile, then it is known that the color represented by such counter is present in the tile.
  • the colors in each tile are tracked.
  • the colors in the tile can be identified by setting a flag to indicate merely the presence of a particular color in the tile.
  • a sorted list can be maintained. Once the number of colors in the list equals or exceeds the threshold number of masks, the generation of the list may be aborted and the tile represented using the original format and number of bits per pixel or using an index for the tile (as distinct from the entire image). If this embodiment is implemented, the alternative embodiments (described below) that permit the identification of minimally sized areas within the tile can only be implemented if the tile is completely analyzed, but require a modification because complete information about all the colors in the tile and the maximum and minimum horizontal and vertical coordinates for each color in the tile need to be identified for those embodiments.
  • a test is made to determine whether the required number of masks is greater than or equal to some threshold number of masks.
  • the required number of 1-bit masks to represent the image is logically determined by 1) the colors of the pixels in the tile together with 2) a decision by the user of the system, or predetermined as a fixed condition of the system, as to whether or not to use fills for background colors when possible.
  • n denote the number of colors in the tile; let t be 0 if there is no default color or, if there is a default, there are no default-colored pixels in the tile; let t be 1 if there is a default color and there are default-colored pixels in the tile; and let f be 0 if fill operations are not to be used for background colors and 1 if they are.
  • the required number of masks for a tile is n-(t
  • the threshold number of masks might be set equal to the original number of bits per pixel required to represent the entire image as provided in the original raster content. Essentially, a determination is being made at a step 38 regarding whether a data volume savings can be made for this tile using the masks. However, the threshold number of masks is preferably set to some number less than the original number of bits per pixel either to satisfy a certain level of data volume savings or if an indexed representation would be more effective. For example, a user could decide that although the tile is originally represented by 8 bits per pixel, a satisfactory data reduction would involve using no more than 4 bits per pixel to represent the tile, i.e. 4 masks. Thus, the user would select the threshold number of masks to equal 5. It will be appreciated by those skilled in the art and others that the threshold number of masks can be hard-coded into the algorithm or user-defined as a user input or system configuration setting, or varied dynamically depending on the size and/or contents of the tile.
  • a representation for the tile is generated using the original format and number of bits per pixel or using an index which uses fewer bits than the original number. See step 40. Generating such a representation by using either computer instructions, image description operators, or data structures is well-known in the art and thus will not be described in any further detail here. With respect to the option of indexing, if the number of colors in the tile were less than or equal to 16, then a 4-bit index would be sufficient to represent each pixel and would result in a data savings if it is less than the original number of bits per pixel. If the number of colors were less than or equal to 256, an 8-bit index would suffice. Indexed representations are well understood by those skilled in the art and others.
  • step 40 or 46 After either step 40 or 46, another test is made at a step 42 to determine whether there is another tile to process. If there is another tile to process, the next tile is retrieved at a step 44 and the process described above is repeated as shown in FIGURE 2 using the next tile. If there are no other tiles to analyze, the process ends.
  • FIGURE 3 is a flow diagram illustrating how tiles are represented using fills and or masks as required in step 46 of FIGURE 2.
  • a two-part test is made to determine whether both of the following conditions have been met: 1.) whether there are no default-colored pixels in the tile and 2.) whether a non-default background for the tile should be chosen. If the answer to either condition is no, meaning that either the tile includes default-colored pixels or that a non-default background should not be chosen, the default color is selected as the background color for the tile at a step 62. Beyond the mere selection of the default as the background color for the tile, no data is necessary to represent the default background.
  • a non-default background color is selected at a step 64.
  • the choice of the background color could be arbitrary from among the colors in the tile. However, it will be appreciated by those skilled in the art and others that the choice of the background color could be based upon some criterion. For example, a mask for each of the colors in the tile could be calculated, as will be described in further detail below, and this data could then be compressed. The color of the mask that compresses the least could then be chosen as the background color.
  • the color which has the greatest number of pixels in the tile, or for which the bounding rectangle is largest could be determined and selected as the background color. This determination could be made by examining the counters associated with the array of potential colors available for the tile. In any case, once the non-default background color is selected, a computer-readable representation is generated to fill the tile with the non-default background color at a step 66.
  • step 60 is optional. Instead of performing the test indicated in step 60 (that is, removing step 60 entirely), the algorithm can be hard-coded to automatically select the default color as the background, or if the default color (e.g. white) is renderable, to select even some other color as the background color. Alternatively, the algorithm can simply be hard-coded to select any color identified in the tile as the background color either arbitrarily or based upon some criterion such as those described above with reference to step 64.
  • the default color e.g. white
  • the algorithm can simply be hard-coded to select any color identified in the tile as the background color either arbitrarily or based upon some criterion such as those described above with reference to step 64.
  • steps 60-66 can be eliminated altogether such that there is no background color chosen and processing continues as described below such that the tile is represented using only masks if a data savings was deemed worthwhile.
  • test could query whether there are only a few renderable default-colored pixels in the tile. If there are only a few, then a non-default background is selected and a representation is generated to fill the tile with the selected non-default background color as described above. However, if there are a large number of default-colored pixels in the tile, the default is selected as the background color.
  • the test could simply query whether there are any default-colored pixels in the tile without testing whether a non-default background should be chosen. In this case, if there are no default-colored pixels in the tile, a non-default background will be selected. If there are any default-colored pixels, the default is selected as the background color.
  • step 68 a test is made to determine whether there are any unprocessed non-background colors in the tile. See step 68. If the answer is no, processing returns to FIGURE 2. See step 70. In particular, if this happens at the first entry to block 68, then the tile is entirely the background color. In this case, if the tile is the default color, no data is necessary to represent the tile as described above and, thus, the tile most certainly requires far fewer bits per pixel than originally required for that area in the image.
  • the tile is a solid non-default color
  • bits necessary to identify the color and the tile boundaries and to fill that tile with the identified color are still far fewer than the original number of bits per pixel for that area of the image provided the tile is not too small.
  • a data volume savings is achieved.
  • a non-background color is identified at a step 72.
  • a representation is generated for identifying the pixels in an area of the tile with the current color as a 1 -bit-per-pixel mask.
  • the mask identifies which pixels within an identified boundary are to be rendered with the identified color.
  • the area of the mask is defined by the boundaries of the tile and, thus, the mask applies to the entire tile.
  • the area in the tile for which the mask is provided can be minimized by determining the minimal area in which the current color is located. This is accomplished by determining the minimum and maximum horizontal and vertical coordinates in the tile where the current color is located.
  • the boundaries of the minimal area can be determined as those skilled in the art and others will appreciate.
  • the mask for the current color can be provided in the identified minimal area only.
  • you had a circle of diameter 200 pixels in a square tile of 500 pixels instead of storing a mask with a 1 -bit-per-pixel mask for 500 by 500 pixels you can store only the information for the smallest square containing the circle, i.e., 1 -bit-per-pixel for 200 by 200 pixels plus the information about the position of the mask within the larger square.
  • processing returns to step 68 to determine whether there are any more unprocessed non-background colors and the process described above is repeated as shown in FIGURE 3 and as described above.
  • a next non-background color is identified at step 72 and a mask is generated. This occurs until all non-background colors have been processed.
  • FIGURE 4 illustrates how generating a representation for a tile using the original format and number of bits per pixel or using a smaller index, as required at step 40 of FIGURE 2, can alternatively be accomplished in accordance with another embodiment of the present invention.
  • the tile instead of generating a representation providing the tile boundaries and the original number of bits per pixel or providing a smaller index for the area in the image corresponding to the designated tile area, the tile can be represented by identifying a background color for the entire tile, identifying boundaries for a minimal area in the tile in which the remaining colors are contained, and utilizing the original format and number of bits per pixel or a smaller index for the identified minimal area only.
  • this corner area can be identified so that the original number of bits per pixel or smaller index need only be used for this minimal area.
  • the rest of the tile is the default color, no further data need be provided.
  • the rest of the tile is some other color, a representation providing the color and tile boundaries and requesting that the tile be filled with the identified color is also generated.
  • FIGURE 5 illustrates another alternative embodiment for the method of generating a representation for a tile using the original format and number of bits per pixel or using a smaller index, as required at step 40 of FIGURE 2.
  • a test is made to determine whether using an index to represent the colors in the tile results in a data savings over the original number of bits per pixel. If the answer to this test is yes, then the colors in the tile are represented using an index at a step 94. If the answer to this test is no, the tile is represented with the original bits per pixel at a step 92. Then, at block 96, processing returns to FIGURE 2.
  • FIGURE 6 is a flow diagram illustrating alternative logic to that shown in
  • FIGURE 2 In general, rather than determining whether the required number of masks is greater than or equal to the threshold number of masks, a test is made to determine whether a data savings can be achieved simply by using an index for the tile.
  • the image is first divided into tiles at a step 100. Then at a step 102, a first tile is retrieved. Next, the colors in this tile are identified at a step 104, and a test is made at a step 106 to determine whether a data savings can be achieved by representing the tile using an index. If the answer to the test at step 106 is no, the original bits per pixel are used to represent the tile. See step 108.
  • a data reduction method in accordance with the present invention has a number of advantages. By reducing the number of bits required to represent the image to. less than originally required, the file containing the image can be more easily stored and processed to render the image. In many cases, it makes rendering the image possible. In other cases, it speeds up the processing time.

Abstract

A system and method for reducing the volume of data necessary to represent an image by utilizing tiling and masking techniques is disclosed. Initially, an image described by raster content having an original number of bits per pixel is provided. The image is divided into tiles such that each of the tiles represents a portion of the image. Then, for each of the tiles, the following steps are performed: (a) the colors in the tile are identified; (b) the required number of masks are compared to a threshold number of masks to determine if data reduction by using masks is worthwhile; (c) if the required number of masks is less than the threshold number of masks, a representation of the tile is generated using fills and/or masks; and (d) if the required number of masks is greater than or equal to the maximum number of masks, a representation for the tile using the original format and number of bits per pixel or a smaller index is generated.

Description

SYSTEM AND METHOD FOR IMAGE COMPRESSION
Related Applications The present invention claims priority under 35 U.S.C. § 119(e) to provisional application Serial No. 60/164,666, filed on November 9, 1999, the disclosure of which is hereby expressly incorporated by reference.
Field of the Invention The present invention relates generally to data reduction techniques for digitized images and, more particularly, to data reduction utilizing different image representation techniques for different parts of the image.
Background of the Invention
Digital imaging systems have improved the process of creating, editing and rendering images. In particular, such systems have decreased the amount of processing time necessary to produce a final product. Nonetheless, the ability of digital imaging systems to process and, particularly, to render images is limited by the memory capacity of the systems.
In digital imaging systems, an image is often divided into fixed spatial coordinates on a rectangular grid where each sample point has one color and is referred to as a picture element, commonly known as a pixel or a "dot" (not to be confused with the halftone dot used in the printing industry). Such an image is usually referred to as a raster image and is typically represented and stored in a format which uses one or more bits per pixel to identify the color of each pixel. The total amount of data necessary to represent an image depends on several factors, some of which include the image size, the resolution of the image, and the number of bits per pixel.
Large high-resolution images, particularly those containing "continuous tone" or "contone" content (i.e., 8 or more bits per color component per pixel), require an extensive amount of data to represent the images. Because imaging rendering devices have a limited memory and processing capacity, such large high-resolution images often place a demand on the image rendering devices that exceeds their image rendering capabilities. As an example, a Raster Image Processor (RIP) would typically not be able to handle the volume of data in a printing format of a 1200 dot per inch (dpi) image file represented in contone raster format, such as what might be required for imaging data for a map. For example, a standard printing form sized 32 inches by 44 inches full of 1200 dpi, 8 bits-per-pixel images would require about 2 gigabytes of memory, well beyond that available on most rendering/RIP workstations. However, in many practical applications, the image consists of some photographic content and a large portion of "line work", i.e., text or geometric objects which delineate areas of constant color which are amenable to representation with a small number of bits per pixel.
Therefore, a need exists for a method of reducing the volume of data representing such high resolution images so that the images can be adequately processed and rendered in digital imaging systems.
Summary of the Invention The present invention provides a system and method of reducing the volume of data required to represent an image by "tiling" the image (i.e., subdividing the image into smaller, preferably rectangular areas) and representing each tile using a "fill" operation and/or one or more 1 -bit-per-pixel masks, or by representing each tile with an indexed image when such a representation of the tile requires fewer bits per pixel than in the original image.
Specifically, a digital image described by raster content encoding the pixels using an original number of bits per pixel is initially provided. The image is then divided into smaller sub-areas or tiles. Each of the tiles is individually analyzed to determine whether a data volume savings is worthwhile if the techniques of the present invention is utilized. In particular, this is accomplished by comparing the required number of masks necessary to represent the tile to a threshold number of masks, typically set equal to the original number of bits per pixel representing the image or predetermined to be some smaller number deemed to result in a worthwhile data volume savings. Furthermore, the threshold number of masks can be predetermined or user-defined via a user input or a system configuration setting. If the required number of masks is less than the threshold number of masks, meaning that a data volume savings is possible and worthwhile, a representation for the tile using fills and/or masks is generated. Otherwise, a representation using the original number of bits per pixel or using an indexed image requiring fewer bits per pixel for the tile is used.
In the following description, it will be appreciated that a representation of an image may specify a "default" color (typically white but also commonly colorless) so that any pixel which has that color does not need to be represented explicitly. In particular, there is no need to explicitly represent the pixels in a tile that have the default color, and if a tile consists entirely of the default color, then it requires no representation at all. In accordance with other aspects of the present invention, to represent the tile using fills and/or masks, a test is made to determine whether there are no default-colored pixels in the tile (a determination based on the image) and whether a non-default background color should be chosen (a user option). If there are default-colored pixels in the tile or if a non-default background color should not be chosen, the default is selected as the background color. On the other hand, if there are no default-colored pixels in the tile and a non-default background color should be chosen, a non-default color is selected as the background color and a representation is generated to fill the tile with the selected non-default background color. Then, if there are any non-background colors, for each such color, a representation is generated for the pixels in an area of the tile using a 1-bit-per-pixel mask. The area of the mask can be defined by the boundaries of the tile or, alternatively, it can be a minimally sized area within the tile in which pixels of the current color are located.
In accordance with further aspects of the invention, instead of testing whether there are no default-colored pixels and whether a non-default background color should be chosen before actually selecting the background color, other various criteria can be used to select the background color. For example, in one embodiment, the test could query whether there are only a few default-colored pixels in the tile. If there are only a few and default-colored pixels can be explicitly represented (a function of the representation system or conditions established prior to rendering the image), then a non-default background is selected and a representation is generated to fill the tile with the selected non-default background color as described above. However, if there are a large number of default-colored pixels in the tile, the default is selected as the background color. In another embodiment, the test could simply query whether there are any default-colored pixels in the tile without testing whether 5 a non-default background should be chosen. In this case, if there are no default-colored pixels in the tile, a non-default background will be selected. If there are any default-colored pixels, a default background is selected. In yet another embodiment, a background color is simply selected and, if it needs to be rendered, instructions to fill the tile with that color are generated. In still another further
10 alternative embodiment, a background color is not chosen at all and the tile is represented using masks alone, if a data savings was deemed achievable by use of such masks.
In accordance with still further aspects of the invention, if the required number of masks to represent the tile is greater than or equal to the threshold number
,15 of masks, a representation is generated for the tile using the original number of bits per pixel provided by the original raster content. In one embodiment, the original format and number of bits per pixel are used to represent the entire tile. However, in an alternative embodiment, the original format and number of bits per pixel can be used only in a minimal area within the tile. In this case, the tile is examined to
20 determine which color, if chosen as a background color for the tile and represented as such, would cause the remaining colors to be located in the smallest sized rectangular area within the tile. Once this determination is made, a representation is generated for the tile with the identified color as a background and using the original format and number of data bits to represent the remaining colors in the image within the
25 identified rectangular area in the tile.
In yet another alternate embodiment where the required number of masks to represent the tile is greater than or equal to the threshold number of the masks, just as the original image may have been represented using an index, the tile may be represented such that the value of each pixel is encoded as an index which references
30 a table of the colors in the tile (as distinct from the entire image) as will be appreciated by those skilled in the art and others. For example, if there are 16 or fewer colors in the tile then a 4-bit index is sufficient to identify the color so that only 4 bits per pixel are required for the tile. In this embodiment, a test can be performed to indicate whether a data savings can be achieved using the index as compared to using the original bits per pixel for the tile. If so, an index is used to represent the colors in the tile. If not, the original bits per pixel are used.
In accordance with still yet another alternative embodiment rather than initially using the techniques of fills and/or masks to reduce the data volume of an image, a technique of indexing tiles in the image could be used. In this case, the original image is first divided into tiles. Then, for each tile, the colors are identified and a test is performed to determine whether a data savings can be achieved using an indexed representation for the tile. If so, the tile is represented using an index. If not, the tile is represented using the original bits per pixel. Brief Description of the Drawings
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: FIGURE 1 is a block diagram of a system in which the present invention is implemented;
FIGURE 2 is a flow diagram illustrating the logic of the present invention; FIGURE 3 is a flow diagram illustrating how the tiles are represented using fills and/or masks; and FIGURE 4 is a flow diagram illustrating alternative logic for representing a tile with its original number of bits per pixel or a smaller index;
FIGURE 5 is a flow diagram illustrating yet further alternative logic for representing a tile with its original number of bits per pixel or a smaller index; and
FIGURE 6 is a flow diagram illustrating alternative logic to that shown in FIGURE 2.
Detailed Description of the Preferred Embodiment
The present invention is directed to a system and method that reduces the volume of data required to represent an image by utilizing tiling, masking, and/or indexing techniques. FIGURE 1 is a simplified block diagram of a system 20 in which the present invention is implemented. As will be described in further detail below, the system 20 includes a processing unit 24 that receives and processes an original digital image 22 in accordance with the present invention. The original image 22 is created using methods well known in the art. The original image 22 is stored in a computer-readable file having a file format for representing bit-mapped graphic data either directly or in an indexed manner. Examples of such file formats include tagged image file format (TIFF), TIFF for Information Technology (TIFF/IT), Scitex (Handshake or native) Line Work (LW), and others. In such formats, the original digital image includes a plurality of pixels. Each of the pixels in the original image is represented by an original number of data bits, which may be an index, necessary for describing the characteristics of the pixel, such as color.
Initially, the original image 22 is transmitted to the processing unit 24 from any data source including, but not limited to, a local data source such as a computer workstation or server directly connected to the processing unit, a remote data source, or a computer-readable medium storing the original image such as a floppy disk. In this regard, the processing unit 24 includes an input/output port for receiving the transmitted original image 22. Alternatively, the original image 22 can simply be stored on and retrieved from memory of the processing unit 24.
The processing unit 24 also includes a memory 23 for storing data and instructions necessary for reducing the volume of data representing the original digital image and a processor 25 for executing the instructions. More specifically, the memory 23 stores a data reduction program 27 formed in accordance with the present invention for reducing the volume of data representing the original image by using tiling, masking and/or indexing techniques. Once the processor 25 executes the data reduction program 27, a reduced-data-volume digital image 26 is produced. The reduced-data-volume digital image 26 can then be transmitted to another device for further processing or may be further processed by the processing unit 24.
It will be appreciated by those skilled in the art and others that the processing unit 24 can be a general purpose computer workstation or can be located within a Raster Image Processor (RIP) or any image rendering device. Accordingly, the reduced data volume digital image 26 may be directly transferred to other processes typically implemented by any of these devices.
As will be described in further detail below, the data reduction program 27 reduces the volume of data necessary to represent an image, in a format such as PostScript or Portable Document Format (PDF) which accommodates a mixture of raster formats, by using tiling, masking, and/or indexing techniques. Generally, the image is divided into smaller sub-areas or tiles. Each of the tiles is then individually analyzed to determine whether a data volume savings is possible and worthwhile. This is essentially accomplished by comparing the number of bits per pixel required to represent the tile if the data reduction methods of the present invention are utilized with the original number of bits per pixel describing the image or some other threshold. If a data volume savings is possible and worthwhile, the data reduction methods of the present invention are used. Preferably, a background color for the tile is chosen and a representation for filling the tile with the background color is provided. It will be appreciated by those skilled in the art and others that if there is a default color which is the background color, no data or instructions are necessary to fill the tile with this color. Then, a representation is generated for identifying any remaining non-background colors in the tile using masks or an indexed representation. In this description, the "color" of a pixel is not necessarily restricted just to an intensity for each component of a color space such as red-green-blue (RGB) or cyan-magenta-yellow-black (CMYK), but can also include degrees of transparency or other properties. In particular it is important to distinguish between truly "white" pixels and "colorless" pixels (sometimes called "transparent") which may either become white by being rendered onto a white medium or become some other color by being rendered onto some other medium or some other image.
Even further, it will be appreciated that a representation of an image may specify a "default" color (typically white but also commonly colorless) so that any pixel which has that color does not need to be represented explicitly. In particular, there is no need to explicitly represent the pixels in a tile that have the default color, and if a tile consists entirely of the default color, then it requires no representation at all. In addition, a given tile may be designated with a "background" color, which is typically the dominant color in the tile. If the background color differs from the default color, it is necessary to explicitly represent this background color, typically with a "fill" instruction which requires negligible storage, and then all pixels in that tile are taken to be that color unless explicitly specified otherwise, e.g., by a "mask" which indicates which pixels are some other particular color. More precisely, a mask is a 1-bit-per-pixel raster image. A mask is applied to an area of an image by first selecting a color and then, for each pixel of the mask which has the value 1, the corresponding pixel of the image area to which the mask is applied is changed to the selected color. For each pixel of the mask which has value 0, the corresponding pixel of the image area is left unchanged. It will be appreciated by those skilled in the art and others that the roles of the values 0 and 1 may be exchanged in a particular implementation. Note that in some picture representation systems (including PostScript and PDF) the only pixels which are colorless are ones which are never "marked" or "painted". In such systems, it is not possible to fill with a non-colorless background color and then designate certain pixels as colorless.
FIGURE 2 is a flow diagram that illustrates the logic of the data reduction program 27 of the present invention as implemented by the processing unit 24. Beginning at a step 32, an image is divided into tiles or blocks such that each tile represents a portion of the overall image. This can be accomplished in a predetermined fashion or in a dynamic fashion based on the tile content. For example, the tiles may be uniformly sized. However, it will be appreciated by those skilled in the art and others that the tile size can be varied from tile to tile. Furthermore, the number of tiles into which the image is divided can also vary and depends primarily upon the number of colors represented in each tile. The purpose of dividing the image into tiles is to create smaller areas with fewer colors that, therefore, need less data to represent the image than required by the original raster content. At a step 34, a first tile is retrieved. Then, the colors in the tile are identified.
See step 36. This can be accomplished in a variety of ways as those skilled in the art and others will appreciate. In one embodiment, an array is provided which includes, for each color in the total image, a counter for the number of pixels for that color as well as elements for storing the minimum and maximum horizontal and vertical coordinates of pixels of that color in the tile. Each pixel in the tile is analyzed such that every time a pixel of a particular color is found, the counter and minimum and maximum coordinates for that particular color are updated. Assuming that the counters are initially set to a "0" value, if a counter has a positive value after analyzing the pixels in the tile, then it is known that the color represented by such counter is present in the tile. Thus, the colors in each tile are tracked. Alternatively, as will also be appreciated by those skilled in the art and others, if a simplified algorithm is desired, the colors in the tile can be identified by setting a flag to indicate merely the presence of a particular color in the tile.
As yet another alternative, if the number of bits per pixel (e.g., 32) is such that an array would be excessively large, then a sorted list can be maintained. Once the number of colors in the list equals or exceeds the threshold number of masks, the generation of the list may be aborted and the tile represented using the original format and number of bits per pixel or using an index for the tile (as distinct from the entire image). If this embodiment is implemented, the alternative embodiments (described below) that permit the identification of minimally sized areas within the tile can only be implemented if the tile is completely analyzed, but require a modification because complete information about all the colors in the tile and the maximum and minimum horizontal and vertical coordinates for each color in the tile need to be identified for those embodiments. At a step 38, a test is made to determine whether the required number of masks is greater than or equal to some threshold number of masks. The required number of 1-bit masks to represent the image is logically determined by 1) the colors of the pixels in the tile together with 2) a decision by the user of the system, or predetermined as a fixed condition of the system, as to whether or not to use fills for background colors when possible. More specifically, let n denote the number of colors in the tile; let t be 0 if there is no default color or, if there is a default, there are no default-colored pixels in the tile; let t be 1 if there is a default color and there are default-colored pixels in the tile; and let f be 0 if fill operations are not to be used for background colors and 1 if they are. Then, the required number of masks for a tile is n-(t|f) where "|" represents the bitwise logical "or" operation. That is, if either there is both a default color and default-colored pixels in the tile, or if fill operations are to be used, then the number of masks is n-1. Otherwise, the required number is n.
The threshold number of masks might be set equal to the original number of bits per pixel required to represent the entire image as provided in the original raster content. Essentially, a determination is being made at a step 38 regarding whether a data volume savings can be made for this tile using the masks. However, the threshold number of masks is preferably set to some number less than the original number of bits per pixel either to satisfy a certain level of data volume savings or if an indexed representation would be more effective. For example, a user could decide that although the tile is originally represented by 8 bits per pixel, a satisfactory data reduction would involve using no more than 4 bits per pixel to represent the tile, i.e. 4 masks. Thus, the user would select the threshold number of masks to equal 5. It will be appreciated by those skilled in the art and others that the threshold number of masks can be hard-coded into the algorithm or user-defined as a user input or system configuration setting, or varied dynamically depending on the size and/or contents of the tile.
If the answer to the test at step 38 is yes, meaning that no data savings or no satisfactory level of data savings can be achieved by utilizing masks to represent the tile, then a representation for the tile is generated using the original format and number of bits per pixel or using an index which uses fewer bits than the original number. See step 40. Generating such a representation by using either computer instructions, image description operators, or data structures is well-known in the art and thus will not be described in any further detail here. With respect to the option of indexing, if the number of colors in the tile were less than or equal to 16, then a 4-bit index would be sufficient to represent each pixel and would result in a data savings if it is less than the original number of bits per pixel. If the number of colors were less than or equal to 256, an 8-bit index would suffice. Indexed representations are well understood by those skilled in the art and others.
On the other hand, if the answer to the test at step 38 is no, meaning that a particular level of data savings can be achieved using masks, then a representation is generated for the tile using "fills" and/or "masks" as will be described in further detail with reference to FIGURE 3. See step 46.
After either step 40 or 46, another test is made at a step 42 to determine whether there is another tile to process. If there is another tile to process, the next tile is retrieved at a step 44 and the process described above is repeated as shown in FIGURE 2 using the next tile. If there are no other tiles to analyze, the process ends.
FIGURE 3 is a flow diagram illustrating how tiles are represented using fills and or masks as required in step 46 of FIGURE 2. In particular, beginning at a step 60, a two-part test is made to determine whether both of the following conditions have been met: 1.) whether there are no default-colored pixels in the tile and 2.) whether a non-default background for the tile should be chosen. If the answer to either condition is no, meaning that either the tile includes default-colored pixels or that a non-default background should not be chosen, the default color is selected as the background color for the tile at a step 62. Beyond the mere selection of the default as the background color for the tile, no data is necessary to represent the default background.
On the other hand, if the answer to the test at step 60 is yes, meaning that both of the conditions have been met, i.e., there are no default-colored pixels in the tile and a non-default background should be selected, a non-default background color is selected at a step 64. The choice of the background color could be arbitrary from among the colors in the tile. However, it will be appreciated by those skilled in the art and others that the choice of the background color could be based upon some criterion. For example, a mask for each of the colors in the tile could be calculated, as will be described in further detail below, and this data could then be compressed. The color of the mask that compresses the least could then be chosen as the background color. Alternatively, the color which has the greatest number of pixels in the tile, or for which the bounding rectangle is largest, could be determined and selected as the background color. This determination could be made by examining the counters associated with the array of potential colors available for the tile. In any case, once the non-default background color is selected, a computer-readable representation is generated to fill the tile with the non-default background color at a step 66.
It will further be appreciated by those skilled in the art and others that step 60 is optional. Instead of performing the test indicated in step 60 (that is, removing step 60 entirely), the algorithm can be hard-coded to automatically select the default color as the background, or if the default color (e.g. white) is renderable, to select even some other color as the background color. Alternatively, the algorithm can simply be hard-coded to select any color identified in the tile as the background color either arbitrarily or based upon some criterion such as those described above with reference to step 64. In the latter situation, if renderable default-colored pixels are in the tile and a non-default background color is chosen, a mask would have to be generated for the default color, meaning that more data than necessary might be required to represent the tile since the default color typically does not need to be imaged. As yet another alternative, steps 60-66 can be eliminated altogether such that there is no background color chosen and processing continues as described below such that the tile is represented using only masks if a data savings was deemed worthwhile.
It will further be appreciated by those skilled in the art and others that, in accordance with an alternative embodiment of the invention, instead of testing whether there are no default-colored pixels and whether a non-default background color should be chosen before actually selecting the background color, other various criterion can be used to select the background color. For example, in one embodiment, the test could query whether there are only a few renderable default-colored pixels in the tile. If there are only a few, then a non-default background is selected and a representation is generated to fill the tile with the selected non-default background color as described above. However, if there are a large number of default-colored pixels in the tile, the default is selected as the background color. In another embodiment, the test could simply query whether there are any default-colored pixels in the tile without testing whether a non-default background should be chosen. In this case, if there are no default-colored pixels in the tile, a non-default background will be selected. If there are any default-colored pixels, the default is selected as the background color.
Returning to FIGURE 3, after either step 62 or step 66, a test is made to determine whether there are any unprocessed non-background colors in the tile. See step 68. If the answer is no, processing returns to FIGURE 2. See step 70. In particular, if this happens at the first entry to block 68, then the tile is entirely the background color. In this case, if the tile is the default color, no data is necessary to represent the tile as described above and, thus, the tile most certainly requires far fewer bits per pixel than originally required for that area in the image. If the tile is a solid non-default color, bits necessary to identify the color and the tile boundaries and to fill that tile with the identified color are still far fewer than the original number of bits per pixel for that area of the image provided the tile is not too small. Thus, in either case, a data volume savings is achieved.
If the answer to the test at step 68 is yes, a non-background color is identified at a step 72. Then, at a step 74, a representation is generated for identifying the pixels in an area of the tile with the current color as a 1 -bit-per-pixel mask. The mask identifies which pixels within an identified boundary are to be rendered with the identified color. In one embodiment, the area of the mask is defined by the boundaries of the tile and, thus, the mask applies to the entire tile. In an alternative embodiment, the area in the tile for which the mask is provided can be minimized by determining the minimal area in which the current color is located. This is accomplished by determining the minimum and maximum horizontal and vertical coordinates in the tile where the current color is located. Using the resulting information, the boundaries of the minimal area can be determined as those skilled in the art and others will appreciate. As a result, the mask for the current color can be provided in the identified minimal area only. As an example, if you had a circle of diameter 200 pixels in a square tile of 500 pixels, instead of storing a mask with a 1 -bit-per-pixel mask for 500 by 500 pixels you can store only the information for the smallest square containing the circle, i.e., 1 -bit-per-pixel for 200 by 200 pixels plus the information about the position of the mask within the larger square.
After the representations have been generated for identifying the pixels in an area of the tile with the current color as a mask, processing returns to step 68 to determine whether there are any more unprocessed non-background colors and the process described above is repeated as shown in FIGURE 3 and as described above. In particular, if there are more unprocessed non-background colors, a next non-background color is identified at step 72 and a mask is generated. This occurs until all non-background colors have been processed.
FIGURE 4 illustrates how generating a representation for a tile using the original format and number of bits per pixel or using a smaller index, as required at step 40 of FIGURE 2, can alternatively be accomplished in accordance with another embodiment of the present invention. In general, instead of generating a representation providing the tile boundaries and the original number of bits per pixel or providing a smaller index for the area in the image corresponding to the designated tile area, the tile can be represented by identifying a background color for the entire tile, identifying boundaries for a minimal area in the tile in which the remaining colors are contained, and utilizing the original format and number of bits per pixel or a smaller index for the identified minimal area only. For example, if the many-colored content is only located in a corner of the tile, this corner area can be identified so that the original number of bits per pixel or smaller index need only be used for this minimal area. If the rest of the tile is the default color, no further data need be provided. On the other hand, if the rest of the tile is some other color, a representation providing the color and tile boundaries and requesting that the tile be filled with the identified color is also generated. As a result, although a data saving could not be achieved using masks, some data savings is still achieved beyond representing the tile with all of its original number of bits per pixel.
Provided that either there are no default-colored pixels in the tile or the default color is renderable, then as shown in FIGURE 4, a calculation is made at a step 80 to determine the color which, if chosen as a background color for the tile, would cause the remaining colors to be located in the smallest sized rectangular area within the tile. This is accomplished by determining for each potential background color (i.e., for each of the colors identified in the tile) the maximum and minimum horizontal and vertical coordinates in the tile in which the remaining colors are located. The potential background color that produces the smallest rectangular area defined by the maximum and minimum horizontal and vertical coordinates is chosen as the background color for the tile. See step 82. Then, at a step 84, a representation is generated to fill the tile with the selected background color. Additionally, a representation is generated utilizing the original format and number of bits per pixel or a smaller index to represent the remaining colors in the image within the identified minimal rectangular area of the tile only. See step 86. Then, processing returns at a step 88 to FIGURE 2. FIGURE 5 illustrates another alternative embodiment for the method of generating a representation for a tile using the original format and number of bits per pixel or using a smaller index, as required at step 40 of FIGURE 2. As shown at a step 90 in FIGURE 6, a test is made to determine whether using an index to represent the colors in the tile results in a data savings over the original number of bits per pixel. If the answer to this test is yes, then the colors in the tile are represented using an index at a step 94. If the answer to this test is no, the tile is represented with the original bits per pixel at a step 92. Then, at block 96, processing returns to FIGURE 2. FIGURE 6 is a flow diagram illustrating alternative logic to that shown in
FIGURE 2. In general, rather than determining whether the required number of masks is greater than or equal to the threshold number of masks, a test is made to determine whether a data savings can be achieved simply by using an index for the tile. In particular, as shown in FIGURE 6, the image is first divided into tiles at a step 100. Then at a step 102, a first tile is retrieved. Next, the colors in this tile are identified at a step 104, and a test is made at a step 106 to determine whether a data savings can be achieved by representing the tile using an index. If the answer to the test at step 106 is no, the original bits per pixel are used to represent the tile. See step 108. On the other hand, if the answer to the test at step 106 is yes, the colors in the tile are represented with an index at a step 110. After either step 108 or 110, another test is made at a step 112 to determine whether there is another tile to process. If there is another tile to process, the next tile is retrieved at a step 114 and the process described above is repeated as shown in FIGURE 6 using the next tile. If there are no other tiles to analyze, the process ends. As will be readily appreciated by those skilled in the art and others, a data reduction method in accordance with the present invention has a number of advantages. By reducing the number of bits required to represent the image to. less than originally required, the file containing the image can be more easily stored and processed to render the image. In many cases, it makes rendering the image possible. In other cases, it speeds up the processing time.
While the preferred embodiment of the invention has been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention. For example, besides applying the above processes to an image containing both continuous tone and linework data, the processes can be applied to any type of image or portions of an image to thereby reduce the data volume required to represent it. As another example, if the threshold were set to one less, then the comparison of the required number of masks to the threshold number would change from "greater than or equal to" to simply "greater than".

Claims

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. A method of reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said method comprising:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) comparing the required number of masks with a threshold number of masks;
. (iii) if the required number of masks is less than the threshold number of masks, generating computer-readable instructions to represent the tile using one or more of the techniques selected from the group consisting of fills and masks.
2. The method of Claim 1 further comprising: for each tile: if the required number of masks is greater than or equal to the threshold number of masks, generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index.
3. The method of Claim 2, wherein generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index comprises:
(a) determining the color in the tile which, if chosen as a background color, causes the remaining colors in the tile to be located in the smallest rectangular area in the tile;
(b) selecting the color identified in (a) as the background color for the tile;
(c) generating computer-readable instructions to represent the smallest rectangular area in the tile with the original bits per pixel or an index.
4. The method of Claim 3 further comprising generating computer-readable instructions to fill the tile with the background color if the background color is not the default color.
5. The method of Claim 2, wherein generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index comprises:
(a) determining whether a data savings is achieved if an index is used to represent the tile;
(b) if a data savings is not achieved, generating computer-readable instructions representing the tile with the original bits per pixel.
(c) if a data savings is not achieved, generating computer-readable instructions representing the tile with the original bits per pixel.
6. The method of Claim 1, wherein the threshold number of masks equals the original number of bits per pixel representing the image.
7. The method of Claim 1, wherein the threshold number of masks is user-defined as a user input or system configuration.
8. The method of Claim 1, wherein the threshold number of masks is a fixed number less than the original number of bits per pixel.
9. The method of Claim 1, wherein generating computer-readable instructions to represent a tile using one or more of the techniques selected from the group comprising fills and masks comprises:
(a) determining whether there are no default-colored pixels in the tile and whether a non-default background should be chosen for the tile;
(b) if there are default-colored pixels in the tile or if a non-default background should not be chosen, selecting the default color as the background color for the tile;
(c) if there are not default-colored pixels in the tile and a non-default background should be chosen, selecting a non-default color for the background and generating computer-readable instructions to fill the tile with the selected non-default background color;
(d) determining whether there are any non-background colors in the tile;
(e) if there are any non-background colors: (i) selecting a non-background color;
(ii) generating computer readable instructions to represent the pixels in an area of the tile with the selected non-background color as a mask; (iii) repeating steps (i) and (ii) for each additional, if any, non-background color.
10. The method of Claim 9, wherein the area of the tile represented with the selected non-background color as a mask is the entire area of the tile.
11. The method of Claim 9, wherein the area of the tile represented with the selected non-background color as a mask is a minimal area within the tile in which the non-background color is located.
12. The method of Claim 11, wherein the minimal area within the tile in which the non-background color is located is a rectangular area determined by the minimum and maximum x and y values in the tile for the non-background color.
13. The method of Claim 1, wherein generating computer-readable instructions to represent a tile using one or more of the techniques selected from the group comprising files and masks comprises:
(a) selecting a background color;
(b) if the background color needs to be rendered, generating computer-readable instructions to fill the tile with the selected background color; and
(c) for each non-background color, if any, in the tile, generating computer-readable instructions to represent the pixels in an area of the tile with the non-background color as a mask.
14. The method of Claim 13, wherein the background color is selected arbitrarily from the colors identified in the tile.
15. The method of Claim 13, wherein the background color is the color which has the greatest number of pixels in the tile.
16. The method of Claim 13, wherein the background color is the color for which the rectangle bounding the pixels of that color within the tile is the largest.
17. The method of Claim 13, wherein the background color is the color identified in the tile which, when represented as a mask, compresses the least.
18. The method of Claim 1, wherein generating computer-readable instructions to represent a tile using one or more of the techniques selected from the group comprising fills and masks comprises: for each renderable color in the tile, generating computer-readable instructions to represent the pixels in an area of the tile with the renderable color as a mask.
19. A method of reducing the volume of data representing a digital image, the digital image comprising a plurality of pixels, each pixel represented by an original number of data bits, the method comprising:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) comparing the required number of masks with a threshold number;
(iii) if the required number of masks is less than the threshold number of masks,
(A) selecting a background color;
(B) if the background color needs to be rendered, generating computer-readable instructions to fill the tile with the selected background color;
(C) determining whether there are any non-background colors in the tile; and
(D) if there are any non-background color in the tile:
(1) selecting a non-background color;
(2) generating computer-readable instructions to represent the pixels in an area of the tile with the selected non-background color as a mask; and
(3) repeating (D)(1) - (D)(2) for each additional non-background color.
20. The method of Claim 19 further comprising: for each tile: if the required number of masks is greater than or equal to the threshold number of masks, generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index.
21. The method of Claim 20, wherein generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index comprises:
(a) determining the color in the tile which, if chosen as a background color, causes the remaining colors in the tile to be located in the smallest rectangular area in the tile;
(b) selecting the color identified in (a) as the background color for the tile;
(c) generating computer-readable instructions to represent the smallest rectangular area in the tile with the original bits per pixel or an index.
22. The method of Claim 21 further comprising generating computer-readable instructions to fill the tile with the background color if the background color is not the default color.
23. The method of Claim 20, wherein generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index comprises:
(a) determining whether a data savings is achieved if an index is used to represent the tile;
(b) if a data savings is not achieved, generating computer-readable instructions representing the tile with the original bits per pixel; and
(c) if a data savings is not achieved, generating computer-readable instructions representing the tile with the original bits per pixel.
24. The method of Claim 19, wherein the area of the tile represented with the selected non-background color as a mask is the entire area of the tile.
25. The method of Claim 19, wherein the area of the tile represented with the selected non-background color as a mask is a minimal area within the tile in which the non-background color is located.
26. The method of Claim 25, wherein the minimal area within the tile in which the non-background color is located is a rectangular area determined by the minimum and maximum x and y values in the tile for the non-background color.
27. A method of reducing the volume of data representing a digital image, the digital image comprising a plurality of pixels, each pixel represented by an original number of data bits, the method comprising:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) comparing the required number of masks with a threshold number of masks;
(iii) if the required number of masks is less than the threshold number of masks, generating computer-readable instructions to represent the tile with each of the identified colors as a mask.
28. The method of Claim 27 further comprising: for each tile: if the required number of masks is greater than or equal to the threshold number of masks, generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index.
29. The method of Claim 28, wherein generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index comprises:
(a) determining the color in the tile which, if chosen as a background color, causes the remaining colors in the tile to be located in the smallest rectangular area in the tile;
(b) selecting the color identified in (a) as the background color for the tile;
(c) generating computer-readable instructions to represent the smallest rectangular area in the tile with the original bits per pixel or an index.
30. The method of Claim 29 further comprising generating computer-readable instructions to fill the tile with the background color if the background color is not the default color.
31. The method of Claim 28, wherein generating computer-readable instructions to represent the tile using the original number of bits per pixel or a smaller index comprises: (a) determining whether a data savings is achieved if an index is used to represent the tile;
(b) if a data savings is not achieved, generating computer-readable instructions representing the tile with the original bits per pixel; and
(c) if a data savings is not achieved, generating computer-readable instructions representing the tile with the original bits per pixel.
32. The method of Claim 27, wherein the area of the tile represented with the selected non-background color as a mask is the entire area of the tile.
33. The method of Claim 27, wherein the area of the tile represented with the selected non-background color as a mask is a minimal area within the tile in which the non-background color is located.
34. The method of Claim 33, wherein the minimal area within the tile in which the non-background color is located is a rectangular area determined by the minimum and maximum x and y values in the tile for the non-background color.
35. A method of reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said method comprising:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) determining whether a data savings can be achieved by using masks to represent the tile; said data savings determination based on the required number of masks and a threshold number of masks;
(iii) if a data savings is possible,
(A) selecting a background color;
(B) if the background color is needs to be rendered, generating computer-readable instructions to fill the tile with the selected background color;
(C) determining whether there are any non-background colors in the tile; and
(D) if there are any non-background colors in the tile: (1) selecting a non-background color; (2) generating computer-readable instructions to represent the pixels in an area of the tile with the selected non-background color as a mask; and
(3) repeating (D)(1) - (D)(2) for any additional non-background color, if any, in the tile.
36. A method of reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said method comprising:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) determining whether a data savings can be achieved by using masks to represent the tile, said data savings determination based on the required number of masks and a threshold number of masks;
(iii) if a data savings is possible,
(A) selecting a color in the tile;
(B) generating computer-readable instructions to represent the pixels in an area of the tile with the selected color as a mask;
(C) repeating steps (A)-(B) for each additional identified color, if any, in the tile.
37. A method of reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said method of comprising:
(a) dividing the image into a plurality of tiles;
(b) for each tile;
(i) identifying the colors represented in the tile;
(ii) determining whether a data savings is achievable using an index to represent the colors in the tile; and
(iii) if a data savings is achievable, representing the tile using an index.
38. The method of Claim 37, further comprising: for each tile: if a data savings is not achievable, using the original data bits to represent the tile.
39. A system for reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said system comprising: a processing unit; and a storage medium coupled to the processing unit, the storage medium storing program code implemented by the processor for:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) comparing the required number of masks with a threshold number of masks;
(iii) if the required number of masks is less than the threshold number of masks, generating computer-readable instructions to represent the tile using one or more of the techniques selected from the group consisting of fills and masks.
'
40. A system for reducing the volume of data representing a digital image, the digital image comprising a plurality of pixels, each pixel represented by an original number of data bits, the system comprising: a processing unit; and a storage medium coupled to the processing unit, the storage medium storing program code implemented by the processor for:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) comparing the required number of masks with a threshold number;
(iii) if the required number of masks is less than the threshold number of masks,
(A) selecting a background color;
(B) if the background color needs to be rendered, generating computer-readable instructions to fill the tile with the selected background color; (C) determining whether there are any non-background colors in the tile; and
(D) if there are any non-background color in the tile:
( 1 ) selecting a non-background color;
(2) generating computer-readable instructions to represent the pixels in an area of the tile with the selected non-background color as a mask; and
(3) repeating (D)(1) - (D)(2) for each additional non-background color.
41. A system for reducing the volume of data representing a digital image, the digital image comprising a plurality of pixels, each pixel represented by an original number of data bits, the system comprising: a processing unit; and a storage medium coupled to the processing unit, the storage medium storing program code implemented by the processor for:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) comparing the required number of masks with a threshold number of masks;
(iii) if the required number of masks is less than the threshold number of masks, generating computer-readable instructions to represent the tile with each of the identified colors as a mask.
42. A system for reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said method comprising: a processing unit; and a storage medium coupled to the processing unit, the storage medium storing program code implemented by the processor for:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile; (ii) determining whether a data savings can be achieved by using masks to represent the tile; said data savings determination based on the required number of masks and a threshold number of masks;
(iii) if a data savings is possible,
(A) selecting a background color;
(B) if the background color is needs to be rendered, generating computer-readable instructions to fill the tile with the selected background color;
(C) determining whether there are any non-background colors in the tile; and
(D) if there are any non-background colors in the tile:
( 1 ) selecting a non-background color;
(2) generating computer-readable instructions to represent the pixels in an area of the tile with the selected non-background color as a mask; and
(3) repeating (D)(1) - (D)(2) for any additional non-background color, if any, in the tile.
43. A system for reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said system comprising: a processing unit; and a storage medium coupled to the processing unit, the storage medium storing program code implemented by the processor for:
(a) dividing the image into a plurality of tiles;
(b) for each tile:
(i) identifying the colors represented in the tile;
(ii) determining whether a data savings can be achieved by using masks to represent the tile, said data savings determination based on the required number of masks and a threshold number of masks;
(iii) if a data savings is possible,
(A) selecting a color in the tile;
(B) generating computer-readable instructions to represent the pixels in an area of the tile with the selected color as a mask; (C) repeating steps (A)-(B) for each additional identified color, if any, in the tile.
44. A system for reducing the volume of data representing an image, the image represented by a plurality of pixels, each pixel encoded by an original number of bits, said system comprising: a processing unit; and a storage medium coupled to the processing unit, the storage medium storing program code implemented by the processor for:
(a) dividing the image into a plurality of tiles;
(b) for each tile;
(i) identifying the colors represented in the tile;
(ii) determining whether a data savings is achievable using an index to represent the colors in the tile; and
(iii) if a data savings is achievable, representing the tile using an index.
PCT/CA2000/001307 1999-11-09 2000-11-09 System and method for image compression WO2001035340A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001536998A JP2003514416A (en) 1999-11-09 2000-11-09 Image compression system and method
AU12612/01A AU1261201A (en) 1999-11-09 2000-11-09 System and method for image compression
EP00974209A EP1238370A1 (en) 1999-11-09 2000-11-09 System and method for image compression

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16466699P 1999-11-09 1999-11-09
US60/164,666 1999-11-09

Publications (1)

Publication Number Publication Date
WO2001035340A1 true WO2001035340A1 (en) 2001-05-17

Family

ID=22595530

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2000/001307 WO2001035340A1 (en) 1999-11-09 2000-11-09 System and method for image compression

Country Status (4)

Country Link
EP (1) EP1238370A1 (en)
JP (1) JP2003514416A (en)
AU (1) AU1261201A (en)
WO (1) WO2001035340A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5074597A (en) * 1987-01-13 1991-12-24 The Lehigh Press, Inc. Computerized method of generating film masters for embossing and printing color images
US5408542A (en) * 1992-05-12 1995-04-18 Apple Computer, Inc. Method and apparatus for real-time lossless compression and decompression of image data
WO1996039682A1 (en) * 1995-06-05 1996-12-12 Apple Computer, Inc. Block classification for accelerating image data compression

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5074597A (en) * 1987-01-13 1991-12-24 The Lehigh Press, Inc. Computerized method of generating film masters for embossing and printing color images
US5408542A (en) * 1992-05-12 1995-04-18 Apple Computer, Inc. Method and apparatus for real-time lossless compression and decompression of image data
WO1996039682A1 (en) * 1995-06-05 1996-12-12 Apple Computer, Inc. Block classification for accelerating image data compression

Also Published As

Publication number Publication date
EP1238370A1 (en) 2002-09-11
JP2003514416A (en) 2003-04-15
AU1261201A (en) 2001-06-06

Similar Documents

Publication Publication Date Title
US7075681B1 (en) System and method for reducing the data volume of images
US6941014B2 (en) Method and apparatus for segmenting an image using a combination of image segmentation techniques
US7376267B2 (en) Image processing apparatus, image processing method, and program and storage medium therefor
US5638498A (en) Method and apparatus for reducing storage requirements for display data
US7133565B2 (en) Image processing apparatus and method
EP0772158B1 (en) Image processing system
US6307962B1 (en) Document data compression system which automatically segments documents and generates compressed smart documents therefrom
US8345998B2 (en) Compression scheme selection based on image data type and user selections
US6324305B1 (en) Method and apparatus for segmenting a composite image into mixed raster content planes
EP0597571A2 (en) Method and apparatus for processing data for a visual-output device with reduced buffer memory requirements
US10332262B2 (en) Removal of background information from digital images
US20070139675A1 (en) Image processing apparatus, image processing method, image processing program, storage medium and computer data signal
JP2007507802A (en) Text-like edge enhancement in digital images
US7145676B2 (en) Compound document image compression using multi-region two layer format
JP4366003B2 (en) Image processing apparatus and image processing method
US9088754B2 (en) Image processing device determining characteristic quantity relating to number of colors
WO2001063558A2 (en) System and method for image processing
JP3715905B2 (en) Image processing apparatus, image processing method, program, and storage medium
US6715127B1 (en) System and method for providing editing controls based on features of a raster image
JP2003244447A (en) Image processor and image processing method
JP3772262B2 (en) How to identify the type of an image
JP2001307109A (en) Method and device for processing image and recording medium
US20040051884A1 (en) Method of encoding raster data based on variations of color
JPH04356873A (en) Adaptive encoding system for color document image
EP1238370A1 (en) System and method for image compression

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
ENP Entry into the national phase

Ref country code: JP

Ref document number: 2001 536998

Kind code of ref document: A

Format of ref document f/p: F

WWE Wipo information: entry into national phase

Ref document number: 2000974209

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2000974209

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 2000974209

Country of ref document: EP