Disclosed is a system and method for image processing, in particular, for the generation of a color profile.
In a color management system, a color profile describes the color characteristics of a particular device or color space. The color profile is used in converting color image data from a device-independent color space to a device-dependent color space or vice versa. Devices such as monitors, printers, cameras and scanners typically have color profiles associated therewith. These devices typically have one profile.
Color profiles provide a computer's color management system (CMS) with the information necessary to convert color image data from device-dependent color spaces, such as CMYK or RGB, to device-independent color spaces, such as CIE XYZ or CIE LAB. Referring to
A profile 130 has a particular structure that is specified in International Color Consortium (ICC) standards, such as ICC 1:2004-10, which is available on the World Wide Web at color.org. The profile structure is defined in the ICC standard as a header followed by a tag table followed by a series of tagged elements that can be accessed randomly and individually. The collection of tagged elements provides three levels of information for developers: required data, optional data and private data.
Within each profile is an additional parameter that can be set depending on the intent of the user, which is usually based on the manner the image will be used. This is called rendering intent, of which there are four types. Typically, each of the conversions useable in the profile configuration file corresponds to a specific rendering intent.
The four types of rendering intent are the relative colorimetric, absolute colorimetric, perceptual, and saturation. The absolute colorimetric rendering intent, for instance, is typically used to calibrate a particular device. When a user wants colors to be bright and to stand out, for instance, when outputting a presentation or in an advertisement, then the rendering intent would be set to the saturation setting. However, a printer is always limited to only the output results that it is capable of producing. A printer's saturation rendering intent provided by the printer's profile may not be capable of producing the amount of saturation desired by the user.
To overcome this deficiency, several products have been developed that enable users to either create or adjust device profiles. These packages have substantially the same procedures for creating or adjusting the profiles.
To generate a device color profile, typically, a color test pattern must be printed by the output device for which the new color profile will be generated. The colors in the color test pattern are measured by a colorimeter, for instance. The CMYK values from the output device including the measurement values are obtained, and the output device is modeled. The model is used to translate the device color space, i.e., the CMYK values, to a device-independent color space, such as CIE LUV. The adjustments available in profile creation software are typically directed to meeting the requirements of a specific type of output device, such as an inkjet printer, a thermal transfer printer or a laser printer. To create more adjustments to these different profiles, the software implementing the adjusted device profile typically must be recompiled to new parameters desired by a user. To the user, only minor gamut mapping adjustments are available. Therefore, the above-described packages available from companies such as X-rite, Kodak, Fuji/Xerox and Agfa, are limited in the extent of gamut mapping that a consumer can perform.
On the other end of the spectrum are professional profile software applications that allow professional color specialists to alter color profiles. However, to make proper adjustments to the profile, a user must have extensive knowledge of color management systems and gamut mapping, and the process requires a substantial amount of trial and error to achieve the user's desired results. Furthermore, users must print many samples and verify the outcome of each and every change of the configuration file affecting the device profile. This results in a large amount of wasted time as well as resources.
Disclosed is a method for configuring a color management system profile used to map image data to the gamut capabilities of an output device. The method executes the steps of deriving a first look-up table that is used to map color values in a device-dependent color space to color values in a device-independent color space. An object list is created comprising a plurality of objects, wherein the object list is interpreted by a computer application with reference to a configuration object to generate a second look-up table. The second look-up table is used to map the colors in the device-independent color space into a different set of values within the same device-independent color space. The second look-up table is stored in memory. A profile is configured by accessing the second look-up table, wherein the configured profile is associated with an output device. The image data is gamut mapped according to the configured profile associated to the output device, and is transmitted to the output device for output.
Also disclosed is a computer product stored on a computer-readable medium for configuring a color management system profile used to gamut map image data to the gamut capabilities of an output device. The computer product causes a computer to perform the steps of the disclosed method.
Further disclosed is an apparatus for configuring a color management system profile used to gamut map image data to the gamut capabilities of an output device including a means for deriving a first look-up table that is used to convert a first device-dependent color space into a device-independent color space. The apparatus has a means for creating, based on input from a user, an object list comprising a plurality of objects, wherein the object list is interpreted by a computer application with reference to a configuration object to generate a second look-up table that is used to convert the device-independent color space into a different set of values within the same device-independent color space. A storage means for storing the second look-up table is also provided. A profile is configured by a means for configuring a profile that accesses the second look-up table, wherein the configured profile is associated with an output device. Gamut mapped image data, which is gamut mapped according to the associated, configured profile, is transmitted to an output device.
Exemplary embodiments of the disclosed system and method will be described in more detail with reference to the following drawings:
Referring back to
As shown in the basic example of
A goal of the gamut mapping is to derive lookup-tables for each of the four rendering intents, in order to convert PCS values into device color space values. The profile connection space is a device independent color space, such as CIE LAB or CIE XYZ color spaces.
Using the derived look-up tables, the image data can then be gamut mapped for any selected rendering intent using a profile connection space to a device color space look-up table.
The internal workflow within the color management system library for gamut mapping starts when setting up the lookup-tables for the different rendering intents. At this point, typically, the characterization of the output device has been completed, and a device-to-profile connection space (PCS) for the absolute rendering intent is available. Also available is a single configuration object. This configuration object is a “layout object”. The layout object is a user selected .lay file with additional data given by the user to control the profile creation. The configuration object is a computer file that is a collection of all the parameters, including the layout object, that are used to create an output device profile, such as test chart data, gamut mapping configuration file data, look-up table size (e.g., an interpolation table having dimensions such as 17×17×17, 33×33×33, the varying size provides varied resolution), total ink values, black ink values, and the like.
As shown in
The look-up table (LUT), the size of which is defined by the number of interpolation points, typically, are arranged in matrices with sizes, such as 17×17×17, 33×33×33, and are based on the configuration object. The configuration object 310 is accessed to determine if gain is present at step 320. If gain is determined to be present gain curves are added to the B2A LUT, at step 325, before the absolute colorimetric (A2B2) LUT 315 is applied to prepare the invert operator in step 330. The A2B2 LUT 315 is obtained from measurements of print test patterns by colorimetric measuring devices to determine the gamut of the device. The B2A LUT is generated so the device-independent mapping parameters can be established in an independent color space, such as CIE L*a*b.
Using the values initially input into the B2A look-up table and the absolute colorimetric look-up table 315, an invert operator is created using the configuration object to set parameters (step 330). The invert operator (A2B) is output to process step 140, where the gamut mapping evaluation object is set up.
Using the invert operator (A2B), the gamut mapping script and the absolute colorimetric look-up table are used to determine the gamut parameters. In step 350, the gamut mapping evaluator is applied to each entry of the B2A look-up table. The invert object on the B2A is applied to map the L*a*b color space data points to device coordinates (step 360). Once the invert object is applied to the device-independent to device-dependent (B2A) look-up table, an output image using the created gamut matching configuration file is output (step 380). Although described with respect to a printer, a similar procedure known to those skilled in the art could be used for a monitor.
The previous steps are typical in forming a color profile. The actions that occur in step 340 are of particular interest. In setting up the gamut mapping evaluation object, the user defines a gamut mapping evaluator that is used to transform the independent color space values such as CIE L*a*b, CIE LUV, CIE CAM02 Jab or other independent color spaces.
The gamut mapping evaluation object facilitates configuration of the gamut mapping configuration file before the profile is created. This has at least two benefits. First, it allows the processor to work at the full map precision, e.g., floating point precision. Second, it makes it easier for the color specialist to tune because the color specialist does not have to recompile the software for each iteration.
In step 420, the user creates an object list via an user interface with a profile creation computer application which can be a text editor. The user generates a document, preferably in XML, that is translated by the profile creation computer application into the .gmc file. Although, the user-created document is described using XML, other languages, such as PERL, interpreted C++, Interactive Basic, Java or any language that is modifiable and extendable, can be used.
A brief description of the XML format will be provided for background purposes. XML is, like its SGML ancestor, a tag structured hierarchical markup language. A tag is denoted between a “<” and “> bracket pair. Each tag has an identifying name and this name is made out of a sequence of printable characters. An example of a valid tag could be <phonenumber>.
A tag can have content and in XML there are two ways to specify the content. The first is by bracketing the content by a start-tag and end-tag pair as follows:
The “</” marker before the tag name specifies it is the end of the content for the tag with the same name and at the same hierarchy level. The content itself can again be any valid XML markup, including tags or just plain direct content such as text or other content, as long as it consists of text characters.
A second method to define content for a tag is by specifying attributes directly in the tag. These attributes are given as name=“value” pairs directly on the start-tag as follows: <phonenumber tel=“123456789”/>. The attributes do not have to be given on the same line in the document. In fact the following would be perfectly valid also:
Both methods of defining content for a tag can be combined, however, the method chosen is defined by the computer application, such as application 100 in
The identifiers allowed in an XML document, and the content allowed for each tag depends on the application that uses the document. The allowed tags and the content of each tag are typically defined by the schema of the XML document. It is outside the scope of this document to explain schemas; it suffices to say it defines the possible content of XML documents valid for a given application.
The object list comprises a plurality of objects, some of which are predefined, such as those that perform multiply and divide functions, and others that can be created by the user. The user created objects will be described in more detail with reference to
A profile is configured that accesses the second LUT and the configured profile is associated with the output device (Step 440). The device profile, typically supplied by the output device manufacturer, is replaced with the configured profile by associating the configured profile with the output device in the operating system of a controlling computer. Of course, the configured profiles are portable files that can be used by a plurality of computers and associated with a number of output devices. This allows a user to develop custom profiles that can be used by a number of the user's output devices.
Using the second LUT in the configured profile, image data is gamut mapped so the input color image data is mapped to the gamut of the output device as specified (Step 460).
In order to construct a gamut mapping evaluator as described in step 440, the color management system defines a set of pre-defined evaluator objects. This set of objects can be viewed as the “machine language” of the gamut mapping. An evaluator in the color management system is defined as an object with the pointwise evaluation member function defined. When a CMS_fObjectGet call routine, which is a software routine performed by the color management system, is executed to obtain the attributes CMS_XEVALDIM, CMS_YEVALDIM or CMS_EVALDIM on the evaluator, a valid value is returned. The routines CMS_XEVALDIM, CMS_YEVALDIM or CMS_EVALDIM are routines that evaluate the color values in the X dimension (CMS_XEVALDIM), the Y dimension (CMS_YEVALDIM) and in intensity (CMS_EVALDIM), and return a value corresponding to the color value in the respective dimension.
In creating an evaluator, the user must define certain procedures which can be given any type of name. The data structure of a procedure will now be described with reference to
As shown in
The main body 540 is a single evaluator. It is populated by the user, who can define or identify from a library objects 545 that will be used to execute the procedure 500. The objects are the portion of the procedure that are executed with reference to the objects 545 and the definition list 520.
The “building blocks” for creating a gamut mapping evaluation object as described in step 140 is explained in further detail with respect to
The purpose of the evaluators, functors and objects is to allow a user to construct a gamut mapping look-up table that provides the desired device-independent to device-dependent mapping to satisfy the user's needs beyond what is available to the consumer presently. Certain evaluators have the typical interpolation constructs and other basic mathematical data types necessary to perform the functions usually associated with gamut mapping (see Appendix, Section 2). Users can use different evaluators within an object list to perform the desired functions to achieve the gamut mapping that the user wants to obtain. For instance, as shown in
A special evaluator is called a functor in the color management system. A functor has a specific pre-defined pointwise evaluation function. A list of pre-defined point wise evaluation functors having a unique identifier is shown in Section 1 of the Appendix. Each of these pre-defined pointwise evaluation functions has a unique identifier so that the functor can be serialized. Functors are written as follows:
<Functor
FunctorlD=“functor name” XDim=“value” YDim=“value”>. The “functor name” can be any of the functor names that are listed in the Color Management System or Image Management System (CMS/IMS) library or those created by a user. For instance, the variables XDim and YDim in the functor name above give respectively the x-dimension and y-dimension of the functor. If any of these two dimensions is fixed for a given functor then it is not necessary to specify this dimension as attribute. However, when a dimension is variable for the functor the dimension is required. The result of the functor, and by extension the containing procedure, will be unpredictable if in this case the dimension is not given as attribute.
The evaluators in the defining section of a procedure must have a unique name identifying the evaluator so that it can be referred to by a “call” functor in the remainder of the procedure. This name is given by an InfoText attribute for the evaluator. For example: <ObjectList Type=“l” InfoText=“MagentaShift”>
This defines a serial evaluator, which will be described in more detail with respect to
As shown in
Alternatively, a parallel composition (illustrated as a Type 2 object list in the software appendix), as shown in
Finally, a fourth composition (illustrated as a Type 4 object list, if used, in the software appendix), the argument composition, as shown in
The above described procedure implements an exemplary gamut mapping configuration (.gmc) file, which follows an XML format. There is, however, no formal schema defined for the format. Nevertheless, most XML editors will be able to open and modify a .gmc file. The possible content of a .gmc file includes possible tag identifiers in a .gmc file that represent types of the objects used in CMS/IMS library.
The enclosing tag for the whole document of a gmc file, or any of the XML files for the CMS/IMS library, is
All the attribute strings are of the form “number.number” and specify an identify string, the version of the format used and the version of the file. The version of the file can be anything, but both the ID and FormatVersion are fixed for a particular version of the CMS/IMS library
The content of the Meta-Type Information, or <MTI>, tag in a .gmc file is an object list that looks as follows:
An object list with this specific “GamutMapping” as InfoCode value means this object list contains a list of gamut mappings. The UseText is an informational string which is shown by the profile creation when listing the available .gmc files. An Example of a .gmc file is shown in Section 2. of the Appendix.
Also shown by the profile creation is the “Icon” object in the “GamutMapping” object list. This object is of type “Generic” and must have a “Size” attribute that gives the size, in bytes, of the content. The content of this object is the raw RGB 24-bit image of an icon that is shown to display the .gms file.
A purpose of a “GamutMapping” object, for example, is to enclose the various gamut mapping procedure objects. These procedure objects are specified as follows:
<Procedure InfoCode=“rendering intent”>. The rendering intent attribute is one of the following three values:
This attribute specifies the target rendering intent of the procedure. Only one procedure is allowed per rendering intent. It is not necessary to specify a procedure for all rendering intents though. When a rendering intent is missing from a gamut mapping, the CMS/IMS library will typically fall back to its default gamut mapping procedure for that rendering intent.
A procedure has two object lists: the first object list is the definition section, the second is the main evaluator. So in general the structure of a procedure looks like:
Gamut mapping procedures can interact with its calling mechanism inside the CMS/IMS library. The interaction with the CMS/IMS library is based on the value of certain value functors. These values can either communicate information from the gamut mapping procedure to the CMS/IMS library, in which case a value must be given, or vice versa, the CMS/IMS library can set the value of the functor before running the gamut mapping procedure.
Currently the following values are defined as parameters set by the CMS/IMS library and communicated to the gamut mapping procedure:
The following parameters are communicated back to the CMS/IMS library:
A system for implementing the above described process and procedures is explained in more detail with reference to
The computer 710 derives a first look-up table that is used to convert a first device-dependent color space into a device-independent color space by determining an invert operator to translate the color mapping LUT 735 in the output device profile 733. The invert operator allows the generation of an independent color space-to-independent color space LUT 715.
The user via a user interface 711 uses the profile creation application 713 to create an object list comprising a plurality of objects. The object list is interpreted by a profile creation application 713 with reference to a configuration object 717 to generate a second look-up table 715 that is used to convert the device-independent color space into a different set of values within the same device-independent color space. The second look-up table is stored in hard disc 716. Of course, the hard disc 716 is an example of a storage means, and any suitable storage means can be used.
The profile creation application 713 can be executed on a Macintosh computer from Apple or a Microsoft Windows-based computer, for example.
The output device 730 using the profile of the associated configuration object 717 to perform gamut mapping outputs the image data from an output device.
It will be appreciated by those of ordinary skill in the art that the present invention can be embodied in other forms without departing from the spirit or essential characteristics thereof. The foregoing description is therefore considered to be illustrative, and not restrictive. The scope of the invention is indicated by the following claims, and all changes that come within the meaning and range of equivalents are therefore intended to be embraced therein.