Re: [GD-DEVEL] RGB to Lab colorspace conversion
[email protected] (Pierre Joye) Tue, 26 Jan 2010 18:42:44 +0100
| Newsgroups | php.gd.devel |
|---|---|
| Message-ID | <[email protected]> |
hi, Color conversions would rock. If you can find implementation under a BSD license (or similar but not GPL), we will happy to port them. Cheers, On Mon, Jan 25, 2010 at 11:41 PM, Joe Lencioni <[email protected]> wrote: > First of all, thank you for developing GD. It is an indispensable tool for > working with images in PHP. > > I am working on an image resizing and cropping script that attempts to > detect which areas of an image are more important when making cropping > decisions--essentially asking the computer to determine perceptual color > differences. To accomplish this, I convert pixels from the RGB colorspace > into Lab colorspace and compare the differences. ( > http://en.wikipedia.org/wiki/Lab_color_space#Advantages_of_Lab). While I can > make this happen in PHP, it is slow and uses too much memory. I would love > to see functions to facilitate this conversion and comparison directly in > GD. > > To convert from RGB to Lab, you first need to convert from RGB to XYZ > colorspace and then from XYZ to Lab colorspace. Here are the functions that > I use for conversion in PHP (which have been derived from the formulas on > the EasyRGB website http://www.easyrgb.com/index.php?X=MATH): > > GD color index to RGB: > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#755 > RGB to XYZ: > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#770 > > XYZ to CIE-L*a*b* (more complex): > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#825 > or > XYZ to Hunter-Lab (less complex): > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#806 > > And comparing the colors (more info at > http://en.wikipedia.org/wiki/Color_difference): > > deltaE 2000 (complex): > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#874 > or > deltaE 76 (simple): > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#857 > or > deltaE CMC: > http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#967 > > For accuracy purposes, I would prefer to be able to use the more complex > equations. However, if they prove to be too slow, it would be nice to fall > back on the simpler versions. > > So my question is this: does this kind of functionality make sense to > include in GD (I hope so)? If so, will you add it? I am unfamiliar with C, > otherwise I would submit the code, but hopefully it won't be too much work > to convert the PHP functions I have provided here. > > Thanks! > Joe > -- Pierre @pierrejoye | http://blog.thepimp.net | http://www.libgd.org