删除Hough变换提供的类似行

时间:2017-04-27 17:26:51

标签: matlab opencv hough-transform

我发现霍夫变换了更多的线条但是我的最终目标非常相似。

例如

enter image description here

在这张图片中我有5行但我真的只需要2行。

如何删除不必要的行?

我的代码是

image = cv.Canny(image, 200);

lines = cv.HoughLinesP(image,'Threshold',80,'MinLineLength',100,'MaxLineGap',50);

一种简单的方法可以是线相交,但在某些情况下,线可以是平行的,非常接近。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我会计算线条的斜率和截距,并比较它们以确定它们是否两个在您定义的某个公差范围内。应该在相同的坐标系上描述截距,比如在像素r处的原点,c =(0,0)。然后可以合并相同的行。我能想到的唯一失败案例是,如果你有非连续的线段具有相同的斜率和截距 - 那些将与这种方法合并。但在你的形象中,你似乎没有这个问题。

答案 1 :(得分:0)

我的粗略方法是

  • 使用Canny边缘检测器
  • 从粗线中获取第一行
  • 在houglines inpu的原始线条上绘制黑色粗线
  • 重复执行,直到您没有从信号线获取任何输出

我用它来检测卡片的边缘,所以我选了四条最好的线。