Vectoriser
sous Linux
Lorsqu'on s'adonne avec satifaction
à la création
d'images vectorielles sous Linux avec,
entre autres, Sketch,
Sodipodi
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