Hi to all,

This is a newbie question related to color image processing ...

I've got a lot of computer vision and image processing algorithms that works on greyscale images, i.e. 8-bit, 16-bit and float greyscale images.
I want to update my algorithms and process color images.
There are very few research papers on color image processing and each paper use a different method to process such images (e.g. a different color space, a different white point, ...). While I'm well versed in computer vision (using greyscale images), I'm a newbie to color image processing, and the more I read research papers or books or FAQ or web articles on the subject, the more I am confused about all these conflicting informations and different mathematics ... Nevertheless, to sum up what I have learned, this is what I need to do to convert my algorithms : 1) First, I want to deal with RGB-24-bit, RGB-48-bit and RGB float (also known as HDR) images 2) To process such images, I need to convert them to Yxy or CIE Lab color space 3) Then, I need to apply my greyscale algorithms to the Y (Yxy) or to the L (CIE Lab) component 4) I then have to convert back the transformed image to a RGB color space (RGB 24-/48-bit or RGB float) 5) for HDR images, once I have a transformed RGB float image, I can apply a tone mapping algorithm and convert to 48-bit (or 24-bit)

The problems I have are the following :
---------------------------------------
A) If I need to write a RGB2XYZ matrix to convert my images, what matrix should I use ? My images are taken from unknown files (LDR, HDR float) or from unknown camera (JPEG 24-bit or RAW converted to 48-bit, no profile attached), so do I have to assume they have linear RGB color values or do I have to assume that they use a sRGB color model or do I need to apply a gamma correction before the transformation ? In the second case (sRGB) or third case (gamma correction), the transformation matrix is far more complex to calculate (from a computationnal standpoint). Is this computation really needed ? For example, given this link: http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html, and given a RGB file that is not known, do I need to compute these complex transformations before using a RGB2XYZ matrix ?
=> And what reference white point should I use (e.g. D50, D65) ???

B) Instead of writing my own transformation matrices, does LittleCMS can do this for me ? That would mean: converting from RGB 24-/48-bit and RGB float to a float color space such as Yxy ? I noticed that LittleCMS has 16-bit XYZ/Yxy/Lab types and even 8-bit Lab. How is this possible ??? All research papers I could read work with float images (not double images and even less 8-bit, and this is something I can easily understand), so how can you represent such color spaces as 8-bit (even as 16-bit) ? 16-bit is probably correct for images coming from a digital camera, due to the limitation of the CCD captors, but what about computer generated images (i.e. most of the HDR images) ?

I know this is a lot of questions, but as I have said, I'm a newbie to the field of color image processing and I just want to apply greyscale image processing algorithms to a color image. Is this really possible ? Is there a *standard way* or at least a *commonly accepted way* to do this ?

Thanks in advance for any info or pointers you could give me :)

Hervé Drolon



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to