Vom Punkt zur glatten Kurve

Bitmap- in Vektorgrafiken unwandeln

01.05.2005
Wer glatte Linien kantigen Pixeln vorzieht, findet in Vektorbildern die passende Ausdrucksform. Dahin führen von der eingescannten Vorlage verschlungene Wege. Wir stellen Programme vor, die die Vektorisierung übernehmen und dabei optisch ansprechende Ergebnisse liefern.

Obwohl die meisten Bilder im Computerbereich als Bitmaps gespeichert sind, gibt es viele Anwendungen für Vektorformate – und es werden immer mehr. In der Vergangenheit waren sie vor allem fürs Drucken interessant, weil Drucker über eine höhere Auflösung verfügen als Bildschirme. Auch auf aktuellen Desktops werden Vektorformate immer wichtiger, denn moderne Computer können sie in Echtzeit in die Darstellung auf dem Bildschirm umrechnen. So beherrschen sowohl Gnome als auch KDE das SVG-Format [1]. Damit müssen Icons nicht in verschiedenen Größen gespeichert sein, sondern lassen sich ohne Qualitätsverlust in jeder Größe anzeigen.

Bitmap- und Vektorformat

Liegt das geliebte Bild aber nur als Bitmap vor, steht man vor dem Problem der Umwandlung ins andere Format, dem so genannten Vektorisieren. Auf dem kommerziellen Windows-Markt übernehmen das Programme wie Adobe Streamline oder Corel Trace. Auch in diesem Bereich hat die freie Software-Community Alternativen geschaffen, die ähnlich leistungsfähig sind, aber durchaus ihre Tücken haben.

Bei Autotrace [2] handelt es sich um ein Kommandozeilenprogramm, das ein Pixelformat liest und in ein Vektorbild umrechnet. Die Installation gestaltet sich recht einfach. Nach dem Herunterladen und Auspacken des Pakets konfigurieren Sie es mit ./configure. Es folgen make und make install. Es empfiehlt sich allerdings, sich etwas näher mit den verfügbaren Configure-Optionen zu beschäftigen (configure --help), sonst lässt sich Autotrace zwar übersetzen und installieren, es unterstützt aber dann zum Beispiel weniger Bildformate.

Sofern die entsprechenden Entwicklungspakete vorhanden sind, verwendet es Imagemagick [3] und pstoedit [4] zur Umwandlung von Bildern respektive zur flexiblen Postscript-Ausgabe. Um die Eingabeformate zu erfahren, die Autotrace beherrscht, verwenden Sie den Schalter -list-input-formats, für die Ausgabeformate -list-output-formats.

Im einfachsten Fall rufen Sie Autotrace mit der Bitmap-Eingabedatei als Parameter auf. Es schreibt dann die vektorisierte Datei als EPS (Encapsulated Poscript) auf die Standardausgabe. Alternativ geben Sie mit dem Schalter -o gleich eine Ausgabedatei an: autotrace -o ausgabe.eps eingabe.png.

In diesem Beispiel dient ein Bild im PNG-Format als Ausgangsdatei zur Vektorisierung. Besitzt Ihre Datei ein anderes, von Autotrace nicht unterstütztes Format, wandeln Sie es zum Beispiel mit Gimp oder auf der Kommandozeile mit convert aus dem Imagemagick-Paket um: convert meinbild.jpg meinbild.png.

Der Umwandler erkennt anhand der Dateierweiterung .png das gewünschte Ausgabeformat. Bei der Gelegenheit können Sie mit dem Schalter -geometry gleich die Größe anpassen, zum Beispiel convert -geometry 640x480 meinbild.jpg meinbild.png.

Flecken entfernen

Vermutlich sind Sie mit dem Ergebnis des ersten Autotrace-Laufs nicht ganz zufrieden. Wenn Sie nicht eine wirklich augezeichnete Vorlage verwendet haben, wird das Ergebnis wohl viele Flecken zeigen (Abbildung 1).

Abbildung 1: Das Bild eines Windrads mit Autotrace vektorisiert: Es weist viele störende Flecken auf.

Hier hat der Programmautor Martin Weber vorgesorgt und mit -despeckle-level einen Schalter eingebaut, der den Fleckfilter einschaltet und einstellen lässt. Je kleiner der von 1 bis 20 reichende Wert ausfällt, desto weniger Flecken entfernt Autotrace. Die besten Ergebnisse erzielten wir im Test mit recht großen Werten, meistens sogar nur mit dem Maximalwert (Abbildung 2).

Abbildung 2: Mit einem "Despeckle-Level" von 20 entfernt Autotrace alle Flecken, das Bild wird glatt.

