Outils pour utilisateurs

Outils du site


issue79:tutoriel_-_inkscape

Table des matières

1

Drawing with Inkscape – Part 19 By Mark Crutch The past few articles have presented various techniques and tools for manually tracing a scanned sketch in order to create a vector outline. All that manual work can produce some impressive results, but it does take a while. Fortunately, Inkscape also has an automated tracing tool that can often produce acceptable results in a fraction of the time. Inkscape's tracing code is based on the venerable Potrace command-line tool, but does some additional pre-processing of bitmaps before they're passed on to the underlying algorithm. You can open the Trace Bitmap dialog using the Path > Trace Bitmap… menu entry, or by pressing SHIFT-ALT-B. This is one dialog in Inkscape that could really do with a little UI love. It's cramped, unintuitive, contains typos, and the spinboxes don't have the nice context popups of most similar controls in Inkscape. But with a little explanation of the various options, it becomes functional enough even if it's not going to win any prizes for design.

Dessiner avec Inkscape - Chapitre 19 Par Mark Crutch Les tout derniers articles ont présenté divers outils et techniques pour tracer manuellement un croquis scanné afin de créer un contour vectoriel. Tout ce travail manuel peut produire des résultats impressionnants, mais il prend vraiment du temps. Heureusement, Inkscape dispose également d'un outil de traçage automatisé qui peut souvent produire des résultats acceptables en une fraction du temps.

Le code de vectorisation de Inkscape est basé sur le vénérable outil en ligne de commande Potrace, mais fait un peu de pré-traitement supplémentaire du bitmap avant qu'il ne soit transmis à l'algorithme sous-jacent. Vous pouvez ouvrir la boîte de dialogue Vectoriser le bitmap en utilisant le menu Chemin > Vectoriser le bitmap…, ou en appuyant sur SHIFT-ALT-B.

C'est une boîte de dialogue dans Inkscape qui pourrait vraiment être bien si l'IU était plus agréable. Elle est exigüe, pas intuitive, elle contient des fautes de frappe, et les roulettes n'ont pas les beaux menus contextuels de la plupart des contrôles similaires dans Inkscape. Mais avec un peu d'explications sur les différentes options, elle devient assez fonctionnelle, même si elle ne gagnera pas de prix pour sa conception.

The first thing to note is that the “Move” tab has a pair of groupboxes, “Single scan” and “Multiple scans”. As the titles indicate, these result in different traces. The former creates a single path and is useful when you want a clean, hard trace. It's ideal for creating a solid outline from a sketch, or for reproducing a single color logo. The latter creates multiple paths which are grouped together, and is better for converting color or grayscale logos or photographs. Continuing our efforts to create a nice vector version of “Frankie” from the sketch that was introduced in Part 17, I'm going to concentrate on the Single Scan options in this article. With the sketch imported into Inkscape and selected, clicking the Update button in the Trace Bitmap dialog fills the preview area with… a rather disappointing white rectangle with just a few speckles of black. The problem is that our pencil sketch is made up of shades of light gray which fall below the default threshold required by the Brightness Cutoff option. This method of pre-processing the trace simply converts the dark pixels that fall below the threshold to black, and converts any that fall above it to white. By looking at a histogram of the sketch in The GIMP, it's clear that there is little content to the darker left-hand end of the scale.

La première chose à noter est que l'onglet « Mode » (Move) a deux zones de groupe : « Passe simple » (single scan) et « Passes multiples » (multiple scans). Comme les titres l'indiquent, les résultats seront des vectorisations différentes. Le premier crée un chemin unique et est utile quand vous voulez un chemin propre et large. Il est idéal pour la création d'un contour solide à partir d'un croquis, ou pour reproduire un logo de couleur unique. Le second crée de multiples chemins qui sont regroupés et il est meilleur pour convertir les logos ou les photos en couleur ou en niveaux de gris. Pour continuer nos efforts pour créer une belle version vectorisée du croquis de « Frankie » qui a été présenté au chapitre 17, je vais me concentrer sur les options de passe simple dans cet article.

