Vectoriser sous Linux


Lorsqu'on s'adonne avec satifaction à la création d'images vectorielles sous Linux avec, entre autres, SketchSodipodi ou StarDraw, on déplore l'absence d'outils tels que Corel trace, Adobe StreamLine ou Siame Vector Eye, qui permettent de vectoriser n'importe quelle image bitmap pour la retravailler dans son éditeur favori. Mais est-ce pour autant que ce domaine resterait interdit aux graphistes linuxiens? Que nenni!


NOTA :

Les tests suivants ont été effectués sur un portable Ahtlon 2200+, Geforce4 64 Mo et 512 Mo Ram, avec Linux Mandrake 9.2 pour système d'exploitation et KDE 3.2.3 pour environnement de bureau.  La photographie à vectoriser est celle de ma benjamine Sarah, lorsqu'elle était dans ses tendres années. Les termes "convertisseur" , "outil de vectorisation" et "vectoriseur" sont indifféremment utilisés. Hormis le langage, aucun animal domestique ou féroce n'a été maltraité durant les essais ici relatés.

1 D'abord, qu'est-ce que vectoriser? :

En allant à l'essentiel, disons qu'il s'agit de convertir une image constituée par une matrice de points (image bitmap) issue d'un appareil photo-numérique, ou d'un éditeur tel que Gimp, en une illustration éditable finement parce que reconstruite sous forme de courbes mathématiques délimitant des zones colorées. L'avantage est immense. L'image ainsi convertie peut être manipulée, modifiée, agrandie, réduite au format timbre poste sans perdre ni informations ni qualité. Par exemple : vous devez insérer un logo d'entreprise dans une affiche que vous être en train de créer avec un programme de dessin vectoriel. Ce logo vous est fourni en JPEG, ou en TIFF haute définition, de grandes dimensions. Dès que vous l'avez réduit à la taille idoine, puis inséré dans votre création, il est devenu illisible. Votre affiche est hybride, contenant des informations vectorielles et bitmap, ce qui la rend plus lourde et moins facile à manipuler. Vous auriez tout bénéfice à transformer ce logo en entités vectorielles, qui prendront place dans un ensemble du même type.
Mais est-ce possible sous Linux? Diable! Evidemment, quelle question!

2 Ensuite, avec quoi vectoriser?

Avec les outils adéquats, pardi! Certains sont indépendants et d'autres sont intégrés aux programmes de dessin. Parmi les indépendants, on peut citer :

-- Kvec, de KK-Software, shareware allemand, librement utilisable pendant une période d'essai de 30 jours après laquelle il convient d'acquérir une licence. En lecture, Kvec accepte les formats (raster graphic file) : Tiff, BMP, PCX, TGA, SGI, IMG, PNM, JPEG, GIF, WPG et FAX, ainsi que les vectoriels WMF et ART. Après conversion, Kvec autorise l'écriture des formats : WMF, EMF, SVG, SWF, PS, DXF, DST, HPGL, ART, AI, XFIG, PCS et KVC (KVEC). C'est fort intéressant, même si pour être en règle il faut débourser entre 25 et 78$, selon l'usage que l'on veut en faire. Fourni avec une multitude de paramètrages (*.par) et disponible pour Linux, Windows 9x/NT/2000/XP, OS2, HP-Unix, MacOS et BeOS, ce programme s'avère efficace et très véloce. Vectorisations noir et blanc, niveaux de gris ou couleurs.
Informations sur : <http://www.kvec.de/english/index.htm>

-- Potrace, de Peter Selinger, libre et gratuit, sous licence GPL. Vectorise les formats PBM, PGM, PPM, et BMP qu'il restitue en formats vectoriels monochromes EPS, PS, SVG, XFig et Gimppath. Depuis peu, Potrace est intégré à Inkscape : son emploi et ses possibilités de vectorisation s'en trouvent grandement améliorés, pour le plus grand bien de tous. Disponible en source à compiler soi-même ou en exécutables prêts à l'emploi pour : Linux, Solaris, FreeBSD, NetBSD, OpenBSD, AIX, Mac OSX et Windows 95/98/2000/NT. Pour vectorisations en noir et blanc.
Informations sur : <http://potrace.sourceforge.net/>