Prinzipiell fällt es schwer, Angaben über die "besten" Werte zur Vektorisierung zu machen, denn sie hängen stark von der Vorlage und dem gewünschten Ergebnis ab. So ist es fast unmöglich, in ein und demselben Bild gleichzeitig unerwünschte Details zu eliminieren, aber zum Beispiel feine Muster oder Schrift zu erhalten. Hier hilft es, die feineren Elemente aus dem Bitmap zu kopieren, zu vergrößern und mit anderen Einstellungen zu vektorisieren als die groben Teile. Danach fügen Sie beide Teile in einem Vektorzeichenprogramm wie Inkscape [5], Sodipodi [6] oder dem guten alten XFig [7] wieder zusammen. Glauben Sie aber nicht, dass Linux hier mal wieder den kommerziellen Vorbildern unterliegt: Diese Probleme teilt es im wesentlichen mit Adobe Streamline und Corel Trace.

Experimentierfeld

Werden Sie schnell unruhig, wenn nichts passiert, sollten Sie die Option -report-progress wählen, die den Fortschritt des Programms dokumentiert. Vor allem bei großen Bildern benötigt Autotrace einige Zeit für die Vektorisierung – und einiges an Speicher. Es kann durchaus vorkommen, dass Ihnen der Speicher ganz ausgeht und Autotrace abstürzt. In diesem Fall sollten Sie es mit einer verkleinerten Version des Originals versuchen.

Mit dem Autotrace-Parameter -corner-threshold beeinflussen sie die Ausprägung der Ecken: hohe Werte führen zu eckigeren Konturen, niedrige runden sie eher ab. Die vorgestellten und alle übrigen Parameter sind in der Manpage dokumentiert.

Wem die manuelle Eingabe auf der Kommmandozeile zu mühsam ist, der kann auf ein grafischen Frontend namens Frontline zurückgreifen. Um es zu kompilieren benötigen Sie unter anderem die Entwicklungsbibliotheken von Gnome, Gtk und LibArts. Außerdem verwendet es die Autotrace-Bibliothek, die sich normalerweise schon auf Ihrem System befindet, wenn Sie das Programm aus den Sourcen kompiliert haben. Debian-Benutzer müssen dazu das Paket libautotrace-dev installieren.

Mit den Autotrace-Optionen zu experimentieren, kann Ihnen auch das Frontend nicht ersparen. Es liefert aber immerhin gleich eine Ansicht des Ergebnisses und macht so das interaktive Erforschen einfacher. Haben Sie mit dem Button Auswählen ein Bild geladen, starten Sie mit Trace die Vektorisierung. Frontline blendet die Vektorlinien in das Ausgangsbild ein. Um das Bild auszublenden und nur noch die Linienzüge zu sehen, klicken Sie im Vorschaufenster neben Image auf den Button Show (Abbildung 3).

Verschieben Sie die Regler, bis das Ergebnis Ihren Wünschen entspricht. Um das Vektorformat zu speichern, klicken Sie auf das Bild. Es öffnet sich ein Dateimenü, in dem Sie den Dateinamen und das Ausgabeformat (EPS, SVG, …) wählen.

Abbildung 3: Die grafische Oberfläche Frontline blendet das Ergebnis der Vektorisierung in das Originalbild ein.

Potrace in schwarz und weiß

Eine leistungsfähige Alternative zu Autotrace stellt das ebenfalls textorientierte Potrace dar, das von Programmautor Peter Selinger weiter aktiv entwickelt wird [8]. Im Gegensatz zu Autotrace beherrscht es nur Bilder in den Portable-Anymap-Formaten: PPM (Farbe) und PBM (schwarz-weiß) sowie PGM (Graustufen) [9]. Um das Ausgangsbild in eines dieser Formate zu wandeln, verwenden Sie Gimp oder, wie oben beschrieben, das Kommandozeilenprogramm convert mit den entsprechenden Dateieendungen .pbm, .ppm und .pgm.

Rufen Sie Potrace nur mit dem Eingabebild auf, schreibt es eine Ausgabedatei im EPS-Format mit dem gleichen Grunddateinamen wie das Original, aber der Endung .eps. Alternativ erlaubt der Parameter -o, einen Namen anzugeben. Das Ausgabeformat SVG stellen Sie mit dem Schalter -s ein.

Auch bei Potrace enthalten unbearbeitete Vorlagen im allgemeinen störende Flecken. Der Kommandozeilenschalter, um sie zu entfernen heißt --turdsize oder kurz -t. Je größer dieser Wert, desto mehr Flecken löscht das Programm.

Die besten Ergebnisse liefert Potrace mit schwarz-weißen Vorlagen, die deutlich erkennbare Konturen aufweisen. Deshalb empfiehlt es sich, das Ausgangsbild vorher mit Gimp zu bearbeiten und bei der Umwandlung in ein Schwarz-Weiß-Bild mit verschiedenen Werten zu experimentieren. Zusätzlich hilft das im Potrace-Paket mitgelieferte mkbitmap. Es wendet einen so genannten Hochpass-Filter auf das Bild an, der Helligkeitsunterschiede in großen Flächen, zum Beispiel im Hintergrund, eliminiert. Stattdessen erhält es feine Details, also üblicherweise die Konturen eines Gegenstands. Der wichtigste Parameter -f bestimmt den Grad der Filterung. Eine Dokumentationsseite auf der Potrace-Homepage gibt ein verständliches Beispiel für die Anwendung des Programms [10].

