如何在Java中将一行从栅格转换为矢量?

时间:2014-04-07 21:59:20

标签: java graphics vector bitmap vector-graphics

我正在寻找一种方法将光栅(位图)手绘线转换为一组近似路径的矢量。

首先,是否有公共Java库或算法?

具体来说,给定位图格式下面的手绘黑色线,我想要组成橙色线的矢量集。理想情况下,我不希望矢量过于紧密地跟随位图。与下面的橙色线一样,它应该包含在一些可配置的误差范围内跟随线的最小顶点数。

enter image description here

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

https://github.com/jankovicsandras/imagetracerjava

你可以得到一个像这样的路径坐标的对象:

import jankovicsandras.imagetracer.ImageTracer;
...
HashMap<String,Float> options = new HashMap<String,Float>();

options.put( "ltres", 2f ); // Linear error treshold
options.put( "qtres", 2f ); // Quadratic spline error treshold

IndexedImage myimage = ImageTracer.imageToTracedata( "input.jpg", options, null );

ArrayList<ArrayList<ArrayList<Double[]>>> mylayers = myimage.layers;
... process coordinates in mylayers

,其中

ArrayList<ArrayList<ArrayList<Double[]>>> layers

粗略地表示 ArrayList of color layers < ArrayList of paths < ArrayList of line segments < double x, y, type:straight or quadratic spline > > >