![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/179087/image.png)
Color-Based Segmentation Using the L*a*b* Color Space
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Akira Agata
2017-11-1
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');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/179087/image.png)
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!