RGB 2 L*A*B*
2 views (last 30 days)
Show older comments
Hello, I tried to convert an image from rgb to LAB colorspace. I used the code from an example I found on matworks:
cform2lab = makecform('srgb2lab');
LAB = applycform(rgbimage, cform2lab);
I read that LAB(:,:,1) should have values between 0 and 100 but I have values up to 255. I think a part of the transformation failed... Why? (rgbimage is a (240x320x3 uint8))
0 Comments
Accepted Answer
David Sanchez
on 2 Sep 2013
LAB (:,:,1) can have values above 100. See if the following code (taking from matlab documentation) works on your machine:
rgb = imread('peppers.png');
cform = makecform('srgb2lab');
lab = applycform(rgb,cform);
image(lab)
See that lab(:,:,1) has values above 100 and the conversion works.
If any error is yielded, please, paste it here to see what is the problem.
More Answers (2)
Image Analyst
on 3 Sep 2013
The help for applycform says "The output array B has the same class as A" so if you pass in uint8, you'll get uint8 out. If you use im2double() to cast to double in the range 0-1 then you'll get out 0-1 and you can then multiply by 100.
0 Comments
sundari ravi
on 12 Dec 2018
i want to know what is the advandage of using L*a*b* than any other segmentation algorithm. will it help me with gray scale image
1 Comment
Image Analyst
on 12 Dec 2018
No it will not. For a gray scale image, all the pixels would be along the L axis. There is no A and B component for a gray scale image, by definition. So there is no reason at all to deal with LAB when you're dealing with a gray acale image. You'll have to use other segmentation methods, such as simple thresholding, or whatever your image needs. Be sure to see my Image Segmentation Tutorial, which works on gray scale images, and my color segmentation tutorials, in my File Exchange.
See Also
Categories
Find more on Modify Image Colors in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!