Thread: [Lcms-user] LCMS 2 advanced transition guide?
An ICC-based CMM for color management
Brought to you by:
mm2
From: Dave T. <li...@ku...> - 2011-04-28 19:30:46
|
I'm currently looking to move from LCMS 1 to LCMS 2 however the significant changes regarding "advanced" usage are making it a bit difficult. As such I'm wondering if there's an LCMS 1 to LCMS 2 transition guide, particularly regarding advanced usage. I've looked through the docs and mailing list archives and really can't find much on how to move from LCMS 1 to 2 for advanced uses. Does there exist such a guide? If so please point me to it. ;-) As I can't find such a guide I'll just start asking questions. Although things do appear to have changed significantly it does look like a lot of functionality can still be done with the new API, however there also seems to be a lot of omissions (ex: the matrix & vector functions but those are available via lcms2_plugin.h). Here's a list of some LCMS 1 functions that I can't find equivalents for in LCMS 2 as well as a few functions and what I understand to be their equivalents in LCMS 2 - please correct me if I'm wrong: LCMS1: cmsTakeIluminant(LPcmsCIEXYZ Dest, cmsHPROFILE hProfile); cmsBuildRGB2XYZtransferMatrix(LPMAT3 r, LPcmsCIExyY WhitePoint, LPcmsCIExyYTRIPLE Primaries); LCMS2: Unknown LCMS1: cmsTakeColorants(LPcmsCIEXYZTRIPLE Dest, cmsHPROFILE hProfile); LCMS2: cmsCIEXYZ cRed, cGrn, cBlu; cRed = *(cmsCIEXYZ *)cmsReadTag( hProfile, cmsSigRedColorantTag ); cGrn = *(cmsCIEXYZ *)cmsReadTag( hProfile, cmsSigGreenColorantTag ); cBlu = *(cmsCIEXYZ *)cmsReadTag( hProfile, cmsSigBlueColorantTag ); LCMS1: cmsCIEXYZ whitePoint; cmsTakeMediaWhitePoint( &whitePoint, hProfile ); LCMS2: cmsCIEXYZ whitePoint = *(cmsCIEXYZ *)cmsReadTag( hProfile, cmsSigMediaWhitePointTag ); I see that there is a _cmsBuildRGB2XYZtransferMatrix in lcms2_internal.h - why isn't this included in the public interface? The only other significant change that's causing troubles is the move from GAMMATABLEs to cmsToneCurve, but that looks like it should be fairly straightforward. Cheers -- Dave Thorup Senior Software Engineer http://bibblelabs.com |
From: Dave T. <li...@ku...> - 2011-05-03 20:23:28
|
Thanks for the pointers, I actually got it all pretty much working by the time of your post. The only things that I haven't been able to find equivalents for are the cmsTakeIluminant(...) & cmsBuildRGB2XYZtransferMatrix(...). In place of cmsTakeIluminant(...) I'm just using cmsD50_XYZ() as the docs from LCMS 1 state: ----------------- Notes: ICC states that profile illuminants MUST be D50. However, in real world, each manufacturer uses an illuminant value that differs slightly of D50. lcms takes this variation in account and does the necessary scaling. ----------------- So it would be nice to get the Illuminant from the profile but I don't see how that's possible in LCMS 2. As for cmsBuildRGB2XYZtransferMatrix(...), I'm currently just including <lcms2_internal.h> where needed and using the now private _cmsBuildRGB2XYZtransferMatrix(...). Yeah, I know, we shouldn't be using the private API but it wasn't private before. ;-) Any reason why that's no longer exported? Thanks -- Dave Thorup Senior Software Engineer http://bibblelabs.com On Apr 29, 2011, at 12:21 AM, Kai-Uwe Behrmann wrote: > Am 28.04.11, 14:30 -0500 schrieb Dave Thorup: >> The only other significant change that's causing troubles is the move from GAMMATABLEs to cmsToneCurve, but that looks like it should be fairly straightforward. > > I can only suggest some public working code for figuring out yourself. > Oyranos has two modules for lcms for lcms1 and lcms2 which are maintained. You might look at the lcm[s,2]GamutCheckAbstract() functions. They shall provide the according functionality in eigther way. Of course lcms2 is more capable in regards to float processing. > > http://oyranos.org/scm?p=oyranos.git;a=blob;f=modules/oyranos_cmm_lcm2.c;h=04d0b9ba77a275f18fb3b031047885c02406f5cf;hb=HEAD#l1066 > http://oyranos.org/scm?p=oyranos.git;a=blob;f=modules/oyranos_cmm_lcms.c;h=3b3aebe4537bd90a979f46f80ebf7c47b34b338c;hb=HEAD#l995 > > kind regards > Kai-Uwe Behrmann > -- > developing for colour management www.behrmann.name + www.oyranos.org > |