matlab中關於DCT,DFT和DWT的相關函數

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=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        二維週期小波反變換

-------------------------------------------------------------

(1) wcodemat 函數

功能:對數據矩陣進行僞彩色編碼

格式:Y=wcodemat(X,NB,OPT,ABSOL)

        Y=wcodemat(X,NB,OPT)

        Y=wcodemat(X,NB)

        Y=wcodemat(X)

說明:Y=wcodemat(X,NB,OPT,ABSOL) 返回數據矩陣 X 的編碼矩陣 Y ;NB 僞編碼的最大值,即編碼範圍爲 0~NB,缺省值 NB=16;

       OPT 指定了編碼的方式(缺省值爲 'mat'),即:

                 OPT='row' ,按行編碼

                 OPT='col' ,按列編碼

                 OPT='mat' ,按整個矩陣編碼

       ABSOL 是函數的控制參數(缺省值爲 '1'),即:

                 ABSOL=0 時,返回編碼矩陣

                 ABSOL=1 時,返回數據矩陣的絕對值 ABS(X)

(2) dwt2 函數

功能:二維離散小波變換

格式:[cA,cH,cV,cD]=dwt2(X,'wname')

        [cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)

說明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函數 'wname' 對二維信號 X 進行二維離散小波變幻;cA,cH,cV,cD 分別爲近似分量、水平細節分量、垂直細節分量和對角細節分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通濾波器 Lo_D 和 Hi_D 分解信號 X 。

(3) wavedec2 函數

功能:二維信號的多層小波分解

格式:[C,S]=wavedec2(X,N,'wname')

        [C,S]=wavedec2(X,N,Lo_D,Hi_D)

說明:[C,S]=wavedec2(X,N,'wname') 使用小波基函數 'wname' 對二維信號 X 進行 N 層分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通濾波器 Lo_D 和 Hi_D 分解信號 X 。

(4) idwt2 函數

功能:二維離散小波反變換

格式:X=idwt2(cA,cH,cV,cD,'wname')

        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)

        X=idwt2(cA,cH,cV,cD,'wname',S)

        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)

說明:X=idwt2(cA,cH,cV,cD,'wname') 由信號小波分解的近似信號 cA 和細節信號 cH、cH、cV、cD 經小波反變換重構原信號 X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重構低通和高通濾波器 Lo_R 和 Hi_R 重構原信號 X ;X=idwt2(cA,cH,cV,cD,'wname',S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 個數據點。

(5) waverec2 函數

說明:二維信號的多層小波重構

格式:X=waverec2(C,S,'wname')

        X=waverec2(C,S,Lo_R,Hi_R)

說明:X=waverec2(C,S,'wname') 由多層二維小波分解的結果 C、S 重構原始信號 X ,'wname' 爲使用的小波基函數;X=waverec2(C,S,Lo_R,Hi_R) 使用重構低通和高通濾波器 Lo_R 和 Hi_R 重構原信號。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章