Thema: RAW vs. CRAW
Einzelnen Beitrag anzeigen
Alt 02.07.2010, 05:44   #6
Neonsquare
 
 
Registriert seit: 12.08.2008
Ort: Nürnberg
Beiträge: 4.198
Ich hab mir die Implementierung der Sony cRAW-Dekomprimierung in dcraw.c mal näher angeschaut. Das ist ganz schön gewieft was da passiert (keine Angaben auf Gewähr)

Es werden immer Blöcke aus 16 Pixeln komprimiert. Dabei wird der größte und der kleinste Wert bestimmt und im cRAW gespeichert (jeweils als 11 Bit Wert). Die Position 0-15 des minimalen Werts und des maximalen Werts werden danach mit jeweils 4 Bit kodiert. Damit sind von 16 späteren Pixeln noch 14 Pixel zu speichern. Diese werden als 7-Bit Offset zum Minimalwert gerechnet. So wird aus ursprünglich 16 x 12 Bit = 192 Bit = 24 Bytes ein komprimierter Block aus 11+11+4+4+(14x7) = 128 Bit = 16 Bytes.

Code:
  11   11    4       4       7           7
[max][min][maxpos][minpos][pixel1]...[pixel14]
Doch was heißt das nun bezüglich der Bildqualität? Diese Methode baut darauf, dass innerhalb eines Bereichs von 16 Pixeln niemals der vollständige (theoretische) Dynamikumfang von 12 Bit benötigt wird. Liegen die Werte relativ nah zusammen, dann besteht kein Unterschied zum unkomprimierten RAW. Problematisch wird es nur, wenn der Kontrastunterschied innerhalb dieser 16 Pixel sehr groß wird. Wobei man generell bedenken sollte, dass dies alles sowieso noch vor der eigentlichen Interpolation ist, die aus dem Bayer-Muster überhaupt erst ein RGB-Bild erzeugt.

Gruß,
Jochen
Neonsquare ist offline   Mit Zitat antworten