Technical Q&As


CS 03 - Special Profile Sizes in ColorSync Manager (1-May-95)


Q There is no mention of special profile sizes (for processing efficiency) in ColorSync Manager (2.0) or in International Color Consortium Profile Format. Specifically, it does not say whether defining the 3-D lookup tables with sizes that are a power of 2 (+1) is any faster than using any other sizes. Defining tables that are 5x5x5, 9x9x9, 17x17x17, or 33x33x33 should be faster to implement, since you can use fast shifts instead of integer divides in the lookup math. Does the default CMM have any optimizations such as this? If so, what are they?

A It doesn't matter how you dimension the tables, because the default CMM creates private multi-dimensional tables internally.

Q On page 1-28 of ColorSync Manager (2.0), under "L*a*b* Color Value", it states that each color component is within the range of 0 to 65,280. Shouldn't this be 0 to 65,535, since this is this value for the other spaces and in ICC Profile Format.

A 65,280 is the correct value. The ICC profile specifies 0xFF00 as the maximum value for this space.

Q What exactly are the internal parameters for the quality setting (i.e., how many bits and how large a LUT is built for "draft" versus "normal" versus "best")?

A The quality flag bits provide a convenient place in the profile for an application to indicate the desired quality (potentially at the expense of speed and memory) of a color match. In ColorSync 2.0, these qualities do not mandate the use of one algorithm over another. Instead, they are just "recommendations", which the CMM may choose to ignore or implement.

This is the procedure the CMM uses to decide whether to ignore or implement the quality recommendations specified in the flag bits:

A. When the 'appl' CMM builds a ColorWorld from two or more profiles, and one or more of these profiles contains TRC curves or A2Bx tables, it also builds a private, multi-dimensional look-up table.

B. The quality flag bits determine the resolution of the private, multi-dimensional look-up table.

C. Draft quality is treated the same as Normal quality by the 'appl' CMM. This is how the trade-offs for Best quality differ from those for Normal/Draft quality:

a. Quality: In most cases, since the quality is only slightly better in Best mode, the difference is difficult to see, unless one of the profiles has a high gamma value. For high gamma values, the extra resolution in the private, multi-dimensional look-up table is helpful.

b. Speed: Best mode typically takes twice as long to build a ColorWorld (approximately two seconds versus approximately one second). However, once the ColorWorld is built, the time to use it is the same for either mode. In other words, the time to match a bitmap is the same for both modes (the rate is approximately 1.5MB/second on a PowerMac 8100/110).

c. Memory: Best mode requires significantly more memory than Normal/Draft mode. A ColorWorld typically requires 120K of heap space in Best mode versus 25K in Normal mode, and the "high-water" memory requirement while building a ColorWorld is typically 300K for Best mode versus 90K for Normal mode.

Note that these guidelines apply only to the default 'appl' CMM. The trade-offs between speed, quality, and resources may be quite different for other CMMs.

Q On page 1-64 of ColorSync Manager (2.0), it states that a device-linked profile may not be used with NCWNewColorWorld, and NCMBeginMatching implies that device-linked profiles cannot be used. How is a device-linked profile used for color matching? Is this what CWConcatColorWorld is used for?

A Use CWConcatColorWorld for color matching by passing it the device-linked profile.

Q On pages 55 and 56 of ICC Profile Format, in the description of the profile headers, there is no mention of the "quality" setting. Isn't the quality setting part of the profile?

A A profile is typically a self-contained set of data that includes all the information a CMM needs to perform a color match. Therefore, when an application needs to embed a profile in a document, it should not have to make any changes to the profile. However, there are two profile attributes that an application can change to modify the profile's behavior ("rendering intent" and "quality"). To change the behavior of a profile when embedding it in a document, the application first sets the appropriate bit in the profile's header.

Q On page 55 of ICC Profile Format where the header is described, what is the rendering intent of this profile for the CMM? Doesn't the user select the rendering intent? Doesn't the profile contain data that allows it to be converted under any of the four rendering intents? Is this a "default" rendering intent that is used if the user does not specify one explicitly, or is this field always hard-coded with 0, 1, 2, and 3 in the four bytes to signify that all four rendering intents are supported? Why does this field exist if all of these intents must always be supported?

A "Rendering Intent" can be changed before a profile is embedded. The value of the profile's header-intent field determines how the CMM performs the color match. For example, a CMM would use the A2B2 tag if the rendering intent was three. However, the profile may also contain A2B0 and A2B1 tags (not used in this example) regardless of the intent value. There is no default intent, but most profiles start with the intent field set to 0.

Q Is an "Embedded Profile," as mentioned in "Profile Flags" on page 57 of ICC Profile Format, a profile that is included in a data file (as opposed to one that stands alone)? The documents states that, "Profile cannot be used independently from the embedded color data." What does this mean, and is it only applicable to an embedded profile?

A Two bits were added to the ICC specification for copyright information to protect the rights of profile builders. Setting the "Profile Embedded" bit while embedding a profile in a document tells other applications that can extract profiles from documents that the embedded profile is protected. Although the "Profile Embedded" bit cannot prevent unethical behavior by another application (such as copying the embedded profile), setting this bit and the "Profile Use" bit indicates the profile vendor's intent to retain the rights to the profile's contents.

Q I want to go directly from an input CMYK space to an output CMYK space (without going through an intermediate three-component space) to preserve the original GCR/UCR settings. Can I create a "link" profile for this purpose? If I do, will I have to write my own CMM to use it?

A You can build a CMYK to CMYK device-link profile for this purpose, and you can use it without writing your own CMM.





Technical Q&As
Previous Question | Contents | Next Question