A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Images are typically recorded and stored as contone images in which each image element has a color tone value. For example, consider a digitally stored color image—each image element will typically have three corresponding values that set tone, among 256 gradations, for example, for primary colors.
For most print or rendering systems, it is necessary to convert the input or source contone image, in some color space, to a colorant space of the target device or destination color space. Many times images are stored such that the pixel level data are in terms of levels of red, green, and blue (RGB). This is most convenient when rendering on common display devices.
Computer display monitors and television displays are made up of red, green, and blue phosphors. They display colors using an additive process. In contrast, standard printing systems are usually based on a four color pallet of cyan, magenta, yellow, and black (CMYK) since many printers produce color by depositing ink on paper. The colors blend on the page. This is known as a subtractive process or mixture.
The conversion is typically performed using a look-up table (LUT) that maps pixel data comprising red, green, and blue levels to pixel data comprising cyan, magenta, yellow, and black levels. Usually, these look-up tables are defined by first printing combinations of cyan, magenta, yellow, and black colorants, measuring the resulting colors, and inverting the resulting color table.
For precise rendering, additional information is required beyond the color levels. Digital color management is used to comprehend the idiosyncrasies of the particular device that is used to render the image. For example, when considering the specific color values associated with a pixel and each of red, green, and blue color levels, the actual displayed color may be different from the precise values, since monitors tend to be different from one another. Consequently, identical RGB numbers can yield different colors on different monitors or other rendering devices such as printers.
In order create a more precise meaning to the RGB values, for example, some give a reference to a particular real or ideal monitor, or a particular real or ideal printer, if the image is represented in CMYK values. This reference is known as the profile and is many times incorporated into the image, with the image data. As a result, the digital RGB image is often made up of the RGB levels, for example, and a profile. The profile gives the numbers meaning based upon the intent of the image creator.
Another set of problems is encountered when moving between different types of devices. A gamut is the range of colors that a particular device can render. These device-specific gamuts are subsets of the chromaticity, which corresponds to the set of colors that are visible to the human eye. As a general rule, the gamut of a printer is normally narrower than a monitor. Here, the device profile is a technique for describing that device's gamut, in terms of an absolute color space. The process of converting from one gamut to another is called gamut mapping.
In the process of authoring content on a computer and rendering that content on some sort of printed matter, it is necessary to comprehend the device profiles of both the monitor and the target printing device. Moreover, there is a necessity to apply color conversion between the profile of the monitor and the destination profile, or the profile of the target printing device. Many times the profile of the monitor is relative to the L*A*B* color space, which maps RGB values to L*A*B* values. Similarly, the printer's device profile is also defined relative to the L*A*B* color space.
The L*A*B* color space is different from RGB and CMYK color spaces. It is used to exaggerate detail without damaging color. The L or lightness channel is defined by a scale extending from 100 (white) to zero (black). The channel contains a gray scale rendition of the image, along with detail information. It does not contain any color information, however. The “a” channel is defined by a scale extending from +128 (red) to −128 (green), and the “b” channel extends from +128 (yellow) to −128 (blue).
One of the challenges of the conversion between the color space of the source device and the target device is comprehending the situation where the target device cannot render a color from the source device. Some of the colors that can be viewed on the monitor cannot be necessarily printed on the particular printer. This conversion requires choosing a reasonable approximation of the original color when a perfect match cannot be found in the target device's gamut. Rendering intents are used as an aid in making these decisions.
There are three generally accepted rendering intents, calorimetric, perceptual, and saturation. When rendering according to the calorimetric rendering intent, the objective is to reproduce the colors as exactly as possible. Colors in the source device profile are replaced with the nearest reproducible color in the destination gamut. Colors that are out of the destination gamut are usually simply clipped. In contrast, perceptual rendering is most often utilized when the destination gamut is narrower than that of the source, as for example, when the source image from a monitor is destined for a printer, and the image is photographic. In this case, the gamut has to be compressed such that the colors keep their relative chromatic positions. The final rendering intent is saturation rendering. It is typically used in graphics. It preserves the saturation of colors in the transformation from gamut to gamut. The original colors are modified, in order to fill the gamut of the destination device.
Techniques exist for modifying the result of gamut mapping. One example is UCR/GCR (under cover removal and grey component replacement). This technique is applied in many graphic arts related products, such as postscript raster-image processors. It addresses the way the amount of black colorant is calculated. By calculating first the equivalent neutral density of the desired color, then reducing the cyan, magenta, and yellow colorants appropriately, and replacing this neutral component by an equivalent amount of black colorant, in principle the same color is obtained but with a lower total amount of colorant, since the black colorant replaces three colorants.
Programs are available that can modify gamut mappings. They are sometimes referred to as profile editors. The present invention is directed to methods for editing color profiles. It is directed both to specific processes for implementing this editing and systems and processes for enabling user control of the color profile editing process.
Generally, there are three process flows for color profile editing according to the invention.
In general, according to a first aspect, a first type or type A process is directed to a method for gamut mapping source color data to destination color data. Often, this gamut mapping involves the conversion of the color space from, for example, L*A*B* or RGB to CMYK, for example. The method comprises modifying the source color data in a source color space, based upon a color profile edit. This generates modified source color data. Then, the modified source color data are converted to the destination color space to produce the destination color data.
In general, according to another aspect, the invention features a second type or type B process that is directed to a method for gamut mapping source color data to destination color data. The method comprises converting source color data to a destination image color space to produce the destination color data and then modifying the destination color data, based upon a color profile edit to generate modified destination color data.
Finally, according to another aspect, the invention features a third type or type C process that is directed a method for gamut mapping source color data to destination color data. In this embodiment, the color profile edit is applied directly to the gamut map that converts the source color data to the target color space to thereby produce the destination color data.
In general, according to still another aspect, the invention features a method for enabling user profile control and specifically color profile editing. This invention includes receiving a list of initial profile edits. Further, the user selection of a gamut map for converting the source color data to the destination color data is enabled. If required, the selected gamut mapping is converted to a look up table (LUT) form. Then, according to the invention, the profile edits are applied to the source color data, destination color data and/or the gamut map itself. In this process, the source color data in a source color space are converted to a destination image space to produce the destination color data using the gamut map.
In the preferred embodiment, the source color data profile edits comprise at least one of selective color profile global mapping and gamut mapping profile edits. The destination color data profile edits comprise at least one of single conversion color map curves, shadow contrast, and black replacement profile edits. Finally, the gamut map profile edits comprise look up table changes.
In general, according to still another aspect, the invention features computer software product for profile editing. The product comprises a computer-readable medium in which program instructions are stored, which instructions, when read by a computer, cause the computer to enable user selection of source color data profile edits, destination color data profile edits, and gamut map edits.
The above and other features of the invention including various novel details of construction and combinations of parts, and other advantages, will now be more particularly described with reference to the accompanying drawings and pointed out in the claims. It will be understood that the particular method and device embodying the invention are shown by way of illustration and not as a limitation of the invention. The principles and features of this invention may be employed in various and numerous embodiments without departing from the scope of the invention.
In the accompanying drawings, reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale; emphasis has instead been placed upon illustrating the principles of the invention. Of the drawings:
Typically, a datastore 50 holds the source color data. Typically, if electronically generated or manipulated source color data are used, they are many times in an RGB or L*A*B* format. These are typically device independent formats. Further, profile information is also commonly included with the source color data that references a monitor or type of monitor thereby providing the absolute color reference, for example.
The profile editor runs on a computer 52, which comprises a central processing unit 54 and a display 56. This profile editor is used to convert the source color data from the datasource 50 to the destination color data in a gamut mapping process. In the typical example, the source color data in the first color space is converted to a color space for a target rendering device 58. This is typically some sort of printer or even another monitor on another computer.
The profile editor, running on the computer 52, provides a mechanism of changing the color profile information, and specifically control the result of the gamut mapping to control how the color data are rendered on the target rendering device 58. Typically, the profile editor is installed on the computer from a disk 53, on which the profile editor machine instructions are stored. These profile edits usually involve changes to the rendering intent, such as saturation, calorimetric, or perceptual rendering intents. They can also adjust the profile to be compatible with the target device, by modifying the profile that is associated with the source data, to be consistent with the target device.
Contone color data 112 are received by the rendering system. These destination color data are in the color space, CMYK, for example, of the target printing or rendering device. The color channels CMYK 112 are received at halftoning stages 150. These halftoning stages 150 convert the destination image contone color data into target device halftone color data 152.
The halftone color data produced by the halftone stages 150, for each of C, M, Y, K channels are directly processed by the print engine controller 154. Specifically, the print engine controller 154 converts the halftone color data 152 directly into commands to the print engine 155. In one example, the print engine 155 is an ink jet print head that sprays ink droplets onto media 10, such as paper. However, in other embodiments the print engine is laser printer, imagesetter or platesetter.
Specifically, in step 210, the program references a list of initial profile edits. These are any changes to either the source color data or the destination color data that had been previously generated, possibly by another program or process.
Then, in step 212, the program enables the user to select a gamut map. Specifically, the user is provided with a selection of various gamut maps that allows the user to convert the source color data to the desired color space of the target rendering device 58. For example, in the example of the inkjet printer, the user would select a gamut map for converting the source color data in a source color space, such as L*A*B* or RGB, to the CMYK color space, as is commonly used in inkjet printers.
Next, in step 214, the program inquires whether or not the gamut map is in a look up table (LUT) form. Sometimes, gamut mapping is provided using algorithmic techniques. In the current embodiment, the program operates on a look up table gamut map, in which combinations of red, green, and blue are mapped to CMYK values, for example, typically by interpolation between cells of the LUT map.
If the gamut map is not in a LUT form, the gamut mapping is converted to an LUT form in step 215.
Then, in steps 216-A, 216-B, 216-C, the profile editor provides the user or enables user selection between type-A profile edits, type-B profile edits, and type-C profile edits.
Generally, type-A profile edits are changes that are made to the source color data as part of the profile editing.
Type-B profile edits are edits to the destination color data. For example, a type B action can be used to address the problem whereby in many CMYK target color spaces, shades of the color yellow have a small percent of cyan. In the halftoning process, this small cyan amount can result in small dots that pepper the otherwise consistent yellow shade. Type B actions can be used to take out this cyan or magenta to avoid this speckling.
Type-C profile edits are changes to the actual gamut map LUT itself.
In step 217, any profile edits selected by the user are concatenated with the current list of profile edits.
In step 218, program flow loops if the user wishes to include additional profile edits to be pushed onto the list of profile edits.
Finally, once the user has selected all of the desired profile edits, the profile edits of the list are converted to the source or destination color spaces of the gamut mapping in step 220. Specifically, if the profile edits are not yet in the color space of either the source color data or the destination color data, the edits are converted. Then, the profile edits of the list are applied to the gamut mapping, and the specifically, the gamut map, the source color data, or the destination color data in step 222.
Specifically, all output points of the gamut mapping are acquired in step 426, see reference numeral 112. For each output point and its corresponding input point, the conversion is made to the color space of the edit is step 428, converting the source color data to the destination color data. Then, in step 430, it is determined if the input point is in the color range of the edit in step 430. If not, flow proceeds to the end of loop step 432. However, if it is in the range of the edit, then the edit is applied on the output point data or destination image data to make the new output point or modified destination color data 116 in
In these examples, the gamut mapping 110 is understood to be represented by an interpolation table. The interpolation table is an N-dimensional array of input points with their corresponding output points. The output of any input point is derived by interpolation between output points of the interpolation table based on the position of the input point relative to the input point of the interpolation table array.
Specifically, the type-B edit information generated by step 216-B of
The changes are then terminated in step 444. Then in step 446, the gamut mapping in the input data of the edit is evaluated and compared to the result with the output requested by the edit in step 216-B. The result is then compared to some threshold in step 448. If it is close enough, then the process ends, otherwise the flow repeats.
Specifically, a menu 216 is provided. It includes type-A profile edits 216-A, which include selective color, global mapping, and gamut mapping profile edits. Selective color is one of the easiest mapping changes. It affects a specific L*A*B* value, which can be defined as an entirely new CMYK value, for example. Surrounding changes are made by interpolating that into surrounding values. In one example, a Gaussian region of effect is defined. This range of effect can be modified by changing a delta E value, which is the extent of the extreme points of the Gaussian region of affect. Global mapping shows the curves in each of the channels and it also limits the range of the curves in each channel. In gamut mapping, specifically lightness mapping, the A, B of the L*A*B* is divided into U-sectors with various saturation circles. A pie-shaped region can be selected and the lightness transferred to the full range of the available mapping. It controls the fill effect of the device, which may have limited lightness constraints.
Type B profile edits are provided in sublist 216-B. Here, the profile edits are single conversion, color ramp curves, shadow contrast, and black replacement profile edits. In type B actions, the principle is to change locations in the gamut LUT and then interpolate into surrounding values. For example, it can define a new Y point, and then modify surrounding points. Depending on various embodiments, different change localizations are selected. One caveat, however, is that that device will have a maximum value that cannot be achieved, which controls the degree to which the changes can be propagated into surrounding locations. In one embodiment, an algorithm is used where the user selects the grid points to be changed, and then changes are propagated into surrounding points in order to minimize the difference between the desired curves endpoints.
Single conversion edits change for a single input value the original output value to a new output value. For example, the outcome for pure RGB yellow (255, 255, 0) would be changed to a pure CMYK yellow (0,0,100,0). A Color Ramp Curve edit is similar to a single conversion but for a range of colors defined by a start, middle and end input value. For each color that you get by interpolation between the three input values, a new output value is defined by manipulating the output curves. For example, a change in the outcome for the pure yellow RGB ramp defined by the start colors (0,0,0) to (255,255,0) to (255,255,255) and to make the outcome a pure CMYK yellow is obtained by setting the cyan, magenta and black curves to zero. Shadow contrast (or color contrast) edits involve the redistribution of output colors for the colors defined by a start and end input value based a relative colorimetric distance. Take for example the grey input ramp which is defined between black RGB=(0,0,0) and white RGB=(255,255,255). The output values will be certain CMYK values. The sequence of these CMYK values is called the grey balance for the output system. Each point between black and white will be mapped to a single point in the grey balance. The shadow contrast edit will reassign for each of these points between black and white a new point of the grey balance. Black replacement edit involve the replacement of a percentage of CMY by pure K.
Finally, type C profile edits are provided in sublist 216-C. These include LUT change, optimized size, and tag edit. In LUT change edit, there is a direct manipulation of the elements of an interpolation table. In optimize size edit, there is a removal and/or reduction in the size of parts of an ICC profile. Finally, in Tag edit, there is a direct manipulation of tags (i.e. elements of) an ICC profile.
In the illustrated example, the lightness mapping tab 712 is selected. This generates a saturation hue wheel 718 and a lightness plot 720. Here user-changes to the lightness curve 722 change the lightness mapping of the gamut mapping.
Selection of the LUT entries tab 1316 shows the positions in the gamut map mapping L*A*B* input color values to CMYK output values 1320, 1322. The map shows various points in the mapping 1324.
As illustrated in
In the typical gamut LUT view, various separated entries in the LUT are shown. Intermediate values are achieved by interpolation. By moving from the point by point view to the curved view allows an entire row of the LUT to be changed at once. Finally, by going to the 3D curved view, the entire 2D profile of the LUT can be affected by changes to the three-dimensional profile.
While this invention has been particularly shown and described with references to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.