Mehr Frontends

Für Potrace existiert die grafische Oberfläche Potrace-GUI [11], die das Eingeben der Parameter vereinfacht und das Ergebnis der Vektorisierung anzeigt (Abbildung 4). Neben dem angestammten Potrace unterstützt das Frontend auch das oben vorstellte Autotrace. Um Potrace-GUI zu kompilieren, benötigen Sie die Qt- und einige KDE-Bibliotheken.

Abbildung 4: Das Frontend Potrace-GUI zeigt das Ergebnis der Vektorisierung. Es kann neben Potrace auch den Konkurrenten Autotrace steuern.

Potrace-GUI ist durchaus brauchbar, weist aber einige kleine Fehler auf. So zeigt es zwar das Originalbild und das Vektorgegenstück, erlaubt aber aus unerfindlichen Gründen oft nicht mehr zu scrollen.

Wer auf seinem Rechner Java installiert hat, kann auf ein weiteres Frontend zurückgreifen, das Potrace und Autotrace unterstützt: Delineate bringt alle nötigen Bibliotheken mit, sodass außer dem Entpacken keine weitere Installation anfällt. Sie wechseln nur in das Unterverzeichnis delineate/0.5 und geben dem mitgelieferten Shell-Skript Ausführungsrechte: chmod +x delineate.sh. Wenn Sie dann noch die Umgebungsvariable JAVA_HOME mit dem Ort der Java-Installation belegen (zum Beispiel export JAVA_HOME=/usr/java/j2sdk1.4.2_02), können Sie das Skript ausführen.

Wollen Sie zum ersten Mal ein Bild vektorisieren, fragt Delineate nach dem Ort der Vektorisierungsprogramme, die Sie im folgenden Dateidialog auswählen – es findet sie nicht selbst. Haben Sie aus Versehen die falsche Datei ausgesucht, gibt es keine Möglichkeit, diese Einstellung in der GUI wieder zu ändern. Stattdessen müssen Sie den entsprechenden Eintrag in der Datei settings/settings.prop anpassen oder löschen.

Das herausragende Feature von Delineate ist, dass es jeweils das Ergebnis der letzten und der aktuellen Vektorisierung anzeigt. Das ermöglicht, die vielen Parameter einzustellen, und die Ergebnisse im direkten Vergleich zu begutachten (Abbildung 5).

Abbildung 5: Delineate arbeitet mit Potrace und Autotrace. Hier zeigt es das Ergebnis von zwei Durchläufen mit Autotrace, angewandt auf ein Farbbild.

Auch Delinate enthält einige Bugs. So funktionierte im Test die Zoom-Funktion nicht, was vor allem für sehr große Bilder recht unpraktisch ist. In einem anderen Fall blieb das Programm wegen Speichermangels mit einer Java-Fehlermeldung hängen.

Am besten zusammen

Beide Kommandozeilenprogramme zur Vektorisierung haben ihre Vorzüge und Nachteile: Autotrace beherrscht farbige Bilder, mehr Formate und ist etwas bedienungsfreundlicher; Potrace liefert im allgemeinen bessere Ergebnisse und wird noch aktiv entwickelt. Außerdem vektorisiert Potrace wesentlich schneller als Autotrace, das zudem bei der Berechnung mehr Speicher verbraucht – häufig soviel, dass es bei großen Bildern abstürzt.

Ähnlich verhält es sich mit den grafischen Frontends. Frontline unterstützt nur Autotrace, blendet aber die Vektorlinien in das Originalbild ein. Delineate ist als Java-Programm leicht zu installieren, bringt eine sinnvolle Vorschaufunktion mit, weist aber einige Bugs auf. Auch beim Konkurrenten Potrace-GUI macht die Vorschau einige Schwierigkeiten, es ordnet aber die vielen Parameter übersichtlich.

In der Praxis bewährt sich eine Kombination der Tools und GUIs. Da sie alle auch die Parameter der darunter liegenden Kommandozeilenprogramme anzeigen, eignen sie sich hervorragend dazu, deren komplexe Parameter zu erforschen.

Infos

[1] Das Grafikformat SVG – Struktur und Praxis, Linux-Magazin 11/04, S. 90

[2] Autotrace: http://autotrace.sourceforge.net

[3] Imagemagick: http://www.imagemagick.org

[4] pstoedit: http://www.pstoedit.net

[5] Inkscape: http://www.inkscape.org

[6] Sodipodi: http://www.sodipodi.com

[7] Xfig: http://www.xfig.org

[8] Potrace: http://potrace.sourceforge.net

[9] PNM-Formate: http://www-lehre.informatik.uni-osnabrueck.de/~cg/2000/skript/10_2_PBM_PGM_.html

[10] Mkbitmap-Beispiele http://potrace.sourceforge.net/mkbitmap.html

[11] Potracegui: http://potracegui.sourceforge.net

[12] Delineate: http://delineate.sourceforge.net

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare