拟合图像中的线条
fitting lines in an image
我正在尝试实现边缘绘制算法。我获得了图像的行,下一步是拟合具有给定分支的行,我的问题是给定一个 1 和 0 的矩阵,(1 部分行)穿过所有像素并开始拟合线。这个想法是通过最小二乘线拟合方法生成最小长度的初始线段,然后通过向其添加更多像素来扩展该线段。在检测到最小长度的初始线段后,我们应该走过链的剩余像素,并计算每个像素到当前拟合线的距离。只要像素与当前行保持一定距离,像素就会添加到当前行。我们继续向当前线段添加像素直到我们转过一个弯,线的方向改变。此时,我们输出当前线段。然后递归处理链的剩余像素以提取进一步的线段。
我的问题是我不知道如何开始浏览像素......如果有具体的方向,我应该首先采取...
我同意缺陷。没有更多信息,如输入图像和想要的结果示例很难回答。我猜你得到了一些物体的不完整轮廓,想要回归/推断 2D 空间中的间隙。在这种情况下,我会:
-
获取可见的等高线
你已经有了这个。
-
按方向角对线条进行排序
如果
A(i),B(i)
行(i)
端点,则:ang(i)=atan2(B(i).y-A(i).y,B(i).x-A(i).x)
-
合并线
合并具有以下条件的所有行:
- 相似角度
- 不算太远
- 垂直距离小(好像是平行的)
- 合并的线不与任何其他线相交
-
缩小差距
合并后只需找到所有轮廓边缘点。这些点仅连接到单条线。现在您可以应用您在 OP 中提出的外推法,但我会尝试用简单的直线将最近的这些点相互连接(如果连接不越过任何线)。
相关文章:
- 来自colPivHouseholderQr().solve的拟合相关性
- 最小二乘多项式拟合仅适用于偶数个坐标
- 这是异或测试中的过度拟合还是欠拟合?
- CERES_SOLVER中的模型拟合
- 如何使商店成为内存的开始和结束,以获得最佳拟合
- 如何添加到链接列表中以获得最佳拟合管理或删除某些内容
- C 的数字拟合的错误表示
- GSL线性拟合使用向量
- 在C/C 中实现实时最佳拟合内存分配算法
- 使用 GSL 的非线性拟合
- 用最小二乘法拟合圆
- 需要一个C++库来将曲线拟合到数据点
- 图像曲线拟合的多项式最小二乘法
- 二进制搜索树最佳拟合算法:输出不正确
- 如何用C++将2D散射数据与直线拟合
- OpenCV 高斯曲线拟合
- C++数学:拟合复杂函数不起作用
- 局部曲面拟合到 3d 点
- 拟合图像中的线条
- 使用imshow opencv将图像拟合到屏幕上