Color conversion RGB to Lab

Hello, I want to convert a RGB image to L*a*b*, I did some research and I found two different codes, and the results are also differents.
1st code :
src = 'Img1.jpg';
rgbI = imread(src);
labI=rgb2lab(rgbI);
imshow(labI(:,:,1),[0 100])
2nd code :
src = 'shad.jpg';
rgbI = imread(src);
labTransform = makecform('srgb2lab');
labI = applycform(rgbI, labTransform);
imshow(labI)
Could you please tell me which one is the correct conversion.

2 Comments

Your source images are different:
src = 'Img1.jpg';
src = 'shad.jpg';
I work on the same image

Sign in to comment.

Answers (1)

Stephen23
Stephen23 on 6 Mar 2017
Edited: Stephen23 on 6 Mar 2017
The makecform default illuminant is ICC, but sRGB uses D65. So you need to specify the correct whitepoint for that conversion
makecform('srgb2lab', 'AdaptedWhitePoint', whitepoint('D65'))

Asked:

on 6 Mar 2017

Commented:

on 6 Mar 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!