-- Autotrace, de Martin Weber, libre et gratuit, sous licence GPL. Ecrit pour être une solution de remplacement aux produits commerciaux, Autotrace montre par des tests comparatifs (visibles sur le site officiel) qu'il est bien supérieur, pour certains travaux, à Freehand, Corel Trace et Stream Line, alors qu'il apparaît équivalent à Scanfont pour la vectorisation de polices de caractères. En lecture, Autotrace connaît tous les formats bitmap pris en charge par ImageMagick, c'est-à-dire une quantité considérable, et il restitue les vectoriels : Postscript, SVG, XFIG, SWF, EMF, DXF, CGM et SK. Disponible en source à compiler soi-même pour Linux, ou en binaires exécutables pour Windows, Autotrace semble, pour l'heure, le programme le plus intéressant de la catégorie ici présentée. Pour vectorisations en couleurs.
Informations sur : <http://autotrace.sourceforge.net/>

Mais aussi utiles et puissants qu'ils soient, ces programmes souffrent du mal chronique propres aux applications Unix : ils se pilotent dans un austère terminal, à la ligne de commande assortie de l'habituelle myriade d'options, que l'on obtient dans un défilement continu  par : ./prog --help &, ou approchant. Il est impossible à un individu normalement constitué de parvenir à les lire à la volée; il faut, pour le moins, être bionique.
L'illustration "Voluptés de la ligne de commande" , présente le terminal Konsole de KDE, contenant les premières options de KVEC, et une vectorisation qu'il vient d'effectuer sans option aucune et d'une façon fulgurante (1 sec pour une bitmap 800x600 en couleurs vraies, convertie en SVG éditable dans Sodipodi ou Inkscape) : preuve, s'il en était besoin, que des dehors fort peu amènes n'invalident en rien une efficience qui, au contraire, peut se révèler redoutable (pour la concurrence). Oui, mais on aimerait quelque chose de plus convivial.



3 Comment vectoriser facilement?

Simple : il suffit de considérer le contenu de son terminal après appel de l'aide (en anglois, il va de soi) sur le programme que l'on veut utiliser, d'écrire la ligne de commande agrémentée des options qui vont bien, et le tour est joué. Tous les linuxiens pur jus  d'octet vous le diront. Oui, mais : vouloir un peu de facilité dans ce monde de brutes, ce n'est pas prôner un sybaritisme exagéré, c'est seulement reconnaître à sa juste valeur le travail qu'autrui a fourni en ce sens . Sinon, à quoi ça servirait que les développeurs bénévoles se décarcassent à nous programmer des interfaces graphiques, hein?  Il existe en effet, comme souvent sous Linux, plusieurs solutions adaptées aux besoins de chacun, et, en l'occurrence, on aura le choix entre plusieurs interfaces graphiques à Potrace et à Autotrace, mais pas à Kvec qui, étant propriétaire, n'a pas suscité d'élan de contribution de la part de la communauté du libre. C'est logique... Ainsi, les options de vectorisation sont visibles et disponibles; les paramétrages s'effectuent en déplaçant un curseur ou en renseignant un champ de valeurs, les résultats de la conversion sont affichés dans des fenêtres prévues à cet effet... Pourquoi se priver de semblables commodités?

On disposera donc de:

-- Delineate : pour ceux qui n'utilisent ni KDE ni Gnome et n'ont donc pas installé les bibliothèques nécessaires à leur fonctionnement, mais désirent quand même utiliser Potrace et Autotrace. Delineate, écrit en Java, prend en compte les deux convertisseurs, que l'on sélectionne en cliquant sur l'onglet voulu. Les paramètres de règlage adaptés au choix effectué apparaissent alors. Deux fenêtres de visualisation permettent d'évaluer le résultat, aussi bien en aspect qu'en poids (en octets) de l'image vectorielle obtenue, après qu'on aura lancé le procesus en cliquant sur Run : dans la fenêtre supérieure est affichée le résultat de l'opération actuelle et dans la fenêtre inférieure celui de la vectorisation précédente. Tous les essais sont possibles et même fortement recommandés, à moins de connaître exactement l'effet que produira la modification de tel ou tel paramètre dans une proportion déterminée. Delineate, qui se base sur  Java Imaging Utilities pour lire les images, connaît en lecture les formats : JPEG, PNG, GIF, BMP, TIFF, PNM, PBM, PGM, PPM, IFF, PCD, PSD, RAS, et en écriture, il ne semble devoir sauvegarder qu'en SVG, ce qui le restreint quelque peu. Disponible pour Linux, Mac OS X et Windows, il s'agit d'un programme libre et gratuit, placé sous licence GPL.
Informations indispensables sur : <http://delineate.sourceforge.net/>

