Vektorisieren mit potracer und mkbitmap

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

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

[1]

[2]

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