MATLAB Answers


how to show lab space image

Asked by xiao
on 2 May 2018
Latest activity Commented on by Arthur Fernandes on 19 Nov 2018
lab color space is (0-100),(-128-127),(-128-127), given an image under lab color space, how to show it suitably (imshow is not appropriate)?


Sign in to comment.

2 Answers

Answer by Ameer Hamza
on 2 May 2018
 Accepted Answer

What about conversion to RGB before displaying.


on 2 May 2018
then does this have any difference with imshow(imread(image)) directly? Is this just the way what lab space look like?

Sign in to comment.

Answer by Image Analyst
on 2 May 2018

You can look at each channel one at a time
subplot(3, 1, 1);
imshow(labImage(:, :, 1), []);
title('L Image', 'FontSize', 20);
subplot(3, 1, 2);
imshow(labImage(:, :, 2), []);
title('A Image', 'FontSize', 20);
subplot(3, 1, 3);
imshow(labImage(:, :, 3), []);
title('B Image', 'FontSize', 20);


That is good but there is anyway to save each subplot to file? That is not using the the save menu option? I'm asking because using any of the following code will write an image that is not using the same mapping in gray scale:
imwrite(labImage(:, :, 3),'imgfile.png');
imwrite(labImage(:, :, 3),gray(100),'imgfile.png');
imwrite(labImage(:, :, 3),gray(256),'imgfile.png');
Nor the following:
imshow(labImage(:, :, 3), []);
cmap = colormap;
imwrite(labImage(:, :, 3),cmap, 'imgfile.png');
Image Analyst
on 16 Nov 2018
If you want a grayscale rendering of the image, not the actual values, you can convert to uint8 and then use a standard format like PNG:
uint8Image = uint8(255 * mat2gray(labImage(:, :, 1)));
imwrite(uint8Image, 'L Channel.PNG');
uint8Image = uint8(255 * mat2gray(labImage(:, :, 2)));
imwrite(uint8Image, 'A Channel.PNG');
uint8Image = uint8(255 * mat2gray(labImage(:, :, 3)));
imwrite(uint8Image, 'B Channel.PNG');
I didn't know about that mat2gray function, I was wandering if Matlab had someting more direct. But still better than using my on code. Thank you!

Sign in to comment.