轮廓的矩形逼近

3
经过一些颜色检测、二值化处理,使用cvFindContours()在图像上绘制轮廓和检测到的蓝色矩形后,我得到了如下图片:

enter image description here

我的问题是如何进行简单的避障处理(中心的蓝色矩形不能碰撞红色“墙壁”)。对于我的目的来说,将红色墙壁轮廓近似为矩形会很有帮助。然而,使用简单的cvBoundingRect并在白色轮廓周围绘制红色矩形后,我得到了如下结果:

enter image description here

边缘有一点被裁剪掉,但你可以大概了解使用边界矩形来近似轮廓时的预期效果,因为整个轮廓都用于近似边界矩形,从而得到相互重叠的大矩形。我想要的是将墙壁轮廓分成多个边界矩形,比如将左墙壁近似为一个矩形,右墙壁、前墙等等也作为一个矩形,就像下面我所示的插图一样:

enter image description here

希望能得到任何有关实现这一目标的帮助,谢谢。
1个回答

1
探测线条(通常使用Hough,RANSAC算法),与您拥有的有关问题的其他信息应该足够,甚至可能过度。例如,从左边下面的图像开始,我们得到右边的下面的图像。

enter image description here enter image description here

但是,如果你已经有左边的图像(你应该已经有了),问题已经解决了。只需绘制墙壁的内部和外部轮廓,就可以完成设置。


我之前研究过使用cvHoughLines2,但是由于我对这里列出的各种参数缺乏经验: http://opencv.willowgarage.com/documentation/feature_detection.html 所以我开始寻找其他解决方案。例如,你是如何获得右侧的图像的?(rho =?theta =?等等) - salgarcia
我没有使用OpenCV,但是这样做我成功地获得了http://i.imgur.com/hUCFgsk.png。`rho` 和 theta 参数定义了Hough空间中累加器的分辨率,典型值分别为1pi/180(弧度),但是 rho 不需要在整数域内,事实上我使用了 rho = 0.1 来获得此结果。我将 threshold = 60 设置为了阈值。我没有使用概率霍夫变换,但你也可以尝试一下。 - mmgp
好的,我已经学习了霍夫变换的工作原理,它似乎是检测直线的一种好方法。我可能应该提到我正在尝试实时处理这个问题,并且在图像中蓝色矩形保持不变的情况下继续检测墙壁,但是墙壁会移动。我认为现在必须设置参数以考虑每帧之间添加的噪声。在这种情况下,有没有一个好的方法来做到这一点,或者试错是常见的? - salgarcia
@salgarcia,你很可能会找到处理这种问题的论文,但我现在脑子里没有可以指出的。但是,在继续学习霍夫变换和相关方法之前,首先确保左侧显示的图像还不够。它清楚地显示了墙壁的边界,这不够好吗? - mmgp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接