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: 125 Punkte bei 13 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: 113 Punkte bei 11 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

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

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...