Professional Documents
Culture Documents
tập lớn
Truyền thông đa phương tiện
Mã hóa - nén ảnh JPEG và ứng dụng
2
Phần I: Tìm hiểu về mã hóa-nén dùng phép biến
đổi TC
Sơ đồ TC (Transform Coding)
3
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
Sơ đồ mã hóa Baseline JPEG
4
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
I. Tiền xử lí
1. Xử lý màu
Chuyển từ không gian màu RGB sang YCBCR .
Mục đích: tăng thành phần độ chói, giảm các thành phần màu sắc.
Công thức biến đổi từ RGB sang YCbCr:
5
Hình ảnh minh họa:
6
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
I. Tiền xử lí
2. Thực hiện bù mức (level offset) các giá trị điểm ảnh
Lúc mã hóa -128 với mỗi điểm ảnh
Lúc giải mã +128 với mỗi điểm ảnh
Mục đích của điều này để đảm bảo tất cả các hệ số DCT sẽ là các đại
lượng có dấu với dải rộng động tương tự.
7
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
I. Tiền xử lí
3. Chia khối ảnh đầu vào thành các khối 8x8 pixels để xử lý khối
Mục đích: Tính toán DCT cho từng vùng dư thừa dữ liệu khác nhau
Tất cả các block có cùng kích thước và mỗi block là một ma trận điểm ảnh
8×8 pixel được lấy từ một ảnh màn hình theo chiều từ trái sang phải, từ trên
xuống dưới. Kích thước block là 8×8 được chọn bởi hai lý do sau:
- Kích thước block lớn làm tăng độ phức tạp thuật toán
- Khoảng cách giữa các pixel vượt quá 8 sẽ làm cho hàm tương quan suy
giảm nhanh
8
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
9
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
Chú ý: F(0, 0) là giá trị trung bình của tất cả các điểm ảnh trong block.
10
Ví dụ minh họa
11
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
2. Lượng tử hóa
Bước tiếp theo của quá trình nén ảnh là bước lượng tử hóa các hệ số DCT
F(u , v) với mục đích chuyển các giá trị hệ số sang số nguyên để chuẩn bị cho
mã hóa huffman.
Mã hóa huffman là một thuật toán mã hóa dùng để nén dữ liệu. Nó dựa trên
bảng tần số xuất hiện các ký tự cần mã hóa để xây dựng một bộ mã nhị phân
cho các ký tự đó sao cho dung lượng (số bit) sau khi mã hóa là nhỏ nhất.
Đối với hầu hết các hình ảnh, phần lớn năng lượng tín hiệu nằm ở tần số
thấp; chúng xuất hiện ở góc trên bên trái DCT
Nén được thể hiện do các giá trị bên phải thấp hơn biểu thị tần số cao hơn và
thường nhỏ-đủ nhỏ để bị loại bỏ qua với ít biến dạng có thể nhìn thấy
12
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
13
Ví dụ minh họa
14
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
3. Quét zig-zag
Để mã hóa entropy các hệ số
Fq (u, v ), trước hết cần biến đổi
ma trận hệ số Fq (u, v ) thành
chuỗi số một chiều. Trong kỹ
thuật JPEG sử dụng phương
pháp đọc theo đường zig-zag.
15
Ví dụ
minh họa
16
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
17
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
Hệ số DC của các block DCT được lần lượt đưa tới bộ DPCM. Thành phần
sai số giữa hai hệ số liên tiếp sẽ được mã hóa trong bộ mã Huffman. Quá
trình mã hóa Huffman được thực hiện cho thành phần DC như sau:
- Dò tìm trong bảng phân loại để tìm “loại” của giá trị ∆DC. (“loại” chính là
chiều dài từ mã dùng để mã hóa thành phần ∆DC).
- Dùng bảng mã Huffman cho thành phần DC để tìm ra từ mã cho “loại” ∆DC
tìm được ở trên
- Mã hóa nhị phân giá trị ∆DC
- Ghép các từ mã Huffman và giá trị nhị phân của ∆DC để có được từ mã
cho thành phần DC.
18
Bảng phân loại hệ số AC và DC:
19
Bảng mã Huffman cho thành phần DC
20
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
II. Mã hóa xử lí nén
Chuỗi các hệ số AC được lần lượt đưa vào bộ mã hóa RLC. Ở đầu ra ta nhận được
các từ mã bao gồm hai thành phần:
- Giá trị chạy – là số lượng bit "0" đứng trước hệ số khác "0" đang được mã hóa.
- Biên độ của hệ số khác "0" nói trên. Từ mã Huffman ứng với cặp giá trị trên được tìm
ra trong bảng phân loại và bảng mã Huffman cho thành phần AC. Từ mã AC sẽ bao gồm
từ mã Huffman và giá trị biên độ (nhị phân) của hệ số AC.
21
Bảng mã
huffman
cho thành
phần AC:
22
Ví dụ:
Sau quá trình quét zig-zag, ta nhận được chuỗi hệ số AC sau:
0, -2, -1, -1, -1, 0 , 0, -1, 0 , 0……
Chuỗi bít nhận được sau bộ mã RLC là:
(1,-2) (0, -1) (0, -1) (0, -1) (2,-1) (EOB)
Sau hệ số khác "0" cuối cùng, đặt từ mã đặc biệt để báo hiệu kết thúc khối, từ
mã này có tên là EOB – End Of Block. Sử dụng bảng phân loại chúng ta tìm được
loại của biên độ các hệ số. Tín hiệu được đưa vào mã hóa Huffman có cấu trúc
sau:
(1,2)(-2), (0,1)(-1), (0,1)(-1), (0,1)(-1) (2,1)(-1), (0,0)
Trong đó:
23
Phần II: Tìm hiểu thuật toán của
sơ đồ công nghệ nén JPEG cơ bản (baseline JPEG)
III. Hậu xử lí
Từ mã Hufman cho từng cặp giá trị chạy và loại. Kết quả mã hóa các thành
phần AC và DC được tập hợp lại thành chuỗi bít có dạng như sau:
Như vậy ta cần 35 bits để truyền đi block 64 điểm ảnh, như vậy hiệu quả
nén của phương pháp JPEG trong trường hợp này là 0.5 bit/điểm ảnh.
Sắp xếp, ghép các khối tạo thành dòng bit dữ liệu các từ mã và lưu file theo
định dạng file .jpg chuẩn JPEG quy định.
24
Độ đo hiệu năng nén của sơ đồ
Tỷ số nén
CR = (Dung lượng - Kích thước dữ liệu ban đầu) / Kích thước dữ liệu sau nén
(ví dụ 35:1).
- Tỷ số bit/ pixel đối với ảnh Nb = Số bit sau khi nén/ Tổng số điểm ảnh (bpp).
- Tỷ số nén tốc độ dòng bit video (bit/s) , ví dụ 30:1.
Độ tổn hao
- Nén không mất mát thông tin (lossless): không tổn hao.
- Nén có mất mát thông tin (lossy) : Các độ đo sai số MSE, SNR (db).
Độ phức tạp
- Độ phức tạp về thời gian : Nén thời gian thực/ nén không yêu cầu thời gian
thực.
- Độ phức tạp về không gian, bộ nhớ.
25
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
JPEG Optimizer
Dựa trên kỹ thuật MagiCompress ™,
JPEG Optimizer có thể nén tới 100 hình
ảnh trong một lần mà không làm giảm chất
lượng. Điều này không chỉ tiết kiệm thời
gian mà còn hạn chế sử dụng băng phông
Đặc trưng:
- Cho phép nén và thay đổi kích thước
ảnh
- Hỗ trợ nén và thay đổi kích thước nhiều
hình ảnh cùng một lúc
- Có thể điều chỉnh chất lượng của ảnh
nén
- Thuật toán tối ưu hóa nhiễu ISO độc đáo
26
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
FileOptimizer
Đặc trưng:
- Ứng dụng miễn phí để nén và tối
ưu hóa hình ảnh
- Giao diện thân thiện với người
dùng
- Nhiều mức độ nén khác nhau
27
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
28
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
OptimiZilla
Các hình ảnh được thu nhỏ tới kích
thước tối ưu nhất có thể nhưng giữ
nguyên mức chất lượng yêu cầu. Cũng
như có thể tùy chọn xem trước để so
sánh mức chất lượng của hình ảnh cho
trước và sau khi nén
29
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
CompressJPEG
CompressJPEG sử dụng thuật toán
gần giống như Optimizilla. Nó hỗ trợ số
lượng ảnh lớn lên tới 20 bức ảnh JPEG
30
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
II. Các ứng dụng thực tế ảnh JPEG
31
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
II. Các ứng dụng thực tế ảnh JPEG
32
Phần III: Tìm hiểu về một số công cụ, phần mềm nén ảnh đang
có hiện nay và các ứng dụng của công nghệ nén ảnh JPEG.
II. Các ứng dụng thực tế ảnh JPEG
33
THANK YOU !
34