L'illustration "Delineate" est un montage, qui présente dans sa partie gauche, la totalité de l'interface adaptée au convertisseur Autotrace, avec deux aperçus obtenus par le paramètre Color count reglè à 256 et à 4. Dans la partie droite, ont été rapportés les deux aperçus obtenus avec Potrace, le seuillage étant réglé pour 0.5 et 0.25. On constate que le SVG en 256 couleurs pèse 215 kb, en 4 couleurs il en pèse 30.5, alors qu'en couleur vraie, avec Kvec, il pesait 2.8 Mo. ATTENTION : le nombre de couleurs est important; à l'oublier, on peut mettre sa machine à genoux!



-- Potracegui, de Antonio Fasolato et  Jakub Stachowski, est l'interface KDE à Autotrace et Potrace. Plusieurs avantages en découlent : intégration parfaite et aspect cohérent dans KDE, support du drag'drop, lecture de tous les format bitmap gérés par KImageIO, transformations et mises à l'échelle sans pertes.
L'interface est ergonomie; elle se divise en deux parties distinctes : à gauche, l'espace de visualisation, pouvant présenter l'image originale ou le résultat de la vectorisation. On passe de l'une à l'autre en cliquant sur un des onglets Original image ou Preview. A droite, la zone réservée aux paramètres, auxquels on accède par une barre d'onglets dont le nombre et le nom changent en fonction du convertisseur choisi, Autotrace ou Potrace. Avoir regroupé les paramètres par catégorie est une excellente chose, qui évite le risque de se perdre quelque peu dans une longue liste de possibilités. Jusqu'ici, on n'a que du bien à dire de Potracegui. Mais en allant plus avant, il faut bien reconnaître que tout n'est pas parfait. Ainsi, la mise à jour de la fenêtre Preview après une nouvelle vectorisation est défectueuse. Et surtout, problème complicateur : impossibilité d'afficher l'aperçu Preview autrement qu'en EPS ou PGM, alors qu'une multitude de formats est proposée à la vectorisation. Le choix de AI, SVG, SK ou autre se signale par ce message :
"Sorry, but the image format which you are working with is not recognized by KDE. The image will be carrectly saved if you want to, but to see a preview try working with another image (EPS and PGM showld work well and only when you are satisfied with th result revert to the format of your choice and save the result)".
On aurait aimé une procédure plus simple, certes, cependant on notera que la vectorisation et la sauvegarde peuvent s'effectuer en plus d'une cinquantaine de formats. Dernier point: ce programme est libre, gratuit, et en licence GPL.
Informations sur : <http://potracegui.sourceforge.net/>

L'illustration "Potracegui" est un montage présentant ce qui vient d'être dit de l'interface à onglets.



-- Frontline, de Masatake Yamato, est l'interface à Autotrace en GTK+, avec tout ce que GTK a d'horripilant, à savoir un aspect tristounet, une tendance pour les fenêtres détachées à s'escalader les unes les autres, des dépendances à n'en plus finir rendant la compilation difficile... En l'occurrence, compiler Frontline nécessitera que soient installés Gnome et ses nombreuses bibliothèques, ainsi que libart_lgpl. Mais véritablement, cela vaut la peine. D'une part, parce que Frontline est bien conçu et n'a jamais été pris en défaut au cours des essais menés pour l'écriture de cette relation, d'autre part parce que Autotrace qui travaille en arrière-plan offre des possibilités fort intéressantes.
Au démarrage de Frontline, une seule fenêtre s'ouvre, permettant de charger l'image à vectoriser et de paramétrer l'opération. Après chargement de l'image, la fenêtre Preview apparaît avec l'image affichée à l'échelle 1. Le déplacement du curseur Zoom, à la souris ou à l'aide des touches fléchées, adapte l'image à  la fenêtre. Une action sur Trace lance le processus qui est plus ou moins long selon les paramètres choisis. Avant affichage du résultat, Frontline demande l'autorisation de le faire, car, en fonction du nombre de courbes (splines) et de sommets (points), un temps certain pourrait être nécessaire.
L'image vectorisée étant affichée, il est alors possible de cacher les régions colorées en cliquant sur la bascule Show, de voir les contours (Splines) d'épaisseurs différentes (Line Width) et selon plusieurs modes : Hide, Static Color et Multiple Colors. Un clic sur l'image ouvre la boite de dialogue pour la sauvegarde au format vectoriel désiré. Ainsi sont parfaitement exploitables, les formats suivants:
 -SK, dans Sketch
- SVG, dans Inkscape, Gimp 2, Sketsa, Karbon14
- AI, dans Sketch, Karbon 14
- FIG, dans  XFig, Sketch
- EPS, dans Sketch
- CGM, dans StarDraw...
Sans doute les autres formats possibles sont-ils pris en charges par d'autres programmes. Cependant, seuls les formats et les programmes cités ont été testés.
Lbre et gratuit, en licence GPL, Frontline se télécharge ici : <http://autotrace.sourceforge.net/frontline/>

L'illustration "Frontline + Autotrace" présente ce qui vient d'être dit concernant l'interface.




4 Un peu de technique : les options de Autotrace.

Autotrace est le convertisseur proposant le plus de possibilités, qui sont liées à ses nombreux paramètres que voici:
- Background Color : Si  l'image dispose d'un fond de couleur unie, l'indiquer ici afin qu'elle soit ignorée (rendue transparente). Dans le cas contraire, un rectangle de couleur unie sera tracé.
- Color Count : Avec ce paramètre à zéro (Pas de réduction de couleur), il sera tracé une région correpondant à chaque couleur rencontrée. Vectoriser une photographie en couleur vraie peut essouffler n'importe quelle machine. Incidence importante sur le résultat final, tant du point de vue visuel que de la taille du fichier vectoriel.
- Corner Always Threshold : sert à préciser que, à partir d'un angle donné, un point P sera un Sommet même s'il est proche d'un Sommet existant. Il n'y aura pas fusion entre eux.
- Corner Surround : nombre de pixels autour du point P à considérer lorsque l'on détermine si ce point P est un Sommet.
- Corner Threshold : pixel que l'on considère comme un Sommet si l'angle qu'il forme avec le pixel précédent et avec le pixel suivant est inférieur à la valeur angulaire indiquée. Par défaut : 100°.
- Error Threshold : seuil à partir duquel des points peuvent être considérés comme appartenant ou non à une même forme. Résultats spectaculaires en modifiant cette valeur de façon conséquente.
- Filter Iterations : paramètre de lissage d'une courbe, correpondant  au nombre de répétitions d'application de l'algorithme de lissage.
- Line Revision Threshold : paramètre de simplification d'une courbe; après traçage de celle-ci, sa rectitude est évaluée, et en dessous d'un certain seuil, elle est ramenée à un segment de droite.
- Line Threshold : paramètre de simplification; chaque fois que la cambrure d'une courbe est inférieure à une certaine valeur, elle est remplacé par un segment de droite. C'est la même chose que précédemment, sauf que la courbe n'est jamais tracée, alors que dans le cas précédent, elle est d'abord tracée, puis modifiée si elle peut l'être.
- Remove Adjacent Corner : paramètre de simplification par suppression des Sommets adjacents dans une certaine limite.
- Tangent Surround : nombre de pixels autour du point P à considérer lorsque l'on détermine si une tangente peut être tracée à partir de ce point P.
- Despeckle Level : Détermine le niveau de ressemblance des couleurs afin de tracer des régions de couleurs uniques. Incidence importante sur le résultat final.
- Despeckle Tighness : Détermine l'étendue de scrutation pour établir des régions de couleurs semblables.
- Centerline : par défaut, les courbes délimitent les régions de couleurs; cette option remplace la région par une ligne centrale de même couleur que la région remplacée.
- Preserve Width : détermine la largeur des lignes centrales.
- Width Weight Factor : largeur de lignes influençant l'algorithme pour décider quelles lignes joindre ou laisser séparées.

5 Les vectoriseurs intégrés :

Vectoriseur intégré est un barbarisme bien affreux, c'est vrai, mais ce qu'il désigne est tellement pratique! Il s'agit en l'occurrence d'une fonction interne à un programme de dessin vectoriel. Linux en connaît au moins deux de ce type :

-- StarDraw/OpenDraw :
Après insertion d'une image bitmap dans la page de dessin, un clic droit sur celle-ci permet de sélectionner l'opération >Convertir > En courbes, ce qui provoque l'ouverture de la boîte de dialogue propre à la vectorisation. Le nombre de couleurs minimal est fixé à 8. Le bouton Aperçu permet de vérifier le résultat avant vectorisation réelle, généralement fulgurante. L'image devient éditable après >Modifier > Convertir > En polygones, puis >Modifier > Dissocier. L'image vectorielle pourra alors être travaillée, puis exporter en bitmap ou en vecteurs aux formats : SVG, SVM, EMF, EPS, WMF, et SWF (Macromedia Flash).
Cette possibilité, comme beaucoup d'autres de la suite Star/Open, est rarement évoquée, tant il est vrai que celle-ci est toujours présentée comme la concurrente légitime de Word et Excel, mais jamais comme un produit original, pourvu d'un très bon outil vectoriel dont les autres sont démunis. Ou alors, les outils vectoriels proposés ailleurs sont d'une telle indigence qu'il est plus charitable de n'en pas parler...
A essayer, en toute circonstance, puisque la suite Open, libre et gratuite, en licence GPL/LPGL et SISSL, est disponible pour Linux, MacOS X, Windows, Solaris... La suite Star, techniquement identique, n'est pas gratuite, mais documentation et support de la part de Sun sont assurés.

