Tải bản đầy đủ (.pdf) (41 trang)

Bài Giảng Xử Lý Ảnh_Chương 7: Nén Ảnh.

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.85 MB, 41 trang )


Chương 7: Nén Ảnh




245
Chương 7

NÉN ẢNH
7.1 Tổng quan về nén dữ liệu ảnh
7.1.1 Một số khái niệm
Ảnh sau khi thu nhận thường có kích thước và dữ liệu rất lớn nhất là trong
các ảnh viễn thám, ảnh phong cảnh…nên ta cần nén ảnh ñể giảm bớt các dữ liệu
dư thừa không cần thiết ñể việc xử lý ñược nhanh hơn.
 Khái niện ảnh BMP (Bitmap)
Ảnh BMP sử dụng 3 bytes cho các pixel của ba màu R, G, B. ðược mô tả
2
24
=16.7 triệu màu. Kích thước file = 3*chiềudài*chiều cao, sẽ rất lớn, chúng ta
có thể sử dụng ít hơn 8 bit cho một màu, nhưng chúng ta cần lưu với loại màu
khác. Có thể thực hiện tốt với kiểu ZIP, RAR, …

Hình 7.1 Ảnh BMP

Chương 7: Nén Ảnh




246


 Khái niện ảnh GIF (Graphics Interchange Format)
Ảnh GIF sử dụng 256 màu từ 24-bit màu trong không gian RGB, nếu ảnh
chứa hơn 256 màu thì cần xử lý lại ñể giảm bớt số lượng màu ñi. Một số ảnh ñơn
giản như ảnh ñồ họa loại kết cấu, biểu tượng thì ít màu hơn ảnh phong cảnh. Sử
dụng nén ảnh có suy hao (LZW)

Hình 7.2 Ảnh GIF
 Khái niện ảnh JPEG (Joint Photographic Experts Group)
ðây là loại ảnh thường dùng nhất. Kiểu ảnh này có kích thước file giảm
10% so với ảnh BMP tùy theo chất lượng. Không giống kiểu GIF, JPEG phù hợp
cho ảnh cảnh quan hơn ảnh kết cấu hay ảnh biểu tượng.

Chương 7: Nén Ảnh




247

Hình 7.3 Ảnh JPEG
 Dữ liệu nén (Data Compression):
Là dữ liệu ñược giảm lượng thông tin dư thừa trong ảnh gốc, còn gọi là mã
hoá ảnh gốc.
 Tỉ lệ nén (Compresion rate):
Tỉ lệ nén ñược ñịnh nghĩa như sau
ỉệ
ướữệốốượướ
ướữệượốượ

(7.0)


ố lần nén và tốc ñộ nén ñược ñịnh nghĩa:
(7.1)
7.1.2 Các loại dư thừa dữ liệu
 Phân bố ký tự:

 
= = •
 
1 1 2
2 1
laàn ; 100%[%]
n n n
C R
n n

Chương 7: Nén Ảnh




248
Trong một dãy ký tự, có một số ký tự có tần suất xuất hiện nhiều hơn so với
các dãy khác. Các dãy ký tự có tần suất cao ñược thay bởi một từ mã nhị phân
với số bit nhỏ; ngược lại các dãy có tần suất xuất hiện thấp sẽ ñược mã hóa bởi từ
mã có nhiều bit hơn. ðây chính là bản chất của phương pháp mã hóa từ hóa
Huffman.
 Các ký tự lặp lại:
Một ký hiệu (bit “0” hoặc “1”) lặp lại nhiều lần. Có thể thay dãy ký tự lặp
bằng dãy mới có 2 thành phần (số lần lặp và ký hiệu mã). ðây là ñặc tính của mã

hoá loạt dài RLC (Run Length Coding).
 Những mẫu sử dụng tần suất:
Có thể mã hoá các ký tự có tần suất cao bằng từ mã nhị phân có số bit nhỏ.
Còn các ký tự có tần suất thấp bằng từ mã có số bit lớn hơn. ðây là ñặc tính của
phương pháp mã hoá Huffman, LZW (Lampel -Ziv-Welch), LZ77, LZ78
 Dư thừa vị trí:
Các giá trị dữ liệu giống nhau xuất hiện ở các hàng khác nhau. Có thể thay
thế bằng cách chỉ lưu trữ vị trí hàng và cột của cùng 1 giá trị. Do ñó có thể dự
ñoán trước sự xuất hiện giá trị dữ liệu ở các vị trí khác
7.1.3 ðộ dư thừa
a. Entropy của nguồn tin:
ðộ dư thừa các pixels do các pixel trên ảnh (hay nhiều ảnh liên tiếp) có ñộ
tương quan cao với nhau sẽ có ñộ dư thừa giữa các pixels:
o ðộ dư thừa giữa các pixels trong 1 frame: là ñộ dư thừa không gian (spatial
redundancy), dư thừa trong khung (intraframe redundancy).
o ðộ dư thừa giữa các pixels trong các frame liên tiếp: Dư thừa thời gian
(temporal redundancy), hoặc ñộ dư thừa giữa các frame (interframe
redundancy)
b. ðộ dư thừa giữa các pixels (ảnh tĩnh)

Chương 7: Nén Ảnh




249
ðối với ảnh tĩnh ñộ dư thừa giữa các pixel khi thực hiện cũng cần ñược
quan tâm ñến, việc nén ảnh bằng cách loại bỏ dư thừa giữa các pixel trong ảnh
tĩnh nhằm:
o Bỏ bớt các thông tin về màu so với thông tin chói (mắt người nhạy với thông

tin chói hơn).
o Bỏ bớt các thành phần tần số không gian quá cao (nằm ngoài vùng nhìn thấy
của mắt).
o Giảm ñộ phân giải không gian của ảnh. Cắt bớt ảnh.
o Bỏ bớt các thông tin ít quan trọng (số lượng màu biểu diễn ảnh (ảnh màu 24
bit có 16,7 triệu màu, ảnh màu 15 bit, ảnh màu 8 bit có 256 màu), ảnh ñen
trắng, ảnh nhị phân): Giảm ñộ phân giải màu và chói.
c. ðộ dư thừa của ảnh ñộng
ðối với ảnh ñộng ñộ dư thừa gồm ñộ dư thừa không gian và thời gian, khi
thực hiện cũng cần ñược quan tâm ñến, việc nén ảnh bằng cách loại bỏ dư thừa
không gian trong ảnh ñộng nhằm:
o Bỏ bớt ñộ dư thừa không gian (spatial redundancy): Các pixels lân cận trong
không gian có ñộ tương phản cao.
o Bỏ bớt ñộ dư thừa thời gian (temporal redundancy): Các ảnh liên tiếp nhau
có ñộ tương quan cao
o ðộ dư thừa phổ (spectral redundancy): Các thành phần màu (biểu diễn từng
pixel) có ñộ tương quan cao.
o ðộ dư thừa thống kê (statistical redundancy) các ký hiệu (symbol) xuất hiện
trong dòng bit với xác suất xuất hiện không ñồng ñều.
o ðộ dư thừa tâm lý thị giác (psychovisual redundancy): Các thông tin không
phù hợp với thị giác, giảm thành phần tần số không gian cao (giảm ñộ nét)
o Giảm ñộ phân giải không gian (giảm số lượng pixels trên ảnh, → giảm kích
thước ảnh).

Chương 7: Nén Ảnh




250

o Giảm bớt ñộ phân giải màu: Giảm số bit biểu diễn màu (giảm số thành phần
màu biểu diễn 1 pixel,→ màu sắc kém trung thực).
d. Nén sẽ tạo ra sái dạng nhân tạo (artifact)
Khi thực hiện nén thường sẽ tạo ra các sái dạng do thực hiện gọi là sái dạng
nhân tạo như sau:
o Tạo hiệu ứng khối (các ô lưới vuông trên ảnh)
o Tạo ñường xiên răng cưa.
o Tạo nhiễu.
o Tạo lệch vị trí giáp nối các phần ảnh trong 1 ảnh (do có các chuyển ñộng
nhanh của các ñối tượng).
e. Nén video phụ thuộc vào nội dung
Có hai trường hợp nén video phụ thuộc vào nội dung:
o Nén video tốc ñộ bit thay ñổi nên chất lượng thay ñổi theo nội dung.
o Nén video tốc ñộ bit không ñổi còn chất lượng không ñổi theo nội dung.
7.1.4 Mục ñích của việc nén tính hiệu
Nén tín hiệu ảnh có hai mục ñích chính ñó là làm:
o Giảm dung lượng lưu trữ.
o Giảm băng thông (bandwidth) truyền dẫn.
7.1.5 Bản chất của việc nén tín hiệu.
Thông tin của 1 tín hiệu gồm 2 phần:
o Phần lượng tin (entropy), hay ñộ bất ñịnh (uncertainty)
o Phần dư thừa (redundancy)
Phần entropy ñược chia thành 2 phần:
+ Thông tin không phù hợp (irrelevancy)
+ Thông tin cốt lõi của entropy.






