1. 程式人生 > >Matlab中的常用影象變換函式(ZT)

Matlab中的常用影象變換函式(ZT)

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

(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 重構原訊號。

(1) 影象縮放

B=imresize(A,M,METHOD),其中:

A -原影象;

M -縮放係數;

B -縮放後的影象;

METHOD-插值方法,可取值'nearest''bilinear''bicubic'

(2) 影象旋轉

B=imrotate(A,ANGLE,METHOD,BBOX),其中:

A-需要旋轉的影象;

ANGLE-表示旋轉的角度,正值為逆時針;

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函式可以從一幅影象中抽取一個矩形的部分。imcrop函式的呼叫格式如下:

X2=imcrop(X,MAP,RECT)

其中,X表示有待剪下的影象,不指定X時,imcrop將當前座標軸中的影象作為待剪下的影象。MAP表示X為索引影象時的調色盤,RECT定義剪下區的矩形座標。如果呼叫imcrop時不指定矩形的座標,那麼當游標位於影象中時會變成十字形,可以通過拖曳滑鼠的方式互動式地選擇一個矩形。imcrop函式根據使用者的選擇繪製一個矩形,釋放滑鼠鍵後將產生一個新的影象。

相關推薦

Matlab常用影象變換函式(ZT)

1. 離散傅立葉變換的 Matlab實現      Matlab 函式 fft、fft2 和 fftn 分別可以實現一維、二維和 N 維 DFT 演算法;而函式 ifft、ifft2 和 ifftn 則用來計算反 DFT 。這些函式的呼叫格式如下:         A=fft

Matlab常用的統計量函式

轉自網易部落格 wstbrkwong Matlab中常用的統計量函式 13個統計量: 最大最小值及其所在位置,均值,幾何平均數,中位數,眾數,極差,方差,標準差,偏斜度,峰度,協方差,相關係數。 %% 1.求最大最小值及其所在位置

MATLAB常用的幾種隨機數生成函式

1:rand函式的用法 命令:rand(N),rand(M,N)等 對於rand(N),通過help rand得到的解釋是:R = rand(N) returns an N-by-N matrix containing pseudorandom values

MATLAB常用函式

一 . matalab 中的zeros()函式和ones()函式 zeros()函式用來生成全0矩陣 ones()函式用來生成全1矩陣 zeros()函式的具體用法如下: zer

matlab常用的函數

排列 sort mode col bsp column 向量 表示 ast find()函數: 功能:用於返回矩陣中想要的元素的索引值; 用法: index = find(X), 當X為一個矩陣時,返回的index是一個列向量,表示矩陣X中非零值的索引值,這個索引值吧,是

tensorflow常用的啟用函式

啟用函式(activation function)執行時啟用神經網路中某一部分神經元,將啟用神經元的資訊輸入到下一層神經網路中。神經網路之所以能處理非線性問題,這歸功於啟用函式的非線性表達能力。啟用函式需要滿足資料的輸入和輸出都是可微的,因為在進行反向傳播的時候,需要對啟用函式求導。 在Te

聊一聊深度學習常用的激勵函式

   大家都知道,人腦的基本計算單元叫做神經元。現代生物學表明,人的神經系統中大概有860億神經元,而這數量巨大的神經元之間大約是通過1014−1015個突觸連線起來的。上面這一幅示意圖,粗略地描繪了一下人體神經元與我們簡化過後的數學模型。每個神經元都從樹突接受訊號,同時順著某個軸突傳遞

lodash常用的工具函式

1、n次迴圈 _.time(5,function(){ }) 2、迭代陣列並返回每一項中深度巢狀的屬性 var ownerArr = [{ "owner": "Colin", "pets": [{"name":"dog1"}, {"name": "dog2"}]}, { "owner": "John"

Python常用的繪圖函式 matplotlib.pyplot

更詳細瞭解的請參考Python繪圖  準備兩組x,y: 其中x1 0-29,y1 從10-49中等距拿30個數。 x2 從0-29中等距拿10個數,y2從0-59中等距拿10個數。 (怎麼實現的請參考pick_arange()函式介紹) import numpy a

30.面向物件常用內建函式與過載函式

 內建函式:類中特殊功能 __init__(self):      ###為例項物件賦值      1,可以沒有這個函式 例項沒資料      2,資料初始化函式        

matplotlib做圖常用的輔助函式

matplotlib可能是Python語言中最常用的繪相簿了,使用它可以較為容易的做出印刷品質的專業圖形,此外,matplotlib的定製程度也很高,可以滿足各式各樣的繪圖要求,能夠限制你做圖能力只是你的想像力而已。然而,也正因為matplotlib的定製性,

【C語言】實際專案開發過程常用C語言函式的9大用法

C語言是當中最廣泛的計算機程式語言,是所有計算機程式語言的祖先,其他計算機程式語言包括當前流行的Java語言,都是用C語言實現的,C語言是程式設計效率最高的計算機語言,既能完成上層應用開發,也能完成底層硬體驅動程式設計,在計算機程式設計當中,特別是在底層硬體驅動開發當中,具有不可替代的作用。

python dict常用的一些函式

dic1 = {...} dic2 = {...} dic1.update(dic2) update(dict):dic1呼叫update傳入dic2,如果dic2中的內容在dic1中不存在,那麼直接加入新的價值對到dic1中;         如果dic2中的鍵在dic

資料處理常用的Excel函式

​在處理資料的時候,我們經常使用Python中的Pandas包來處理,有時候即使是很小的資料量,也使用Pandas來處理。個人覺得這有點大材小用,並且有點浪費時間。所以為了能夠快速的處理這些小型的資料,最近學習瞭如何利用Excel來處理。感覺這樣比使用Pandas處理得到的結果快速便捷很

python進階—OpenCV之常用影象操作函式說明

文章目錄 cv2.threshold cv2.bitwise_and cv2.bitwise_or cv2.bitwise_not cv2.inRange cv2.resize cv2.adaptiveThreshold cv2

MATLABRGB影象的各分量灰度直方圖

clear; clc; f=imread('123.jpg'); [m,n,p]=size(f);   %對於二維陣列來說,它的size是指它的行數和列數;三維陣列是指它的各個維的維度,可以理解為m行,n列和p層,即一共有m*n*p個元素 a=zeros(1,256); 

Matlab關於影象顯示的幾個命令

1.clf clf deletes from the current figure all graphics objects whose handles are not hidden (i.e., their HandleVisibility property is set

matlab的diag,spdiags函式

1 diag函式 1.1 定義      diag函式功能:矩陣對角元素的提取和建立對角陣。設以下X為方陣,v為向量 1.1 用法 (1)X = diag(v,k)      當v是一個含有n個元素的向量時,返回一個n+abs(k)階方陣X,向量v在矩陣X中的第k個對角線

php常用的陣列函式

1、陣列中元素指標的移動next:向後移動,指向下一個元素prev:向前移動,指向前一個元素end:指向最後一個元素reset:復位,重新指向第一個元素 2、鍵和值相關的操作key:獲取陣列當前元素的鍵current/pos:獲取陣列當前元素的值array_keys:獲取所

Matlab畫圖以及plot函式及legend函式詳解

Matlab中plot函式及legend函式詳解 Matlab中plot函式全功能解析Matlab中plot函式及legend函式詳解 功能 二維曲線繪圖 語法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(.