Schnelle Bildbearbeitung mit ExactImage

Aus LinuxUser 05/2015

Schnelle Bildbearbeitung mit ExactImage

© Paolo De Santis, 123RF

Weniger ist mehr

Das ursprünglich für die automatische Bildaufbereitung von gescannten Bildern entwickelte ExactImage lässt sich auch im Alltag an verschiedenen Stellen nutzbringend einsetzen.

README

Wer in die Verlegenheit gerät, automatisch einen größeren Stapel von Bildern bearbeiten zu müssen, landet schnell bei der etwas unübersichtlichen Programmsuite ImageMagick. ExactImage bietet hier eine Alternative, indem es sich auf die wichtigsten Bildbearbeitungswerkzeuge beschränkt.

Wer Bilder automatisch im Stapelbetrieb bearbeitet, braucht schlanke, leicht zu bedienende Werkzeuge. Normalerweise dient dann Convert aus der ImageMagick-Suite [1] als Programm der Wahl. Allerdings gibt es auch einige Punkte, die gegen dieses Programm sprechen. Insbesondere glänzt Convert nicht unbedingt durch Stabilität. Meist spielt das keine ausschlaggebende Rolle, aber bei komplexen Befehlszeilen kann es schon einmal vorkommen, dass die Programmaufrufe mit einer (zumeist unverständlichen) Fehlermeldung abbrechen und ein falsches oder gar kein Ergebnis erzeugen.

Überhaupt erweist sich die Konstruktion der Befehlszeilen mit Convert als nicht zu unterschätzende Aufgabe: Das Programm kennt nicht weniger als 300 verschiedene Schalter, die oft eine etwas seltsame Syntax aufweisen. Auf jeden Fall dienen viele der Optionen sehr speziellen Aufgaben und fordern dem Anwender einige Übung und reichlich Wissen ab, um sie nutzen zu können – oder wüssten Sie aus der Hüfte, welches Ergebnis der Aufruf convert ... -resize 200\>x300^ ... erzeugt?

Weiterhin bemängeln viele Anwender die relativ geringe Effektivität der ImageMagick-Werkzeuge. Weder arbeiten die Programme besonders schnell, noch liefern sie besonders gute Ergebnisse. Das liegt zum Teil auch an der gewaltigen Funktionsvielfalt, die man oft gar nicht benötigt.

Die konkurrierende Suite GraphicsMagick [2] stellt einen Versuch dar, diesen Mängeln abzuhelfen, ein weiterer hört auf den Namen ExactImage [3]. Beide stellen nur ein Subset von ImageMagicks Repertoire bereit und beschränken sich dabei auf die wichtigsten Funktionen.

Worin unterscheiden sich die drei Konkurrenten nun im Einzelnen? Während ImageMagick mit knapp 20 verschiedenen Programmen daherkommt, beschränkt sich GraphicsMagick auf nur eines sowie drei Konfigurationsprogramme, ExactImage liefert immerhin noch sieben Werkzeuge (siehe Tabelle “ExactImage-Programme”).

Während GraphicsMagick versucht, den größten Teil von ImageMagicks Funktionen abzubilden, liefert die ExactImage-Minisuite lediglich ein universelles Werkzeug (Econvert als Pendant zu Convert) sowie einige Programme für sehr spezielle Aufgaben, wie etwa das Lesen von Barcodes und das Erkennen von leeren Seiten.

ExactImage-Programme

Programm Funktion
bardecode liest Barcodes
e2mtiff fasst mehrere Bilder zu einem mehrseitigen TIFF-Image zusammen
econvert universeller Konverter, Gegenstück zu Convert aus der ImageMagick-Suite
edentify identifiziert Bilddateien, Gegenstück zu Identify aus der ImageMagick-Suite
empty-page erkennt Bilder leerer Seiten
hocr2pdf erzeugt mittels hOCR-Dateien durchsuchbare PDFs
optimize2bw optimiert Bilddateien für die Archivierung
Anmerkung: Zusätzlich gibt es noch Edisplay, eine heute nicht mehr wirklich unterstützte Variante des ImageMagick-Anzeigeprogramms Display.

Und: Action!

Ähnlich wie Convert bei den ImageMagick-Tools betätigt sich Econvert als Hauptakteur, wenn es um das Erzeugen neuer Bilder aus bestehenden geht. Die Syntax folgt dabei der folgenden Struktur:

