Convertir un dessin au trait de raster en vecteur ** LINES **


16

Voici déjà de telles questions, comme:

... et d'autres.

J'ai une image png en noir et blanc, contient un dessin comme un labyrinthe, par exemple, il ne contient que des lignes , pas de zones.

Besoin de le convertir en (tout) format vectoriel, mais en tant que LIGNES . Chaque programme que j'ai essayé, par exemple VectorMagic, potrace, etc. convertit les lignes en zones fermées.

Petite partie de l'image PNG originale - zoomée: entrez la description de l'image ici

Le résultat de la trace: entrez la description de l'image ici

Comme vous pouvez le voir, la "ligne" est tracée de ses deux côtés comme toute autre forme semblable à une zone.

Vous cherchez un moyen, comment tracer des lignes en lignes réelles (CHEMINS) , mieux avec la largeur de ligne correspondante. (mais serait suffisant avec n'importe quelle ligne).

La raison derrière: besoin de travailler avec les lignes et les nœuds tracés, par exemple convertir certains nœuds en bezier et autres. Pas possible (facilement) avec des formes.

Une idée:

  • comment obtenir des lignes vectorisées à partir de n'importe quel programme de traçage.
  • quel outil peut le faire? (n'importe quel OS - pourrait utiliser Windows, OS X, Linux ..)

Réponses:


15

Traçage d'axe

Il existe un outil gratuit Open Source AutoTrace qui est capable d'effectuer une trace centrale d'un bitmap de dessin au trait.

entrez la description de l'image ici

Exécutez AutoTrace avec au moins les options suivantes:

autotrace -centerline -color-count 2 -output-file output.svg -output-format SVG input.png 

entrez la description de l'image ici

Nous pouvons ensuite affiner les traits et ajouter la force de trait souhaitée.

Nous pouvons également installer le frontend graphique Frontline pour AutoTrace au cas où nous ne serions pas familiers avec la ligne de commande.

Les utilisateurs de Linux peuvent être en mesure d'installer le suivi automatique fourni à partir de leurs référentiels par défaut dans la plupart des distributions. Pour Windows, il existe des packages précompilés à télécharger depuis la page du projet.

Il existe de nombreux paramètres supplémentaires pour AutoTrace qui peuvent être trouvés dans la page de manuel de l'application ou en l'appelant avec autotrace -help.

Pour obtenir des lignes droites plutôt que des splines, nous pouvons par exemple utiliser les paramètres suivants:

  • -line-threshold [real]:
    Si une spline ne s'écarte pas de la ligne droite définie par ses extrémités de plus du nombre de pixels spécifié, alors traitez-la comme une ligne droite (par défaut: 1).

  • - line-reversion-threshold [real]:
    Si une spline est plus proche d'une ligne droite que celle-ci, pondérée par le carré de la longueur de la courbe, conservez-la en ligne droite même s'il s'agit d'une liste de courbes; la valeur par défaut est 0,01.


1
+1 Savez-vous s'il existe une option pour tracer uniquement des segments droits avec autotrace.
joojaa

@joojaa: voir modifier pour les options.
Takkat

Je souhaiterais pouvoir obtenir une trace automatique pour construire ... j'adorerais l'utiliser
slashdottir

1
@slashdottir: quel système utilisez-vous? Le site du projet a été déplacé vers Github pour le développement récent et pour les rapports de bogues. J'ai modifié la réponse pour inclure le lien.
Takkat

Oh génial! J'utilise OSX. Merci beaucoup pour le lien!
slashdottir

10

Très honnêtement ... saisissez l'outil stylo et tracez manuellement les chemins. Il en résultera la meilleure sortie.

Le traçage automatique n'est souvent pas la meilleure option. Lorsque vous ne voulez que des chemins que vous pouvez tracer, le suivi automatique échoue généralement de façon lamentable.


l'image est vraiment COMPLEXE avec plusieurs lignes. Ont également plus d'images - tout simplement trop de travail - à la recherche d'une alternative ...;)
jm666

j'espère aussi que "l'outil" fera une optimisation, par exemple créera toujours les chemins les plus longs possibles et ainsi de suite ... le travail manuel n'est pas toujours le meilleur;)
jm666

Bonne chance! Je pense vraiment que ce que vous demandez demande juste de l'habileté manuelle et de la patience. Je n'ai jamais vu de solution automatisée qui valait la peine de créer des chemins uniques. Je pense que vous cherchez honnêtement l'impossible.
Scott

2
@scott alors que je suis généralement d'accord avec votre sentiment dans ce cas spécifique, cela pourrait bien fonctionner.
joojaa

5

Essayez d'utiliser des chemins d'interpolation après votre trace, comme indiqué ici:

Course moyenne à partir d'un remplissage


SENSATIONNEL. Cela semble TRÈS prometteur. Je vous remercie! +1.
jm666

@ jm666 bien sûr, ce type de méthode n'automatisera pas très bien à moins que vous ne traitez avec des chemins continus.
joojaa

5

Illustrator peut effectuer le traçage de la ligne médiane un peu comme le traçage automatique . Ce n'est pas super utile pour la plupart des choses, mais dans ce cas, l'image est très synthétique et cela pourrait fonctionner.

Votre image source est notoirement mauvaise, il n'y a donc pas de véritable moyen d'essayer sans perdre en qualité, vos originaux devraient être meilleurs (pas besoin d'être si zoomés)

Faites ceci:

  1. Dans les paramètres de trace, désactivez les remplissages et activez les traits.

  2. Objet → Développer

entrez la description de l'image ici

Image 1 : objet après trace et développement.

  1. Pour améliorer davantage les résultats de toute erreur de traçage, procédez comme suit : Objet → Chemin → Simplifier , vérifiez les bords droits.

entrez la description de l'image ici

Image 2 : Après la simplification

  1. Il me semble que votre image est quelque peu limitée dans les directions des lignes et les emplacements des coins, si c'est vrai, vous pouvez maintenant essayer de quantifier les points pour des résultats encore meilleurs (sinon parfaits).

entrez la description de l'image ici

Image 3 : Ce que la quantification pourrait faire pour le résultat.

PS: étant donné que la source que vous avez partagée est incomplète, je dirais que mon résultat est plutôt bon. Bien que je convienne qu'en général, il n'est pas possible de s'appuyer sur le traçage de ligne, cela fonctionnerait dans ce cas.

PPS: Vos coins se chevauchent, cela cause du chagrin aux traceurs automatiques Vous pouvez détecter et corriger ces problèmes avec quelques opérateurs de morphologie dans ImageMagick, ce qui devrait rendre les traceurs BEAUCOUP plus heureux.


Aussi sympa. Maintenant en utilisant autotrace, en raison de l'utilisation simple de la ligne de commande - pour de nombreuses images. L'image bitmap ci-dessus est une petite partie d'une image plus grande (zoom 1300%) :) - elle semble donc dégradée. +1, merci.
jm666

@ jm666 bien sûr, vous pouvez également utiliser l'illustrateur de cmd si vous le souhaitez, mais c'est un peu de travail pour commencer.
joojaa

J'ai essayé avec la trace d'image d'Illustrator et l'échantillon de n'utiliser que des traits. Je n'ai pas pu obtenir de résultats utilisables. Certes, je n'y ai pas investi beaucoup de temps, et l'échantillon n'est pas idéal pour le traçage. Mais je trouve qu'en définissant la trace de l'IA sur seulement des traits, vous n'obtenez que 30 à 60% de l'illustration réelle à moins que l'original ne soit assez solide et net avant le traçage.
Scott

@Scott i a réduit l'image à sa taille d'origine (ish) et a ajusté le paramètre de largeur de ligne pour que cela fonctionne. Lorsque vous tracez des traits de largeur différente, vous devrez peut-être le faire en 2 ou 3 passes distinctes.
joojaa


2

J'ai trouvé un bon outil gratuit appelé WinTopo , qui pour moi a fait le travail, c'est-à-dire le suivi de la ligne médiane.

La méthode est appelée "vectorisation à une touche" et fonctionne bien.

Comme je viens d'un contexte SIG - dans la version pro, il y a une option pour géoréférencer les données raster en premier - pourrait être utile, pas encore testé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.