Matlab 離散小波變換函式 dwt2() 原理介紹與實驗

語言: CN / TW / HK

本文已參與「新人創作禮」活動,一起開啟掘金創作之路。

離散小波變換(DWT)的原理介紹和說明請參考文章:【DWT筆記】傅立葉變換與小波變換 這篇文章寫的通俗易懂,小白也能看懂。

一、小波變換的原理

1.1 小波變換簡介

離散小波變換(DWT)的原理介紹和說明請參考文章:【DWT筆記】傅立葉變換與小波變換 這篇文章寫的通俗易懂,小白也能看懂。簡單從上面的參考文章中提取關鍵資訊:

1、影象訊號的低頻部分(低通帶)表示影象的基本資訊(平滑資訊),而高頻部分(高通帶)表示影象的細節資訊。

2、影象中的高頻部分一般持續的時間是比較短的,一般是以短時突變或者尖峰的形式出現,如影象的邊緣資訊和一些噪點資訊。而低頻資訊在大部分地方存在,反應在一些背景或內容資訊。這樣我們在分析訊號的低頻部分的時候,只需要較大的頻率解析度和較小的時域解析度就能夠很好的體現低頻的資訊,而在高頻部分,就需要較大的時間解析度和較小的頻率解析度就能夠很好的體現高頻的資訊。

3、在離散小波變換中,濾波器將在不同的尺度條件下截斷訊號的某些頻率成分:訊號通過不同的高通濾波器得到一系列的訊號高頻成分,通過不同的低通濾波器得到一系列的低頻成分,這樣便能分析訊號的不同頻率成分。

1.2 CWT和DWT的原理

小波變換利用一個具有快速衰減性和震盪性的函式作為母函式,通過尺度因子a(也稱為伸縮因子)和平移因子t對母函式進行伸縮和平移得到一個函式族(稱為小波基函式)。尺度因子和平移因子是小波基最重要的兩個引數,也代表了小波變換的基本思想。

在一定條件下,任意能量有限的訊號可以按照其函式族進行時--頻分解,基函式在時--頻相平面上具有可變的時間--頻率視窗,可以適應不同解析度的需求。

連續小波變換(CWT)是通過不斷改變視窗的尺度計算完成的:在時域移動視窗函式,然後與訊號做卷積運算。

在離散小波變換(DWT)中,濾波器將在不同的尺度條件下截斷訊號的某些頻率成分:訊號通過不同的高通和低通濾波器得到一系列的高頻和低頻成分,這樣便可以分析不同的頻率成分。

二、傅立葉變換與DWT的比較

基本的傅立葉變換不存在解析度的問題,因為傅立葉變換在時域裡面頻域的解析度為0,同樣在頻域裡面,時域的解析度也為0,所以說,傅立葉變換其實沒有解析度。

短時傅立葉變換是通過加窗的方式對時域不同時間段的訊號進行分析,但是由於窗長是固定的,所以,解析度是固定的,並且根據窗長的選擇在時域和頻域的解析度上是一個矛盾。

小波變換可以根據尺度的變換和偏移在不同的頻段上給出不同的解析度,這在實際中是非常有用的。

三、Matlab實現影象的二維小波變換

3.1 dwt2()函式介紹

參考部落格:小波學習筆記(影象的分解與重構)——MATLAB

Matlab實現二維小波變換的函式為:

bash [CA,CH,CV,CD] = dwt2(X,'wname')

其中X為輸入的影象,'wname'是小波名字。如常用的 'wname'='db1'小波濾波器,db1表示小波的消失矩為1,小波濾波器的長度為2*1=2。

輸出變數為:

bash CA:影象的低頻資訊,刻畫原始影象的逼近資訊。 CH:影象水平方向的高頻資訊,刻畫原始影象的橫向細節。 CV:影象豎直方向的高頻資訊,刻畫原始影象的垂直細節。 CD:影象在對角線方向的高頻資訊,刻畫原始影象的對角線上的細節。 DWT中的取樣間隔需要滿足Nyquist定理,一般預設採用二倍隔點採用,因此經過DWT的影象的長和寬均變為原來的 1/2

3.2 dwt2()的使用

3.2.1 輸入和輸出影象

輸入影象(521*521):

在這裡插入圖片描述

低頻 CA(261*261):

在這裡插入圖片描述

水平方向的高頻 CH(261*261):

在這裡插入圖片描述

垂直方向的高頻 CV(261*261):

在這裡插入圖片描述

垂直方向的高頻 CD(261*261):

在這裡插入圖片描述

3.2.2 Matlab程式碼

```bash clear all; close all; clc;

imagePath='source_images\3.jpg'; image_color=imread(imagePath);
image_gray=rgb2gray(image_color); image_double=double(image_gray);

[CA,CH,CV,CD]=dwt2(image_double,'db1'); imwrite(uint8(CA),'Results/CA.jpg'); imwrite(uint8(CH),'Results/CH.jpg'); imwrite(uint8(CV),'Results/CV.jpg'); imwrite(uint8(CD),'Results/CD.jpg'); ```

3.2.3 實驗總結

輸入的影象經過DWT分解為4個尺寸變為原圖1/4的影象,其中包含一個低頻影象,3個高頻影象。根據這2張影象可以做後續的處理。