Kein Widerspruch: Kommandozeile und Bilder

Bei grafischen Bildbearbeitungsprogrammen wendet man eine Bearbeitungsfunktionen in der Regel abhängig davon an, was man sieht. Das funktioniert gut mit wenigen Bildern; sollen jedoch hunderte von Dateien gleichermaßen bearbeitet werden, lässt sich das besser von der Kommandozeile aus bewerkstelligen. Noch erstaunlicher: Einige Aufgaben aus der visuellen Welt meistern zur Zeit überhaupt nur Kommandozeilenprogramme.

Zu den klassischen Einsatzzwecken für solche Filter-Tools zählt das Drehen von Fotos, die mit senkrecht gehaltener Kamera im Hochformat gemacht wurden. Selbst wenn die Kamera einen Orientierungssensor hat, speichert sie eine Bilddatei im Querformat mit dem auf der Seite liegenden Motiv. Bevor Sie Ihre Foto-Sammlung präsentieren, sollten Sie diese Aufnahmen auf jeden Fall drehen, auf dass sie in korrekter Orientierung erscheinen.

Für diese Aufgabe empfehlen sich jhead [4] und das Tool jpegtran aus dem Paket der JPEG-Library libjpeg [5]. jhead erhält die EXIF-Header; jpegtran dreht ohne Neukompression und damit ohne Qualitätsverlust.

Verfügt Ihre Kamera über einen Orientierungssensor (und haben Sie diesen beim Fotografieren aktiviert, siehe Abbildung 5) bringt folgender Befehl alle Fotos in die richtige Orientierung – vorausgesetzt, jhead liegt mindestens in Version 2.0 vor:

jhead -autorot *.jpg

jhead liest dabei die von der Kamera in die EXIF-Header der Fotos geschriebene Orientierungsinformation ein und dreht die Bilder entsprechend mit Hilfe von jpegtran. Leider kommt das Tool nicht mit allen Kamerahaltungen klar, es versagt etwa dann, wenn die Kamera auf dem Kopf steht (Auslöser nach unten) oder das Objektiv senkrecht nach oben oder nach unten zeigt.

Manuelles Drehen beherrschen auch ältere jhead-Versionen. Zwar erfüllt

jpegtran -rot 270 originalbild.jpg > gedrehtesbild.jpg

diese Aufgabe bereits, doch überträgt jpegtran den EXIF-Header aus originalbild.jpg nicht in die Zieldatei gedrehtesbild.jpg, zudem müssen Ausgangs- und Zieldatei verschiedene Namen tragen. Beide Probleme löst der Befehl

jhead -cmd "jpegtran -rot 270 &i > &o" bild.jpg

Mit der -cmd-Option kann jhead jedes beliebige JPEG-Bildmanipulationskommando aufrufen; jhead sichert dann die EXIF-Daten von bild.jpg, führt die gegebene Kommandozeile aus (wobei es für &i den Namen der Ausgangsdatei und für &o den Namen einer temporären Datei einsetzt), fügt die EXIF-Daten in letztere ein und ersetzt die Ausgangsdatei durch die temporäre Datei. So lässt sich jeder Bildbearbeitungsbefehl unter Erhalt des EXIF-Headers durchführen, insbesondere auch Manipulationen mit convert [8] aus dem ImageMagick-Paket [6].

jhead -cmd "..." spielt speziell dann seine Stärken aus, wenn das aufgerufene Kommando selbst nur ein explizit genanntes Bild verarbeiten kann, aber viele Grafikdateien in einem Rutsch manipuliert werden sollen. So dreht

jhead -cmd "jpegtran -rot 270 &i > &o" *.jpg

alle JPEG-Bilder im Arbeitsverzeichnis eins nach dem anderen; den Drehwinkel beschränkt jpegtran allerdings auf 90-Grad-Schritte:

  • -rot 90 dreht um 90 Grad nach rechts,
  • -rot 270 um 90 Grad nach links,
  • -rot 180 um 180 Grad.

Ein weiteres Manko sei nicht verschwiegen: Da jhead die EXIF-Daten an der Manipulation vorbeischleust, bleibt der darin enthaltene Thumbnail gekippt; seine horizontale Auflösung übersteigt weiterhin die vertikale.