$ econvert -i Eingabedatei -Option...  -o Ausgabedatei<c>

Hier gilt es, unbedingt auf die korrekte Reihenfolge der einzelnen Bestandteile zu achten, ansonsten ignoriert Econvert (genau wie Convert) eventuell die angegebenen Optionen. Aus einer Eingabedatei können Sie mittels mehrerer Angaben von -Option -o Ausgabedatei beliebig viele Ausgabedateien in einer Befehlszeile erzeugen.

Die Arbeit der ExactImage-Tools wird, wie auch bei ImageMagick, vollständig durch die Optionen gesteuert (siehe Tabelle “Wichtige Optionen”). Dabei unterstützt ExactImage nur eine Teilmenge der vorhandenen Bildformate, die sich zudem bei den Ein- und Ausgaben unterscheidet (siehe Tabelle “Unterstützte Bildformate”). Die wichtigsten Bildformate unterstützt ExactImage dabei aber weitgehend.

Wichtige Optionen

Option Funktionen
--compress Methode Kompressionsmethode für Ausgaben, etwa G3, G4, ZIP, …
--quality Prozent definiert die Qualität in Prozent, voreingestellt: 75
--resolution xdpi [ydpi] Auflösung in X- und Y-Richtung
--size BreitexHöhe definiert die Breite und Höhe der Ausgabedatei für Rohdatenformate
--scale Faktor skaliert um den angegebenen Faktor
--crop x y w h beschneidet das Bild auf den angegebenen Bereich
--fast-auto-crop automatisches Beschneiden (vom unteren Rand her)
--flip spiegelt vertikal
--flop spiegelt horizontal
--rotate Winkel dreht das Bild um den angegebenen Winkel
--brightness Wert Helligkeit anpassen (-1 bis +1)
--contrast Wert Kontrast anpassen (-1 bis +1)
--saturation Wert Sättigung anpassen (-1 bis +1)
--lightness Wert Leuchtstärke anpassen (-1 bis +1)
--hue Wert Farbton anpassen (-360 bis +360)
--negate ein Negativ erzeugen
--gamma Wert das Gamma einstellen
--normalize “normalisiert” die Farben im Bild
--colorspace Modell konvertiert Bilder in eines der Farbmodelle BW, BILEVEL, GRAY, GRAY1, GRAY2, GRAY4, RGB, YUV oder CYMK
--floyd-steinberg Wert erzeugt Schattierungen nach Floyd-Steinberg
--riemersma Wert erzeugt Schattierungen gemäß Riemersma
--blur Wert Gaußscher Weichzeichner
--edge Kanten finden
--foreground Farbe Zeichenfarbe setzen
--background Farbe Hintergrundfarbe setzen
--font Font Font einstellen
--text x1 y1 Größe Text den Text an der angegebenen Position in der spezifizierten Größe ausgeben
--text-rotation Winkel rotiert Texte
--stroke-width Dicke Dicke für Linien
--line x1 y1 x2 y2 Linie zwischen den angegebenen Punkten zeichnen

Unterstützte Bildformate

Kürzel Bildformat
BMP Windows primitives Bitmap-Format
Digital Camera RAW von DCRAW unterstützte Rohdatenformate
Encapsulated PostScript einseitiges PostScript
GIF das veraltete Bitmap-Format
JPEG klassisches JPEG
JPEG2000 die neue JPEG-Variante
OpenEXR HDR-Bitmap-Format, mit bis zu 32Bit Float pro Kanal
PBM Portables Bitmap-Format
PCX Picture Exchange, verbreitetes Austauschformat
PDF write-only, mit eingebetteten JPEG und JPEG2000 sowie Fonts
PNG Standard-Bitmap-Format
PostScript write-only, mit eingebetteten JPEG
RAW rohe Bilddateien
SVG skalierbare Vektorgrafiken, read-only
Targa, TGA Truevision Advanced Raster Graphics Array, bis zu 32 Bit pro Kanal
TIFF der klassische Standard
XPM X Windows Bitmaps (hauptsächlich für Icons)

Beim Skalieren mittels --scale entscheidet der Algorithmus automatisch, welches Verfahren zum Einsatz kommt. Stellen Sie die dadurch gelieferten Ergebnisse nicht zufrieden, können Sie das Verfahren selbst festlegen. Dann heißen die Optionen entsprechend --bicubic-scale, --bilinear-scale, --box-scale, --ddt-scale oder --nearest-scale. Für das Erzeugen von Thumbnails gibt es mit --thumbnail einen besonders schnellen Filter.

