Re: [GD-DEVEL] RGB to Lab colorspace conversion
[email protected] (Joe Lencioni) Tue, 26 Jan 2010 11:59:27 -0600
| Newsgroups | php.gd.devel |
|---|---|
| Message-ID | <[email protected]> |
The links to the functions that I sent were all written by me (based off of the math on the Wikipedia articles http://en.wikipedia.org/wiki/Lab_color_space http://en.wikipedia.org/wiki/Color_difference and the EasyRGB website http://www.easyrgb.com/index.php?X=MATH http://www.easyrgb.com/index.php?X=DELT). If you are concerned about the GPL license on the code from Google Code, I would be happy to let you port that code for GD. Please let me know if there is anything that I can do to help make this happen. Joe On Tue, Jan 26, 2010 at 11:42 AM, Pierre Joye <[email protected]> wrote: > 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 >