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
>