Das Beispiel in Listing 1 verdeutlicht noch einmal die Verwendung von Econvert. Es erzeugt aus einer Eingabedatei drei unterschiedlich helle Ausgabedateien.

$ econvert -i 'tst.jpg' --brightness .5 -o tst1.jpg --brightness 1.5 -o tst2.jpg --brightness 5.5 -o tst3.jpg

Wer bist Du denn?

Das zweite wichtige Programm aus der ExactImage Suite ist Edentify, das dazu dient, das Format von Bildern zu identifizieren. Das Beispiel aus Listing 2 ist bewusst schwer gewählt: Beim Identifizieren von Rohdatenformaten handelt es sich um eine ohnehin schon anspruchsvolle Aufgabe, die sich bei dem durch Konvertierung erzeugten DNG nochmals erhöht. Wie im Vergleich dazu ImageMagick dieses Aufgabe mittels Identify bewältigt, zeigt Listing 3.

$ edentify _1140131.dng
TIFFReadDirectory: Warning, Unknown field with tag 34858 (0x882a) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 50936 (0xc6f8) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 50941 (0xc6fd) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 50972 (0xc71c) encountered.
_1140131.dng: TIFF 256x192 24 bits, 3 channels
$ edentify _7098855.ORF
Not a TIFF file, bad version number 20306 (0x4f52).
_7098855.ORF: DCRAW 3720x2800 48 bits, 3 channels

$ identify _1140131.dng
_1140131.dng=>magick-28490XIzHW1VpYbaB.png DNG 4608x3464 4608x3464+0+0 16-bit sRGB 80.88MB 0.000u 0:00.000
$ identify _7098855.ORF
_7098855.ORF=>magick-28748rXhecIGQEDLK.png ORF 3729x2807 3729x2807+0+0 16-bit sRGB 43.04MB 0.000u 0:00.000

Während Edentify halbwegs korrekte Angaben liefert und sich gar nicht erst an den Dateigrößen versucht, aber gleichzeitig auch reichliche Fehlermeldungen ausgibt, geht ImageMagicks Identify hier anders vor: Zunächst konvertiert es die Rohdaten in ein Bitmap-Format, das es dann anschließend analysiert.

Ob diese Variante tatsächlich Sinn ergibt, darf man getrost bezweifeln. So zeigt sich, dass die von Identify angegebenen Dateigrößen völlig danebenliegen, da sie sich auf die durch die Konvertierung erzeugten Bitmap-Dateien beziehen anstatt auf die Originale. Die Bewertung von DNG als TIFF kann man als halbwegs korrekt gelten lassen, da DNG als Erweiterung des TIFF-Standards konzipiert wurde.

Interessant ist die Möglichkeit, mittels Edentify gezielt bestimmte Informationen über Bilder anzuzeigen. Dies gelingt durch die Angabe eines “Formatstrings” als Argument der Option -f. So zeigt -f "%f" den Dateinamen, -f "%w" die Breite und so weiter. Die Tabelle “Formatstrings” fasst die wichtigsten Varianten zusammen. Um mehrere Zeichenketten zu verbinden, können Sie \t (“Tabulator”), \n (“Newline”) oder \r (“Carriage Return”) verwenden.

Insgesamt bietet Edentify allerdings nur begrenzte Möglichkeiten, sodass Sie hier bei Bedarf doch wieder auf ImageMagicks Identify zurückgreifen müssen.

Formatstrings

Kürzel Bedeutung
%d Directory
%f voller Dateiname
%t Dateiname ohne Erweiterung
%i Pfad
%w Breite
%h Höhe
%q Farbtiefe pro Kanal
%x X-Auflösung
%y Y-Auflösung
%z Bildtiefe

Hilfsprogramme

Die anderen Programme aus der ExactImage-Suite sind speziellerer Natur. So wertet Bardecode gescannte Barcodes automatisch aus, was auch bei relativ schlechten Bildern noch gelingt. E2mtiff fasst mehrere Bilder zu einer mehrseitigen TIFF-Datei zusammen:

$ e2mtiff x1.jpg x2.png ... -o out.tiff

