Extract and sort size of matrix where in the cell

3 vues (au cours des 30 derniers jours)
Amir Azadeh Ranjbar
Amir Azadeh Ranjbar le 5 Déc 2021
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 commentaires
Amir Azadeh Ranjbar
Amir Azadeh Ranjbar le 5 Déc 2021
Hi
I want sort Connected Components by theire Size
Amir Azadeh Ranjbar
Amir Azadeh Ranjbar le 5 Déc 2021
Find areas that theire size are larger than a specified threshold (threshold for size)

Connectez-vous pour commenter.

Réponses (1)

Arjun
Arjun le 8 Jan 2025
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!

Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by