2017-03-03 2 views
0

재미를 위해 JPEG 파일을 디코딩하려고하는데, 지금까지 중요한 데이터를 대부분 가져 왔습니다 (퀀 타이즈 테이블, 허프만 테이블, 이미지 정보). 하지만 나는 SOS 마커를 따르는 엔트로피 코딩 섹션에 머물러 있습니다. 여기에 비슷한 질문이 있습니다. Parsing JPEG file format: Format of entropy-coded segments (ECS)?을 보았습니다. SOS 헤더 바로 뒤에있는 바이트가 JPEG 데이터임을 이해합니다.JPEG의 다중 채널에 대한 엔트로피 코딩 된 데이터 형식

은 내가 SOS 헤더의 형식을 이해하고, 지금이

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 

같은 것을 간다 내가 정말 이해하지 못하는 것은 허프만 압축 MCU 원시 데이터 부분입니다. 첫째, 왜 두 개의 허프만 테이블이 있는지 혼란 스럽습니다. 둘째, 어떻게 여러 채널에서 데이터를 가져 옵니까? 그것은 Y Cb Cr의 순서입니까? 또는 YYYY ... YYY CbCb .... CbCb CrCr ... CrCr?

일부 JPEG 디코더의 소스 코드를 살펴 보았지만 실제로 읽는 것이 어렵습니다. 나는 이것을 효율적으로 할 필요가 없으며, 결국 이미지를 다시 만들 수 있기를 원한다.

답변

0

압축 된 데이터의 형식은 복잡하며 SOF 시장의 유형에 따라 다릅니다.

임의의 수의 허프만 테이블이있을 수 있습니다. 대개 2 개 (Y와 Cb, Cr은 각각) 또는 3 (각 구성 요소)입니다.

스캔 구조에 따라 스캔에는 1 구성 요소 또는 모든 구성 요소 (인터리브 스캔)가 포함될 수 있습니다.

+0

내가 작업하고있는 특정 파일의 경우, 2 개의 울프 트리가 발생합니다. 스캔 구조의 구조를 어떻게 알 수 있습니까? 내가 놓친 다른 헤더 중 하나에 있습니까? 주로이 페이지를 사용하여 파일 구조를 이해하고 있습니다. http://vip.sugovica.hu/Sardi/kepnezo/JPEG%20File%20Layout%20and%20Format.htm,하지만 엔트로피 데이터의 헤더에서 세부 정보를 찾을 수 없습니다. – CJX3711

+0

이 책을 사용하여 https://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434/을 알아 냈습니다. – user3344003