Mehrseitige TIFFs sind unter Linux weder besonders verbreitet noch sonderlich beliebt. Allerdings kann Gimp sie durchaus öffnen und auch bearbeiten. Abbildung 1 zeigt, wie sich ein mehrseitiges TIFF in Gimp beim Laden bemerkbar macht. Sie können nun die als Ebenen vorliegenden Seiten einzeln bearbeiten (Abbildung 2) oder – durch das Ziehen mit der Maus auf den Werkzeugkasten – in neue Bilder umwandeln.

Abb. 1: Gimp fragt beim Öffnen von mehrseitigen TIFFs, welche Seiten er als Ebenen öffnen soll.

Abb. 1: Gimp fragt beim Öffnen von mehrseitigen TIFFs, welche Seiten er als Ebenen öffnen soll.

Abb. 2: Anschließend finden Sie die Seiten als normale Ebenen im Ebenendock.

Abb. 2: Anschließend finden Sie die Seiten als normale Ebenen im Ebenendock.

Optimize2bw bereitet gescannte Seiten so auf, dass sie sich optimal für das anschließende Bearbeiten mittels OCR eignen. Dabei erkennt Empty-page leere Seiten, sodass diese sich vorab aussortieren lassen.

Bei Hocr2pdf schließlich handelt es sich um das vermutlich am meisten verwendete Tool aus der ExactImage-Programmsuite.

Durchsuchbare PDFs

Mit Hocr2pdf erzeugen Sie bei Bedarf durchsuchbare PDFs aus gescannten Vorlagen. Diese PDFs bestehen im Prinzip aus zwei Ebenen: Eine nimmt die gescannte Grafik auf, eine zweite – oft unsichtbar darunterliegende – den aus der OCR-Bearbeitung resultierenden Text. In dieser zweiten Ebene erfolgt die Suche, sie sollte daher möglichst gut mit der grafischen Ebene übereinstimmen.

Eine ganze Reihe von Programmen nutzen Hocr2pdf, um solche “Sandwich”-PDFs zu erzeugen. Dazu zählen beispielsweise Pdfocr, das weitestgehend automatisch arbeitende Pdfsandwich [4], Xsane2sandwich [5] sowie Djvu2pdf [6], das aus Djvu-Daten eine hOCR-Datei extrahiert und ein durchsuchbares PDF erzeugt. Wie gut das klappt, zeigt Abbildung 3, in der die blauen Kästchen die erkannten Worte markieren.

Abb. 3: Ein mittels Hocr2pdf erzeugtes Sandwich-PDF.

Abb. 3: Ein mittels Hocr2pdf erzeugtes Sandwich-PDF.

Die Anwendung von Hocr2pdf gestaltet sich relativ einfach, wobei es die hOCR-Daten über den Standardeingabekanal erwartet (Listing 4, erste Zeile). Die hOCR-Dateien erzeugen Sie wahlweise mit Cuneiform oder auch mit Tesseract und bearbeiten sie gegebenenfalls mit den hOCR-Tools [7] nach. Falls die Ausrichtung des Texts nicht zum gescannten Bild passt, kann Hocr2pdf dies mit der Option -s (--sloppy-text) anpassen (Listing 4, zweite Zeile).

$ hocr2pdf -i scan.tiff -o out.pdf < Text.hocr
$ hocr2pdf -i scan.tiff -s -o out.pdf < Text.hocr

Hocr2pdf kennt ansonsten nur noch wenige weitere Optionen, alles andere erfolgt automatisch. Der Schalter -i definiert die grafische Eingabedatei, -o die fertige Ausgabedatei. Durch -n lässt sich das Einbinden der grafischen Ebene verhindern, mit -r die Auflösung dafür einstellen. Als Vorgabe nutzt Hocr2pdf hier 300 dpi.

Fazit

Für komplexere Umwandlungen – also beispielsweise, um ein PDF in Einzelbilder aufzusplitten oder für den Vergleich zwischen zwei Bildern – müssen Sie immer noch auf ImageMagick oder GraphicsMagick zurückgreifen: Hier hilft ExactImage nicht weiter. Das gilt auch bei der Identifikation spezieller Bildformate, wo Edentify zwar Ergebnisse liefert, diese sich aber qualitativ nicht mit denen von Identify messen können.

Geht es aber um das oft benötigte Umwandeln und Bearbeiten gängiger Formate, bietet ExactImage in vielen Fällen eine schnell, einfach zu bedienende Alternative zu den komplizierteren Tools. Als wahres Kleinod erweist sich Hocr2pdf, das viele andere Werkzeuge implizit nutzen. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 05/2015 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben