如何检测图像中的所有矩形?

时间:2019-02-18 08:26:02

标签: matlab image-processing

在下图中,由于漏电效应,所有矩形都有些变形。我想检测所有矩形并获取矩形的位置。如果矩形的数目是任意的(也许未知),如何检测?

image

是否可以使用MATLAB检测所有矩形?

2 个答案:

答案 0 :(得分:0)

矩形位于黑色背景上,因此最简单的方法是将图像视为简单的2D数组,其值从0到任何值(假设0为黑色)。

然后您可以编写并声明说,当数组值大于0时,将x和y中的数组坐标输出到新数组。完成此操作后,您可以编写另一个脚本来查找框的角,方法是查看每个坐标是否等于另一个坐标(如果您添加或减去了1),这将为您提供框数和坐标每个盒子。

那么您应该能够从那里找到中心。

答案 1 :(得分:0)

您需要对图像进行一定程度的阈值处理。并执行regionprops()。阅读MATLAB帮助文档。 另请参考下面的MATLAB代码。

clc
MainImg = imread('ifVsy.jpg');
BinImg = im2bw(MainImg,graythresh(MainImg));

Objects = regionprops(BinImg,'centroid');
AllCenters = cat(1, Objects.Centroid);

imshow(MainImg);
hold on
plot(AllCenters(:,1),AllCenters(:,2),'r*');
hold off

Result Image