MATLAB: How can i get the pixel values of L , a, b in Lab space

color differencedelta eImage Processing Toolboxlab space value

i write this code data(m,n).color= impixel(imlab,m,n); imlab is an image in lab space and the result of running the code has 3 number i dont know is it correct? if yes which one is a ? and how can i use this value to calculate the difference between 2 pixels color? and do you suggest using DELTA E?

Best Answer

L is plane 1, a is 2, and b is 3.
labImage = rgb2lab(rgbImage);
lImage = labImage(:, :, 1);
aImage = labImage(:, :, 2);
bImage = labImage(:, :, 3);
imshow(labImage);
hp = impixelinfo();
Yes you should use delta E to determine color difference.
deltaEImage = sqrt((lImage - lRef) .^ 2 + ...
(aImage - aRef) .^ 2 + ...
(bImage - bRef) .^ 2);
imshow(deltaEImage, []);
hp = impixelinfo();
Note, these are not TRUE CIELAB values like you'd get from a spectrophotometer and simply use the "book formula". If you change the exposure of your camera, you will get new RGB values, and hence new LAB values even though your sample did not change at all. To avoid that, you'd need to take the much more complicated step of doing a color calibration of your system with known standards like the X-Rite Color Checker Chart.