Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 求封闭路径的多边形近似_Javascript_Image Processing_Geometry_Curve Fitting_Feature Detection - Fatal编程技术网

Javascript 求封闭路径的多边形近似

Javascript 求封闭路径的多边形近似,javascript,image-processing,geometry,curve-fitting,feature-detection,Javascript,Image Processing,Geometry,Curve Fitting,Feature Detection,我希望能够找到闭合路径的最佳拟合多边形近似值(可以是从图像中拉出的任何路径),但我遇到了如何编码算法来找到它的问题 我可以想出一个简单的方法:沿路径每x个像素,为这些像素选择最合适的线,然后对不同的起始偏移量和长度施加暴力,并找到一个以最少的线数最小化最小平方误差的方法 一定有更优雅的东西。有人知道什么吗?另外,(畏缩)但这将在javascript中实现,除非我真的非常绝望,所以为您做事情的好库几乎被排除在外(例如opencv有一个多边形装配工)。D3.js有一些代码您可能可以使用。还有一个示例

我希望能够找到闭合路径的最佳拟合多边形近似值(可以是从图像中拉出的任何路径),但我遇到了如何编码算法来找到它的问题

我可以想出一个简单的方法:沿路径每x个像素,为这些像素选择最合适的线,然后对不同的起始偏移量和长度施加暴力,并找到一个以最少的线数最小化最小平方误差的方法

一定有更优雅的东西。有人知道什么吗?另外,(畏缩)但这将在javascript中实现,除非我真的非常绝望,所以为您做事情的好库几乎被排除在外(例如opencv有一个多边形装配工)。

D3.js有一些代码您可能可以使用。还有一个示例(Visvalingam算法)。

这里的算法似乎很合适,而且实现起来很简单。
请注意,可接受的错误是该算法的输入,因此,如果您有一个目标行数,则可以使用错误参数进行二进制搜索以命中目标。

最终实现了Visvalingam的算法,如D3,因为它具有如此清晰的直观理解。谢谢你们两位的建议!这看起来很简单(这很好),这个例子很好,很有趣。到目前为止,我还不需要实现多边形近似(使用现成的实现),只需要一般的形状近似——这可以使用傅立叶描述符来完成。在压缩方面,我想,除非形状边界完全丢失,否则所提出的方法无法打败傅里叶描述子的方法,或者不是这样?(只是好奇。)看起来也不错,但Visvalingam算法中指定所需行数的能力让我同意了。请记住,根据您的输入数据,在每一步删除最小面积三角形可能不是最佳行为。例如,从一条直线延伸出来的一个很长很细的尖峰会有一个很小的区域,但是这是一条你可能希望保留的线的一个非常明显的特征。现在我对结果很满意,这纯粹是图像的视觉位图矢量化,所以大多数形状已经倾向于表现良好。如果出现问题,我一定会看一看。