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):
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:
Nun erfolgt eine leichte Anhebung der Sensel-Werte ("Belichtungskorrektur") ...
... und die Konvertierung auf 16-Bit Werte (Fast schon ein Bild, aber noch keine Farben, immer noch reine Helligkeiten im BAYER-RGGB-Pattern):
Im letzten Schritt erfolgt das Demosaiken und der Transfer in ein RGB-Farbmodell (Farbmatrix habe ich aus DXOMark für die Z9 genommen):
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!
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):
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:
Nun erfolgt eine leichte Anhebung der Sensel-Werte ("Belichtungskorrektur") ...
... und die Konvertierung auf 16-Bit Werte (Fast schon ein Bild, aber noch keine Farben, immer noch reine Helligkeiten im BAYER-RGGB-Pattern):
Im letzten Schritt erfolgt das Demosaiken und der Transfer in ein RGB-Farbmodell (Farbmatrix habe ich aus DXOMark für die Z9 genommen):
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!
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.