Detect all the rectangles in image
13 次查看(过去 30 天)
显示 更早的评论
Hey all,
in the following image, all the rectangles are a little bit deformed due to power leakage effect. I want to detect all the rectangles and obtain the positions of the rectangles.

Is there a way to detect all rectangles?
Thank you
0 个评论
采纳的回答
Image Analyst
2019-2-18
It's trivial. Just use regionprops(). See my Image Segmentation Tutorial
9 个评论
Image Analyst
2019-2-20
How about you just compute the centroid, even with the tails, then take a vertical and horizontal line through the centroid and use find() to find the top and bottom lines and left and right columns of the rectangle?
更多回答(1 个)
KSSV
2019-2-18
I = imread('myImage.jpeg') ;
[y,x] = find(I>50) ;
imshow(I)
hold on
idx = kmeans([x y],4) ;
for i = 1:4
plot(x(idx==i),y(idx==i),'.')
% GEt L and B of rectangles
x0 = min(x(idx==i)) ; x1 = max(x(idx==i)) ;
y0 = min(y(idx==i)) ; y1 = max(y(idx==i)) ;
%
L = x1-x0 ;
B = y1-y0 ;
coor = [x0 y0 ; x0 y1 ; x1 y1 ; x1 y0] ;
patch(coor(:,1),coor(:,2),rand(1,3))
end
3 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Labels and Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





