我试图在一个不太完美的二值化矩形图像周围找到一个旋转的边界框。缺陷总是不同的:有时是空心的,有时里面有东西,有时其中一个边少了一块,有时边上的某个地方多了一块,它们总是以随机的数量稍微旋转,但预期边界框的大小和形状总是几乎相同的绝对值像素。你知道吗
以下是我作为输入的一些示例(调整大小以更好地适应帖子):
理想情况下,我希望在白色矩形的外侧找到一个边界框(尽管我主要对边缘感兴趣),如下所示:
(通过反转其中一个空心构件,得到最大的连接构件,得到一个强制大小的旋转体)
到目前为止,我已经尝试了只得到一个rotatedrect,然后强制一个形状,这几乎适用于所有情况,除了有一个额外的块沿着一个边缘。我试着让连接的组件隔离其中的一部分,并在它们周围设置边界框,只要它们是空心的,这种方法就适用于任何情况。我试过放大和腐蚀图像,得到轮廓和霍夫线,试图只找到四个角点,但我也没有运气。我也在网上找过任何有用的东西,但都没有用。你知道吗
任何帮助或想法都将不胜感激。你知道吗
我的解决方案包括两部分:
下面是一个演示这种方法的简单程序。开头的参数(文件名、已知矩形的大小、角度搜索范围)通常从命令行传入。你知道吗
显示其工作原理的中间结果(灰色=填充的最大连接组件,粗白线=霍夫线,细白色矩形=垂直边界框):
(要查看全尺寸图片,请单击它们,然后删除文件扩展名前的最后一个
m
)结果可视化(绿色=已知大小的旋转矩形):
结果(最终应钳制为[0,图像大小),-1是由于浮点旋转):
如图3所示,匹配并不完美。这可能是因为示例图像缩小到了不同的大小,当然我不知道已知矩形的大小,所以我只是为演示假设了一个合适的值。
如果真实数据也出现这种情况,您可能不仅要改变角度以找到最佳匹配,还要将匹配框上下左右移动几个像素。有关更多详细信息,请参见Dawson-Howe: A Practical Introduction to Computer Vision with OpenCV的第8.1节。你知道吗
相关问题 更多 >
编程相关推荐