2010-03-18 47 views
6

Tôi gặp khó khăn trong việc hiểu thông số kỹ thuật ITU-T T.81 cho định dạng tệp JPEG. Hy vọng rằng ai đó ở đây đã cố gắng phân tích cú pháp các tệp JPEG và/hoặc biết về các chi tiết của định dạng tệp này.Phân tích cú pháp định dạng tệp JPEG: Định dạng phân đoạn mã hóa entropy (ECS)?

Thông số này cho biết phân đoạn ECS0 bắt đầu sau phân khúc SOS nhưng tôi không thể tìm thấy vị trí thực tế nói về định dạng phân đoạn ECS0 hoặc cách phát hiện bắt đầu. Việc triển khai JPEG đơn giản trực tuyến có sự trợ giúp hạn chế bởi vì chúng giả định nhiều thứ về các ảnh JPEG mà chúng phân tích cú pháp.

Có ai có thể chỉ cho tôi đúng hướng không?

FYI: Thông số định dạng tệp JPEG là here.

Trả lời

4

Khi tiêu chuẩn nói về ECS, nó không đề cập đến nó như là một loại phân đoạn như SOS, với một tiêu đề và một thành phần kích thước; nó theo nghĩa đen là luồng bit nén Huffman thô đại diện cho MCU bao gồm dữ liệu hình ảnh. Nó được đệm để điền vào một số nguyên của các byte, và có thể tùy chọn được xen kẽ với các tiêu đề RST (chính thức, các tiêu đề RST được tách biệt với ECS).

Khi tiêu chuẩn nói ECS , nó có nghĩa là lần đầu tiên ECS thứ nhất, thay vì loại ECS cụ thể như cách SOF0/SOF1/SOF2/etc là các loại khác nhau.

Ví dụ về cơ bản DCT:

FF DA // SOS header 
00 08 // 8 bytes 
01 // 1 channel 
01 00 // channel 1 QT 0 HT 0 
00 3F 00 // start/end spectral selector, successive approximation bit high/low 
12 34 56 78 ... // Huffman-compressed MCU raw data 
(sequence of Fuffman codes looked-up in AC/DC Huffman tables) 

FF D9 // EOI 

Một chương trình miễn phí tiện dụng giúp để giải thích sự stucture của JFIF là JPEGsnoop (http://www.impulseadventure.com/photo/jpeg-snoop.html). Có một tùy chọn 'Giải mã đầy đủ' trong menu hiển thị luồng bit thô Huffman, cách nó ánh xạ tới các ký hiệu Huffman, bị khử lượng tử và sau đó ánh xạ vào các thành phần DCT.

+0

Tôi có phải giải mã luồng Huffman đầy đủ để xác định kết thúc của ECS sau đó không? Hoặc là nó có khả thi cho tôi để tìm kiếm FFxx để phát hiện sự kết thúc của dữ liệu ECS? – me2

+0

Nếu đó là hình ảnh được tạo đúng cách, bạn có thể tìm kiếm FFxx trong đó xx! = 0 để tìm đoạn tiếp theo (FF00 nên được hiểu là FF bên trong ECS), có thể không nhất thiết phải là kết thúc của hình ảnh (tức là , một điểm đánh dấu RST). Để xác định xem luồng có thực sự hợp lệ hay không, bạn phải giải mã hoàn toàn. – matja

Các vấn đề liên quan