matlab小波變換函式
1. 離散傅立葉變換的 Matlab實現
Matlab 函式 fft、fft2 和 fftn 分別可以實現一維、二維和 N 維 DFT 演算法;而函式 ifft、ifft2 和 ifftn 則用來計算反 DFT 。這些函式的呼叫格式如下:
A=fft(X,N,DIM)
其中,X 表示輸入影象;N 表示取樣間隔點,如果 X 小於該數值,那麼 Matlab 將會對 X 進行零填充,否則將進行擷取,使之長度為 N ;DIM 表示要進行離散傅立葉變換。
A=fft2(X,MROWS,NCOLS)
其中,MROWS 和 NCOLS 指定對 X 進行零填充後的 X 大小。
A=fftn(X,SIZE)
其中,SIZE 是一個向量,它們每一個元素都將指定 X 相應維進行零填充後的長度。
函式 ifft、ifft2 和 ifftn的呼叫格式於對應的離散傅立葉變換函式一致。
例子:影象的二維傅立葉頻譜
% 讀入原始影象
I=imread('lena.bmp');
imshow(I)
% 求離散傅立葉頻譜
J=fftshift(fft2(I));
figure;
imshow(log(abs(J)),[8,10])
2. 離散餘弦變換的 Matlab 實現
2.1. dct2 函式
功能:二維 DCT 變換
格式:B=dct2(A)
B=dct2(A,m,n)
B=dct2(A,[m,n])
說明:B=dct2(A) 計算 A 的 DCT 變換 B ,A 與 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通過對 A 補 0 或剪裁,使 B 的大小為 m×n。
2.2. dict2 函式
功能:DCT 反變換
格式:B=idct2(A)
B=idct2(A,m,n)
B=idct2(A,[m,n])
說明:B=idct2(A) 計算 A 的 DCT 反變換 B ,A 與 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通過對 A 補 0 或剪裁,使 B 的大小為 m×n。
2.3. dctmtx函式
功能:計算 DCT 變換矩陣
格式:D=dctmtx(n)
說明:D=dctmtx(n) 返回一個 n×n 的 DCT 變換矩陣,輸出矩陣 D 為 double 型別。
3. 影象小波變換的 Matlab 實現
3.1 一維小波變換的 Matlab 實現
(1) dwt 函式
功能:一維離散小波變換
格式:[cA,cD]=dwt(X,'wname')
[cA,cD]=dwt(X,Lo_D,Hi_D)
說明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函式 'wname' 對訊號X 進行分解,cA、cD 分別為近似分量和細節分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的濾波器組 Lo_D、Hi_D 對訊號進行分解。
(2) idwt 函式
功能:一維離散小波反變換
格式:X=idwt(cA,cD,'wname')
X=idwt(cA,cD,Lo_R,Hi_R)
X=idwt(cA,cD,'wname',L)
X=idwt(cA,cD,Lo_R,Hi_R,L)
說明:X=idwt(cA,cD,'wname') 由近似分量 cA 和細節分量 cD 經小波反變換重構原始訊號 X 。
'wname' 為所選的小波函式
X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重構濾波器 Lo_R 和 Hi_R 經小波反變換重構原始訊號 X 。
X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回訊號 X 中心附近的 L 個點。
3.2 二維小波變換的 Matlab 實現
二維小波變換的函式
-------------------------------------------------
函式名 函式功能
---------------------------------------------------
dwt2 二維離散小波變換
wavedec2 二維訊號的多層小波分解
idwt2 二維離散小波反變換
waverec2 二維訊號的多層小波重構
wrcoef2 由多層小波分解重構某一層的分解訊號
upcoef2 由多層小波分解重構近似分量或細節分量
detcoef2 提取二維訊號小波分解的細節分量
appcoef2 提取二維訊號小波分解的近似分量
upwlev2 二維小波分解的單層重構
dwtpet2 二維週期小波變換
idwtper2