【问题标题】:Raster to vector conversion library [closed]光栅到矢量转换库 [关闭]
【发布时间】:2013-09-05 15:54:34
【问题描述】:

是否有任何库可以将光栅图像转换为矢量,将采样颜色的数量限制为特定的集合?类似于VectorMagic 中所做的事情,但提供了要使用的颜色子集。

【问题讨论】:

    标签: image algorithm colors vectorization color-palette


    【解决方案1】:

    Imagetracer 是一个免费的开源(公共领域)库和应用程序,可能很有用。免责声明:这些都是我做的。

    如果你需要一个命令行应用程序,我推荐 ImageTracer.jar from

    https://github.com/jankovicsandras/imagetracerjava

    有这样的选项

    java -jar ImageTracer.jar input.png outfilename output.svg numberofcolors 4

    将颜色数限制为 4 种。如果从 Java 程序调用该库,则可以使用自定义调色板,还有许多其他选项。

    您可以通过浏览器或 Node.js 使用 JavaScript 版本: https://github.com/jankovicsandras/imagetracerjs

    【讨论】:

      【解决方案2】:

      有一个开源库/程序potrace 可以执行精细的矢量化。问题是它首先将输入图像转换为发光图像,然后将其二值化。此步骤是可选的,由单独的程序完成,因此您可以使用 potrace,但以不同的方式,通过构建自己的多个二值化图像版本。我认为 VectorMagic 会根据输入图像的梯度/拉普拉斯算子构建其轮廓,这就是为什么您不能强加任何颜色集的原因。

      如果您有一个颜色子集用作输入,我建议您遵循以下算法:

      • 对于输入颜色子集的每种颜色,找到与所选颜色“最接近”的颜色空间子空间,而不是任何其他颜色。类似于计算输入子集的 Voronoi 分区的算法可以立即完成这项工作。例如使用qhull
      • 对于每个子空间,将输入图像二值化,如果在子空间内,则将每个像素绘制为白色,否则绘制黑色。然后对其应用 potrace 或 VectorMagic 的矢量化。

      最后,你会得到一组轮廓。也许轮廓不会完全匹配,但会足够接近让您简化它们并正确删除轮廓的双倍。

      【讨论】:

      • 您也可以在 HSB 颜色空间中对图像进行分段/聚类,然后将轮廓用作分层图像。之后你就可以使用potrace了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多