Enthält das Canon * .CR2 / CRW-Format "wirklich RAW" -Daten?


11

In meiner Arbeit beschäftige ich mich mit * .CR2-Rohbildern, die von einer Canon DSLR im Rohmodus aufgenommen wurden. Wenn ich über das Format lese hier , ich war überrascht, dass es 4 TIFF IFDs hat , die ein) Originalgröße JPEG - Bild b) Thumbnail JPEG - Bild c) unkomprimierte RGB - Daten d) Lossless JPEG - Bild enthalten.

Mein bisheriger Eindruck war, dass jede mit einer Kamera aufgenommene RAW-Bilddatei Raw Bayer-Daten, dh R-, Gr-, B-, Gb-Bayer-Daten und einige EXIF-Daten zu Kameraaufnahmeeinstellungen usw. enthalten würde.

Aber nachdem ich diese CR2-Spezifikation gelesen habe, bin ich etwas verwirrt darüber, wie sie RGB-Daten oder sogar überraschend JPEG-Daten enthalten kann. Dies scheinen die Daten nach dem Demosaikieren zu sein (Erhalten der fehlenden R / G / B-Pixeldaten für das ursprüngliche Sensor-Bayer-Muster). Wenn dies der Fall ist, würde ich * .CR2 nicht als "wirklich rohe" Daten betrachten. Es wurde eine Demosaikierung durchgeführt, bevor die sogenannte Rohdatei ausgegeben wurde.

Vermisse ich etwas

Haben andere Camera Raw-Formate (z. B. Nikon - * .NEF, Kodac - * .kdc, Pentax - * .ptx / pef, ...) echte Raw-Bayer-Daten, ohne dass eine Verarbeitung durchgeführt wurde?


2
Die Seite, auf die Sie verlinken, gibt an, dass sie das Bayer-Muster enthält. Ja, sie enthält das Bayer-Muster.

Der Link über das Format ist kaputt
Pedro77

Antworten:


11

Ich denke, Sie vermissen definitiv etwas. Bedenken Sie: JPG wird zum Speichern (und normalerweise zum Komprimieren verlustbehafteter) Bilder verwendet. Beliebiges Bild. Was ist ein Bild? Es ist ein großes Pixelbündel, wenn alles gesagt und getan ist.

Die Ausgabe des Kamerasensors ist ebenfalls ein großes Pixelbündel. Es handelt sich einfach nicht um vollfarbige RGB-Pixel, sondern um monochrome Pixel. Ob ein einzelnes Pixel RG oder B darstellt, hängt von seiner Position auf dem bekannten Bildsensor ab. Ihre monochrome Farbe, die durch die Position gegeben ist, bedeutet jedoch nicht, dass sie nicht sinnvoll im JPG-Format gespeichert werden können. Ein Bündel von Pixeln ist ein Bündel von Pixeln, und warum das Rad neu erfinden?

Schauen Sie sich das Dokument genauer an. "Bei einem BAYER-Raster von RG / GB haben die geraden Zeilen HuffCode / Diff-Daten für ... RGRGRG ... verschachtelt, während die ungeraden Zeilen ... GBGBGB ... sind." Die rohe Bayer-Ausgabe wird also in einem JPG-Format gespeichert. Verlustfrei, heißt es (sonst hätten wir ein Problem!) Und vermutlich in mehr als 8 Bit Tiefe. Sie müssen dies auch ziemlich viel kochen, um ein nützliches Foto davon zu erhalten.

Die anderen JPG-Bilder werden für die Vorschau in der Kamera, das Histogramm usw. verwendet. Es ist sinnvoll, diese ein für alle Mal zu kochen, während das Bild aufgenommen wird, anstatt sie jedes Mal im laufenden Betrieb ausführen zu müssen, wenn Sie sie betrachten möchten. Dies bedeutet auch, dass der Computer diese für Miniaturansichten herausfischen kann, sobald Sie die Kamera in den PC entladen.

*** Ich kann aus irgendeinem Grund keinen Kommentar hinzufügen, daher hier: Goldenmean, warum denkst du, dass es ein Problem gibt, dass du nicht für jedes Pixel die vollständigen RGB-Informationen hast? Angenommen, Sie erstellen ein RAW-Format und haben eine Messung von 128 aus einer "roten" Sensorzelle. Sie können dies entweder als 128,0,0 oder 128,128,128 speichern oder, wenn Sie sich schlau fühlen, 128, "Daten aus der nächsten Zelle", "Daten aus der Zelle danach", um Platz zu sparen. Ist eigentlich egal. Es ist die Aufgabe des RAW-Konverters, dies zu verfolgen (obwohl ich sicher bin, dass die Programmierer es begrüßen würden, wenn Sie dokumentieren würden, wie Sie Ihre Sensordaten gespeichert haben) und daraus ein tatsächliches Bild zu machen.


2
Das verlustbehaftete JPG-Format, mit dem wir alle vertraut sind, unterscheidet sich anscheinend erheblich von dem verwirrend benannten "Lossless JPEG" -Schema, das in diesen Rohdateien verwendet wird.
Lyman Enders Knowles

2
@ Lyman: Ja, das ist es. Es wird auch in DNG verwendet, siehe mehr: en.wikipedia.org/wiki/Lossless_JPEG
Guffa

Ich verstehe - "Alles ist Pixel" und der "verlustfreie JPEG-Codec auch", aber es bleiben noch Fragen offen, wie es 3 Komponenten für jedes Pixel geben kann, das im Raw gespeichert ist. Der Sensor gibt nicht für jedes physikalische Pixel ein Triplett aus, sondern nur eine der 3 (R, G oder B), nicht alle 3, die die Formate für jedes Pixel zu speichern scheinen. Das ist das qn.
Goldenmean

2

Das DNG enthält verlustfreies Graustufen- JPG mit einer Auflösung, die viermal höher ist als die der " normalen " Farb- JPG- Datei. Ist es jetzt klarer?

Was ist das Problem beim Platzieren von 3 Arten von schwarzen Kugeln in einem Korb, der 3 farbige Kugeln aufnehmen soll ?

In der JPG-Datei gibt es keine Farben, sondern nur Zahlen, wie in jedem anderen Dateiformat. Und sie verwenden JPG, weil es einfacher ist, es auf diese Weise zu codieren, weil der Kameraprozessor bereits dafür ausgelegt ist, solche Dateien zu erstellen.

Sie würden die Matrixdaten wahrscheinlich auf die gleiche Weise in zip, rar, flac oder ein anderes verlustfreies Format schreiben. Dies würde jedoch eine Reihe von Algorithmen erfordern, die der Software der Kamera hinzugefügt werden und nicht benötigt werden.


Ihre Erklärung verwirrt mich. Der Link funktioniert nicht mehr, aber das OP zeigt an, dass TIFF-Dateien vorhanden sind. Wenn die Kamera TIFF-Dateien erstellen kann, warum muss sie dann Rohdaten in JPG codieren? Verlustfreies JPG bedeutet, dass bei der Komprimierung keine Daten verloren gehen. Dies bedeutet jedoch nicht unbedingt, dass die Konvertierung von Rohmatrixdaten in JPG keine Informationen transformiert oder auf irgendeine Weise verliert, oder?
MikeW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.