Ok, I get the right behavior now with cmsSetAdaptationState(0).
Thank you for answering !
Regards,
Vincent
> Date: Mon, 30 Mar 2015 09:51:54 +0000
> From: marti.ma...@littlecms.com
> To: vincent.ponch...@hotmail.fr
> CC: lcms-user@lists.sourceforge.net
> Subject: Re: [Lcms-user] Issue with built in Lab profiles
>
>
>
>
> Hi Vicent,
>
> This is because a requirement of ICC Spec, see:
>
> http://color.org/ICC_white_paper_6_v2_and_v4_display_profile_differences.pdf
>
> You can get the behavior you wish by setting degree of user adaptation
> to 0 at the very beginning of your program:
>
> cmsSetAdaptationState(0);
>
>
> Additionally, you could try transicc command line utility:
>
> > transicc -t3 -d0 -i*srgb -o*Lab
>
> LittleCMS ColorSpace conversion calculator - 4.3 [LittleCMS 2.07
>
> Enter values, 'q' to quit
> R? 255
> G? 255
> B? 255
>
> L*=100.0000 a*=-2.3871 b*=-19.4050
>
> transicc -t3 -d0 -i*srgb -o*XYZ
> LittleCMS ColorSpace conversion calculator - 4.3 [LittleCMS 2.07]
>
> Enter values, 'q' to quit
> R? 255
> G? 255
> B? 255
>
> X=95.0456 Y=100.0000 Z=108.9058
>
> Regards
> Marti
>
>
>
> Quoting Vincent Ponchaut <vincent.ponch...@hotmail.fr>:
>
> > Hi All,
> > I am having an issue with little CMS built in Lab profiles that I
> > have a hard time understanding. When I try to represent the Gamut of
> > my display from its profile by using the API in different Lab spaces
> > created with two different white points (in this case D50 and D65),
> > I would expect to observe some differences.For instance, The White
> > point (1.0, 1.0, 1.0) could not be converted to Lab (100, 0.0, 0.0)
> > in both spaces, as the reference illuminants used for the
> > conversions are different.
> > I wrote the code sample below to enlighten my confusion:
> >
> > /* hProfile is a display profile read from a validated Icc
> > profile beforehand*/
> > cmsHPROFILE labD50, labD65;
> > labD50 = cmsCreateLab4Profile(cmsD50_xyY());
> > cmsCIExyY white; cmsCIEXYZ white_xyz; white_xyz.X =
> > 0.95047; white_xyz.Y = 1.00000; white_xyz.Z = 1.08883; //D65
> > cmsXYZ2xyY(&white,&white_xyz); labD65 =
> > cmsCreateLab4Profile(&white);
> > cmsHTRANSFORM TD50 = cmsCreateTransform(
> > hProfile, TYPE_RGB_DBL, labD50, TYPE_Lab_DBL,
> > INTENT_ABSOLUTE_COLORIMETRIC, // same with relative 0
> > ); cmsHTRANSFORM TD65 = cmsCreateTransform(
> > hProfile, TYPE_RGB_DBL, labD65, TYPE_Lab_DBL,
> > INTENT_ABSOLUTE_COLORIMETRIC, // same with relative 0
> > );
> > const int SIZE = 64; int Errcount = 0; double sum = 0.0;
> > for (int r = 0; r < SIZE; ++r) for (int g = 0; g <
> > SIZE; ++g) for (int b = 0; b < SIZE; ++b)
> > { cmsCIELab LD50, LD65;
> > double RGB[] = { double(r)/double(SIZE-1),
> > double(g)/double(SIZE-1),
> > double(b)/double(SIZE-1) };
> > cmsDoTransform(TD50,RGB,&LD50,1);
> > cmsDoTransform(TD65,RGB,&LD65,1); sum +=
> > abs(LD50.L - LD65.L) + abs(LD50.a - LD65.a) + abs(LD50.b - LD65.b);
> > if (LD50.L != LD65.L || LD50.a != LD65.a || LD50.b
> > != LD65.b) { Errcount++;
> > } }
> >
> > As a result, absolutely no difference has been observed.
> > Could someone please give some more precision about those built in
> > profiles? Did I misunderstand something?
> > Best regards,
> > Vincent.
>
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user