拟合图像中的线条

fitting lines in an image

本文关键字:图像 拟合      更新时间:2023-10-16

我正在尝试实现边缘绘制算法。我获得了图像的行,下一步是拟合具有给定分支的行,我的问题是给定一个 1 和 0 的矩阵,(1 部分行)穿过所有像素并开始拟合线。这个想法是通过最小二乘线拟合方法生成最小长度的初始线段,然后通过向其添加更多像素来扩展该线段。在检测到最小长度的初始线段后,我们应该走过链的剩余像素,并计算每个像素到当前拟合线的距离。只要像素与当前行保持一定距离,像素就会添加到当前行。我们继续向当前线段添加像素直到我们转过一个弯,线的方向改变。此时,我们输出当前线段。然后递归处理链的剩余像素以提取进一步的线段。

我的问题是我不知道如何开始浏览像素......如果有具体的方向,我应该首先采取...

我同意缺陷。没有更多信息,如输入图像和想要的结果示例很难回答。我猜你得到了一些物体的不完整轮廓,想要回归/推断 2D 空间中的间隙。在这种情况下,我会:

  1. 获取可见的等高线

    你已经有了这个。

  2. 按方向角对线条进行排序

    如果A(i),B(i)(i)端点,则:

    ang(i)=atan2(B(i).y-A(i).y,B(i).x-A(i).x)
    
  3. 合并线

    合并具有以下条件的所有行:

    • 相似角度
    • 不算太远
    • 垂直距离小(好像是平行的)
    • 合并的线不与任何其他线相交
  4. 缩小差距

    合并后只需找到所有轮廓边缘点。这些点仅连接到单条线。现在您可以应用您在 OP 中提出的外推法,但我会尝试用简单的直线将最近的这些点相互连接(如果连接不越过任何线)。