Une fois le croquis importé dans Inkscape et sélectionné, cliquer sur le bouton Mettre à jour (Update) dans la boîte de dialogue Vectoriser le bitmap remplit la zone de prévisualisation avec… un rectangle blanc ayant seulement quelques taches de noir, plutôt décevant. Le problème est que notre croquis au crayon est composé de nuances de gris clair qui passent en dessous du seuil par défaut requis par l'option Seuil de Luminosité (Brightness Cutoff). Cette méthode de pré-traitement du tracé convertit simplement en noir les pixels sombres qui passent en dessous du seuil, et convertit tout ce qui passe au-dessus en blanc. En regardant un histogramme du croquis dans The GIMP, il est clair qu'il y a peu de contenu du côté plus sombre à gauche de l'échelle.

2

There are two fixes for this: either the source image has to be made darker, or the threshold needs to be raised. Taking the latter approach, increasing the threshold to 0.90 (it runs from 0.00 to 1.00) gives a much better looking preview after clicking on the Update button. Picking the right threshold level for any given image is largely a matter of trial-and-error. Usually, images with strong dark colors require a low value, whilst those with lighter hues will need a larger value. In an ideal world, this dialog would show a histogram of the image, and let you set the threshold by dragging a marker along it, dynamically updating the preview as you go. In lieu of such niceties, you have little choice but to tweak the threshold, update the preview, tweak it a little more, update it again, and so on until you achieve an acceptable result.

Il y a deux corrections possibles : soit l'image source doit être rendue plus sombre, soit le seuil doit être relevé. Prenant la dernière approche, l'augmentation du seuil à 0,90 (il va de 0,00 à 1,00) donne un bien meilleur aperçu après avoir cliqué sur le bouton de mise à jour.

Choisir le niveau de seuil pour toute image donnée est largement une question tâtonnements. Habituellement, les images avec des couleurs sombres requièrent une valeur faible, tandis que celles avec des teintes plus claires nécessiteront une valeur plus grande. Dans un monde idéal, ce dialogue montrerait un histogramme de l'image qui vous permettrait de régler le seuil en faisant glisser un curseur, et mettrait à jour dynamiquement l'aperçu. Au lieu de ces gâteries, vous avez le seul choix de régler le seuil, mettre à jour l'aperçu, régler un peu plus, mettre à jour à nouveau, et ainsi de suite jusqu'à obtenir un résultat acceptable.

When you do finally get a preview that looks promising, you simply have to click the OK button to start the tracing process. Most of the time this completes almost instantly, but if you're tracing a particularly complex image, or using a particularly slow machine, you may have to wait a little longer. During the tracing process the OK button will be disabled; the best indication that it's finished is when the button becomes enabled again. At this point you will have a new path in the main Inkscape window, positioned exactly on top of the bitmap image. It will also be automatically selected and the raster image below will have been deselected. Unfortunately, this means that if your trace doesn't look right, you can't just change the threshold and hit OK to try again. Instead you have to move or delete the bad trace, then re-select the bitmap, and then finally you can adjust the tracing parameters in the dialog and try once more. It's only a few steps, but when you're trying to hone in on a suitable threshold by trial-and-error, it's a few steps too many.

Lorsque vous obtenez enfin un aperçu qui semble prometteur, il vous suffit de cliquer sur le bouton OK pour lancer le processus de vectorisation. La plupart du temps, il se termine presque instantanément, mais si vous vectorisez une image particulièrement complexe, ou si vous utilisez une machine particulièrement lente, vous pourrez avoir à attendre un peu plus longtemps. Pendant le processus de vectorisation, le bouton OK sera désactivé ; la meilleure indication que c'est terminé est quand le bouton devient actif à nouveau. À ce stade, vous aurez un nouveau chemin dans la fenêtre principale d'Inkscape, positionné exactement au-dessus de l'image bitmap. Il va également être automatiquement sélectionné et l'image de trame au-dessous aura été désélectionnée. Malheureusement, cela signifie que si votre tracé ne semble pas correct, vous ne pouvez pas modifier le seuil et cliquez sur OK pour réessayer. Au lieu de cela vous avez à déplacer ou supprimer le mauvais tracé, puis re-sélectionner le bitmap et, enfin, vous pouvez ajuster les paramètres de traçage dans la boîte de dialogue et essayer à nouveau. C'est seulement quelques étapes, mais quand vous essayez trouver un seuil approprié par tâtonnements, ce sont quelques étapes de trop.

