Bài tập lớn Xử lý ảnh Nén ảnh bằng Wavelet

10 1.2K 7
Bài tập lớn Xử lý ảnh Nén ảnh bằng Wavelet

Đang tải... (xem toàn văn)

Thông tin tài liệu

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 . 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. 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. 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

Ngày đăng: 14/04/2015, 09:01

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan