My apologies in advance for a long preamble to three short questions!

It seems to me that a fundamental requirement of an RGB working space
is that it be color-balanced, meaning that if R=G=B, then in CieLAB
space a=b=0 (the color is completely neutral gray). Also, for an 8-bit
image, if R=G=B=255, then LAB L* should be 100 on a scale from 0 to
100.

The "sRGB.icm" profile that comes with Argyllcms *is* color-balanced.
Checking "sRGB.icm" using transicc and xicclu, there is a small
discrepency between transicc and xicclu values:

   $ transicc -w -i sRGB-argyll.icc -o *Lab -t1 -c0
   R? G? B? 255 255 255 L*=100.0000 a*=0.0005 b*=-0.0004

   $ xicclu -ir -pl -s255 sRGB-argyll.icc
   255.000000 255.000000 255.000000 [RGB] -> MatrixFwd -> 100.000000
0.000000 0.000000 [Lab]

I wrote a program that uses lcms (v2.5) to make 3 different V2 sRGB
profiles. Whether the resulting profile is color-balanced depends on
the values used for the D65 white point. The profile that uses the D65
value from the Argyll sRGB profile is *almost* color-balanced. But the
profiles that use the D65 value from the lcms API are not
color-balanced. This is true whether the profiles are V4 or V2, but
the examples below are V2 so that xicclu can also read the profiles.

   cmsCIExyY d65_lcms      = {0.3127,      0.3291,      1.0}; /* from
lcms 2.5 API */
   cmsCIExyY d65_argyll    = {0.312700492, 0.329000939, 1.0}; /*
argyllcms srgb white point */

Code for three sRGB profiles:
1. whitepoint = d65_argyll; /* using d65-argyll */
   primaries = srgb_primaries;
   tone_curve[0] = tone_curve[1] = tone_curve[2] = srgb_parametric_curve[0];
   profile = cmsCreateRGBProfile ( &whitepoint, &primaries, tone_curve );
   cmsSetProfileVersion(profile, 2.1);
   filename = "sRGB-V2-d65-argyll.icc";
   cmsSaveProfileToFile(profile, filename);

2. whitepoint = d65_lcms; /* using d65_lcms */
   primaries = srgb_primaries ;
   tone_curve[0] = tone_curve[1] = tone_curve[2] = srgb_parametric_curve[0];
   profile = cmsCreateRGBProfile ( &whitepoint, &primaries, tone_curve );
   cmsSetProfileVersion(profile, 2.1);
   filename = "sRGB-V2-d65-lcms.icc";
   cmsSaveProfileToFile(profile, filename);

3. hprofile  = cmsCreate_sRGBProfile(); /* cmsCreate_sRGBProfile */
   cmsSetProfileVersion(hprofile, 2.1);
   filename = "lcms-cmsCreate_sRGBProfile.icc";
   cmsSaveProfileToFile(hprofile, filename);

1 above, using the same D65 value as the Argyllcms "sRGB.icm",
produces a profile that is almost identical to sRGB.icm and is almost
color-balanced:

   $ transicc -w -i sRGB-V2-d65-argyll.icc -o *Lab -t1 -c0
   R? G? B? 255 255 255 L*=100.0000 a*=0.0005 b*=0.0008

   $ xicclu -ir -pl -s255 sRGB-V2-d65-argyll.icc
   255.000000 255.000000 255.000000 [RGB] -> MatrixFwd -> 100.000000
0.000000 0.001233 [Lab]

2 and 3 above, using the D65 value from the lcms API, produce almost
identical profiles that are not color-balanced. Checking
"lcms-cmsCreate_sRGBProfile.icc":

   $ transicc -w -i lcms-cmsCreate_sRGBProfile.icc -o *Lab -t1 -c0
   R? G? B? 255 255 255 L*=100.0006 a*=-0.0020 b*=0.0018

   $ xicclu -ir -pl -s255 lcms-cmsCreate_sRGBProfile.icc
   255.000000 255.000000 255.000000 [RGB] -> MatrixFwd -> 100.000590
-0.002543 0.002250 [Lab]

Similar results obtain with other D65 profiles (eg adobe_compatible)
and also with D50 profiles like widegamut and prophoto, where again
the difference between color-balanced and not color-balanced depends
on using a white point that isn't exactly equal to official D50 white
point values.

Three questions: First, when making a profile, is there any reason to
use official D65 and D50 white points that produce profiles that
aren't color-balanced?

Second, for an 8-bit image, perhaps it doesn't matter whether an ICC
profile is perfectly color-balanced or not. Does it matter for the
increasing number of image editors and raw processors that work with
32-bit linear gamma floating point images?

Third, why the discrepency between xicclu and transicc values?

Thanks in advance for insight on this issue of color-balanced profiles!

-- 
Elle Stone
http://ninedegreesbelow.com - articles on color management & open
source photography

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to