Mit den Augen des Sensors ...

Thread Status
Hello, There was no answer in this thread for more than 30 days.
It can take a long time to get an up-to-date response or contact with relevant users.

RAWky

NF-Premium Mitglied
Premium
Registriert
Bei Krolop&Gerst sind Videos "Die große Sensorstrecke" erschienen, in denen Hans Schlüter mit großer Expertise einen sehr gehaltvollen Überblick darüber gibt, wie aus einem Sensel (Helligkeitswerte ohne Farbinformation 0-16383 bei 14bit) ein Pixel mit den Infos RGB und Helligkeit wird.

Dies wird durch Schrittweise Verarbeitung eines RAW-Files mit einem Python-Script gezeigt und erklärt.

Mit den Resten meines Forscherdrangs habe ich natürlich Python installiert, mir die Skripte (man kann Schnipsel im Video erkennen) nachvollzogen und mit der Z9 ein Experiment gemacht:

Hier ein 16bit TIFF des RAW-Files ohne jegliche Bearbeitung (alles sehr finster):

Checker.NEF_00_Org.jpg

Im nächsten Schritt wird dann ein Weissabgleich gemacht. Dazu habe ich mir die RGGB (2x2-Fläche bei Koordinate (cVx,cVy)) im Bild mit den maximalen Helligkeitswerten gesucht und für den R- und B-Kanal Faktoren in Relation zum G berechnet:

wb_R = image[cVx,cVy]
wb_G = (image[cVx,cVy+1] + image[cVx+1,cVy]) / 2
wb_B = image[cVx+1,cVy+1]
wb_R = wb_G / wb_R
wb_B = wb_G / wb_B
wb_G = 1

Werden alle Sensel damit verrechnet, sieht das TIFF-File etwas anders aus:

Checker.NEF_02_WB.jpg

Nun erfolgt eine leichte Anhebung der Sensel-Werte ("Belichtungskorrektur") ...

Checker.NEF_03_EV.jpg

... und die Konvertierung auf 16-Bit Werte (Fast schon ein Bild, aber noch keine Farben, immer noch reine Helligkeiten im BAYER-RGGB-Pattern):

Checker.NEF_04_16bit.jpg


Im letzten Schritt erfolgt das Demosaiken und der Transfer in ein RGB-Farbmodell (Farbmatrix habe ich aus DXOMark für die Z9 genommen):

Checker.NEF_05_RGB.jpg

Das Ganze erfolgt natürlich nur im Rahmen meiner Fähigkeiten und Möglichkeiten und sind weit davon entfernt, aus einem Sensel das "richtige" Pixel zu machen. Warum diese Schritte erforderlich sind und wo Fallstricke verborgen liegen und wie es dann zu den Farben kommt, dazu schweige ich lieber, ich will ja nicht zu viel verraten (könnte ich auch nicht, weil z.B. das Demosaiken und anderes auch hier in einer BlackBox geschieht und niemand seinen investierten Hirnschmalz gerne verraten mag).

Mein i5-iMac mit 3,3 GHz und 40 GB Ram braucht für diese Schritte gut 90 Sekunden - und schafft keine 20 Bilder in 1 Sekunden wie die Z9!
 
Anzeigen
Großartig!
Ich habe gerade im Urlaub eine Python Einführung gelesen und mache jetzt erste Versuche mit dem PyCharm IDE.
Aber ich scheitere bereits an Textdateien.
Daher also Hut ab!
 
Kommentar
Und: sehr interessant, ich würde gerne mehr darüber lesen.
Welche Libraries braucht man da? Welches Python benutzt Du?
 
1 Kommentar
RAWky
RAWky kommentierte
IDLE Shell und Python 3.11.5

Lib rawpy zum Lesen des RAW-Files: rawfile = rawpy.imread(path) dann image = rawfile.raw_image_visible
Lib numpy mit mathematischen Funktionen zum Clippen, Sinus, Cosinus, ...
Lib tifffile zum Schreiben der .TIF-Datei tifffile.imwrite(filename, image)
Lib colour_demosaicing zum Demosaiken

Python ist schon etwas seltsam in der Syntax (wenn man C kann), hat aber sehr mächtige Funktionen für große Arrays und Matrizen.
 
braucht für diese Schritte gut 90 Sekunden - und schafft keine 20 Bilder in 1 Sekunden wie die Z9!
Die z hat die Firmware direkt auf den Graphik-Prozessor kompiliert und Du hast vermutlich den Interpreter am laufen und nutzt keine Graphikkarte(?).
 
siggi65
siggi65 kommentierte

Und bei JPG waren es dann max. 30 Bilder/s bei voller Auflösung, richtig? :cool:
 
Wuxi
Wuxi kommentierte
Da werden ja auch schon mehrere JPG erzeugt, zusammenkomprimiert und ins Raw eingebettet.
 
Christoph Blümer
Christoph Blümer kommentierte
Kommt auf die Kamera an, aber Z8/Z9 schaffen das mWn.
 
RAWky
RAWky kommentierte

Meine Z9 schafft bei RAW+JPG-Fine in voller Auflösung ca. 40 Bilder (bei 20/Sekunde), dann ist der Puffer wohl voll und die Kamera wird von der CF-Expresskarte (meine ist eine ProGrade Gold 256 GB, die ist für die Z9 im Grunde zu langsam, für Foto langt's mir aber) eingebremst. Für das vollständige Abarbeiten (JPG entwickeln und Speichern) so einer 40er Serie werden auch insgesamt ca. 20 Sekunden benötigt, dann erlischt die "Busy-LED" der Kamera.
Nur RAW, ohne JPG, da geht dann schon mehr, aber ein echtes Dauerfeuer wird nur mit den CF-Expresskarten klappen, die eine Sustained Write Speed von 850 MB/s haben (eine Max Write Speed von z.B. 1.700 MB/s sagt da wenig aus).
 
Wuxi
Wuxi kommentierte
Für das vollständige Abarbeiten (JPG entwickeln und Speichern)
Das ist dann nur noch das Speichern. Die Bilder sind im Puffer ja fertig und müssen nur noch auf die heiße Karte.
 
Die obige schrittweise "Entwicklung" ist aber eigentlich (auch in Python) nicht notwendig. Es gibt eine Funktion, mit der kann man eine RAW-Datei in einem Schritt (und deutlich schneller) "entwickeln" und ein RGB-Bild erhalten, z.B. so:

raw.postprocess(use_camera_wb=True, auto_bright_thr=0.01, demosaic_algorithm=rawpy.DemosaicAlgorithm.AAHD, fbdd_noise_reduction=rawpy.FBDDNoiseReductionMode.Full)

Interessant ist dabei der Parameter auto_bright_thr=0.01, der das Bild bis auf 99% (0,01 Reserve in den Lichtern) der möglichen Helligkeit aufhellt. Man könnte also auch Bilder mehr als LrC aufhellen (also statt ETTR ein DTTR, Develope To The Right). Klappt, aber das (Photonen-) Rauschen zeigt sich natürlich dann extrem.
 
Kommentar
-Anzeige-
Zurück
Oben Unten