Color-Based Segmentation Using the L*a*b* Color Space
1 view (last 30 days)
Show older comments
Hi everyone. I'm trying to count the number of elements in this picture via color-based segmentation. I'm following the tutorial at this link: https://es.mathworks.com/help/images/examples/color-based-segmentation-using-the-l-a-b-color-space.html Anyway, in the demo he takes 'load coordinates' while I want to get 3 roipoly functions to get the thresholds for the three colors and then save them into 'region coordinates' so that the loop at line 14 (and the code) flows. Thanks.
0 Comments
Accepted Answer
Akira Agata
on 1 Nov 2017
Looking at your image, there are obviously 4 colors --- blue, green, red and dark brown (=background). So I believe Color-Based Segmentation Using K-Means Clustering example page will be help. The following is an example of k-means-based clustering of your image.
% Read the image and convert to L*a*b* color space
I = imread('Crop.jpg');
Ilab = rgb2lab(I);
% Extract a* and b* channels and reshape
ab = double(Ilab(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);
% Segmentation usign k-means
nColors = 4;
[cluster_idx, cluster_center] = kmeans(ab,nColors,...
'distance', 'sqEuclidean', ...
'Replicates', 3);
% Show the result
pixel_labels = reshape(cluster_idx,nrows,ncols);
imshow(pixel_labels,[]), title('image labeled by cluster index');
More Answers (0)
See Also
Categories
Find more on Image Segmentation and Analysis 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!