krpano Panorama Batch Maker

Warum ein Batch-Manager?

Im September 2014 habe ich einen einmonatigen Westküsten-Roadtrip mit dem Auto von Vancouver (British Columbia, Kanada) nach Los Angeles (Kalifornien, USA) gemacht. Auf der Reise sind ca. 200 HDR Panoramen (zwischen 0.2 -1 Gigapixel) entstanden – quer durchmischt von planar, über zylindrisch bis sphärisch. Bereits damals schaute ich respektvoll auf der Panoramafinalisierung in krpano. Bei dieser Menge und Größe der Verarbeitung sowie der manuell durchzuführenden Schritte würde das sehr lange dauern!

Mit sRGB FarbprofilKein Farbmanagement

Außerdem gibt es unabhängig noch das Problem, das krpano aktuell keine sRGB-Farbprofile in den Tiles speichert. Firefox und Safari stellen auch auf einem kalibrierten Wide-Gammut-Monitor die Farben korrekt dar. Chrome, Internet Explorer, Edge und Opera machen auf Wide-Gammut-Bildschirmen aber Probleme und zeigen übersättigte Farben. Auf einem sRGB Monitor fällt dies nicht auf. Sobald man aber vor einem Monitor sitzt, der nahe den Adobe-RGB Farbraum abdeckt, wirken die Panoramen sehr übersättigt und unnatürlich. Im obigen Bild zeigt Before das Bild ohne eingebettetes Farbprofil und After das gleiche Bild mit sRGB Profil. Das Beispiel ist hier nicht optimal gewählt, jedoch seht ihr in den Gräsern eine deutlich rötere Färbung sowie auch im Himmel eine stärkere Sättigung. Ein besseres Beispiel gibt es hier:

Ohne FarbprofilMit Farbprofil

Die Technik hinter dem Batch-Manager

Um beide Fliegen mit einer Klappe zu schlagen, habe ich daher eine Batch-Tool-Sammlung erstellt (Mischung aus Bash & C++), welches mir ermöglicht, mit einer Konfigurationsdatei sämtliche Panoramen in einem Schwung mit krpano erstellen zu lassen sowie im Anschluss alle Tiles mit einem sRGB-Profil zu versehen (Wer diesen Schritt nicht benötigt, kann dies natürlich im Batchscript auskommentieren). Der C++ Teil wird nur die Farbprofileinbettung benötigt. Hier war mir die Umsetzung über die Bash mit dem Stringhandling einfach zu umständlich.

Im Moment funktioniert die Batch-Verarbeitung nur mit krpano, da ich nur mit diesem Tool Erfahrung habe. Trotz Einsatz von PTGui (Pro) verwende ich nicht den internen Export direkt für das Web. Falls jemand also ein ähnliches Problem hat, aber ein anderes Tool zur Weberstellung verwendet, kann die vorliegende Verarbeitung als Template für eigene Anpassungen verwenden.

Sämtlichen Source-Code stelle ich unten im Artikel samt der Beispieldatei, die als Titel für diesen Beitrag gilt, zur Verfügung. Entwickelt habe ich alles unter OS X Yosemite / El Capitan. Leider stellt auch mit El Capitan eine veraltete Bashversion bereit, die nicht alle Funktionen der aktuellen Version unterstützt:

OS_X_Bash_Version

Aus diesem Grund nutze ich Homebrew als Paketmanager unter OS X, welcher aktuelle Versionen gängiger Unix/Linux Kommandozeilentools bereitstellt. Die installierten Versionen stehen dann in keinem Konflikt zu den Systempendants, da diese in anderem Userspace installiert werden. Später rufe ich dann explizit im Bash-Script diese Bashversion auf:

Brew_Bash_Version

Im nachstehenden Tutorial versuche ich die einzelnen Schritte zu beschreiben, die notwendig sind, um ein fertiges Panorama, das beispielsweise mit PTGui (Pro) gestitched wurde, für das Web aufzubereiten. Das Tool spielt natürlich seine Stärke nur dann aus, wenn man eine große Menge an Panoramen bearbeiten und veröffentlichen will.

Wie verwende ich den Panorama Batch Maker?

Der Panorama Batch Maker setzt sowohl Bash als auch C++ (nur für das Einbetten des Farbprofils) ein. Da nicht alles auf allen Plattformen sofort lauffähig ist, helfen die nächsten beiden Tabellen jeweils für Bash und C++ weiter, was man noch eventuell vorher bei sich anpassen muss.

Bashscript:
BetriebssystemLauffähigHinweise
OS Xab Bash v4 (entwickelt und getestet)Mitgelieferte Bashversion bei OS X ist zu alt (v3.x). Eine aktuelle Portierung kann zum Beispiel mit Homebrew nachinstalliert werden.
Linux (Debian, Ubuntu, Fedora)ab Bash v4 (nicht getestet)Version 4 wird standardmäßig in jeder aktuellen Distribution mitgeliefert.
WindowsMit Zusatztools möglich (nicht getestet)Bash ist nicht kompatibel zur Windows Command Shell oder PowerShell. Es gibt jedoch Portierungen der Standard Linux/Unix Kommandozeilentools. Eine elegante Lösung bietet Cygwin.
C++:
BetriebssystemEntwicklungsumgebung / CompilerHinweise
OS Xab Xcode 4.4Keine Verwendung von OS X spezifischen Funktionalitäten, Xcode Projekt liegt dem ZIP Archiv bei und kann direkt über Xcode kompiliert werden.
Linux (Debian, Ubuntu, Fedora)ab g++ 4 (nicht getestet)Aktuelle Hauptversion (v5) wird mit jeder aktuelllen Distribution ausgeliefert.
WindowsVisual Studio / C++ (nicht getestet)Neues Visual C++ Commandline Projekt anlegen und C++/Headerdateien als Sources einbinden. Pfade müssen vorher auf die Windowswelt konvertiert werden (Slashes durch Backslashes ersetzen sowie einen Laufwerksbuchstaben setzen)

Noch ein Hinweis zum C++ Programm: obwohl es Funktionalitäten aus C++ verwendet (u.a. Streaming- und Vektorklassen), ist der eigentliche Code funktional gestaltet, da es ursprünglich nur eine Quick&Dirty Lösung für mich werden sollte. Ich überlege im Moment, ob ich eine objektorientierte Variante umsetzen werde.

  1. Zuerst müsst ihr das Tool herunterladen. Das könnt ihr hier machen
  2. Entpackt das ZIP Archiv. Danach müsstet ihr folgenden Inhalt im extrahierten Verzeichnis sehen01_Input

Vielen Dank für das Lesen meines ersten Tutorials! Wenn ihr sehen wollt, welche Menge ich mit dem Tool in einem Schritt bearbeitet habe, besucht doch einfach meine Panoramaseite auf ZIIN!

Viel Spaß! Wenn ihr Fragen habt, nutzt bitte die Kommentarfunktion oder schreibt mir eine E-Mail!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

ZIIN - Sven Flock

Grüner Weg 25, 40229 Düsseldorf

+49 (0) 179 97 98 597

look@ziin.de

kontakt | impressum | datenschutz

Fochzeitsfotograf Düsseldorf