021717_1339_FotoFridayX5.png

Foto Friday – Xiaomi Yi HD RAW komfortabel in DNG konvertieren

In meinem letzten Foto Friday habe ich ja schon über die Möglichkeit geschrieben mit der Xiaomi YI Fotos im RAW Format aufzunehmen. Im dort referenzierten Beitrag im Dashcam Forum gibt es auch gesammelte Tools zum Postprocessing:

https://dashcamtalk.com/forum/threads/the-definitive-xiaomi-yi-raw-guide.13079/

Das Vorgehen, das dort beschrieben wird ist jedoch mit einigem manuellen Aufwand verbunden. Wer Photoshop und/oder Lightroom nutzt, der bekommt dort auch ein Lens Profile. Da ich das nicht nutze ist das für mich nicht interessant, könnte aber ganz praktisch sein.

Auf der Seite http://www.tawbaware.com/xiaomiyi.htm gibt es ebenfalls noch ein paar gute Tipps über das Hacking der Yi und auch ein Skript um die RAWs umzuwandeln (leider nur die unkomprimierten, die per Skript, Einzelfoto oder Timer, nicht aber Burstmodus oder der Standard Timelapse-Modus, erstellt werden). Das finde ich das beste und einfachste Tool. Die Einrichtung ist aber nicht ganz intuitiv weil man sich die Programme noch zusammensammeln muss und entsprechend einrichten, sodass es einfach zu bedienen ist (ist dort im Grunde fast alles beschrieben, allerdings nicht als zusammenhängende Anleitung und an verschiedenen Stellen):

  1. Unten auf der Seite http://www.tawbaware.com/xiaomiyi.htm gibt es ein ZIP-File herunterzuladen:
  2. Den Inhalt entpackt man sich bestenfalls in einen Ordner auf C:\. Im Skript ist der Ordner C:\utilities vorgesehen, ich habe meinen Tools genannt. In den gleichen Ordner habe ich die beiden Programme raw2dng und exiftool gepackt. Die muss man sich nochmal separat besorgen.
  3. Raw2dng bekommt man auf der Seite http://e2500.narod.ru/raw2dng_e.htm (Download als .7z-File, man benötigt also 7-zip oder ein kompatibles Entpackprogramm). Hierin sind mehrere Dateien enthalten:
    Gebraucht wird aber nur die Datei raw2dng.exe, welches die Kommandozeilenversion ist. Der Download aus dem Dashcam-Forum nutzt z.B. die raw2dng_en.exe, welches die Version mit einer grafischen Oberfläche ist.
  4. Exiftool bekommt man auf der Seite http://www.sno.phy.queensu.ca/~phil/exiftool/. Hier lädt man sich die Windows-Executable herunter:
    Die Datei dann in den gleichen Ordner wie die anderen Dateien entpacken und wie auf der Seite beschrieben in exiftool.exe umbenennen.
  5. Im Skript selbst muss man nun die Pfade zu den Programmen eintragen. Dazu die xiaomi_dng.bat mit dem Texteditor der Wahl öffnen und in den Zeilen 33 und 34 den Pfad anpassen. Bei mir wäre das:
    Und wo wir dort gerade sind: Standardmäßig ist die Ausgabe des Skripts sehr umfangreich. Deswegen am besten in der ersten Zeile das „rem“ entfernen, also die Zeile
    @rem echo off
    ändern in
    @ echo off
  6. Nun wäre das Tool schon einsatzbereit indem man die RAW-Dateien einfach auf die BAT-Datei zieht. Aber man kann sich das Leben noch etwas komfortabler machen indem man einen neuen „Senden an…“ Eintrag im Windows Explorer Kontextmenü hinzufügt. Dazu öffnet man einen Windows Explorer und fügt in die Adresszeile
    shell:sendto
    ein. Das ist ein Shortcut für den Ordner C:\Users\<username>\AppData\Roaming\Microsoft\Windows\SendTo
    Dort fügt man jetzt einfach eine Verknüpfung zur xiaomi_dng.bat ein (z.B. „Rechtsklick – Verknüpfung erstellen“ oder Drag & Drop unter festhalten der Alt-Taste). Den Namen der Verknüpfung kann man frei wählen, ich habe mich z.B. für „Xiaomi RAW 2 DNG Converter“ entschieden.
  7. Jetzt kann man ganz einfach seine RAWs im Windwos Explorer markieren und im Kontextmenü an den Converter senden:
  8. Es öffnet sich ein Command Fenster und die Dateien werden verarbeitet. Am Ende wird dann die Meldung „Conversion Complete“ ausgegeben und mit einer beliebigen Taste kann das Fenster geschlossen werden:

Komprimierte RAWs

Das Prozedere funktioniert wie schon gesagt leider nur für die unkomprimierten RAWs (um die 31 MB), nicht für die 13 MB großen komprimierten.

Dashcam User AndreaPaco hat ein wenig Zeit investiert um auch die komprimierten, 13 MB großen Files nutzbar zu machen. Mit den folgenden Einstellungen für raw2dng kann man zumindest das Bild erahnen, es ist aber weit entfernt von nutzbar:

13492224, 0, 4608, 3456, 7, 3904, 16, 4, XIAOMI-YI-COMP

Siehe: https://dashcamtalk.com/forum/threads/the-definitive-xiaomi-yi-raw-guide.13079/page-4#post-250926

Das Ergebnis sieht wie folgt aus:

Auf der linken Seite ist das Bild grob zu erkennen. Mehr aber auch nicht. Leider ist dort seit Mai 2016 nichts mehr passiert, sodass ich hier keine Hoffnung mehr habe (vor allem auch, da ja der Nachfolger mit der Yi 4K schon lange raus ist und dessen Nachfolger auch in den Startlöchern steht).

Rotstich

Sollte das RAW sehr rotstichig sein, so hat die Umwandlung mit dem Exiftool nicht funktioniert:

Sollte eher so aussehen (nach erfolgreicher Umwandlung):

021717_1338_FotoFridayX3.png

Foto Friday – Xiaomi Yi RAW Photography

Im Dashcam Forum wird (bzw. wurde) viel über die Yi diskutiert, u.a. auch über die Aufnahme von Fotos im RAW Format:

https://dashcamtalk.com/forum/threads/the-definitive-xiaomi-yi-raw-guide.13079/

Es gibt aber einige Dinge zu beachten, die ich einmal zusammentragen möchte. Vor allem als Referenz für mich selbst 😉

Zuerst einmal: was habe ich eigentlich davon? Na, eigentlich alle Vorteile, die das Fotografieren in RAW so mit sich bringt. Wenn du dich damit nicht auskennst, lass es lieber gleich :-)

Leider unterstützt mein Bildbearbeitungsprogramm (DxO Optics Pro) das RAW-Format der Yi nicht, daher hier nur in DaVinci Resolve:

Das ist das Bild als JPG out-of-camera.

So sieht es standardmäßig als RAW aus.

Die Histogramme sehen dazu so aus (links das JPG, rechts das RAW):

Nach Bearbeitung kann das RAW z.B. so aussehen:

Da ist noch mehr Spielraum, als mit dem JPG.

Aktivierung RAW Modus

Generell ist die Aktivierung des RAW Modus relativ einfach. Man erstellt im Root-Verzeichnis seiner Speicherkarte eine Datei namens autoexec.ash. Darein muss eigentlich nur eine Zeile Code:
t app test debug_dump 14
Wichtig ist aber, dass nach dieser Zeile noch ein einfacher Linefeed (LF, nicht CRLF!) folgt (hier mal die Darstellung in Notepad++):

