Xem mẫu

  1. TỔNG QUAN VỀ LÝ THUYẾT WAVELET VÀ ỨNG DỤNG NGUYỄN CHÍ THẠCH Khoa Toán học 1. GIỚI THIỆU Trong thời đại thông tin và đa phương tiện như hiện nay, xử lý tín hiệu là một trong những công việc được quan tâm và nghiên cứu rộng rãi trên toàn thế giới. Hiện nay, có nhiều phương pháp để xử lý tín hiệu mà nổi bật là phép biến đổi Fourier (Fourier transform). Đây là một bước đột phá có ứng dụng rất lớn. Song, trong yêu cầu xử lý các tín hiệu phức tạp thì phép biến đổi Fourier tỏ ra không phù hợp và có nhiều nhược điểm. Wavelet và biến đổi wavelet ra đời để khắc phục các nhược điểm này. Hiện nay, các nghiên cứu wavelet ngày càng phát triển mạnh mẽ về cả lý thuyết cũng như ứng dụng. 2. WAVELET LÀ GÌ? Cho hàm f khả tích tuần hoàn trên [ −π , π ] . Trong một số điều kiện nhất định, chuỗi fourier của f sẽ cho chính giá trị của nó a0 ∞ f ( x) = + ∑ [ an cos nx + bn sin nx ] 2 n =1 Hàm sin(2 x) được “nén” từ hàm sin x với hệ số 2. Tương tự, hàm sin(kx) được nén với hệ số k . Như vậy, hàm f sẽ được biểu diễn thành tổ hợp của các hàm sin và cosin. Tuy nhiên, đối với các hàm phức tạp và chứa đột biến thì biểu diễn bởi các hàm số sin và cosin là không cho ta được dáng điệu hàm chính xác như mong muốn. Phương pháp fourier tỏ ra không hiệu quả đối với các hàm số này. f(x) Kỷ yếu Hội nghị Khoa học Sinh viên năm học 2013-2014 Trường Đại học Sư phạm – Đại học Huế, tháng 12/2013, tr: 31-36
  2. 32 NGUYỄN CHÍ THẠCH Để biểu diễn những hàm như vậy, ta sẽ sử dụng các họ hàm wavelet. Wavelet là gì? Wavelet là các “dạng sóng nhỏ” có thời gian duy trì tới hạn và giá trị trung bình bằng 0. Một họ các hàm wavelet sẽ được xây dựng từ một hàm wavelet ban đầu (gọi là wavelet mẹ) bằng cách nén, giãn và dịch chuyển. φ ( x) φ (2 x) φ (2 x − 1) φ jk (2 j x − k ) Ta còn có thể xây dựng các wavelet khác bằng cách xét tổng của các wavelet trên. Dưới đây là một ví dụ đơn giản về wavelet Haar, một trong những wavelet cơ bản. φ(x) Φ(x) 0 1 0 1/2 1 φ(2x) φ(2x-1) Φ(x)=φ(2x)-φ(2x-1) 0 1/2 1 Với họ hàm wavelet như vậy, ta có thể biểu diễn (xấp xỉ) một hàm f phức tạp f ( x) = ∑ ckφ jk (2 j x − k )
  3. TỔNG QUAN VỀ LÝ THUYẾT WAVELET VÀ ỨNG DỤNG... 33 Việc chọn họ hàm wavelet là tùy thuộc vào hình dạng của hàm f . Đây là một trong những ưu điểm của wavelet. Một số wavelet cơ bản được ứng nhiều hiện nay là wavelet Haar, wavelet Meyer và wavelet Daubechies. 3. ỨNG DỤNG CỦA WAVELET Phần này chỉ nêu ra các ứng dụng tổng quát của wavelet, đó là nén tín hiệu, khử nhiễu, mã hóa nguồn và mã hóa kênh. Trong thời đại thông tin và đa phương tiện như hiện nay, khối lượng dữ liệu là vô cùng to lớn và việc nén dữ liệu là một giải pháp cực kì quan trọng. Do tín hiệu được phân tích trong miền tỉ lệ (scale) nên wavelet là một công cụ hữu hiệu trong việc nén các tín hiệu không dừng, đặc biệt là các ứng dụng như nén ảnh, nén video, nén thoại và nén audio. Việc sử dụng các phép mã hoá băng con, băng lọc số nhiều nhịp và biến đổi wavelet rời rạc tương ứng với loại tín hiệu cần phân tích có thể mang lại những hiệu quả rất rõ rệt trong nén tín hiệu. Tính chất của biến đổi wavelet mà chúng ta đã xét tới trong phần ứng dụng cho nén tín hiệu được mở rộng bởi Iain Johnstone và David Donohos trong các ứng dụng khử nhiễu cho tín hiệu. Phương pháp khử nhiễu này được gọi là Wavelet Shrinkage Denoising (WSD). Ý tưởng cơ bản của WSD dựa trên việc tín hiệu nhiễu sẽ lộ rõ khi phân tích bằng biến đổi wavelet ở các hệ số biến đổi bậc cao. Việc áp dụng các ngưỡng loại bỏ tương ứng với các bậc cao hơn của hệ số wavelet sẽ có thể dễ dàng loại bỏ nhiễu trong tín hiệu. Sở dĩ wavelet được ứng dụng trong mã hoá nguồn và mã hoá kênh vì trong mã hoá nguồn thì chúng ta cần khả năng nén với tỷ lệ nén cao còn trong mã hoá kênh thì cần khả năng chống nhiễu tốt. Biến đổi wavelet kết hợp với một số phương pháp mã hoá như mã hoá Huffman hay mã hoá số học có thể thực hiện được cả hai điều trên. Vì thế sự sử dụng biến đổi wavelet trong mã hoá nguồn và mã hoá kênh là rất thích hợp. 4. MỘT VÍ DỤ ỨNG DỤNG LÝ THUYẾT WAVELET ĐỂ NÉN MỘT DÃY SỐ SỬ DỤNG KỸ THUẬT MALLET Trong biểu thức f ( x) = ∑ ckφ jk (2 j x − k ) , nếu cho x nhận các giá trị rời rạc thì các hàm f , φ là một dãy các điểm rời rạc và được xem như các vector. Đây là ý tưởng cơ bản của phép biến đổi wavelet rời rạc (DWT). Như vậy, DWT có thể xem như là một phép nhân ma trận, trong đó một vector ban đầu xk được biểu diễn qua các hệ số cn ( k , n = 1, N ). ⎛ x1 ⎞ ⎛ c1 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ . ⎟ = . A ⎜ ⎟ ⎜ . ⎟ ⎜ . ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ xN ⎠ ⎝ cN ⎠
  4. 34 NGUYỄN CHÍ THẠCH Trong đó, ma trận A có các cột chính là các vector φ jk . Để đơn giản, ta giả sử vector đầu vào xk ,0 < k < 7 . Ta dễ dàng có được biểu diễn sau đây ⎛ 1 ⎞ ⎛ 0 ⎞ ⎛ 0 ⎞ ⎛ 0 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ 0 ⎜ ⎟ 1 ⎜ ⎟ 0 ⎜ ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ (xk ) = x0 ⎜ ⎟ + x1 ⎜ ⎟ + x2 ⎜ ⎟… + x7 ⎜ ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ Năm 1910, Haar đề xuất một biểu diễn với các vector cơ sở khác như sau ⎛1⎞ ⎛ 1 ⎞ ⎛ 1 ⎞ ⎛ 0 ⎞ ⎛ 1 ⎞ ⎛ 0 ⎞ ⎛ 0 ⎞ ⎛ 0 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ 1 ⎜ ⎟ 1 ⎜ ⎟ 1 ⎜ ⎟ 0 ⎜ ⎟ − 1 ⎜ ⎟ 0 ⎜ ⎟ 0 ⎜ ⎟ ⎜ 0 ⎟ ⎜1⎟ ⎜ 1 ⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜1⎟ ⎜ 1 ⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ (xk ) = a0 ⎜ ⎟ + a1 ⎜ ⎟ + a2 ⎜ ⎟ + a3 ⎜ ⎟ + a4 ⎜ ⎟ + a5 ⎜ ⎟ + a6 ⎜ ⎟ + a7 ⎜ ⎟ ⎜1⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎜ 0 ⎟ ⎜1⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜1⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 1 ⎟ ⎜1⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ − 1⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ − 1⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ hay xn = H nk ak với các cột của H là các vector cơ sở trên. Chú ý rằng, ta có thể dể dàng thu được các hệ số ak bằng cách nhân xn với ma trận nghịch đảo của H . Ta sẽ xét một ví dụ nhỏ trong việc nén một dãy số (tức là một vector). Nén một dãy số có thể hiểu là làm đơn giản dãy số, tức là làm dãy số ngắn hơn bằng cách bỏ bớt các phần tử 0 sau khi được biến đổi. Thay vì nhân một ma trận lớn, ta có thể thực hiện kỹ thuật sau đối với một ma trận cấp 2 (điều này được khám phá bởi Mallet). 1) Nhân mỗi một cặp hệ số đầu vào với các hệ số của hàm mẹ trên dòng đầu và các hệ số của wavelet trên dòng hai. Đối với biến đổi Haar ta có ⎛ 3 ⎞ ⎛ 5 ⎞ ⎛ m ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 2 ⎟ ⎜ 1 ⎟ ⎜ w ⎟ ⎜ 4 ⎟ ⎜ 5 ⎟ ⎜ m ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎛1 1 ⎞ ⎜ 1 ⎟ ⎜ 3 ⎟ ⎜ w ⎟ ⎜⎜ ⎟⎟ ! ⎜ ⎟ = ⎜ ⎟ ⎜ m ⎟ ⎝1 − 1⎠ ⎜ 4 ⎟ ⎜ 6 ⎟ ⎜ ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ w ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 3 ⎟ ⎜ 4 ⎟ ⎜ m ⎟ ⎜ 1 ⎟ ⎜ 2 ⎟ ⎜ w ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠
  5. TỔNG QUAN VỀ LÝ THUYẾT WAVELET VÀ ỨNG DỤNG... 35 Nghĩa là, ta tính tổng và hiệu của từng cặp số để được một dãy số (vector) mới. Đặt các hệ số bằng các chữ cái m (mother), w (wavelet) như hình trên. 2) Tiếp theo ta sắp xếp lại bằng cách đưa tất cả các hệ số m lên trên. ⎛ 5 ⎞ ⎛ 5 ⎞ ⎛ m ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 1 ⎟ ⎜ 5 ⎟ ⎜ m ⎟ ⎜ 5 ⎟ ⎜ 6 ⎟ ⎜ m ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 3 ⎟ ⎜ 4 ⎟ ⎜ m ⎟ ⎜ 6 ⎟ ⇔ ⎜ 1 ⎟ ⎜ w ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 4 ⎟ ⎜ 3 ⎟ ⎜ w ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 4 ⎟ ⎜ 2 ⎟ ⎜ w ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ w ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ 3) Lặp lại bước 1 chỉ trên các hệ số m , giữ nguyên các hệ số w . ⎛ 5 ⎞ ⎛10 ⎞ ⎛ m ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 5 ⎟ ⎜ 0 ⎟ ⎜ w ⎟ ⎜ 6 ⎟ ⎜10 ⎟ ⎜ m ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎛1 1 ⎞ ⎜ 4 ⎟ ⎜ 2 ⎟ ⎜ w ⎟ ⎜⎜ ⎟⎟ ! ⎜ ⎟ = ⎜ ⎟ ⎝1 − 1⎠ ⎜ 1 ⎟ ⎜ 1 ⎟ ⎜ w ⎟ ⎜ ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ w ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ w ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜⎜ ⎟⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ w ⎠ 4) Lặp lại bước 2 và 3 cho đến khi chỉ còn hệ số trên là m . ⎛ 3 ⎞ ⎛ 5 ⎞ ⎛ 5 ⎞ ⎛10 ⎞ ⎛10 ⎞ ⎛ 20 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 2 ⎟ ⎜ 1 ⎟ ⎜ 5 ⎟ ⎜ 0 ⎟ ⎜10 ⎟ ⎜ 0 ⎟ ⎜ 4 ⎟ ⎜ 5 ⎟ ⎜ 6 ⎟ ⎜10 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 1 ⎟ T ⎜ 3 ⎟ P ⎜ 4 ⎟ T ⎜ 2 ⎟ P ⎜ 2 ⎟ T ⎜ 2 ⎟ ⎜ 4 ⎟ ⇒⎜ 6 ⎟ ⇒⎜ 1 ⎟ ⇒⎜ 1 ⎟ ⇒⎜ 1 ⎟ ⇒⎜ 1 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 3 ⎟ ⎜ 4 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 1 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ Để thu được dãy số ban đầu, ta hoàn toàn có thể làm ngược lại:
  6. 36 NGUYỄN CHÍ THẠCH ⎛ 20 ⎞ ⎛10 ⎞ ⎛10 ⎞ ⎛ 5 ⎞ ⎛ 5 ⎞ ⎛ 3 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜10 ⎟ ⎜ 0 ⎟ ⎜ 5 ⎟ ⎜ 1 ⎟ ⎜ 2 ⎟ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜10 ⎟ ⎜ 6 ⎟ ⎜ 5 ⎟ ⎜ 4 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 2 ⎟ T ⎜ 2 ⎟ P ⎜ 2 ⎟ T ⎜ 4 ⎟ P ⎜ 3 ⎟ T ⎜ 1 ⎟ ⎜ 1 ⎟ ⇒⎜ 1 ⎟ ⇒⎜ 1 ⎟ ⇒⎜ 1 ⎟ ⇒⎜ 6 ⎟ ⇒⎜ 4 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ 3 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 4 ⎟ ⎜ 3 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 2 ⎟ ⎜ 1 ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ Với kết quả có được sau khi biến đổi, ta sẽ loại bỏ các hệ số d với d = 0 (hoặc d < λ , λ là một số thực dương nhỏ nào đó). Như vậy ta sẽ thu được dãy số với chiều dài ngắn hơn dãy số ban đầu. Lặp lại quá trình biến đổi này cho đến khi ta được dãy số với chiều dài mong muốn. Đây chính là ý tưởng cơ bản của thuật toán nén sử dụng lý thuyết wavelet. Cuối cùng, bạn có thể tạo một chương trình đơn giản trên máy tính để thể hiện ứng dụng này. Khi nhập vào một dãy số ta có ngay một dãy số mới được “nén” từ dãy số ban đầu. TÀI LIỆU THAM KHẢO [1] Nguyễn Hoàng Hải (2005). Công cụ phân tích wavelet và ứng dụng trong Matlab, NXB Khoa học và Kỹ thuật. [2] Y. K. Demjanovich, V. A. Khodakovxki (2007). Mở đầu về lý thuyết wavelet, NXB Spb. [3] Frank Stootman (2001). The Wavelet Transform, [4] http://www.atnf.csiro.au/whats_on/workshops/synthesis2001/material/wavelets.pdf. NGUYỄN CHÍ THẠCH Khoa Toán học, Trường Đại học Sư phạm – Đại học Huế
nguon tai.lieu . vn