Hello,

I'm one of the developers of RawTherapee, a photo editing software with 
a floating point engine and which uses lcms2 for color management.

Recently I discovered that when making a transform from float to float 
(or float to 16 bit) using a basic icc with the gamma curve secified as 
an array of numbers the output contains fewer distinct values than the 
input. If the gamma is specified with a single number (ie pow(x, 
g/256)) but otherwise the same icc (not LUT, just matrix) the output 
is the expected, ie about the same amount of distinct numbers as the 
input.
 
Thus there is some precision lost in the curve interpolation code. 

If I've managed to navigate the code correctly it happens in 
cmsEvalToneCurveFloat() where a 16 bit integer path is taken despite 
it's perfectly possible to make a floating point interpolation.

As we want to maintain precision with widely used legacy icc files we'd 
like to see this fixed.

/Anders Torger
------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to