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

Tiểu luận môn xử lý ảnh nén ảnh bằng wavelet

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 (581.02 KB, 10 trang )

Thực hành Phân tích và xử lý ảnh
NÉN ẢNH BẰNG WAVELET
Bùi Bá Nguyên - Nguyễn Lâm Ngọc Thư - Vy Đức Tuấn
Ngày 16 tháng 12 năm 2010
1 GIỚI THIỆU CHUNG VỀ NÉN ẢNH
Một bức ảnh thì chứa nhiều thông tin khác nhau, vì thế nếu kích thước ảnh lớn
thì dung lượng cần lưu trữ lớn, thời gian gửi hay sao chép lâu Vì thế, kĩ thuật
nén ảnh giúp ta nén một bức ảnh bằng cách lưu trữ các thông tin cần thiết, đủ
để tái tạo lại bức ảnh. Một bức ảnh thường được biểu diễn dưới dạng ma trận
các giá trị xám. Nén ảnh là giảm lượng dữ liệu biểu diễn trên một bức ảnh số,
dựa trên nguyên lý giảm độ dư thừa dữ liệu. Để nén hình ảnh thì phải khai thác
dư thừa dữ liệu, ví dụ vùng màu đồng nhất hay ít có sự thay đổi giữa các giá
trị xám. Những hình ảnh có những vùng màu đồng nhất lớn thì sẽ có dư thừa
lớn và ngược lại, những hình ảnh có sự thay đổi lớn giá trị xám sẽ ít dư thừa và
ngược lại.
Quá trình nén ảnh gồm 2 quá trình chính : mã hóa và giải mã. Có nhiều
phương pháp nén khác nhau.
Dựa vào nguyên lý nén :
• Nén chính xác.
• Nén mất mát thông tin nhưng vẫn đáp ứng được yêu cầu.
Dựa vào cách thực hiện nén :
• Nén dữ liệu trong miền không gian.
• Sử dụng các phép biến đổi.
2 GIỚI THIỆU VỀ WAVELET
2.1 Cơ sở lý thuyết của Wavelet
Cũng giống như biến đổi Fourier, biến đổi Wavelet cũng dựa trên sự phân tích
một tín hiệu ban đầu thành các tín hiệu con. Thay vì dùng cơ sở trực chuẩn cổ
điển là các hàm tuần hoàn thì biến đổi Wavelet được xây dựng dựa trên cơ sở
1
NÉN ẢNH BẰNG WAVELET
Nhóm sinh viên thực hiện :


Nguyễn Thi Linh Chi
Vũ Thị Mai Hoa
Lê Thị Hồng Nhung
Nguyễn Thị Sen
Lớp : THC - K52
trực chuẩn khác. Cơ sở trực chuẩn này được sinh ra từ một hàm nhân tỉ lệ hoặc
một hàm wavelet duy nhất, mô tả tín hiệu ban đầu mang tính địa phương nhiều
hơn. Đối với phân tích ảnh số thì nhờ biến đổi wavelet, chúng ta có thể xem xét
hình ảnh ban đầu theo quan điểm thô (tần số thấp) và chi tiết (tần số cao), có
thể xem xét ở một địa phương hoặc toàn cảnh.
Cụ thể, nếu {ψ
j,k
} là một họ trực chuẩn trong L
2
(R). Khi đó hàm f ∈
L
2
(R)có thể được biểu diễn như sau :
f(x) =

j

k
a
j,k
ψ
j,k
(x) (1)
trong đó các hệ số a
j,k

