What you are trying to do, is easely done by a utility called "icc2it8". You can find
a Win32 binary in the utilities page: http://www.littlecms.com/newutils.htm#icc2it8
The profiler package for linux has the source code as well.
That will generate a fake IT8 taking measures directly from profile. In your case
icc2it8 -t3 -l "sRGB Color Space Profile.icm" srgb.it8
That is, using the sRGB standard profile, and absolute colorimetric intent (-t3)
generate RGB and Lab values (-l). This will result in a srgb.it8 containing both
RGB and Lab and ready to be used by the profilers. In this case, absolute
intent is needed, since you are measuring absolute Lab as taken from real target
If you want to try the scanner profiler, make sure to select this file as "Target".
Since the RGB measurement is already in the sheet. Leave the "measurement"
field blank. I have checked it and gives to me a dE of 0.29 and a peak of about
1.5. This peak is due to the special handling on gamut boundaries the scanners does
need. Also, you can try to profile your sheet as monitor (and this should be more
correct, since sRGB is really a monitor profile). On monitor profiler, select
"I want to build accurate profile from measurement sheet", and enter the sheet name.
The monitor profiler gives a dE of 0.18 and a peak again of 1.5. Comparing the
obtained profile by qtProfileChecker against true sRGB gives identical gamut triangle
and transfer curves.
dE and Peak 0 could not be obtained easely, since IT8 target gamut is bigger than
sRGB andt thus, some clipping always happens.
The little cms project
----- Original Message -----
From: "Mark Rubin" <markrubn@...>
Sent: Wednesday, January 22, 2003 7:24 PM
Subject: [Lcms-user] Unexpected results with "zero error" IT8.7 test
> I am experimenting with LCMS (thank you for creating it and making it
> available) and have some results which I don't understand.
> I created a synthetic image of an IT8.7 target, and measured it using
> qtmeasurementtool. I then wrote code using the LCMS library to
> convert these sRGB values to XYZ and L*a*b* and created an IT8.7 "data
> sheet". Finally, I used these two files with qtscannerprofiler to
> create a profile, and tested the profile on the original image using
> I had expected the profile to have a zero average dE (the sRGB and
> XYZ and L*a*b* values exactly matched) and the output of tifficc to be
> identical to the originial image. Instead, qtscannerprofiler had very
> large dE values, and the tifficc output was almost entirely white (out
> of gamut overflow?).
> Following are details from the data and code. Any advice is welcome.
> A typical entry from the qtmeasurementtool output file:
> B6 200 79 73 0
> Part of the header and the corresponding entry from the "data
> file". These values match the results of using icctrans manually.
> SAMPLE_ID XYZ_X XYZ_Y XYZ_Z LAB_L LAB_A LAB_B
> B6 29.14 18.85 6.32 50.52 48.83 29.74
> Excerpts from the code used to translate sRGB to XYZ and L*a*b*:
> cmsHPROFILE srgb_icc = cmsCreate_sRGBProfile(),
> xyz_icc = cmsCreateXYZProfile (),
> lab_icc = cmsCreateLabProfile (NULL) ;
> icColorSpaceSignature srgb_space = cmsGetColorSpace(srgb_icc) ;
> DWORD dw_srgb = BYTES_SH(2) |
> CHANNELS_SH(_cmsChannelsOf(srgb_space)) ;
> xyz_trans = cmsCreateTransform(srgb_icc,
> lab_trans = cmsCreateTransform(srgb_icc,
> cmsFLAGS_NOTPRECALC) ;
> WORD rgb[MAXCHANNELS],
> lab[MAXCHANNELS] ;
> sscanf(buffer + blank, "%d%d%d", rgb, rgb+1, rgb+2) ;
> rgb *= 257 ;
> rgb *= 257 ;
> rgb *= 257 ;
> cmsDoTransform(xyz_trans, rgb, xyz, 1) ;
> cmsDoTransform(lab_trans, rgb, lab, 1) ;
> cmsCIEXYZ xyz_float ;
> cmsCIELab lab_float ;
> cmsXYZEncoded2Float(&xyz_float, xyz) ;
> cmsLabEncoded2Float(&lab_float, lab) ;
> "%-4.*s %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f\n",
> xyz_float.X * 100.0,
> xyz_float.Y * 100.0,
> xyz_float.Z * 100.0,
> lab_float.b) ;
> The errors from qtscannerprofiler:
> Average dE : 69.72
> Standard deviation : 26.90
> Peak : 127.33
> Min : 0.00
> I also tried using INTENT_PERCEPTUAL in the cmsCreateTransform(...)
> calls, which gave the same XYZ and L*a*b* values as
> INTENT_RELATIVE_COLORIMETRIC. Using INTENT_ABSOLUTE_COLORIMETRIC
> gave different values, but similar bad results:
> Average dE : 70.36
> Standard deviation : 26.86
> Peak : 131.91
> Min : 0.00
> Do you Yahoo!?
> Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
> This SF.net email is sponsored by: Scholarships for Techies!
> Can't afford IT training? All 2003 ictp students receive scholarships.
> Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
> Lcms-user mailing list