Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Algorithm_Vector_Vectorization - Fatal编程技术网

JavaScript中的矢量化算法

JavaScript中的矢量化算法,javascript,algorithm,vector,vectorization,Javascript,Algorithm,Vector,Vectorization,我有一张图像,我用canny边缘算法计算了它的边缘,这一切都很好 但是现在我想把这些边转换成向量。我的意思是将边图形划分为直线组件(它们应该可见,所以不是1 px长度)。作为返回值,我需要一个数组,其中包含构成边图形的所有向量 对于这类问题有什么流行的算法吗?因为我是用javascript做这件事的,所以很多矢量化算法都不能很好地工作,至少从我到目前为止的尝试来看是这样的:/。我看到了Douglas Peucker算法,它对我来说不是很好。无论如何,任何想法都很酷:)将边划分为直线段并不是真正的

我有一张图像,我用canny边缘算法计算了它的边缘,这一切都很好

但是现在我想把这些边转换成向量。我的意思是将边图形划分为直线组件(它们应该可见,所以不是1 px长度)。作为返回值,我需要一个数组,其中包含构成边图形的所有向量


对于这类问题有什么流行的算法吗?因为我是用javascript做这件事的,所以很多矢量化算法都不能很好地工作,至少从我到目前为止的尝试来看是这样的:/。我看到了Douglas Peucker算法,它对我来说不是很好。无论如何,任何想法都很酷:)

将边划分为直线段并不是真正的矢量化。这实际上只是边缘点上的一个点减少,然后连接点。你可以用类似的方法来实现这一点

(如果您有无序的集群,您可以对每个集群运行类似于Jarvis March of Graham的扫描,这样您就有了一组“可遍历”的点,然后再将它们提供给RDP)


将点连接成线段的想法存在的问题是,无法将其放大:这样看起来很糟糕。真正的矢量化更像是JS。如果你发现了,让我知道,我一直在寻找同样的东西。(您可能可以使用
emscripten
通过LLVM将C实现转换为JS,但我还没有绝望到这样做)

至少从我迄今为止的尝试中,我们可以看到您迄今为止的尝试吗?@controlneticWerkgurorc和Mike'Pomax'Kamermans,我尝试过Ramer Douglas Peuker,或者我应该说我试过了,这看起来像是Ramer-Douglas Peuker算法的一个实现,当我给它输入4000点时,我得到了2点:在我遇到的“真正的矢量化”方面,尽管它对Meh也不起作用——这很好,新的希望!那么你应该如何使用它呢?如果你给它4000个点,然后你得到2个点,特别是考虑到项目页面所展示的内容,唯一的结论真的必须是“你做错了什么”,因为除非它们是一个小圆圈内的4000个点(在离散空间中有大量重叠),使用合理的设置(根据我看到的这个库所做的)不应该导致你只得到2=)好吧,我想可能是因为我的点更有机地排列(有点到处都是,因为它们是真实图片的边缘),算法没有像他们的示例中那样,当点都排列好时工作得那么好。但是谢谢,我会用更简单的图片再试一次,看看我做错了什么