图像中的鲁棒线提取

And*_*neo 8 algorithm opencv image-processing computer-vision hough-transform

我需要从下面的图像中提取所有墙边(包括地板,墙壁交叉点和墙壁,门交叉点).如果我使用canny检测和霍夫变换(概率).它给了我许多冗余和不必要的线条.我正在寻找是否可以在运行hough变换之前改进canny图像.

输入图像 输入图像

以下是由canny检测算法给出的canny图像
我使用canny参数作为最小和最大阈值的0,20.我不能使用非常高的最大阈值值,否则我将失去墙边,但与图像的其余部分相比,渐变将会很低.
正常的Canny图像

我想在窗口中识别高密度点集群,如果它高于某个阈值则将它们设置为零.

以下是之后获得的精确图像.您可以看到墙边缘被保留. 修改了Canny图像

有谁能建议我更好的方法来处理这个问题?我的意思是改进精确的图像,这样我就可以识别出随机点的集群,然后将它们设置为零.我在考虑在窗口中检查共线点,但不知道它会有多有效?任何评论都会受到欢迎

bac*_*aci 7

我认为你可以在使用霍夫变换后过滤掉最长和接近垂直的线条.看看这个链接.

SimpleCV只是一个包含OpenCV函数的快捷库,您不需要使用它.我不认为在得到这个想法后你会遇到实施算法的问题.

编辑:好的,我更多地考虑了你的问题.将集群设置为零作为预处理步骤实际上并不错.如何逐步增加窗口大小?我的意思是在获得第二个图像后,应用另一个具有2*窗口大小,相同阈值的集群过滤器.我想你可以继续这样,因为墙边很难被取消.

另一种方法是,使用矩形窗口(宽度> = 5*高度)进行群集过滤,因为您需要垂直边缘.

另一种方式,玩糜烂和扩张,并过滤掉大面积的斑点.

另一种方法,检查图像的顶部,只有墙边和枝形吊灯.您可以水平搜索白色图案,然后按照其邻居指定连接点的长度.然后筛选出更长的.