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
Trang 1Thự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ở
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
Trang 2trự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 L2(R) Khi đó hàm f ∈
L2(R)có thể được biểu diễn như sau :
f (x) =X
j
X
k
trong đó các hệ số aj,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ố aj,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(N log(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 ∈ L2(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−jx − 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 L2(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 V0 là bao đóng của không gian sinh bởi họ {ϕk} Khi đó với mọi hàm
f ∈ V0có thể biểu diễn dưới dạng tổ hợp f =P
kakϕk
Trang 3Khô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,klà họ hàm được xây dựng bằng cách như trên Ta có :
ϕj,k= 2−j/2ϕ(2−jx − k) = 2−j/2ϕk(2−jx)
Nếu đặt Vj là bao đóng của không gian con sinh bởi họ {ϕk(2−jx)}, thì với mọi i > j thì Vi ⊂ Vj Ta nhận thấy dãy {Vj} là dãy các không gian con (của
L2(R)) lồng vào nhau Nếu dãy {Vj} 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) =X
n
s√
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 g0(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
N2có thể được tính từ tỉ lệ mẫu gốc N1bằng công thức sau
N2=s2
s1
với s1, s2là 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 :
Trang 4• 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
Trang 52.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ể :
c00=
Z 1 0
dkj=
Z 1 0
trong đó ϕ00, ψkjlà 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) =X
n
hϕ(n)√
Trang 6ψ(x) =X
n
hψ(n)√
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 đó :
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 :
Trang 7Sau đây là biễu diễn một ảnh đã được phân tích tại mức j=1,2
Ảnh ban đầu
Trang 8Ả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)
• 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 :
Trang 9ψj,k= 2 ψ(2 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, perf 0, perf l2] = wdencmp(0lvd0, c, s, wname, n, thr,0h0);
• 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
Trang 10[2] Karen Lees, Image Compression Using Wavelets, 2002.
[3] Walker,J.S.A Primer on Wavelets and Their Scientific Applications, Boca
Ra-ton, 1999