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

回答(1 个)

Arjun
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:
I hope this will help!

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by