Extract and sort size of matrix where in the cell

2 ビュー (過去 30 日間)
Amir Azadeh Ranjbar
Amir Azadeh Ranjbar 2021 年 12 月 5 日
回答済み: Arjun 2025 年 1 月 8 日
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 件のコメント
Amir Azadeh Ranjbar
Amir Azadeh Ranjbar 2021 年 12 月 5 日
Hi
I want sort Connected Components by theire Size
Amir Azadeh Ranjbar
Amir Azadeh Ranjbar 2021 年 12 月 5 日
Find areas that theire size are larger than a specified threshold (threshold for size)

サインインしてコメントする。

回答 (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 Center および File ExchangeShifting and Sorting Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by