Um Tipparbeit zu sparen, lohnt es sich, zwei kleine Shell-Skripte anzulegen. Eines namens rotateleft füllen Sie mit folgendem Inhalt:

#!/bin/sh
jhead -cmd "jpegtran -rot 270 &i > &o" $*

In eine zweite neue Datei namens rotateright schreiben Sie

#!/bin/sh
jhead -cmd "jpegtran -rot 90 &i > &o" $*

Machen Sie beide Dateien mit

chmod 755 rotateleft rotateright

ausführbar, und schieben Sie sie nach /usr/local/bin. Sofern dieses Verzeichnis im Suchpfad liegt, drehen Sie Ihre Bilder ab jetzt einfach mit rotateleft bild1.jpg nach links bzw. mit rotateright bild2.jpg nach rechts.

Weg mit den toten Pixeln!

Massenbildverarbeitung via Kommandozeile lohnt sich auch beim Entfernen toter Pixel: Solange man die Kamera nicht wechselt, sorgen die Defekte im Bildsensor für Fehlstellen, die sich auf allen Bildern an der gleichen Stelle befinden (Abbildung 6).

Abbildung 6: Ein toter Pixel (der hellgrüne Punkt in der Mitte) im vergrößerten Ausschnitt eines Bildes. Dass er verwischt aussieht, liegt an der JPEG-Kompression

Die Retusche-Aufgabe selbst übernimmt jpegpixi [7]; für die Automatisierung des Korrekturprozesses in einer Bilderserie zeichnet wieder einmal jhead verantwortlich. Zum Bestimmen der Positionen der toten Pixel benötigen Sie ein Programm, das Bilder nicht nur anzeigt, sondern auch die Koordinaten des Pixels angibt, über dem sich der Mauszeiger befindet. Sowohl GIMP als auch display aus dem ImageMagick-Paket eignen sich dazu; mit GIMP geht es am einfachsten.

jpegpixi macht nichts anderes, als die auf der Kommandozeile angegebenen Bildbereiche durch eine Interpolation der Umgebung zu ersetzen – das funktioniert natürlich auch bei anderen Störelementen, nicht nur bei toten Pixeln. Dabei komprimiert das Tool nur die Bild-Datenblöcke neu, in denen es etwas wegretuschiert. Da es die übrigen Blöcke nicht antastet, bleibt die Bildqualität weitestgehend erhalten.

Als Erstes müssen Sie die defekten Pixel des Bildsensors Ihrer Kamera finden. Hierzu nehmen Sie ein absolut schwarzes Foto auf, das Sie anschließend am Bildschirm untersuchen. Halten Sie dafür etwas Schwarzes direkt vor das Objektiv (bei einigen Kamera-Typen, z. B. Spiegelreflexkameras, lassen Sie einfach die Schutzkappe auf der Linse). Unterbelichten Sie extrem, indem Sie die Blende möglichst weit schließen und eine möglichst kurze Belichtungszeit wählen. Bei Kameras ohne manuelle Steuerungsmöglichkeit stellen Sie zumindest die Belichtungskorrektur auf den dunkelstmöglichen Wert. Auf jeden Fall schalten Sie den Blitz aus, damit kein Licht durch den Spalt zwischen Objektiv und schwarzem Gegenstand eindringt. Da sowieso nur homogenes Schwarz abgebildet werden soll, braucht die Kamera nicht fokussieren zu können. Stellen Sie als Auflösung diejenige ein, mit der Sie die zu retuschierenden Fotos gemacht haben!

Laden Sie das Schwarzbild in GIMP, und zoomen Sie es soweit auf, dass ein Bildpixel auf einem Pixel des Monitors dargestellt wird (im Kontextmenü des Bilds Ansicht / Zoom / 1:1). Alternativ zoomen Sie mit den Tasten [=] und [-].

Suchen Sie nach hellen Pixeln auf der schwarzen Fläche! Wenn Sie keine finden, darf sich Ihre Kamera eines optimalen Bildsensors rühmen, und Sie brauchen nichts retuschieren. Finden Sie jedoch tote Pixel, zoomen Sie die entsprechenden Bereiche stärker, z. B. ins Verhältnis 4:1, und fahren den Mauszeiger an die linke obere Ecke eines imaginären Quadrats, das den Defekt vollständig bedeckt. Lesen Sie die Koordinaten unten links im GIMP-Bildfenster ab. Gehen Sie mit der Maus zur unteren rechten Ecke des Quadrats, und notieren Sie auch deren Koordinaten. Sollte GIMP anstatt von Pixelkoordinaten (ganze Zahlen, keine Einheit) Maße in Zentimetern oder Zoll anzeigen, schalten Sie im Kontextmenü mit Ansicht / Punkt für Punkt in den "Punkt-für-Punkt"-Modus um.