3

You should always ensure that you move the final trace away from the bitmap image when checking the result to avoid the original image obscuring any holes or gaps in your trace. Here's how the finished Frankie trace looks: It's not too bad, but there are several areas where the lightness of the pencil marks and the grain of the paper have conspired to break up the outline. A closer view of the eyes shows this effect quite clearly. Sometimes this very rough appearance is exactly the right artistic effect, but, more usually, the point of creating a vector image is to give you something a lot smoother. You can try increasing the threshold before tracing again, but often this results in lines that are too thick and heavy – although it does usually fill some of the problem gaps in the process. Practically, though, if you want good results from auto-tracing, you have to have a good source image to begin with. This means blocks of flat, contrasting colors rather than tints, gradients, and thin lines. A few minutes spent in a bitmap editor can save you a lot of time in Inkscape later.

Vous devez toujours vous assurer que vous déplacez le tracé final loin de l'image bitmap pour vérifier le résultat afin d'éviter que l'image originale masque les trous ou les lacunes de votre tracé. Voici à quoi ressemble le tracé fini de Frankie :

Il n'est pas trop mauvais, mais il y a plusieurs zones où la légèreté des marques de crayon et le grain du papier se sont associés pour briser le contour. Un zoom sur les yeux montre clairement cet effet.

Parfois cette apparence très rugueuse est exactement l'effet artistique voulu, mais, plus généralement, l'objectif d'une image vectorielle est de vous donner quelque chose de beaucoup plus lisse. Vous pouvez essayer d'augmenter le seuil avant de vectoriser à nouveau, mais souvent cela donne des lignes trop épaisses et lourdes, même si ça corrige habituellement certains problèmes de trous dans le traitement. Mais en pratique, si vous voulez de bons résultats avec l'auto-vectorisation, vous devez partir d'une bonne image source. Cela signifie des zones d'aplats de couleurs contrastées plutôt que des teintes, des dégradés et des lignes fines. Quelques minutes passées dans un éditeur de bitmap peuvent vous faire économiser beaucoup de temps dans Inkscape plus tard.

In practice, I never use auto-trace on a pencil sketch. A sketch might be suitable for manual tracing, but there's just not enough contrast and clarity for Inskcape and Potrace's algorithms to do a reliable job. Here's how Vince and I actually create the vector outlines for our 'Monsters, Inked' comics: 1. Create a pencil sketch to decide on the shape and position of the characters and objects. 2. Ink over the pencil sketch using black ink and marker pens. 3. Erase any pencil marks as thoroughly as possible. 4. Scan the image. 5. Load the scan into The GIMP, and adjust the contrast even further to give a clear distinction between black and white. 6. Use the eraser tool in The GIMP to remove any stubborn pencil lines that were picked up when scanning. 7. Trace the image in Inkscape using the Brightness cutoff option with a suitable threshold (usually the default of 0.45 is fine, given the preparation above). After going through these steps, the result is much better than the Swiss-cheese trace we had earlier. There are still some areas that need to be manually tidied up – mostly where the tracing process has filled small areas – but, overall, we've got a vector that's crisp and clean, and is a good representation of the artist's original intentions.

En pratique, je n'utilise jamais l'auto-vectorisation sur un croquis au crayon. Un croquis peut être adapté à une vectorisation manuelle, mais il n'y a tout simplement pas assez de contraste et de clarté pour qu'Inskcape et les algorithmes de Potrace fassent un travail fiable. En fait, voici comment Vince et moi créons le tracé vectoriel pour notre BD « Monsters, Inked » : 1. Créer un croquis au crayon pour décider de la forme et de la position des personnages et des objets. 2. Encrer le croquis au crayon avec de l'encre noire et des marqueurs. 3. Effacer au maximum toutes les marques de crayon. 4. Numériser l'image. 5. Ouvrir l'image dans GIMP, et régler le contraste encore plus fort pour faire une distinction claire entre le noir et le blanc. 6. Utiliser l'outil de gomme dans GIMP pour enlever les traits de crayon tenaces qui ont été détectés lors de la numérisation. 7. Vectoriser l'image dans Inkscape en utilisant l'option Seuil de luminosité avec un seuil approprié (habituellement la valeur par défaut de 0,45 est très bien, compte tenu de la préparation ci-dessus). Après être passé par ces étapes, le résultat est beaucoup mieux que le tracé troué comme du gruyère que nous avions auparavant. Il y a encore quelques zones qui ont besoin d'être nettoyées manuellement, la plupart du temps là où le processus de vectorisation a rempli de petites zones ; mais dans l'ensemble, nous avons obtenu un vecteur qui est propre et vif, et qui est une bonne représentation des intentions d'origine de l'artiste.

