Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

What's the correct result?

Asked by Tomas on 25 Nov 2012

Hi, this function used to convert RGB to Lab is correct? http://www.mathworks.com/matlabcentral/fileexchange/24009-rgb2lab/content/RGB2Lab.m because for example for R=1 G=50 B=32

it returns

L =
          45.6503487273573
a =
         -34.2039653178358
b =
          4.70335871603924

but this site http://www.colorhexa.com/013220 returns

L =
          17.422
a =
         -21.096
b =
          7.117

What's the correct result please?

0 Comments

Tomas

Tags

Products

No products are associated with this question.

1 Answer

Answer by Image Analyst on 25 Nov 2012

Well, neither, and both. It's possible that each uses different white points. If you want to use color formulas, I'd recommend using those from Stephen Westland http://www.mathworks.com/matlabcentral/fileexchange/36315-computational-colour-toolbox. This professor of color science at the University of Leeds is one of the top color scientists in the world (I met him last week at the Color Imaging Conference in Los Angeles where he was the conference chairman). Why do I say "neither"? Well because those are just "book formulas" and have little to no relation with what LAB value you will measure from your object if you measure it with a colorimeter or spectrophotometer. If you take a picture of something and then want the "real" lab like you'd get from a spectrophotometer, then you'll have to calibrate your system and not just use book formulas.

4 Comments

Image Analyst on 25 Nov 2012

Try casting I to double first.

Tomas on 25 Nov 2012

Now I get this error

??? Error using ==> ctranspose
Transpose on ND array is not defined.
Error in ==> srgb2xyz at 12
xyz = (M*RGB')'
Error in ==> rgblab at 3
[xyz] = srgb2xyz(I);
Image Analyst on 26 Nov 2012

I don't know where you got that function. If it's from one of those File Exchange submissions, you should contact the author. I know that it's one of the properties that you can supply to makecform() but it's not a built-in function of MATLAB. It's not a function itself, unless like I said it's from the File Exchange submission.

Image Analyst

Contact us