Unter Angabe des oberen linken Eckpunkts und der Kantenlänge des Quadrats entfernen Sie ein totes Pixel aus einem Bild originalbild.jpg wie folgt:

jpegpixi originalbild.jpg korrigiertesbild.jpg 350,1609,8 1585,865,8

Die Testbildauswertung dieser Kamera ergab zwei Defekte, einen mit den Koordinaten (350,1609) für die obere linke und (358,1617) für die untere rechte Ecke sowie einen zweiten, den das durch (1585,865) und (1593,873) definierte Quadrat beschreibt. Beide Quadrate haben eine Kantenlänge von acht Pixeln. Die korrigierte Bildversion landet in korrigiertesbild.jpg. Unterziehen Sie zunächst das schwarze Testbild dieser Behandlung; es sollte dabei vollkommen schwarz werden.

Eine gesamte Bilderserie korrigieren Sie mit folgendem Skript removedeadpixels automatisch:

#!/bin/sh
jhead -cmd "jpegpixi &i &o 350,1609,8 1585,865,8" $*

Nach /usr/local/bin verschoben und ausführbar gemacht, retuschieren Sie alle Bilder in einem Verzeichnis mit dem Kommando

removedeadpixels *.jpg

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • JPEG-Bilder automatisch umbenennen und verlustlos bearbeiten
    Digitalkameras vergeben weder sinnvolle Dateinamen, noch drehen sie Bilder automatisch. Eine Handvoll Linux-Programme schafft Abhilfe: Sie geben Fotodateien sinnvolle Namen und manipulieren JPEGs verlustlos. So schaffen Sie Ordnung in der Fotosammlung und schonen beim Betrachten Ihr Genick.
  • Drucken digitaler Fotos
    Moderne Desktop-Tintendrucker taugen durchaus zum Ausdrucken digitaler Fotos – wenn man den einen oder anderen Punkt beachtet.
  • Zusatzinformationen zu Digitalfotos
    Der perfekte Schnappschuss gelang im letzten Urlaub. Doch wie waren die Kameraeinstellungen? Die EXIF-Informationen eines Digitalfotos geben Auskunft darüber, unter welchen Umständen ein Bild zustande kam und vieles mehr.
  • Anschlusskunde
    Digitale Fotokameras sind für Linux heute kein Problem mehr. Aktuelle USB-Modelle sind dank des USB-Mass-Storage-Treibers nichts anderes als Wechselspeicher-Medien. Nur ältere Geräte brauchen manchmal spezielle Treiber für proprietäre Übertragungsprotokolle. Dank Zusatz-Tools wie gPhoto2 können Sie aber auch den Großteil dieser Modelle unter Linux nutzen.
  • Würdiger Rahmen
    Mit den Programmen aus dem Imagemagick-Paket zaubern Sie im Handumdrehen schicke HTML-Galerien, die sich nicht nur ins Web stellen, sondern auch auf CD/DVD brennen lassen.
Kommentare
Kompliziert
werner suter (unangemeldet), Donnerstag, 29. August 2013 15:36:02
Ein/Ausklappen

Hier wird auf Panik gemacht..
Ich bearbeite meine Fotos immer mit Gimp!
Für mich ist es wichtig, dass das Aufnahmedatum stimmt, und dieses ist noch immer nach der bearbeitung und speichern im jpg-Format vorhanden. Also ich weiss nicht wie gut das hier recherchiert wurde. Ich bin skeptisch und verlasse mich lieber auf mein Opensource-Programm anstatt teure Programme mit komplizierter installation.



Bewertung: 132 Punkte bei 15 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: Kompliziert
werner suter (unangemeldet), Donnerstag, 29. August 2013 15:39:48
Ein/Ausklappen

Ach ja, Blendenzahl, ISO ect sind übrigens ebenfalls immer noch nach der bearbeitung vorhanden..


Bewertung: 122 Punkte bei 13 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.