SOF (Start Of Frame - Khung ảnh) chứa thông tin kích thước file JPEG.
Bảng Lượng tử hóa (DQT) là một ma trận 8x8 chứa các số dùng để kiểm soát mức độ nén và chất lượng ảnh JPEG.
| Bảng Q.T. ID: 0 | Ý nghĩa |
|---|---|
| [1, 1, 1, 1], [1, 1, 1, 1], ... | Bảng này được sử dụng để giải lượng tử hóa kênh Độ chói (Y). |
| Vai trò: | Độ chói (Y) chứa thông tin chi tiết và độ nét của ảnh. Việc có toàn bộ là số 1 cho thấy kênh này được nén suy hao ở mức thấp nhất. |
| Bảng Q.T. ID: 1 | Ý nghĩa |
|---|---|
| [1, 1, 1, 1], [1, 1, 2, 1], [2, 2, 2, 2], ... | Bảng này được sử dụng để giải lượng tử hóa hai kênh Sắc độ (Cb và Cr). |
| Vai trò: | Sắc độ chứa thông tin màu sắc. Mắt người ít nhạy cảm với chi tiết màu hơn, nên có một số giá trị 2 được sử dụng. |
Trong luồng dữ liệu thô, hai bảng này được lưu trữ liên tiếp nhau:
Marker DQT (0xFFDB) Độ dài dữ liệu (Length) Bảng Y (ID 0 + 64 bytes) Bảng Cb/Cr (ID 1 + 64 bytes)
| Đặc điểm | Giải thích Đơn giản | Ý nghĩa |
|---|---|---|
| Vai trò | Các số trong bảng là các hệ số chia. | Quyết định mức độ Nén suy hao (Lossy) của ảnh. |
| Giá trị | Số càng nhỏ (ví dụ: 1, 2) | Chất lượng càng cao, nén ít, file lớn. |
| Số càng lớn (ví dụ: 50, 100) | Chất lượng càng thấp, nén nhiều, file nhỏ. | |
| Phân loại | ID 0 (cho Độ chói - Y) | Quyết định chất lượng độ sáng và chi tiết ảnh. |
| ID 1 (cho Sắc độ - Cb, Cr) | Quyết định chất lượng màu sắc ảnh. |
Tóm lại: Bảng DQT là "công tắc chất lượng" của JPEG.
Bảng Huffman (DHT) chứa các mã dùng để giải nén Entropi, được phân loại thành 4 loại dựa trên hai tiêu chí:
| Tiêu chí | Phân loại | Tóm tắt Vai trò |
|---|---|---|
| 1. Hệ số DCT | DC | Mã hóa hệ số tần số thấp nhất (tần suất thay đổi màu thấp). |
| AC | Mã hóa 63 hệ số tần số cao hơn (chi tiết và đường nét). | |
| 2. Kênh Màu | ID 0 | Được sử dụng cho dữ liệu kênh Độ chói (Y). |
| ID 1 | Được sử dụng cho dữ liệu kênh Sắc độ (Cb, Cr). |
File JPEG màu sử dụng bốn bảng kết hợp sau để giải mã dữ liệu nén:
- DC ID 0: Mã hóa hệ số DC cho kênh Y.
- AC ID 0: Mã hóa hệ số AC cho kênh Y.
- DC ID 1: Mã hóa hệ số DC cho kênh Cb và Cr.
- AC ID 1: Mã hóa hệ số AC cho kênh Cb và Cr.
Quá trình giải mã JPEG chuyển đổi dữ liệu tần số thành pixel màu theo chuỗi sau:
- DHT (Bảng Huffman): Được dùng để giải mã luồng bit nén (sau Marker SOS) thành các Hệ số DCT đã Lượng tử hóa (các con số trong ma trận 8x8).
- DQT (Bảng Lượng tử hóa): Được dùng để nhân các Hệ số đã Lượng tử hóa với các giá trị trong bảng DQT (ID 0 cho Y, ID 1 cho Cb/Cr).
- Kết quả: Sau bước này, ta có được các khối Hệ số DCT Phục hồi (8x8).
- Vai trò: Áp dụng thuật toán IDCT lên từng khối 8x8 Hệ số DCT Phục hồi (từ Bước 1).
- Mục tiêu: Chuyển đổi dữ liệu từ Miền Tần số (tần suất thay đổi độ chói/màu) sang Miền Không gian (vị trí pixel).
- Kết quả: Ta thu được các khối Pixel Thô (8x8) cho các kênh Y' (độ chói), Cb', và Cr' (sắc độ).
Thuật toán IDCT (Inverse Discrete Cosine Transform) nghe có vẻ phức tạp, nhưng vai trò của nó cực kỳ đơn giản: nó là một bộ dịch (translator) chuyển từ nhóm các con số đại diện cho tần số sang nhóm các con số đại diện cho màu sắc/độ sáng của pixel. Nó sử dụng 64 sóng hình sin và cosin ở các tần số khác nhau để tái tạo lại khối pixel gốc.
| Khái niệm | Trước IDCT (Đầu vào) | Sau IDCT (Đầu ra) |
|---|---|---|
| Dạng dữ liệu | Tần số & Biên độ (Hệ số DCT) | Giá trị Pixel Thô |
| Đơn vị | 64 Hệ số DCT Phục hồi (F(u, v)) | 64 Giá trị Pixel (f(x, y)) |
| Tác dụng | IDCT là bộ tổng hợp dùng 64 tần số (vị trí) với Biên độ (giá trị) tương ứng để vẽ lại khối 8x8 pixel gốc. |
- Vai trò: Chuyển đổi các giá trị Y', Cb', Cr' thành các giá trị RGB (Red, Green, Blue) cuối cùng, sẵn sàng để hiển thị.
Quá trình chuyển đổi từ Y Cb Cr sang RGB chính là bước cuối cùng để trộn (mix) ba thông tin độ chói và sắc độ lại với nhau để tạo ra một bức ảnh hoàn chỉnh.