7.2 Các loại nén
ảnh dữ
7.2.1 Các loại nén
Trong
ảnh nén (
số nén cao chất lư
ợng
(Ví dụ nén 40%)
 Nén không t
ổn hao (l
 Nén có t
ổn hao (lossy
hợp v
à không quan tr
7.2.2 Cơ s
ở toán học về né
X: ngu
ồn tín hi
các biến ngẫu
nhiên X
hiệu A chứa 1 lư
ợng h
 Hai mô hình toán h
ọc
o Ngu
ồn không nhớ
o Ngu
ồn Markov

251

ảnh dữ liệu

nén (Ảnh text)
: Khi nén có thể ảnh hư
ởng ñến
ợng ảnh sẽ thấp

Hình 7.4 Nén ảnh Text
hao (lossless compression): Loại d
ư thừa
(lossy compression): Loại d
ư thừa và 1 ph
ần th
uan tr
ọng.
Hình 7.5 Sơ ñồ hệ thống nén ảnh
học về nén dữ liệu

tín hiệu có bộ kí hiệu A = 1 quá tr
ình ng
ẫu n
hiên X = x
1
, x
2
, x
3
,… = x
i
; i =1, 2,…),

A = {a
ợng hữu hạn M ký hiệu

ọc cho nguồn tín hiệu

ng nhớ rời r
ạc (discrete memoryless source)
rkov
- K
Chương 7: Nén Ảnh
g ñến chữ, ñặc biệt khi tỉ

ần thông tin không ph
ù

ẫu nhi
ên rời rạc (chuỗi
= {a
1
, a
2
,…, a
M
}, bộ ký

Chương 7: Nén Ảnh





252
o Nguồn không nhớ rời rạc: là nguồn trong ñó các ký hiệu liên tiếp thì ñộc lập
thống kê với nhau, ñặc trưng bằng xác suất:
p(a
i
)=p
i
;i = 1, 2,…,M
j
(7.2)

p
1
+ p
2
+…+ p
M
= 1
o Nếu 1 ký hiệu có xác suất xuất hiện nhìn thấy thì lượng tin ñược truyền di
trong biến cố ñó lớn.

( )
( )
 
 
= ∈
 
 
2
1

log ;
i i
i
I a a A
p a

(7.3)
+ I(a
i
) – lượng tin
+ p=1, → I=0
+ p=0, → I → ∞
o Entropy của nguồn không nhớ:
( )
( )
( )
∈ ∈
 
 
= =
 
 
∑ ∑
2 2
1
( )log ( )log
a A a A
H x p a p a p a
p a


(7.4)
o Phân bố xác suất càng không ñều, thì entropy của nguồn càng nhỏ. Nếu phân
bố ñều → H(x) → max.
 Phần lớn các nguồn tín hiệu thực tế có thể mô tả bằng quá trình ngẫu nhiên
Markov – K:
Xác suất xuất hiện 1 ký hiệu phụ thuộc vào giá trị K của ký hiệu ñó.
Entropy của nguồn Markov – K:
( )
− −
− −
=

1
( , , ). ( )
, ,
k
j i j k
S
j j k
X
H x p x x H
x x

(7.5)

Chương 7: Nén Ảnh





253

− − − − − −
=

1 1 1
( ) ( )log ( )
, , , , , ,
i
a A
j j k j j k j j k
a
X X
H p p
x x x x x x

(7.6)

S
k
- mọi thể hiện có thể của x
j-1
,…, x
j-k

7.2.3 Các ñịnh lý cơ bản về nén tín hiệu
a. ðịnh lý mã hoá không tổn hao (Shannon 1948)
o Tốc ñộ min. Khi mã hoá không tổn hao (nén không tổn hao) của 1 nguồn
không nhớ rời rạc X là:
min {R}=H(X) +

ε
bit/ ký hiệu
+ H(X) - entropy của nguồn
+ R - tốc ñộ bit
+ ε bit - số dương nhỏ (ε → 0)
o ðịnh lý này xác ñịnh cận dưới H(X) mà R ñạt ñược và vẫn bảo toàn thông
tin.
o ðối với nguồn không nhớ rời rạc, có thể ñạt cận dưới này bằng cách mã hoá
từng ký hiệu ñộc lập.
o ðối với nguồn có nhớ, cần mã hoá từng khối gồm N ký hiệu nguồn cùng 1
lúc ñể có R tiến dần ñến cận dưới H(X) (ví dụ 1 nguồn Markov M phải ñược
mã hoá mỗi lần M ký hiệu)
o Trong mã hoá có tổn hao (nén có tổn hao), R tối thiểu có thể ñạt ñược là 1
hàm theo ñộ méo cho phép. Quan hệ giữa R và méo ñược ñặc trưng bằng
hàm tốc ñộ bit- ñộ méo:
R=f(

)=R(

) ;
∆ ñộ méo (7.7)
b. ðịnh lý mã hóa nguồn





o T
ồn tại một ánh
R(∆) bit/ ký hi

ệu
∆. T
ốc ñộ bit thực
R

R(

)

Chú ý:
R(0) = H(X) (m
ñ
ạt R thấp nhất
Hình
7.3 Phương pháp
nén
7.3.1 Giới thiệu các ph
ươ
a. Dựa theo nguy
ên l
o H
ọ nén không tổ
o H
ọ nén có tổn hao
b. Dựa vào cách th
ức
o H
ọ nén không gia
gian.
o H

ọ nén bằng m
gốc.
c. D
ựa theo triết lý m
o H
ọ nén thế hệ 1:

254
t ánh xạ từ các ký hiệu nguồn sao cho ñối vớ
ệu ñủ ñể khối phục lại nguồn với

trung bì
it thực tế
phát ñạt
(X) (mã hoá không t
ổn hao) → Có th
ể thiết kế 1
nhất ñối với 1
∆ cho trước.
ình 7.6
ðồ thị mô tả tốc ñộ bit theo ñộ méo

nén
ảnh dữ liệu
ương pháp nén
ảnh
ên lý

ông tổn hao: sau khi giải nén, nén thu ñ
ư

ợc chín
tổn hao: sau khi giải nén, không thu ñ
ư
ợc chính
ức nén

ng gian: tá
c ñộng trực tiếp lên vi
ệc lấy mẫu ảnh
ng m
ã bi
ến ñổi: (transform coding) tác ñộng l
ý m
ã hoá
hệ 1:
Ví dụ lấy mẫu, gán từ mã
Chương 7: Nén Ảnh
ối với mỗi
∆ cho trước,
ng bì
nh có giá trị tiến về
(7.8)

ết kế 1 hệ thống nén ñể


c chính xác dữ liệu gốc.

chính xác dữ liệu gốc.


ẫu ảnh trong miền không
ộng l
ên sự biến ñổi ảnh





o H
ọ nén thế hệ 2:
d. Dựa theo A.
K. Jain
o Họ ph
ương pháp
o Họ ph
ương pháp
o Họ ph
ương pháp
o Họ ph
ương pháp
7.3.2
Phương pháp nén t
Các phương pháp nén
o
Mã hoá RLC (Ru
o
Mã hoá Huffman
o
Mã hoá LZW (Le
o Mã hoá kh

ối (Blo
o
Mã hóa thích ngh
o S
ử dụng DCT (19
a. Mã hóa RLC
 Nguyên tắc:
o Phát hi
ện một loạ
dãy bit lặp gọi l
à
o Sau ñó thay lo
ạt b
(ký t
ự lặp)), do ñó

255
hệ 2:
Dựa vào mức bảo hoà tỉ lệ nén.
Jain

pháp ñi
ểm
pháp d
ự ñoán
pháp dùng bi
ến ñổi
pháp
kết hợp (hybrid)
Hình 7.7 Các giai ñoạn nén ảnh

p nén th
ế hệ 1.
áp nén
ảnh thế hệ 1 thông dụng sau:
C (Run lengt
h coding)
ffman

W (Lempel
-Ziv-Wench)
ối (Block Coding)

ch nghi

CT (1974, Ahmed)

ột loạt d
ãy bit lặp (khi chiều dài dãy bit l
ặp lớn
à lo
ạt (run)
ạt bằng 1 chuỗi mới gồm 2 thông tin (chiều d
, do ñó ngắn h
ơn.
Chương 7: Nén Ảnh

ặp lớn h
ơn một ngưỡng),
chiều d
ài chuỗi và bit lặp


Chương 7: Nén Ảnh




256
 Thuật toán:
o Nếu chuỗi lặp > 255, ta tách thành 2 chuỗi: (1 chuỗi có chiều dài 255 + chuỗi
còn lại)
o RLC dùng mã hoá lưu trữ ảnh Bitmap: theo dạng PCX, BMP
o RLC có 2 phương pháp nhỏ:
+ Dùng chiều dài từ mã cố ñịnh
+ Thích nghi kiểu Huffman.
 Dạng thức nén

Hình 7.8 Dạng thức nén loạt dài
+ Sc: Ký tự ñể nhận biết ký tự nén.
+ X: Dữ liệu nén
+ Cc: giá trị lặp lại của dữ liệu nén
 Ví dụ 1:

 Hiệu quả của mã hóa RLC






 Ví dụ 2:

23W 4B 6W 1B 2W 1
Hay ñơn gi
ản lại: 23 4
Chiều dài mã ch
ạy ñ
 Ví dụ 3:






=
1
11
3
11
4
31
1
21
I
Ảnh: 24 pixels
o Bi
ểu diễn giá trị

257
Hình 7.9 ðặc tuyến tỉ lệ nén
2W 1B 6W 4B 9W 1B 9W 1B 6W 4B 23W


ại: 23 4 6 1 2 1 6 4 9 1 9 1 6 4 23

ạy ñ
ơn giản: 15 ký tự






331
1
533
3
444
4
111
1

iá trị
ảnh gốc:
Chương 7: Nén Ảnh




Chương 7: Nén Ảnh





258
1 2 1 1 1 1 1 3 4 4 4 4 1 1 3 3 3 5 1 1 1 1 3 3 = (24 giá trị)
o Biểu diễn mã loạt dài:
(1,1) (2,1) (1,5) (3,1) (4,4) (1,2) (3,3) (5,1) (1,4) (3,2)
o Số ký hiệu mã loạt dài:
1 1 2 1 1 5 3 1 4 4 1 2 3 3 5 1 1 4 3 2 = (20 giá trị)
b. Mã hóa Huffman: (dựa vào mô hình thống kê)
 Nguyên tắc:
Tính tần suất xuất hiện các ký tự (bằng cách duyệt tuần tự tập gốc từ ñầu
ñến cuối).
 Gán ký tự từ mã:
Gán các ký tự có tần suất cao bằng 1 từ mã ngắn, và ký tự có tần suất thấp
bằng 1 từ mã dài → giảm chiều dài trung bình của mã bằng chiều dài biến ñổi.

 Thuật toán:

αα
α) Nén
o Duyệt tập gốc tuần tự ñể xây dựng bảng mã. Sau ñó, sắp xếp bảng mã theo
thứ tự tần suất tăng dần.
o Mã hoá: duyệt bảng tần suất từ dưới lên trên: ghép 2 phần tử có tần suất thấp
nhất thành 1 (phần tử này có tần suất bằng tổng 2 tần suất thành phần). Quá
trình này lặp lại cho ñến khi bảng chỉ còn 1 phần tử. Quá trình này gọi là cây
Huffman (các bit dữ liệu/ ký tự là nút lá). Sau khi tạo xong cây, tiến hành gán
mã cho các nút lá, mã hoá
o Mỗi lần xuống bên trái, ta thêm 1 bit “0” vào từ mã.
o Mỗi lần xuống bên phải, ta thêm 1 bit “1” vào từ mã.
→ Chỉ có giá trị mã là thay ñổi, còn tổng chiều dài thì không ñổi. Ghi lại giá
trị từ mã tính từ nút ñến các ký hiệu


ββ
β) Giải nén: thực hiện ngược lại khi nén

Chương 7: Nén Ảnh




259
o Bảng mã khi nén ñược giữ lại cùng với dữ liệu nén trong cấu trúc ñầu.
o Mã của ký tự là duy nhất, không có mã nào là bắt ñầu của mã khác (trong
Huffman). Khi ñọc tập nén từng bit từ ñầu ñến cuối, có thể duyệt cây mã cho
ñến 1 lá (tức là ký tự ñã ñược giải nén)
 Ví dụ 1:
Mã nhị phân: Mỗi ký hiệu ñược mô tả bằng chuỗi nhị phân riêng.
o Một tập dữ liệu có thể ñược mô tả theo 2 cách
Kí hiệu
a b c d e f
Tần suất (%)
45 13 12 16 9 5
Mã cố ñịnh
000 001 010 011 100 101
Mã thay ñổi
0 101 100 111 1101 1100
o Mã cố ñịnh có chiều dài là:
L
F
=(45x3)+(13x3)+(12x3)+(16x3)+(9x3)+(5x3)
=3x100=300 bit

o Mã thay ñổi có chiều dài là:
LV=(45x1)+(13x3)+(12x3)+(16x3)+(9x4)+(5x4)
=232 bit
 Một vài chú ý:
o Mã 001011101 (Từ mã: a=0, b=00, c=01, d=11.)
Vị trí cắt? 00 có thể ñược hiểu aa hay b.
o Mã cố ñịnh của 0011 là: 0, 00, 001 và 0011.
o Mã cố ñịnh: Nếu không có từ mã ñược cố ñịnh thì cố ñịnh thay thế bằng từ
mã khác.





 Ví dụ 2:
o Mã hóa và gi
ải m
+ Mã
hóa: abc =
+ Giải m
ã: 001
Kí hiệu
Tần suất (%)

Mã cố ñịnh
Mã thay ñổi
o Cây ñư
ợc biểu di
H
o Cây ñư

ợc biểu di

260
ải m
ã: Sử dụng từ mã trong bảng sau ñể m
ã h
: abc = 0.101.100 = 0101100
. (ch
ỉ khoảng cách
ã: 001011101 = 0.0.101.1101 = aabe

a b c d e

45 13 12 16 9
000 001 010 011
100
0 101 100 111
1101
iểu diễn chiều d
ài từ mã cố ñịnh
Hình 7.10 Cây nh
ị phân (mã cố ñịnh)
iểu diễn chiều d
ài từ mã thay ñổi
Chương 7: Nén Ảnh
ã hóa và gi
ải mã
g cách giữa các từ m
ã)
f

5
100
101
1101
1100







 Ví dụ 3: các bư
ớc vẽ
o Mã ngu
ồn gồm 6
o T
ần suất xuất hiệ
o Xây d
ựng cây v
gi
ảm dần (tính từ
o Sau ñó ta gán t
ừ m
mã như b
ảng. Cá
diễn nhất v
à ngư

261

Hình 7.11 Cây Huffman (mã
thay ñổi)
ớc vẽ cây Huffman

gồm 6 ký hiệu: a
1
, a
2
, a
3
, a
4
, a
5
, a
6

ất hiện (
xác su
ất): số lần các ký hiệu xuất hiện t
cây v
à sau m
ỗi lần kết hợp hai giá trị ta lại sắp
tính từ t
rên xuống theo cột) ta ñược bảng
ừ m
ã cho cây Huffman theo như qui ñ
ịnh: t
ng. Các giá trị có tần suất xuất hiện nhiều sẽ c
à ngư

ợc lại.
Chương 7: Nén Ảnh

t hiện tr
ên ảnh.
lại sắp xếp theo tần suất

ịnh: ta có ñ
ược chuỗi từ
u sẽ có từ m
ã ít bit biểu





 Ví dụ 4: V
ẽ cây Huffm
A có t
ần suất 0,387;
0,129; E có t
ần suất 0
o Bố trí và v
ẽ cây H
o Tạo bảng mã b
ằn
hiệu

262
Huffman v

à gán từ mã cho các ký hiệu sau
0,387; B có tần suất 0,194; C có tần suất 0,1
suất 0,129

cây Huffman theo giá trị cho tr
ước
Hình 7.12 Cây Huffman cho ví dụ 4

ằng cách ghi nhận giá trị tr
ên các nhánh t
Chương 7: Nén Ảnh

ất 0,161; D có tần suất


hánh t
ừ nút ñến từng ký

Chương 7: Nén Ảnh




263
Ký hiệu Từ mã
A 0
B 111
C 110
D 100
E 101

c. Mã hóa LZW
Dùng cho các file nhị phân: (nén văn bản, ảnh ñen trắng, ảnh ña mức xám),
là chuẩn nén cho các dạng ảnh GIF, TIFF.
 Nguyên tắc:
Xây dựng 1 từ ñiển lưu các mẫu có tần suất cao trong ảnh (từ ñiển: tập hợp
các cặp từ vựng và nghĩa; Từ vựng: các từ mã sắp xếp theo 1 trình tự; Nghĩa:
chuỗi con trong dữ liệu ảnh)
 Thuật toán:
Từ ñiển ñược xây dựng cùng ñồng thời với quá trình ñọc dữ liệu
o Thuật toán liên tục tra cứu và cập nhật từ ñiển sau mỗi lần ñọc 1 ký tự vào.
Bộ nhớ giới hạn ñến 4046 = 2
12
giá trị các từ mã (ñộ dài lớn nhất của từ mã
là 12 bit).
o Trong ảnh xám 8 bit, thì 256 bit ñược ñánh dấu từ 0 ñến 255 mức xám ñưa
vào một entry.
o Một pixel có tần suất không có trong từ ñiển sẽ ñược ñánh dấu và ñưa vào
entry mới.
o Ví dụ tần suất từ 255-255 có thể ñánh dấu vào entry 256 nhưng vị trí ñược
thay thế vẫn nằm trong mức xám từ 0-255
 Cấu trúc chung

Chương 7: Nén Ảnh




264

Hình 7.13 Cấu trúc của phương pháp mã hóa từ ñiển

 Cách chèn mẫu không có trong từ ñiển
o Nếu chỉ có một mẫu không có trong từ ñiển thì chèn vào (0,Ký tự).
o Nếu có nhiều mẫu không có trong từ ñiển thì chèn vào (chỉ số cố ñịnh trong
từ ñiển, mẫu ký tự sau ñó).
o Nếu một ký tự vào hay mẫu ra cuối cùng có trong từ ñiển thì (chỉ số cố ñịnh
trong từ ñiển, ).
 Ví dụ 1
o Mã hóa chuỗi ABBCBCABABCAABCAAB sử dụng thuật toán mã hóa từ
ñiển

o Mã nén ngõ ra: (0,A)(0,B)(2,C) (3,A)(2,A)(4,A) (6,B)

Chương 7: Nén Ảnh




265
o Các bước chèn từ mã
1. A thì không có trong từ ñiển nên chèn vào
2. B thì không có trong từ ñiển nên chèn vào
3. B ñã có trong từ ñiển.
BC thì không có trong từ ñiển nên chèn vào
4. B ñã có trong từ ñiển.
BC ñã có trong từ ñiển.
BCA thì không có trong từ ñiển nên chèn vào
5. B ñã có trong từ ñiển.
BA thì không có trong từ ñiển nên chèn vào
6. B ñã có trong từ ñiển.
BC ñã có trong từ ñiển.

BCA ñã có trong từ ñiển.
BCAA thì không có trong từ ñiển nên chèn vào
7. B ñã có trong từ ñiển.
BC ñã có trong từ ñiển.
BCA ñã có trong từ ñiển.
BCAA ñã có trong từ ñiển.
BCAAB thì không có trong từ ñiển nên chèn vào
 Ví dụ 2:
o Giải mã chuỗi (0, A) (0, B) (2, C) (3, A) (2, A) (4, A) (6, B)

Chương 7: Nén Ảnh




266

o Chuỗi ñược giải nén là: ABBCBCABABCAABCAAB
d. Mã hóa khối: (Block coding)
 Nguyên tắc:
Dùng mã Huffman cho từng khối con (=gán cho mỗi từ khối bằng 1 từ mã
nhị phân). Các từ mã gán cho khối kxl là “0” bằng các ñiểm trắng; các từ mã gán
cho các khối kxl khác gồm kxl bit màu (“1” cho ñen, “0” cho trắng) ñi tiếp sau 1
bit tiền tố “1”
e. Mã hóa phương pháp thích nghi: Mã hóa Huffman thích nghi (Adaptive
Huffman Coding)
o Thuật ngữ “thích nghi” thường dùng ñể chỉ sự thích hợp của các từ mã theo
một nghĩa nào ñó. Như trong phương pháp RLC ở trên, thay vì dùng chiều
dài từ mã cố ñịnh m bit, người ta dùng chiều dài biến ñổi và trên cơ sở ñó có
phương pháp RLC thích hợp.

o Mã ñoạn (khối kxl) tự ñộng thích nghi với tác ñộng cục bộ.
o Mã ñoạn khối (kxl) tự ñộng thích nghi một chiều

Chương 7: Nén Ảnh




267
o Mã khối (kxl) tự ñộng thích nghi 2 chiều
o Khi sử dụng phương pháp mã hóa Huffman sẽ không ñược nén tốt nếu ta
không quan tâm ñến ñặc tính của ký hiệu trong các file nén.
+ Vì thế sẽ làm tăng số bit mã hóa
+ Nếu thông tin này không thay ñổi khi nén thì nó yêu cầu thực thi 2 phần
 Phần 1: Tìm tần suất của mỗi ký hiệu và cấu trúc trên cây Huffman
 Phần 2: Nén file
o Ý tưởng chính là xây dựng cây Huffman tối ưu ñể phần tin thấy ñược rõ ràng
và dễ nhận ra nó khi cần thiết và ñồng thời ñể duy trì ñặc tính tối ưu của nó.
o Mã hóa Huffman thích nghi ñược Faller (1973) và Gallager (1978) thực hiện
ñầu tiên
o Knuth (1985) kết hợp và cải tiến thuật toán nên thuật toán có tên là thuật toán
FGK.
o Sau ñó (1987) một phiên bản mới của thuật toán thích nghi Huffman ñược
mô tả bởi Vitter nên ñược gọi là thuật toán V.
o Một ñiểm vượt trội hơn của mã hóa Huffman thích nghi so với mã hóa
Huffman cố ñịnh là ñôi khi một phần thông tin của phương pháp mã hóa
Huffman thích nghi cố ñịnh có dữ liệu nén lớn hơn lúc chưa nén.
o Như vậy chúng ta ñánh giá thế nào về việc giảm dư thừa tối thiểu của dữ liệu
và tính tối ưu của thuật toán Huffman cố ñịnh
 ðặc tính của phương pháp

o ðặc tính cơ bản của thuật toán FGK là thuộc tính giống nhau (Gallager 1978)
o Một mã nhị phân cố ñịnh ñược chấp nhận là một mã Huffman nếu mã của
cây có cùng thuộc tính

Chương 7: Nén Ảnh




268
o Trong thuật toán FGK, cả mã hóa và giải mã luôn ñược duy trì ñể thay ñổi
cây. Mỗi ký hiệu mã hóa ñược gắn một từ mã cho ký hiệu ñó trên cây hiện
tại và sau mỗi lần ta cập nhật lại cây ñó
o Vấn ñề là ñể thay ñổi cây tối ưu một cách nhanh chóng từ ký hiệu t sang ký
hiệu t+1.
o Nếu chúng ta ñơn giản ñộ lớn trọng số ký hiệu thứ t+1 của tất cả các ký hiệu
ban ñầu, thì các ñặc tính giống nhau có thể không dài hơn. Từ ñó chúng ta
mới xây dựng cây.
 ðể giải quyết có thể mô tả quá trình này ta thực hiện qua hai giai ñoạn
o Giai ñoạn ñầu: Biến ñổi cây Huffman gốc thành cây Huffman khác phù hợp
cho ký hiệu t, mà quá trình gia tăng một trọng số có thể áp dụng ñúng
o Giai ñoạn 2: Gia tăng trọng số, mô tả lại như giai ñoạn ñầu
Giai ñoạn ñầu tiên ñược bắt ñầu tại lá của ký hiệu thứ t+1. Chúng ta hoán
ñổi nút này cho các nhánh con nhưng không thay ñổi số của nút, còn thành phần
nút lớn nhất có trọng ñược giữ nguyên. Nút mới hiện tại sẽ là nút cha của nút sau
ñó quá trình ñược lặp lại ñến khi hoàn chỉnh lại cây thì dừng.
f. Mã hóa phương pháp DCT: (Discrete Cosin Transform 1974, Ahmed)
Mã hóa dùng biến ñổi cosin rời rạc thường sử dụng trong nén ảnh JPEG.
Nguyên tắc chính của phương pháp mã hoá này là biến ñổi tập các giá trị pixel
của ảnh trong miền không gian sang một tập các giá trị khác trong miền tần số

sao cho các hệ số trong tập giá trị mới này có tương quan giữa các ñiểm ảnh gần
nhau nhỏ hơn.
 DCT 1 chiều:
Thời gian thực hiện chỉ bằng ½ thời gian trong phép biến ñổi Fourier tĩnh
ε

=
 
Π +
=
 
 

1
0
2
(2 1)
( ) ( )cos
2
N
k
n
n k
X k x n
N N

(7.9)







ε


=



1
;
2
0;
k
x(n): chuỗi dữ liệu

 DCT nhanh: (FCT

o Ý tư
ởng: phân nh
o FCT không th
ực
hoán v
ị của x(n))
Hình
 Ví dụ 1: số ñi
ểm cần
o S
ắp xếp lại dữ liệ

=
− −
'( ) (
'( )
x i X
x N i l


269
=
= −
; 0
; [1, 1]
k
k N

vào


fast cosine Transform)
hân nhỏ d
ãy tín hiệu vào cho ñến khi còn 1 ph
ần
ực hiện tr
ên chuỗi vào x(n), mà th
ực hiện tr
x(n)).

ình 7.14 Khôi ph
ục ảnh dùng biến ñổi DCT


cần tính FCT l
à N = 2M
dữ liệu v
ào x(n):
= −
= + = −
(2 ) ; 0,1, , 1
2
) (2 1) ; 0,1, , 1
2
N
X i i
N
l X i i

Chương 7: Nén Ảnh
(7.10)

ần tử

hiện tr
ên dãy x’(n) (bằng



(7.11)

×