=< ψ
j,k
, f >.
2.2 Tại sao phải dùng khai triển Wavelet?
• Hệ thống wavelet bao gồm các hàm cơ sở, do đó chúng ta có thể biểu diễn
hàm ban đầu theo hệ thống cơ sở mà ta đã chọn.
• Khai triển Wavelet biểu diễn một hàm mang tính chất địa phương. Điều
đó có nghĩa là, năng lượng ban đầu của ảnh có thể biểu diễn với một vài
hệ số a
j,k
.
• Việc tính toán hệ số thực hiện hiệu quả hơn so với việc tính toán hệ số của
biến đổi Fourier, với độ phức tạp khoảng O(N) hay O(Nlog(N )), tương
đương với phép biến đổi Fourier nhanh(DFT).
Có hai cách xây dựng khai triển Wavelet :
• Dựa trên hàm wavelet sinh (mother wavelet).
• Xây dựng theo kĩ thuật đa phân giải dựa trên hàm nhân tỉ lệ.
2.3 Giới thiệu về hàm Wavelet sinh và hàm nhân tỉ lệ
Hàm wavelet sinh Một hàm ψ
j,k
∈ L
2
(R) có thể xây dựng thành một hệ
thống wavelet dựa trên phép nhân tỉ lệ và tịnh tiến.
ψ
j,k
= 2
−j/2
ψ(2
−j

x − k)
Khi đó thì hàm ψ được gọi là wavelet sinh hay wavelet mẹ (mother wavelet)
Hàm nhân tỉ lệ Cho ϕ là một hàm trong L
2
(R), ta định nghĩa họ hàm nhân tỉ
lệ bằng cách tịnh tiến :
ϕ
k
(x) = ϕ(x − k), k ∈ Z.
Gọi V
0
là bao đóng của không gian sinh bởi họ {ϕ
k
}. Khi đó với mọi hàm
f ∈ V
0
có thể biểu diễn dưới dạng tổ hợp f =

k
a
k
ϕ
k
.
2
Không gian này có thể tăng hoặc giảm bằng cách tịnh tiến và nhân tỉ lệ. Gọi
ϕ
j,k
là họ hàm được xây dựng bằng cách như trên. Ta có :
ϕ

j,k
= 2
−j/2
ϕ(2
−j
x − k) = 2
−j/2
ϕ
k
(2
−j
x).
Nếu đặt V
j
là bao đóng của không gian con sinh bởi họ {ϕ
k
(2
−j
x)}, thì với
mọi i > j thì V
i
⊂ V
j
. Ta nhận thấy dãy {V
j
} là dãy các không gian con (của
L
2
(R)) lồng vào nhau. Nếu dãy {V
j

} thỏa một số tính chất như đầy đủ, bất biến
qua phép nhân tỉ lệ và phép tịnh tiến, thì tạo thành một phân tích đa phân
giải. Khi đó, một phần tử trong không gian con này là phiên bản được nhân tỉ
lệ của các phần tử ở không gian con kế tiếp.
Vì thế, hàm ϕ(x) trên cũng có thể được biểu diễn như sau
ϕ(x) =

n
s

2ϕ(2x − n), (2)
với {g(n)} là một dãy trong R, giá trị

2 ở trên để bảo toàn chuẩn của các hàm
nhân tỉ lệ.
Ví dụ : Hàm Haar
g(x) =

1, x ∈ [0, 1]
0
Khi đó, hàm ϕ(x) = ϕ(2x) + ϕ(2x − 1), hay g
0
(0) =
1

2
, g(1) =
1

2

Vấn đề rời rạc Để tính toán được biến đổi Wavelet bằng máy tính thì dữ liệu
cần phải được rời rạc hóa. Một tín hiệu liên tục có thể được lấy mẫu để có ghi
được một giá trị sau một khoảng thời gian rời rạc. Với biến đổi Fourier thì tỉ lệ
mẫu là đồng nhất, nhưng đối với Wavelet thì tỉ lệ mẫu có thể được thay đổi khi
tỉ lệ (scale) kéo dài thay đổi. Tỉ lệ kéo dài lớn thì tỉ lệ mẫu nhỏ. Tỉ lệ mẫu mới
N
2
có thể được tính từ tỉ lệ mẫu gốc N
1
bằng công thức sau
N
2
=
s
2
s
1
N
1
, (3)
với s
1
, s
2
là 2 tỉ lệ kéo dài.Mỗi tỉ lệ kéo dài có một tỉ lệ mẫu khác nhau.
Sau khi lấy mẫu, ta dùng DWT, tuy nhiên điều này vẫn có thể gây ra tốc độ
tính toán chậm. Nguyên nhân là các thông tin tính toán bằng công thức wavelet
đòi hỏi thời gian tính toán lớn. Vì thế, biến đổi Wavelet rời rạc được đề ra để
khắc phục tình trạng trên.
2.4 Biến đổi Wavelet rời rạc - DWT

