How to perform regionprops to specifically get object's centroid

46 views (last 30 days)
i have a vector row like this :
A = [1;1;1;0;0;0;0;0;1;1;0;0;1;1;1;1;0;0;0;0;1;1;1];
And use regionprops function to retrieve the centroid of 0's values.
props = regionprops(A==0, 'Centroid');
xyCentroids = [props.Centroid];
Now xyCenroids variable has indices of all 0's centroids.
How to retrieve the indices of 0's Centroids that only have length more than 2 ? So that the smallest 0's area (like A(11:12,1)) won't pass the process.
Thanks before

Accepted Answer

Image Analyst
Image Analyst on 27 Jan 2019
That's not a row vector. It's a column vector. Anyway, try using bwareafilt():
A = [1;1;1;0;0;0;0;0;1;1;0;0;1;1;1;1;0;0;0;0;1;1;1]
% Extract blobs only of length 3 or longer.
blobs = bwareafilt(A == 0, [3, inf])
% Measure centroids
props = regionprops(blobs, 'Centroid');
xyCentroids = vertcat(props.Centroid)
yCentroids = xyCentroids(:, 2)
You'll get
yCentroids =
6
18.5

More Answers (0)

Community Treasure Hunt

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

Start Hunting!