Ich versuche eine JPEG-Datei zu entschlüsseln, um den Spaß daran zu haben, und bis jetzt habe ich es geschafft, die meisten wichtigen Daten zu entfernen (Quantisierungstabellen, Huffman-Tabellen, Bildinformationen). Aber ich stecke in dem entropiecodierten Abschnitt fest, der dem SOS-Marker folgt. Es gibt eine ähnliche Frage hier, die ich Parsing JPEG file format: Format of entropy-coded segments (ECS)? gesehen habe, und ich verstehe, dass die Bytes unmittelbar nach dem SOS-Header die JPEG-Daten selbst sind.Format von Entropie-kodierten Daten für mehrere Kanäle in JPEG
Ich verstehe das Format des Headers SOS, und es geht so etwas wie diese
FF DA // SOS header
00 0A // Header length
03 // 3 channels
01 00 02 11 03 11 // channel 1 QT 0 HT 0, channel 2&3 QT 1 HT 1
00 3F 00 // Other important stuff
XX XX XX XX XX XX XX ... // Huffman-compressed MCU raw data
...
FF D9 // EOI
Nun, was ich wirklich nicht verstehe, ist der Huffman-komprimierte MCU Rohdaten Teil. Erstens bin ich verwirrt, warum es zwei Huffman-Tabellen gibt. Zweitens, wie bekomme ich die Daten von den verschiedenen Kanälen? Ist es in der Reihenfolge von Y Cb Cr? Oder YYYY ... YYY CbCb .... CbCb CrCr ... CrCr?
Ich habe mir den Quellcode einiger JPEG-Decoder angeschaut, aber sie sind wirklich schwer zu lesen. Ich brauche das nicht, um effizient zu sein, ich möchte nur in der Lage sein, das Bild schließlich neu zu erstellen.
Also für die bestimmte Datei, an der ich arbeite, hat es zufällig 2 Huffman-Bäume. Wie finde ich die Struktur der Scan-Struktur heraus? Ist es in einem der anderen Header, die ich verpasst habe? Ich benutze hauptsächlich diese Seite, um die Dateistruktur zu verstehen. http://vip.sugovica.hu/Sardi/kepnezo/JPEG%20File%20Layout%20and%20Format.htm, aber ich kann keine Details in den Headern auf den Entropiedaten finden. – CJX3711
Ich habe dieses Buch verwendet, um es herauszufinden https://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434/ – user3344003