count rectangular and circles

Hi all,
I want to count how many rectangular and circles in the image? what is the difference between rectagular and circle in matlab regionprops?
Also, I want to count how many rectangular and circles, both with holes in the image?
Finally, I want to export a figure just square and rectangular only.
Thank you for your help
clc;
close all;
clear;
A = imread('Shapes_with_holes.png');
A = imbinarize(A);
[label counts]= bwlabel(A);
imshow(A);
stats = regionprops(A,'Circularity','Centroid','Area','Perimeter','Solidity','FilledArea');
filledImage = imfill(A,'holes');
boundaries = bwboundaries(filledImage);
circularity = [stats.Circularity];
perimeters = [stats.Perimeter];
area = [stats.Area];
filledarea = [stats.FilledArea];
solidities = [stats.Solidity];
Centroid = [stats.Centroid];
circularities = perimeters.^2./(4*pi*filledarea);
hold on;
for blobNumber = 1 : counts
if circularities(blobNumber) < 1.19
theLabel = 'Circle';
elseif circularities(blobNumber) < 1.53
theLabel = 'Rectangle';
else
theLabel = 'Triangle';
end
text(stats(blobNumber).Centroid(1), stats(blobNumber).Centroid(2),...
theLabel, 'Color', 'r');
end

댓글 수: 3

KALYAN ACHARJYA
KALYAN ACHARJYA 2022년 4월 14일
Tu Nguyen
Tu Nguyen 2022년 4월 14일
I read the answer, however, they use a function minboundrect that is the built-in function. Do you have any method that classify rectangular and circles ny metric value?

댓글을 달려면 로그인하십시오.

답변 (1개)

yanqi liu
yanqi liu 2022년 4월 15일

0 개 추천

yes,sir,use regionpropers to find difference between rectagular and circle, may be use:
Circularity、BoundingBox
such as
bwi = imcrop(bw, round(stats(i).BoundingBox));
rate = nueml(find(bwi(:)))/numel(bwi);
now we can find rectagular get more rate than circle, may be try it.

제품

릴리스

R2021b

질문:

2022년 4월 14일

댓글:

DGM
2022년 4월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by