Am besten also eine fertige ASH herunterladen und modifizieren, oder den Xiaomi Yi Configurator (XYC, von http://www.tawbaware.com/xiaomiyi.htm bzw. https://github.com/alex-agency/XYC) benutzen.

Legt man die Speicherkarte nun in die Kamera ein und macht ein Foto, so wird automatisch eine RAW-Datei zusätzlich zum JPG erzeugt.

Zum Deaktivieren einfach die Datei wieder löschen oder auskommentieren (eine Raute/Hashtag am Zeilenanfang setzen).

Welche Bildmodi möglich und welche nicht möglich ist

Man sollte beachten, dass man der Kamera nach einem Bild genügend Zeit gibt um die Daten auf die Karte zu schreiben. Das dauert meist ein paar Sekunden. Vor allem also nach dem letzten Bild etwas warten bis man die Kamera ausschaltet.

Was die Nutzung der verschiedenen Fotomodi angeht, so habe ich das mal getestet, da nicht alle Modi ein brauchbares RAW erzeugen:

  • Einzelfoto: funktioniert sowohl per Kamera als auch aus der Android App per WLAN
  • Timer: funktioniert sowohl per Kamera als auch aus der Android App per WLAN
  • Burst: braucht mehr Zeit als man ausgewählt hat (sehr schön in der App nachzuverfolgen), produziert aber keine brauchbaren RAW-Dateien (sowohl aus der App als auch bei der Auslösung an der Kamera)
  • Timelapse: bei kurzen Intervallen braucht mehr Zeit als man ausgewählt hat, produziert aber keine brauchbaren RAW-Dateien (sowohl aus der App als auch bei der Auslösung an der Kamera); hierfür gibt es aber einen Workaround, s.u.

Woran erkenne ich brauchbare RAW-Dateien?

Der Einzelfotomodus und der Timermodus produzieren RAW-Dateien, die 31.104 KB groß sind, die anderen beiden Modi produzieren 13.176 KB große Dateien (also rund 31 MB gegen 13 MB). Die 13 MB großen Dateien sind leider bisher nicht so umwandelbar, dass sie weiterverarbeitet werden können. Die sind wohl komprimiert und die Community hat bisher noch nicht herausgefunden mit welchem Verfahren, bzw. wie diese brauchbar gemacht werden können.

Zur Konvertierung der RAW Dateien gibt es nächste Woche einen eigenen Post.

Timelapse in RAW – Workaround

Jetzt erstmal zum Workaround um doch noch RAWs in einem Timelapse zu bekommen. Dazu muss man sich wieder des Skripting bedienen und die autoexec.ash etwas erweitern.

Der beste Anlaufpunkt für Skripte rund um die Yi ist wohl http://nutseynuts.blogspot.de/2015/06/xiaomi-yi-action-cam-custom-scripts.html.

Dort gibt es nicht nur Skripte für HDR-Belichtungen und Timelapse, sondern auch diverse Skripte um die Videoqualität zu verbessern.

Eines davon ist aber RAW LAPSE. Dieses erstellt standardmäßig Belichtungen von 8s im Abstand von weiteren 8s. Einfach herunterladen und die autoexec.ash auf die Kamera kopieren. Wichtig ist noch zu erwähnen, dass die Kamera im Foto-Modus starten muss und nicht im Videomodus (kann in der App über Geräteeinstellungen konfiguriert werden)! Das Skript ist hauptsächlich für Nachtfotos geeignet aufgrund der langen Belichtung. Man kann aber die Belichtung und das Intervall anpassen. Dazu sind zwei Zeilen im Skript relevant:

In Zeile 12 wird die Belichtungszeit eingestellt, in Zeile 21 die Wartezeit (das Intervall in dem aufgenommen werden soll plus die Belichtungszeit).

Die Belichtungszeit ist die 1 am Ende der Zeile und steht für 8s (bzw. 7.9). Folgende Übersicht gibt alle gültigen Werte für die Belichtungszeit aus:

Belichtungszeiten Yi (links Wert, rechts Zeit in Sekunden)
Belichtungszeiten (links Wert, rechts Belichtungszeit in Sekunden)

Die Wartezeit wird in Sekunden angegeben sollte mindestens so lang wie die Belichtungszeit plus 8 Sekunden sein, damit die Kamera genug Zeit hat die RAW-Daten auf die Speicherkarte zu schreiben. Länger kann sie ruhig sein. Kürzer habe ich nicht getestet, wenn es aber mit einer kürzeren Wartezeit nicht funktioniert, einfach mal einen höheren Wert nutzen.

Ich habe z.B. erfolgreich mit einer Belichtung von 1/1002 (Wert 1660) und einer Wartezeit von 8 Sekunden getestet.

Das Problem bei diesem Vorgehen ist, dass man das Skript einmal konfigurieren und auf die Karte kopieren muss und die Aufnahme des Timelapse startet sofort beim Einschalten der Kamera. Man hat keine Möglichkeit nachträglich die Belichtung anzupassen. Man kann sich allerdings per App mit WLAN mit der Kamera verbinden (bei Timeout einfach nochmal versuchen, das WLAN braucht eine Weile bis es fertig ist, da die Kamera ja erstmal ausgelastet ist mit Aufnahmen, je nach Intervall und Belichtungszeit) und so zumindest das Resultat kontrollieren.

Ist nur die Frage: was machen, wenn die Belichtung nicht gut ist?

  1. Der ISO-Wert ist im Skript fest auf 100 eingestellt. Eine Möglichkeit ist also einen anderen Wert oder Auto-ISO einzustellen. Allerdings ist dann auch das Bildrauschen ggf. höher.
  2. Verschiedene Skripte nutzen. Dazu hat man wiederum mehrere Möglichkeiten:
    1. Mehrere SD-Karten (naja, nicht wirklich praktisch)
    2. XIMODE: Diese Skriptsammlung ermöglicht es beim Starten der Kamera ein Skript zu wählen nur durch die Kamera-eigenen Tasten. Mehr dazu im Abschnitt unten.
    3. Zur Laufzeit? Unter https://dashcamtalk.com/forum/threads/yi-plus-a-mod-for-switching-capture-and-recording-modes.14110/ ist mit dem Programm yi_plus eine Möglichkeit beschrieben zur Laufzeit den Aufnahmemodus zu wählen (nicht nur zwischen Foto und Video, sondern auch zwischen Foto-Timelapse oder verschiedenen Video-Modi). Ggf ist es so auch möglich verschiedene andere Dinge zu tun? Da das Programm aber ein C++ ist, dessen Source nicht veröffentlich sind, ist das wohl eher keine Möglichkeit. Aber als Referenz zu yi_plus gibt es hier wohl die verschiedenen Einstellungmöglichkeiten: https://github.com/luckylz2git/Ponerine/blob/master/camerasetting.py

XIMODE

Ist ein wirklich praktisches Tool, das einem erlaubt beim Einschalten der Kamera auszuwählen, welches autoexec.ash-Skript man benutzen möchte. Erhältlich ist es gegen ein Like auf Facebook, Twitter, Googe+ oder eine kleine Spende über Paypal auf https://xs-sol.com/ximode-xiaomi-yi-modes-superview-protune/.

Einige Hinweise von mir dazu:

  • Den Nightlapse Modus finde ich nicht besonders hilfreich, da er nur ein paar Voreinstellungen macht, den Timelapse selbst muss man dann über die App auslösen (oder schon vorher die Kamera so eingestellt haben, dass sie im Foto-Timelapse Modus startet).
  • Im Nightlapse Modus wird auch die RAW Aufnahme aktiviert, was aber zu unbrauchbaren RAWs führt, da nicht die Methode von RAW LAPSE genutzt wird (Schleife im Skript) sondern wie oben beschrieben der interne Timelapse Modus.
  • Custom Skript: Man kann sich lt. Website zwei Custom Skripte anlegen, allerdings ist in der neuesten Version eines davon bereits mit YiMAX Pro (ebenfalls von nutsey) belegt.
  • Generell kann man aber eigentlich jedes Skript mit einem Custom Skript ersetzen indem man das Beispiel Custom Skript kopiert und die jeweiligen voreingestellten überschreibt (Namen belassen, so muss man nichts anderes anpassen).

XIMODE für Timelapse – Möglichkeit 1

Man kann sich dieses Tool auch für Timelapses umbauen, indem man sich einfach verschiedene Eintstellungen (ISO, Belichtungszeit, Intervall) vordefiniert.

So kann man sich auch verschiedene Belichtungen anlegen und per WLAN kontrollieren ob einem die Belichtung gefällt. Da gibt es auch wiederum mehrere Möglichkeiten:

  1. Einfach das normale RAW LAPSE mit verschiedenen Einstellungen in die anderen Skripte kopieren
  2. Eine weitere Möglichkeit wäre sich noch „Prüf-Modi“ anzulegen, in denen man erstmal nicht die Schleife startet, sondern nur ein Foto mit den Einstellungen machen lässt. Dazu kopiert man einfach das normale Skript und kommentiert folgende Zeilen aus (Hastag/Raute):

    So wird ein einziges Bild gemacht und man kann sich dann per App auf die Kamera verbinden und sich dieses ansehen.

XIMODE für Timelapse – Möglichkeit 2

Ein weiteres Feature von XIMODE ist, dass die Möglichkeit gegeben ist direkt auf der Kamera den XYC auszuführen und so eine Konfiguration quasi vom Telefon aus anzulegen / zu verändern. Das habe ich allerdings nicht ausprobiert, da man dafür Telnet auf seinem Handy installieren muss. Dazu hatte ich bisher keine Lust.