Comment convertir une ligne de raster en vecteur en Java?


Je cherche un moyen de convertir une ligne raster (bitmap) dessinée à la main en un ensemble de vecteurs qui approchent le chemin.

Tout d'Abord, est une bibliothèque Java ou un algorithme pour cela?

Plus précisément, étant donné la ligne noiredessinée à la main ci-dessous au format bitmap, je veux l'ensemble des vecteurs qui composent la ligne orange . Idéalement, je ne veux pas que le vecteur suive le bitmap de trop près. Comme la ligne orange ci-dessous, il devrait contenir le minimum nombre de sommets qui suivent la ligne dans une marge d'erreur configurable.

entrez la description de l'image ici

Merci d'avance!

Author: Barry Fruitman, 2014-04-08

1 answers

Imagetracer est une bibliothèque et une application libres et open source (Domaine public) qui pourraient être utiles. Avertissement: J'ai fait cela.

Https://github.com/jankovicsandras/imagetracerjava

Vous pouvez obtenir un objet avec des coordonnées de chemin comme ceci:

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

Signifie à peu près ArrayList of color layers < ArrayList of paths < ArrayList of line segments < double x, y, type:straight or quadratic spline > > >

 2
Author: Andras, 2016-10-14 11:35:56