Mark, The internal logic is complex, an V4 profile implemented as matrix shaper do have a zero black point, which is not the case if the profile is implemented by using LUTs. That was already implemented in lcms 1. Lcms 2 behaves as lcms 1 in the cases lcms 1 is right.
But I think you have not to worry about all those details. If you want to do a comparative ColorSync/Lcms, all what you need is to use same file-based ICC profiles for both CMM. They should agree. If not then we can try to see why. Regards Marti. Quoting Mark <d...@cine-scan.com>: > Hi Marti > > I saved the sRGB input profile and see I'ts labelled as V4.2. So, > what's the logic followed by LCMS? > Something like, if no Black Point is defined assume it's X=Y=Z = 0 > and scale that to be L*=3. Otherwise scale the Black Point. > > Is there a way to make LCMS2 behave like LCMS1 or will it always > perform Black Point Compensation? > The reason I ask is I intend to compare some LCMS transforms to > current code that uses Apples ColorSync API. I do not think ColorSync > is doing BPC. > > Best regards > Mark > > > On 06.06.2010, at 19:16, marti.ma...@littlecms.com wrote: > >> >> Hi Mark, >> >> That's black point compensation, V4 perceptual and saturation >> have non-zero black points. sRGB built-in is basically a V2 >> profile, so for going from V2 black (which is zero) to v4 black >> (which is about L*=3) we need some sort of scaling. >> >> Regards >> Marti >> >> >> Quoting Mark <d...@cine-scan.com>: >> >>> Hi Marti >>> >>> looking at the stages created for a sRGB -> XYZ transform I see 3 >>> stages are generated >>> - curve set stage for the gamma curves >>> - matrix float stage converting device rgb to xyz (I see the matrix >>> is scaled so by 1/MAX_ENCODEABLE_XYZ) >>> - a second matrix including offset: >>> Offset: 0.0016800256 0.0017365765 0.0014350219 >>> Matrix: 0.9965152458 0.0000000000 0.0000000000 >>> 0.0000000000 0.9965269000 0.0000000000 >>> 0.0000000000 0.0000000000 0.9965207904 >>> >>> Can you tell me what the second matrix stage does? >>> The matrix varies according to the intent passed creating the >>> transform. The data above is for INTENT_PERCEPTUAL and >>> INTENT_SATURATION (IIRC). >>> INTENT_ABSOLUTE_COLORIMETRIC uses other values, without offset. >>> INTENT_RELATIVE_COLORIMETRIC does not have this second matrix stage. >>> >>> Best regards >>> Mark >>> ------------------------------------------------------------------------------ >>> ThinkGeek and WIRED's GeekDad team up for the Ultimate >>> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the >>> lucky parental unit. See the prize list and enter to win: >>> http://p.sf.net/sfu/thinkgeek-promo >>> _______________________________________________ >>> Lcms-user mailing list >>> Lcms-user@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/lcms-user >>> >> >> > > > ------------------------------------------------------------------------------ > ThinkGeek and WIRED's GeekDad team up for the Ultimate > GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the > lucky parental unit. See the prize list and enter to win: > http://p.sf.net/sfu/thinkgeek-promo > _______________________________________________ > Lcms-user mailing list > Lcms-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/lcms-user > ------------------------------------------------------------------------------ ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo _______________________________________________ Lcms-user mailing list Lcms-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lcms-user