Vektorisieren mit potracer und mkbitmap
Allgemeines
Eigentlich hatte ich zwei Anwendungsfaelle um verschiedene Bitmaps zu verktorisieren.
- Eine Bitmap so zu konvertieren, dass ich sie als Grundlage fue eine CNC-Fraese nutzen konnte und
- die Icons in FHEM waren mir oft zu klein, zu grosz, zu unscharf, ...
Einstieg
Ich suchte etwas fuer die Kommandozeile. Schnell bin ich auf das Paket Potrace von Peter Selinger gestoszen.
Den Grundlagen von Ubuntuusers habe ich nicht hinzuzufuegen. Sie gehen aber leider ueber die Informationen der Man-Pages nicht hinaus.
Die Reihenfolge der Nutzung ist mkbitmap und dann potrace. Es wird empfohlen die Bitmaps mit mkbitmap fuer potrace vorzubereiten. Das ist aber kein muss.
mkbitmap
mkbitmap 1.16. Transforms images into bitmaps with scaling and filtering.
Usage: mkbitmap [options] [file...]
OPTIONS
General:
-h, --help - print this help message and exit -v, --version - print version info and exit -l, --license - print license info and exit -o, --output <file> - output to file -x, --nodefaults - turn off default options
Inversion:
-i, --invert - invert the input (undo 'blackboard' effect)
Highpass filtering:
-f, --filter <n> - apply highpass filter with radius n (default 4) -n, --nofilter - no highpass filtering -b, --blur <n> - apply lowpass filter with radius n (default: none)
Scaling:
-s, --scale <n> - scale by integer factor n (default 2) -1, --linear - use linear interpolation -3, --cubic - use cubic interpolation (default)
Thresholding:
-t, --threshold <n> - set threshold for bilevel conversion (default 0.45) -g, --grey - no bilevel conversion, output a greymap
Possible input file formats are: pnm (pbm, pgm, ppm), bmp. The default options are: -f 4 -s 2 -3 -t 0.45
Manpage
Beipiele
Diese zweite Seite, mit vorangeschaltetem mkbitnap erlaeutert schoen die Varienten zum besten Ergebnis.
Der richtige Threshold, also die Stufe ab der ein Pixel weiß oder schwarz wird ist nicht einfach zu finden.
Ohne Anwendung eines Highpassfilters kommt er zu folgenden Ueberlegungen.
Wenn wir eine einfache Schwellenwertmethode zur Konvertierung von Grautönen in Schwarz/Weiß anwenden, können wir nie ganz den richtigen Schwellenwert finden. Der Hintergrund wird schwarz, bevor der Vordergrund zufriedenstellend ist. Die folgenden Bilder wurden auf verschiedenen Ebenen mit Schwellenwerten versehen.
Durch die Hochpassfilterung werden großflächige Unregelmäßigkeiten wie Hintergrundschwankungen unterdrückt, während kleinräumige Details wie Linien erhalten bleiben. Die Filterung hängt von einem Parameter namens Filterradius ab, der ungefähr der Größe der erhaltenen Features entspricht. Der Filterradius kann auch anhand der Linienstärke ermittelt werden. Die folgende Bildsequenz veranschaulicht die Wirkung des Filterradiusparameters.
So ergibt sich der erste Befehl mit dem man anfangen kann.
mkbitmap -f 2 -s 2 -t 0.48