>http://ninedegreesbelow.com/photography/srgb-profile-comparison.html
Interesting article, thanks for the link. Out of curiosity, where does the Microsoft sRGB profile (as delivered with Windows, i.e., sRGB Color Space Profile.icm) fall in the table? Or is it there and I just don't realize it? By the way, to further the original question, an approach that can work (I'm using it) to operate on non-linear image data linearly is this: 1. Derive the general tone and reverse tone curves of an image's profile by passing grayscale values from black to white through a transform from the image's profile to a created linear working profile. Use the results of that to build tone and inverse tone curves and smooth them. 2. Use optimized conversion processes using the tone curve data from step 1 to access the pixels of the image. In other words, the act of reading a pixel removes the gamma precompensation and the act of writing a pixel restores it. In my case, no matter how the image is stored my pixel access routines provide and expect four single precision floating point numbers (R, G, B, A) that can be then be operated on mathematically by common routines. Using highly optimized SSE operations (noting that the RGBA values fit nicely in an __m128) and table lookups it's actually reasonably efficient. This facilitates linear math operations on image data without having to come up with some kind of linearized working version of an image profile and without transforming every pixel of an image to one using a working profile with a deeper data format and thus using up a lot of RAM. Since the reverse gamma operation is done when writing as reading, results actually come out pretty accurate. Using linear math to operate on pixels really shows in the output quality. -Noel ------------------------------------------------------------------------------ _______________________________________________ Lcms-user mailing list Lcms-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lcms-user