C++ 在图像中拟合线条
我正在尝试实现边绘制算法。我获得了图像的线条,下一步是用给定的树状体拟合线条,我的问题是给定一个1和0的矩阵,(线条的1部分)穿过所有像素并开始拟合线条。 其思想是通过最小二乘直线拟合方法生成最小长度的初始线段,然后通过向该线段添加更多像素来扩展该线段。在检测到最小长度的初始线段后,我们应该遍历链的剩余像素,并计算每个像素到当前拟合线的距离。只要像素与当前行的距离在一定范围内,就会将像素添加到当前行。我们继续向当前线段添加像素 直到我们转弯,线的方向改变。此时,我们输出当前线段。然后对链的其余像素进行递归处理,以提取进一步的线段C++ 在图像中拟合线条,c++,matlab,image-processing,C++,Matlab,Image Processing,我正在尝试实现边绘制算法。我获得了图像的线条,下一步是用给定的树状体拟合线条,我的问题是给定一个1和0的矩阵,(线条的1部分)穿过所有像素并开始拟合线条。 其思想是通过最小二乘直线拟合方法生成最小长度的初始线段,然后通过向该线段添加更多像素来扩展该线段。在检测到最小长度的初始线段后,我们应该遍历链的剩余像素,并计算每个像素到当前拟合线的距离。只要像素与当前行的距离在一定范围内,就会将像素添加到当前行。我们继续向当前线段添加像素 直到我们转弯,线的方向改变。此时,我们输出当前线段。然后对链的其余像
我的问题是,我不知道如何开始检查像素…如果有一个特定的方向,我应该首先采取 我同意有缺陷的人。没有更多的信息,比如输入图像和想要的结果,这个例子很难回答。我猜你得到了某个物体的不完整轮廓,想要回归/外推2D空间中的间隙。在这种情况下,我将:
(i)
端点是A(i),B(i)
,则:
ang(i)=atan2(B(i).y-A(i).y,B(i).x-A(i).x)
- 相似角
- 不太远
- 有很小的垂直距离(好像是平行的)
- 合并线不与任何其他线相交
通过标记C++和Matlab,你是指其中任何一个都可以接受的解决方案?没有像OpenCV这样的CV库,C++将是如此的困难和冗余,以至于你不能提供足够的上下文。你所谈论的大多数事情没有任何进一步的解释都是毫无意义的。