ZITAT(Neonsquare @ 2014-01-22, 10:48) So wie es für mich aussieht ist die Deltakompression nur ein Aspekt der gesamten Kompression. Der eigentliche Schlüssel hinter der Frage wie RAW-Daten von einem 14bit ADC in einem Schema wie der 2x11bit + 7x4Bit Deltakompression dargestellt werden können liegt in einer Nicht-Linearen Repräsentation der Tonwerte: Einerseits werden die Tonwerte halbiert und dafür ein erhöhter Schwarzpunkt in die RAWs eingetragen und andererseits werden die linearen Tonwerte über eine nichtlineare Kurve auf 11 Bit abgebildet.[/quote]
Das ist schon richtig, aber die nicht-lineare Abbildung von (vermutlich) 14 Bit auf 11 Bit kommt einer Requantisierung gleich. Sie mag optimal an die Verhältnisse der Kamera angepaßt sein, aber ein kleiner zusätzlicher Fehler entsteht dabei immer. Den könnte man vermeiden, wenn man die 14 Bit-Daten 1:1 überträgt oder eine verlustfreie Kompression zur Anwendung bringt - es ist ja nicht so, daß das technisch nicht möglich wäre...
ZITATWenn man es extrem vereinfacht von der anderen Seite sehen möchte könnte man wohl sagen: Reine, lineare 14 Bit RAW-Daten sind hochredundant. Das unterste Bit besteht praktisch nur aus Rauschen. Auch der restliche Bereich ist nicht homogen und macht keine 13 Bit notwendig - was soweit ich mich erinnere sogar irgendwo an einem Beispiel von 12Bit RAW aus einer A900 demonstriert wird. Sony komprimiert den linearen Tonwertraum anhand von offenbar Sensor-spezifischen Kurven. Wenn das stimmt, dann ist das genau das "Wissen über den realen Eingabe-Wertebereich" den ich immer als fehlendes Puzzlestück gesehen habe.[/quote]
Mit dem Kurvenverlauf legst Du den Fokus aber nur auf einen Teilaspekt von Sonys Kompressionsverfahren, nämlich wie man die Daten an einem beliebigen, gedanklich isoliert betrachteten Punkt möglichst gut eindampfen kann und später wieder expandiert. Das Analogon dazu wäre wohl ein einfacher Dynamikkompressor und -expander. Das funktioniert nie ohne Verluste, aber es kann gut sein, daß der Fehler so gering bleibt, daß er keine nennenwerten Auswirkungen auf die Qualität hat.
Der Großteil unserer Diskussion oben bezog sich aber nicht auf die Kurve, sondern darauf, daß Sonys Algorithmus nicht jeden Wert für sich isoliert betrachtet und komprimiert, sondern eine Abhängigkeit zu einem mehr oder weniger willkürlich gewählten Block benachbarter Werte herstellt. Es ist also nicht so, daß wir die Kompression oder die spätere Expansion eines Wertes isoliert von anderen Werten im Umfeld betrachten können. Je nachdem, welche Werte in der Umgebung vorkommen, kann es sein, daß sich ein Wert ziemlich genau darstellen läßt oder eben auch nicht. Das funktioniert mit hoher Genauigkeit, wenn die Werte in der Nachbarschaft nicht allzuviel vom betrachteten Wert differieren, aber es erzeugt Fehler in Bereichen, in denen sich die Werte in der Umgebung relativ stark unterscheiden. Diese Fehler fallen in Bereichen, in denen "Chaos" herrscht, vermutlich kaum auf (nichtsdestotrotz existieren sie), aber zumindest in Übergangszonen zwischen mehr oder weniger homogenen Bereichen, also z.B. an Kontrastkanten oder Spitzlichtern werden diese Fehler als Artefakte, die über den jeweiligen Punkt hinaus in die Fläche gehen, sichtbar.
ZITATDie Frage die man sich nun stellen kann: Wäre eine "dumme" 14 Bit Speicherung nicht trotzdem besser?[/quote]
Absolut betrachtet eindeutig ja.
ZITATHätte diese potentiell weniger "Banding"?[/quote]
Ja, genauso wie eine Kompression, die einen Wert unabhängig von Werten in der Nachbarschaft betrachtet (zumindest in Bezug auf die zur Verfügung gestellte Auflösung - es wäre ja durchaus legitim, Nachbarwerte mit einzubeziehen, um eine wie auch immer geartete kompaktere Darstellung eines Wertes zu finden, solange der mögliche Wertebereich dadurch nicht eingeschränkt wird).
ZITATAngenommen die nicht-lineare Kurve maskiert insbesondere jene Bereiche, die aufgrund von Rauschen sowieso bedingt nutzbar sind - dann würden die zusätzlichen Bits bei "dummer 14 bit"-Speicherung praktisch nur aus Nicht-Information (= Rauschen) bestehen.[/quote]
Wie meinst Du das?
ZITATDiese Nicht-Information kann durchaus den Effekt haben Banding zu unterdrücken - aber denselben Effekt würde man durch gezieltes Dithern erreichen.[/quote]
Eine Form von Dithering würde ich in der Kompression auf die Wahl des Minimum-Wertes des jeweiligen Fensters anwenden, um einen durch den Algorithmus bedingten möglichen systematischen Fehler zu verdecken. Ob Sony sowas zur Anwendung bringt, wissen wir natürlich nicht - unsere ad-hoc-Kompression oben weist sowas natürlich noch nicht auf.
Dithering sollte meines Erachtens darüber hinaus auch nach der Expansion im Raw-Converter erfolgen.
ZITATDer Ansatz scheint besser als befürchtet, aber mein Bauchgefühl wäre einfach beruhigter, wenn man auch einfach eine "dumme" Repräsentation einstellen könnte. Vermutlich würde ich aber trotzdem auf cRAW weiter fotografieren.[/quote]
Mir geht es ähnlich:
Ich finde es gut, daß es cRAW gibt, obwohl wir oben ja gesehen haben, daß das Verfahren nicht verlustlos arbeitet und sich durchaus noch weiter verbessern ließe, indem bislang ungenutzte Parameterkonstellationen adaptiv für eine höhere Genauigkeit genutzt würden.
Trotzdem hätte ich gerne die Möglichkeit, komplett verlustfrei zu arbeiten. Dabei darf durchaus eine Kompression zur Anwendung kommen, aber dann bitte eine verlustfreie. Wenn man frühere ARW-Dateien (die noch keine cRAWs waren) z.B. mit einem verlustfrei arbeitenden Dateikompressor wie ZIP komprimiert, stellt man fest, daß sich ähnlich hohe oder gar bessere Kompressionsraten erzielen lassen wie mit Sonys verlustbehaftetem Verfahren. Sicherlich benötigt ein solcher Algorithmus mehr Ressourcen (Rechenzeit und Speicher) als Sonys Algorithmus, der für die parallele Verarbeitung von 128-Bit-breiten Datenströmen in DSPs optimiert ist und somit vermutlich nahezu verzögerungsfrei in Echtzeit arbeitet, aber man kann dem Anwender ja zur Auswahl stellen, ob er für maximale Serienbildgeschwindigkeit verlustbehaftete cRAWs wünscht, oder bei einer etwas langsameren Geschwindigkeit verlustfreie 14-Bit-RAWs mit oder ohne Kompression haben möchte (wobei je nach Speicherkarteninterface, Speicherkarte und Motiv die verlustfreie Speicherung mal ohne, mal mit Kompression schneller sein dürfte). Solange man die verlustfreie Kompression nicht im DSP implementiert, sondern dem Linux-basierten Backend überläßt (und ein kleines Päuschen vor dem Speichern jedes Bildes akzeptiert), wäre das mit minimalem Aufwand zu realisieren.
Viele Grüße,
Matthias