轮廓的矩形近似
Posted
技术标签:
【中文标题】轮廓的矩形近似【英文标题】:Rectangular approximation of contours 【发布时间】:2013-02-10 06:16:52 【问题描述】:经过一些颜色检测、二进制阈值处理、使用 cvFindContours() 并在我拥有的图像上绘制轮廓和检测到的蓝色矩形:
我的问题是一些简单的碰撞避免(中心的蓝色矩形不能撞到红色的“墙壁”)。将红墙轮廓近似为矩形将有助于我的目的。但是,使用一个简单的 cvBoundingRect 并在我得到的白色轮廓周围绘制红色矩形:
边缘被剪掉了一点,但您可能会了解我们对轮廓使用边界矩形的期望,因为整个轮廓用于近似边界矩形,因此是大的重叠矩形。我想要的是将墙壁轮廓划分为多个边界矩形,例如左墙近似为一个矩形,右墙,前墙等......如下面的说明性再现:
我们将不胜感激。
【问题讨论】:
【参考方案1】:检测线(通常是 Hough、RANSAC)以及您掌握的有关问题的其他一些信息应该就足够了,甚至可能是矫枉过正。例如,从左下图开始,我们得到右下图。
但是,如果您在左侧有上面的图像(您应该已经有了),那么问题已经解决了。只需绘制墙壁的内部和外部轮廓即可。
【讨论】:
我之前曾研究过使用 cvHoughLines2,但我对此处列出的各种参数缺乏经验:opencv.willowgarage.com/documentation/feature_detection.html 导致我研究其他解决方案。例如,您是如何获得右边的图像的? (rho=?、theta=? 等) 我没有为此使用 OpenCV,但这样做我设法获得了i.imgur.com/hUCFgsk.png。rho
和theta
参数定义了Hough空间中累加器的分辨率,典型值分别为1
和pi/180
(弧度),但rho
不需要是整数域,事实上我已经使用rho = 0.1
来获得这个结果。我也设置了threshold = 60
。我没有使用概率霍夫,但你也可以试试。
好的,我研究了霍夫变换的工作原理,似乎是检测线条的好方法。我可能应该提到我正在尝试实时处理它并继续检测墙壁,因为蓝色矩形保持在图像中的同一位置但墙壁移动。我相信我现在必须设置参数以考虑每帧之间增加的噪声。是否有这样做的好方法,或者在这种情况下反复试验是否常见?
@salgarcia 您可能会找到处理此类问题的论文,但我没有想到要指出的论文。但是,在继续 Hough 变换和相关方法之前,首先要确保左边显示的图像是不够的。清楚地显示了墙的边界,不是很好吗?以上是关于轮廓的矩形近似的主要内容,如果未能解决你的问题,请参考以下文章
使用 findContour 和生成的轮廓来近似线段以找到线交点