Extract and sort size of matrix where in the cell
2 次查看(过去 30 天)
显示 更早的评论
clc;clear;close all
im= [0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 0 0
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0];
cc=bwconncomp(im);
for i=1:cc.NumObjects
CC{i}=cc.PixelIdxList{i}
end
Size=zeros(1,cc.NumObjects);
for j=1:cc.NumObjects
Size(:,i)=size(cell2mat(CC(j)))
end
3 个评论
回答(1 个)
Arjun
2025-1-8
I understand that you want to extract the connected componets in the descending order and also find out the components which are greater than a specific threshold size.
You can refer to the following workflow to achieve this:
- Find out the connected components using "bwconncomp"
cc=bwconncomp(im);
- Get the properties of the connected components using "regionprops"
stats = regionprops(cc, 'Area');
- Extract the sizes of the components
sizes = [stats.Area];
- Sort the components by descending order using "sort"
[sortedSizes, sortedIndices] = sort(sizes, 'descend');
- Specify the threshold and filter accordingly
filteredComponents = sortedIndices(sortedSizes > sizeThreshold);
Following are the documentation links of the functions used for your reference:
- bwconncomp: https://www.mathworks.com/help/releases/R2021a/images/ref/bwconncomp.html
- regionprops: https://www.mathworks.com/help/releases/R2021a/images/ref/regionprops.html
- sort: https://www.mathworks.com/help/releases/R2021a/matlab/ref/sort.html
I hope this will help!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!