1. 離散傅立葉變換的 Matlab實(shí)現(xiàn)
Matlab 函數(shù) fft、fft2 和 fftn 分別可以實(shí)現(xiàn)一維、二維和 N 維 DFT 算法;而函數(shù) ifft、ifft2 和 ifftn 則用來(lái)計(jì)算反 DFT 。這些函數(shù)的調(diào)用格式如下:
A=fft(X,N,DIM)
其中,X 表示輸入圖像;N 表示采樣間隔點(diǎn),如果 X 小于該數(shù)值,那么 Matlab 將會(huì)對(duì) X 進(jìn)行零填充,否則將進(jìn)行截取,使之長(zhǎng)度為 N ;DIM 表示要進(jìn)行離散傅立葉變換。
A=fft2(X,MROWS,NCOLS)
其中,MROWS 和 NCOLS 指定對(duì) X 進(jìn)行零填充后的 X 大小。
A=fftn(X,SIZE)
其中,SIZE 是一個(gè)向量,它們每一個(gè)元素都將指定 X 相應(yīng)維進(jìn)行零填充后的長(zhǎng)度。
函數(shù) ifft、ifft2 和 ifftn的調(diào)用格式于對(duì)應(yīng)的離散傅立葉變換函數(shù)一致。
例子:圖像的二維傅立葉頻譜
% 讀入原始圖像
I=imread('lena.bmp');
imshow(I)
% 求離散傅立葉頻譜
J=fftshift(fft2(I));
figure;
imshow(log(abs(J)),[8,10])
2. 離散余弦變換的 Matlab 實(shí)現(xiàn)
2.1. dct2 函數(shù)
功能:二維 DCT 變換
格式:B=dct2(A)
B=dct2(A,m,n)
B=dct2(A,[m,n])
說(shuō)明:B=dct2(A) 計(jì)算 A 的 DCT 變換 B ,A 與 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通過(guò)對(duì) A 補(bǔ) 0 或剪裁,使 B 的大小為 m×n。
2.2. dict2 函數(shù)
功能:DCT 反變換
格式:B=idct2(A)
B=idct2(A,m,n)
B=idct2(A,[m,n])
說(shuō)明:B=idct2(A) 計(jì)算 A 的 DCT 反變換 B ,A 與 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通過(guò)對(duì) A 補(bǔ) 0 或剪裁,使 B 的大小為 m×n。
2.3. dctmtx函數(shù)
功能:計(jì)算 DCT 變換矩陣
格式:D=dctmtx(n)
說(shuō)明:D=dctmtx(n) 返回一個(gè) n×n 的 DCT 變換矩陣,輸出矩陣 D 為 double 類型。
3. 圖像小波變換的 Matlab 實(shí)現(xiàn)
3.1 一維小波變換的 Matlab 實(shí)現(xiàn)
(1) dwt 函數(shù)
功能:一維離散小波變換
格式:[cA,cD]=dwt(X,'wname')
[cA,cD]=dwt(X,Lo_D,Hi_D)
說(shuō)明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函數(shù) 'wname' 對(duì)信號(hào)X 進(jìn)行分解,cA、cD 分別為近似分量和細(xì)節(jié)分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的濾波器組 Lo_D、Hi_D 對(duì)信號(hào)進(jìn)行分解。
(2) idwt 函數(shù)
功能:一維離散小波反變換
格式: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)
說(shuō)明:X=idwt(cA,cD,'wname') 由近似分量 cA 和細(xì)節(jié)分量 cD 經(jīng)小波反變換重構(gòu)原始信號(hào) X 。
'wname' 為所選的小波函數(shù)
X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重構(gòu)濾波器 Lo_R 和 Hi_R 經(jīng)小波反變換重構(gòu)原始信號(hào) X 。
X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信號(hào) X 中心附近的 L 個(gè)點(diǎn)。
3.2 二維小波變換的 Matlab 實(shí)現(xiàn)
二維小波變換的函數(shù)
-------------------------------------------------
函數(shù)名 函數(shù)功能
---------------------------------------------------
dwt2 二維離散小波變換
wavedec2 二維信號(hào)的多層小波分解
idwt2 二維離散小波反變換
waverec2 二維信號(hào)的多層小波重構(gòu)
wrcoef2 由多層小波分解重構(gòu)某一層的分解信號(hào)
upcoef2 由多層小波分解重構(gòu)近似分量或細(xì)節(jié)分量
detcoef2 提取二維信號(hào)小波分解的細(xì)節(jié)分量
appcoef2 提取二維信號(hào)小波分解的近似分量
upwlev2 二維小波分解的單層重構(gòu)
dwtpet2 二維周期小波變換
idwtper2 二維周期小波反變換
-------------------------------------------------------------
(1) wcodemat 函數(shù)
功能:對(duì)數(shù)據(jù)矩陣進(jìn)行偽彩色編碼
格式:Y=wcodemat(X,NB,OPT,ABSOL)
Y=wcodemat(X,NB,OPT)
Y=wcodemat(X,NB)
Y=wcodemat(X)
說(shuō)明:Y=wcodemat(X,NB,OPT,ABSOL) 返回?cái)?shù)據(jù)矩陣 X 的編碼矩陣 Y ;NB 偽編碼的最大值,即編碼范圍為 0~NB,缺省值 NB=16;
OPT 指定了編碼的方式(缺省值為 'mat'),即:
OPT='row' ,按行編碼
OPT='col' ,按列編碼
OPT='mat' ,按整個(gè)矩陣編碼
ABSOL 是函數(shù)的控制參數(shù)(缺省值為 '1'),即:
ABSOL=0 時(shí),返回編碼矩陣
ABSOL=1 時(shí),返回?cái)?shù)據(jù)矩陣的絕對(duì)值 ABS(X)
(2) dwt2 函數(shù)
功能:二維離散小波變換
格式:[cA,cH,cV,cD]=dwt2(X,'wname')
[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
說(shuō)明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函數(shù) 'wname' 對(duì)二維信號(hào) X 進(jìn)行二維離散小波變幻;cA,cH,cV,cD 分別為近似分量、水平細(xì)節(jié)分量、垂直細(xì)節(jié)分量和對(duì)角細(xì)節(jié)分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通濾波器 Lo_D 和 Hi_D 分解信號(hào) X 。
(3) wavedec2 函數(shù)
功能:二維信號(hào)的多層小波分解
格式:[C,S]=wavedec2(X,N,'wname')
[C,S]=wavedec2(X,N,Lo_D,Hi_D)
說(shuō)明:[C,S]=wavedec2(X,N,'wname') 使用小波基函數(shù) 'wname' 對(duì)二維信號(hào) X 進(jìn)行 N 層分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通濾波器 Lo_D 和 Hi_D 分解信號(hào) X 。
(4) idwt2 函數(shù)
功能:二維離散小波反變換
格式: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)
說(shuō)明:X=idwt2(cA,cH,cV,cD,'wname') 由信號(hào)小波分解的近似信號(hào) cA 和細(xì)節(jié)信號(hào) cH、cH、cV、cD 經(jīng)小波反變換重構(gòu)原信號(hào) X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重構(gòu)低通和高通濾波器 Lo_R 和 Hi_R 重構(gòu)原信號(hào) X ;X=idwt2(cA,cH,cV,cD,'wname',S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 個(gè)數(shù)據(jù)點(diǎn)。
(5) waverec2 函數(shù)
說(shuō)明:二維信號(hào)的多層小波重構(gòu)
格式:X=waverec2(C,S,'wname')
X=waverec2(C,S,Lo_R,Hi_R)
說(shuō)明:X=waverec2(C,S,'wname') 由多層二維小波分解的結(jié)果 C、S 重構(gòu)原始信號(hào) X ,'wname' 為使用的小波基函數(shù);X=waverec2(C,S,Lo_R,Hi_R) 使用重構(gòu)低通和高通濾波器 Lo_R 和 Hi_R 重構(gòu)原信號(hào)。
(1) 圖像縮放
B=imresize(A,M,METHOD),其中:
A -原圖像;
M -縮放系數(shù);
B -縮放后的圖像;
METHOD-插值方法,可取值'nearest','bilinear'和'bicubic'。
(2) 圖像旋轉(zhuǎn)
B=imrotate(A,ANGLE,METHOD,BBOX),其中:
A-需要旋轉(zhuǎn)的圖像;
ANGLE-表示旋轉(zhuǎn)的角度,正值為逆時(shí)針;
METHOD-插值方法;
[I,map]=imread('kids.tif');
J=imrotate(I,35,'bilinear');
J1=imrotate(I,35,'bilinear','crop');
subplot(2,2,1),imshow(I,map)
subplot(2,2,3),imshow(J,map)
subplot(2,2,4),imshow(J1,map)
(3) 圖像剪切
使用imcrop函數(shù)可以從一幅圖像中抽取一個(gè)矩形的部分。imcrop函數(shù)的調(diào)用格式如下:
X2=imcrop(X,MAP,RECT)
其中,X表示有待剪切的圖像,不指定X時(shí),imcrop將當(dāng)前坐標(biāo)軸中的圖像作為待剪切的圖像。MAP表示X為索引圖像時(shí)的調(diào)色板,RECT定義剪切區(qū)的矩形坐標(biāo)。如果調(diào)用imcrop時(shí)不指定矩形的坐標(biāo),那么當(dāng)光標(biāo)位于圖像中時(shí)會(huì)變成十字形,可以通過(guò)拖曳鼠標(biāo)的方式交互式地選擇一個(gè)矩形。imcrop函數(shù)根據(jù)用戶的選擇繪制一個(gè)矩形,釋放鼠標(biāo)鍵后將產(chǎn)生一個(gè)新的圖像。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/lydx9876/archive/2010/08/18/5817098.aspx
聯(lián)系客服