4

You can download an inked copy of Frankie's head from the link at the end of the article if you want to try for yourself. Now, let's take a look at the other two algorithms in the Single Scan section of the dialog. I find these to be less useful than the simple Brightness Cutoff method, but the results vary greatly from image to image, so it's always worth giving them a try if you're not getting the result you want. The Edge Detection method, unsurprisingly, runs the bitmap image through an edge detection algorithm before vectorising the result. Edges are defined by changes in brightness within the image – a transition from dark to light or vice versa. The Threshold value sets the amount of change that is needed in order for a pixel to be considered to be an edge. Higher values mean that only really obvious edges are counted, which can lead to broken lines. Set it too low, however, and almost any color change is counted as an edge. It may seem obvious but edge detection works best on images with strong edges. Boldly colored logos or black-and-white line art can give good results, but, as always, you may get better results if you tweak the source image in a bitmap editor first. For example, trying this method with the Full Circle Magazine logo worked reasonably well but kept losing the shape of the inner circles as the difference in brightness between those and the gradients was too small. By using The GIMP to convert the logo to grayscale and to adjust the color curve for better contrast, I was able to create a trace that preserved the outline of the circles.

Vous pouvez télécharger une copie encrée de la tête de Frankie sur le lien à la fin de l'article si vous voulez essayer vous-même.

Maintenant, regardons les deux autres algorithmes de la section Passe simple de la boîte de dialogue. Je trouve ceux-ci moins utiles que la méthode simple du Seuil de luminosité, mais les résultats varient grandement d'une image à l'autre, c'est donc toujours intéressant de les essayer si vous n'obtenez pas le résultat que vous souhaitez.