Informations sur : <http://www.sun.com/software/star/staroffice/index.xml>
et sur : <http://www.openoffice.org/>

L'illustration "StarDraw/OpenDraw" présente la démarche à suivre et la boîte de dialogue de vectorisation.



-- Inkscape :
Depuis sa version 0.40, Inkscape, qui est issu de Sodipodi comme chacun le sait, a ingéré tout ou partie du code de Potrace. Il est donc des plus aisés maintenant de convertir toute image bitmap importé en un ensemble vectoriel en noir et blanc sans quitter son environnement de travail. De plus, le développement d'Inkscape est très dynamique et une version de test du programme (en janvier 2005) propose déjà une amélioration majeure du convertisseur intégré : la possibilité de produire une image vectorielle en couleurs ou en niveaux de gris.
La fonction n'est pas facile à trouver; elle se loge dans >Chemin> Vectoriser le bitmap. La boîte de dialogue spécifique qui s'ouvre alors propose plusieurs méthodes de vectorisation : Luminosité, Détection de contour et Quantification qui produisent du vectoriel noir et blanc; Multiple Scanning subdivisé en trois méthodes, produisant du vectoriel noir et blanc, couleur et niveaux de gris. On remarquera les réglages réduits au minimum pour chaque méthode, et le fait que pour chacune on puisse retourner le résultat (inverser). L'Aperçu permet de contrôler la modification d'un paramètre, et le bouton Valider active la vectorisation réelle. C'est on ne peut plus simple. On n'en demande pas plus non plus. Petite précision : le test de la nouvelle fonction de vectorisation a été réalisé sous Windows XP.

Inkscape affiche donc clairement ses ambitions d'accéder à la première place des programmes de dessin vectoriel libre, en offrant une solution complète, à l'instar de Gimp dans le domaine du bitmap. Sans être devin patenté, on peut se risquer à pronostiquer qu'il est en train d'y parvenir. Dommage toutefois qu'Inkscape ait toujours autant de mal à manipuler des images volumineuses : la moindre vectorisation, qui contient un grand nombre de points et de courbes, le ralentit considérablement. Gageons que ce défaut finira par être corrigé, et qu'avec l'afflux constant des fonctionnalités nouvelles qu'il accueille, Inkscape va rendre obsolètes jusqu'aux regrets qu'on pouvait discrètement éprouver de ne pas avoir Adobe Illustrator sous Linux.

Inkscape est un programme OpenSource disponible pour Linux, MacOS X (Fink) et Windows. Informations et téléchargement sur: <http://www.inkscape.org/index.php>

L'illustration "Inkscape" est un montage présentant la boîte de dialogue spécifique et quelques résultats.


6 En résumé :

En matière de vectorisation, les solutions décrites précédemment tentent de se substituer aux applications de référence suivantes dont il convient de ne pas ignorer que :
-- Adobe StreamLine 4.0 coûte 129$ US ou 69$ US pour une mise à jour (en janvier 2005), qu'il pèse plus de 8 Mo, qu'il produit du Postscript éditable, et qu'il n'est disponible que pour Windows et Macintosh.
-- Corel Trace est un élément de CorelDraw Suite (Draw, PhotoPaint, RAVE, Trace, Capture, Bitsream Font Navigator), actuellement en version 12, coûte 99$ US, ce qui est relativement peu vu l'énormité de l'ensemble, qu'il occupera 500 Mo de votre disque dur, et qu'il est disponible seulement pour Windows. Quel dommage que Corel ait été contraint d'abandonner Linux!
-- Siame Vector Eye est un outil véloce, puissant, léger, qu'il sauvegarde en SVG, PS et EPS, qu'il coûte selon la version 19, 39 ou 49 €, qu'il est français et qu'il est affecté par un défaut rédhibitoire : il ne tourne que sous Windows.

Cela précisé, le graphiste linuxien n'a d'autre recours que  les solutions libres exposées plus avant. Mais ce n'est pas un pis-aller : en effet, Inkscape n'a rien d'un sous-produit et le choisir comme outil de travail est une marque de bon sens tout en étant un pari optimiste sur l'avenir, quant à son aptitude à devenir le meilleur de sa catégorie. Toutefois, le couple Frontline-Autotrace, eu égard aux multiples règlages qu'il propose, semble être, pour l'heure, la solution indépendante la plus satisfaisante.
Ce n'est pas un diktat : chacun fera comme il voudra!



André PASCUAL
andre.pascual@linuxgraphic.org