Fid*_*l90 2 javascript canvas image-processing edge-detection html5-canvas
我正在寻找一种从二进制图像(只有黑色和白色像素)创建类似 svg 的路径的方法。图像本身将是一个形状不规则的斑点,其中可能有孔。
如果没有洞,我只需要一个边界路径来重新创建斑点的边界。当斑点中有洞时,我可以使用额外的路径(我猜,单独一条路径无法重新创建它)。最后我只需要知道哪条路径是外部路径,哪些是洞。
我已经找到了这些:
另外我需要检测漏洞。结果是多边形还是路径对我来说并不重要。我只需要精度足够高的点,使曲线保持弯曲:)
如果有人有一个想法甚至一些进一步的来源,那就太好了。
PS:如果这有什么区别的话,我正在使用canvas和javascript(fabricJS)。
最后,我成功地采用了 markE 所描述的另一个选项(尽管它进行了一些修改)。我正在使用Marching Squares Algorithm (MSA)
和Floodfill Algorithm (FFA)
来实现这一目标。简化结果点是通过Ramer\xe2\x80\x93Douglas\xe2\x80\x93Peucker Algorithm (RDPA)
。
我将所有内容都放在这个jsFiddle中。
\n脚步:
\nFFA
随机颜色到位置 0,0,保存颜色MSA
并简化结果点(带有DPA
)对于更简单的代码,我目前的随机颜色仅创建灰色阴影。R=G=B 和 A=255 允许更简单的检查。另一方面,该解决方案限制轮廓具有最大值。254 个孔(256 个灰色阴影 - 路径颜色 (0) - 填充颜色(无孔))。如果需要更多,扩展代码来为 R、G、B 甚至 A 创建随机值是没有问题的。不要忘记相应地采用颜色检查;)
\n整个算法可能没有针对性能进行优化,但老实说,我认为目前没有必要这样做。对于我的用例来说它已经足够快了。不管怎样,如果有人有关于优化的提示,我很高兴听到/阅读:)
\n 归档时间: |
|
查看次数: |
1252 次 |
最近记录: |