La méthode de Détection de contours, sans surprise, passe l'image bitmap par un algorithme de détection de bords avant de vectoriser le résultat. Les contours sont définis par les changements de luminosité dans l'image (une transition de l'obscurité à la lumière, ou vice versa). La valeur de seuil fixe la valeur de variation qui est nécessaire pour qu'un pixel soit considéré comme un bord. Les valeurs les plus élevées signifient que seuls les bords vraiment évidents sont pris en compte, ce qui peut conduire à des lignes brisées. Mais positionnez la valeur trop basse et presque tout changement de couleur sera considéré comme un bord. Ça peut sembler évident, mais la détection de contour fonctionne le mieux sur les images avec des bords bien définis. Des logos avec des couleurs pleines ou des œuvres avec des traits en noir et blanc peuvent donner de bons résultats, mais, comme toujours, vous pouvez obtenir de meilleurs résultats si vous traitez l'image source dans un éditeur de bitmap d'abord. Par exemple, cette méthode utilisée sur le logo du Full Circle Magazine a assez bien foncionné, mais la forme des cercles intérieurs se perdait sans cesse car la différence de luminosité entre ceux-ci et les dégradés était trop petite. En utilisant GIMP pour convertir le logo en niveaux de gris et ajuster la courbe de couleur pour un meilleur contraste, j'ai pu créer un tracé qui préserve le contour des cercles.

The Color Quantisation algorithm takes a fundamentally different approach. In this case, the bitmap image is first reduced to the specified number of colors, each with an index number. This simplifies gradients and soft edges down to solid blocks of color. Then, a black-and-white image is created, splitting the colored blocks between black and white depending on whether the index of the color is even or odd. It's this black-and-white image that is finally passed to the Potrace code to produce a path. It sounds more complex than it is, so I've simulated the process using The GIMP – although the end result isn't quite the same as that produced by Inkscape as the exact details of the algorithm it uses are different. Starting with an image of the Mona Lisa, the first step is to reduce the number of colors. I've chosen to reduce it to 8 colors – it's this value that's set by the Colors spinbox in the Trace Bitmap dialog. Our color-reduced image now has a fixed palette, with each color being identified by its index – a count of its position in the palette.

L'algorithme Quantification des couleurs adopte une approche fondamentalement différente. Dans ce cas, l'image bitmap est d'abord réduite à un nombre défini de couleurs, chacune ayant un numéro d'indice. Cela simplifie les dégradés et les bords doux pour donner des blocs de couleur unie. Ensuite, une image en noir et blanc est créée, répartissant les blocs de couleur entre le noir et le blanc selon que l'indice de la couleur est pair ou impair. C'est cette image en noir et blanc qui est finalement donnée à Potrace qui produira un chemin.

Ça semble plus complexe que ça ne l'est et j'ai donc simulé le processus en utilisant GIMP, même si le résultat final n'est pas tout à fait le même que celui produit par Inkscape puisque les détails exacts de l'algorithme qu'il utilise sont différents. À partir d'une image de la Joconde, la première étape est de réduire le nombre de couleurs. J'ai choisi de le réduire à 8 couleurs ; c'est cette valeur qui est mise dans la case Couleurs dans la boîte de dialogue Vectoriser le bitmap.

Notre image à couleurs réduites a maintenant une palette fixe, chaque couleur étant identifiée par son indice - un décompte de sa position dans la palette.

5

Because the Potrace code expects a simple black-and-white image, the final step before tracing is to reduce this palette further. This is done by converting all the odd indexes to black and all the even indexes to white. That's the approximate process – now let's see what Inkscape actually makes of an 8-color quantisation trace of the Mona Lisa… The results from the Color Quantisation method can vary wildly as you change the number of colors. A lower number tends to produce larger filled areas, losing details. Higher numbers preserve the details a little better, but result in a path with lots of nodes. Some values will result in the indexes being changed so that the black-and-white image appears inverted. You can see this clearly in the preview when you click on the Update button. In this case, simply check the Invert Image checkbox and hit Update again. This checkbox can also be used with the other two tracing methods, and can be particularly useful for tracing a light image on a dark background.

Parce que le code Potrace s'attend à une image en noir et blanc simple, la dernière étape avant la vectorisation est de réduire encore plus cette palette. Ceci est fait par la conversion de tous les indices impairs en noir et de tous les indices pairs en blanc.

C'est approximativement le traitement ; maintenant nous allons voir ce qu'Inkscape fait réellement d'une Joconde quantifiée à 8 couleurs…

Les résultats de la méthode de Quantification des couleurs peuvent varier énormément lorsque vous changez le nombre de couleurs. Un nombre inférieur tend à produire de plus grandes zones de remplissage, perdant les détails. Un plus grand nombre préserve un peu mieux les détails, mais produit un chemin avec beaucoup de nœuds. Certaines valeurs se traduiront par un changement dans les indices de sorte que l'image en noir et blanc apparaît inversée. Vous pouvez voir cela clairement dans l'aperçu lorsque vous cliquez sur le bouton Mettre à jour. Dans ce cas, cochez simplement la case Inverser l'image et appuyez à nouveau sur Mise à jour. Cette case peut également être utilisée avec les deux autres méthodes de vectorisation et peut être particulièrement utile pour vectoriser une image lumineuse sur un fond sombre.

Automatic tracing works well for some images, and poorly for others. In almost every case, there will still be some manual cleaning up to do, so knowing how to use the node editing tools, and how to trace by hand, will still be invaluable skills. Most importantly, try to get a good image to trace from in the first place, even if that means some work in a bitmap editor. Links: Potrace: http://potrace.sourceforge.net “Frankie” and other images: http://www.peppertop.com/fc/

La vectorisation automatique marche bien pour certaines images et mal pour d'autres. Dans presque tous les cas, il y aura toujours un peu de nettoyage manuel à faire et savoir comment utiliser les outils d'édition de nœuds, et comment tracer à la main, seront toujours de précieuses compétences. Plus important encore, essayer d'obtenir une bonne image de départ, même si cela signifie un travail dans un éditeur de bitmap.

Liens : Potrace: http://potrace.sourceforge.net « Frankie » et d'autres images: http://www.peppertop.com/fc/

issue79/tutoriel_-_inkscape.txt · Dernière modification : 2014/04/04 09:37 de auntiee