Re: [GD-DEVEL] RGB to Lab colorspace conversion
[email protected] (Joe Lencioni) Wed, 27 Jan 2010 10:57:17 -0600
| Newsgroups | php.gd.devel |
|---|---|
| Message-ID | <[email protected]> |
I am the author of the code linked below and I agree to relicense it to BSD for GD. 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 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 deltaE 2000 (complex): http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#874 deltaE 76 (simple): http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#857 deltaE CMC: http://code.google.com/p/smart-lencioni-image-resizer/source/browse/trunk/slirimage.class.php?spec=svn59&r=46#967 When you port this code, you might want to change some of the variables I set into parameters. For example, in deltaCMC(), I set $weightL and $weightC at the beginning to suit my needs. In GD, these would be better off as parameters. Also, these are just the conversions that I needed. For more conversions, the EasyRGB website is a good starting point. On Tue, Jan 26, 2010 at 12:42 PM, Pierre Joye <[email protected]> wrote: > hi, > > Ah, you are the author of this code? If yes and if you agree to > relicense it to BSD for GD (the port), then everything is fine :). If > you are not the author, then we have to implement it from scratch > based on the specs. > > Cheers, > > On Tue, Jan 26, 2010 at 6:59 PM, Joe Lencioni <[email protected]> > wrote: > > 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 > > > > > > > > -- > Pierre > > @pierrejoye | http://blog.thepimp.net | http://www.libgd.org >