I've been using LCMS for a while now. I think its great! I have a question:
Why does it call "_cmsToFixedDomain" at every stage in the BToA pipeline? To my thinking, this messes up the values, because the results of one transform are modified slightly before they go through the next translation. This makes it difficult, if not impossible, to align the interpolations in even boundaries, so that creating accurate profiles is very difficult. Here is what I see as the typical Curve/LUT/Curve translation, using the BtoA table as an example, with LAB PCS. 1. start with lab [0..100 -128..0..127 -128.0.127 ] 2. convert lab to uint16 encoding [L* a* b*]: [ 0..65280 0..32768..65280 0..32768..65280 ] [ 0..xFF00 0..x8000..xFF00 0..x8000..xFF00 ] 3. first curve: 3a. convert to "fixed domain" a -> a + ((a + x7fff) / xffff); 3b. look up in table to get N 4. LUT 4a. convert N to fixed domain N -> N + ((N + x7fff) / xffff); 4b. look up in LUT to get M 5. second curve 5a. convert M to fixed domain M -> M + ((M + x7fff) / xffff); 5b. look up in table to get Result The fact that (X + x7fff) / xffff gets added in at each stage is very annoying.. is there a good way to think about this that makes sense? Note that the ICC spec says this: "If the input is the XYZ PCS, 1+(32767/32768) shall be mapped to the value 1,0. If the output is the XYZ PCS, the value 1,0 shall be mapped to 1+(32767/32768)." But this only happens when using XYZ. Whe does LCMS do it with Lab? Will ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Lcms-user mailing list Lcms-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lcms-user