DFT cung cấp đầy đủ thông tin và tổng hợp các tín hiệu một cách thuận lợi và
hiệu quả. Trong đó có sử dụng một số khái niệm về ngân hàng lọc (filter banks).
Những ngưỡng tần số (cutoff frequency) khác nhau thì sẽ phân tích tín hiệu ở
các tỉ lệ kéo dài khác nhau. Độ phân giải được thay đổi bằng cách bộ lọc, tỉ lệ
kéo dài được thay đổi bằng cách lấy mẫu và giảm mẫu. Một tín hiệu đi qua 2 bộ
lọc :
3
• Một bộ lọc băng thông cao thì tần số cao được giữ, tần số thấp bị loại bỏ.
• Một bộ lọc băng thông thấp thì tần số thấp được giữ, các tần số cao sẽ bị
loại bỏ.
Sau đó tín hiệu sẽ được phân chia thành 2 phần, phần chi tiết (ứng với tần
số cao) và phần xấp xỉ (ứng với tần số thấp). Những tín hiệu con (subsignal)
được tạo từ bộ lọc băng thông thấp sẽ có tần số cao bằng một nửa của bản gốc
(mẫu lưu giữ để tái tạo lại hình ảnh) . Các tín hiệu con xấp xỉ có thể được đặt
trong một ngân hàng lọc và lặp đi lặp lại cho tới khi quá trình kết thúc. Ý tưởng
này được biểu diễn như sau :
DFT thu được bằng cách gom các hệ số cuối cùng của tất cả các tín hiệu con
xấp xỉ và các tín hiệu con chi tiết. Nhìn chung thì các bộ lọc có tác dụng tách và
làm chi tiết hơn.
2.5 Tính bảo toàn và thu gọn năng lượng
Một tính chất quan trọng của phân tích wavelet và tính bảo toàn năng lượng.
Năng lượng của một bức ảnh được hiểu là tổng giá trị các ô pixel. Năng lượng
của biến đổi wavelet là tổng các hệ số của biến đổi. Mặc dù trong quá trình
phân tích wavelet thì một tín hiệu được chia thành tín hiệu con xấp xỉ và tín
hiệu con chi tiết nhưng vẫn đảm bảo được tính bảo toàn năng lượng. Tuy nhiên,
trong quá trình nén thì năng lượng có thể bị mất vì giá trị ngưỡng thay đổi thì
dẫn đến việc thay đổi hệ số của biến đổi, và do đó phiên bản nén bị mất năng
lượng.
Tính thu gọn năng lượng (compaction) mô tả năng lượng đã được nén thành
tín hiệu xấp xỉ trong quá trình phân tích wavelet. Tính chất này quan trọng khi

nén vì nhiều năng lượng được nén vào tín hiệu xấp xỉ ít hơn dẫn đến việc mất
năng lượng trong quá trình nén.
4
2.6 Biến đổi Haar
Biến đổi Haar là một trong những biến đổi wavelet mà có công thức tính cụ thể
:
c
00
=

1
0
v(x)ϕ
00
(x)dx (4)
d
kj
=

1
0
v(x)ψ
kj
dx (5)
trong đó ϕ
00
, ψ
kj
là các hàm cơ bản. Tại mức j= 0 thì :
• ϕ

00
được gọi là hàm tỉ lệ (scaling function).
• ψ
00
được gọi là wavelet sinh (mother wavelet).
Tại mức j = 1 ta có 2 wavelet là ψ
10
(t), ψ
11
(t). Tương tự tại j = 2 ta cũng
có 4 wavelet, tại j = 3 ta có 8 wavelet.
Ta có thể biểu diễn các hàm trên như sau :
Trong bài báo cáo của chúng tôi thì chỉ sử dụng biến đổi Haar để tách.
3 Biến đổi Wavelet rời rạc nhanh - FWT
Các hàm ϕ(x) và ψ(x) có thể biểu diễn dưới dạng tổ hợp tuyến tính sau :
ϕ(x) =

n
h
ϕ
(n)

2ϕ(2x − n). (6)
5
ψ(x) =

n
h
ψ
(n)


2ϕ(2x − n). (7)
trong đó :
• h
ϕ
: hệ số mở rộng, còn gọi là vector tỉ lệ.
• h
ψ
: cũng là hệ số mở rộng, còn được gọi là vector wavelet.
4 Sử dụng lý thuyết Wavelet trong xử lý ảnh
4.1 Những bước cơ bản trong xử lý ảnh bằng wavelet
Tổng quan thì bao gồm những bước chính sau :
1. Tính toán biến đổi wavelet 2 chiều của một ảnh.
2. Thay đổi hệ số của biến đổi.
3. Tính toán biến đổi ngược.
4.2 Phân tích Wavelet
Phân tích Wavelet được dùng để chia thông tin của bức ảnh thành các tín hiệu
xấp xỉ con và chi tiết. Những xấp xỉ con này biểu diễn khuynh hướng của giá trị
xám, và 3 tín hiệu con chi tiết biểu diễn chi tiết theo chiều ngang, chiều dọc và
chéo hoặc mức độ thay đổi chi tiết của bức ảnh, trong đó :
ψ
H
(x, y) = ψ(x)ϕ(y). (8)
ψ
V
(x, y) = ϕ(x)ψ(y). (9)
ψ
D
(x, y) = ψ(x)ψ(y). (10)
với :

• ψ
H
(x, y) là wavelet ngang.
• ψ
V
(x, y) là wavelet dọc.
• ψ
D
(x, y) là wavelet chéo.
Các bước phân tích wavelet được mô tả trong sơ đồ sau :
6
Sau đây là biễu diễn một ảnh đã được phân tích tại mức j=1,2
Ảnh ban đầu
7
Ảnh được phân tích ở mức j = 1
Ảnh đã được phân tích ở mức j = 2
• Hàm nhân tỉ lệ (scale function)
ϕ(x, y) = ϕ(x)ϕ(y). (11)
• Mỗi hàm 2 chiều có thể được biểu diễn của tích các hàm một chiều :
ϕ
j,k
= 2
j/2
ϕ(2
j
x − k). (12)
8
ψ
j,k
= 2

j/2
ψ(2
j
x − k). (13)
Những chi tiết con này rất nhỏ, có thể tiến nhanh về 0 nếu không có sự thay
đổi nhiều ở bức ảnh. Giá trị trong trường hợp này khi các chi tiết được coi là đủ
nhỏ được gọi là ngưỡng. Lượng thông tin lưu trữ của một hình ảnh sau nén và
giải nén được gọi là năng lượng giữ lại(retained energy). Nếu năng lượng giữ
lại là 100% thì được gọi "lossless", khi đó hình ảnh có thể tái tạo lại chính xác
như ban đầu. Nếu bất kì giá trị nào thay đổi thì năng lượng giữ lại cũng bị mất
và dẫn đến tình trạng nén làm mất dữ liệu. Vì thế, năng lượng giữ lại càng cao
thì càng tốt.
4.3 Kĩ thuật nén ảnh bằng Matlab
Trong bài báo cáo của chúng tôi thì chỉ sử dụng biến đổi Haar (cũng là một
trong các biến đổi wavelet). Các bước để nén ảnh và phục hồi ảnh nén được
thực hiện như sau :
• Nhập ảnh đầu vào X, mức phân giải wavelet (decompostion level) n ,
wavelet sử dụng là Haar (wname) .
• Phân giải wavelet của một ảnh : sử dụng hàm wavedec2(x, n, wname)
trong đó x = double(X). wavedec2 là một hàm phân tích wavelet 2 chiều,
kết quả là phân giải wavelet của ma trận x tại mức n .
[c, s] = wavedec2(x, n, wname);
• Chọn các ngưỡng mức độc lập (level dependent thresholds)
[thr, nkeep] = wdcbm2(c, s, alpha, m);
Hàm wdcbm2 trả về các ngưỡng mức độc lập THR và số lượng hệ số được
giữ lại.THR bao gồm cách chọn hệ số wavelet dựa trên sơ đồ Birge - Mas-
sart.
• Nén ảnh bằng hàm wdencmp, kết quả bao gồm ảnh nén và cả tỉ số nén.
Tỉ số nén ở đây chính là tỉ số số lượng bit của ảnh gốc và số lượng bit của
ảnh nén.

[xd, cxd, sxd, perf0, perfl2] = wdencmp(

lvd

, c, s, wname, n, thr,

h

);
• Phục hồi ảnh : Dùng hàm R = waverec2(c, s, wname);
Tài liệu
[1] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing 2nd,Prentice
Hall, New Jersey, 2002.
9
[2] Karen Lees, Image Compression Using Wavelets, 2002.
[3] Walker,J.S.A Primer on Wavelets and Their Scientific Applications, Boca Ra-
ton, 1999.
10

×