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
MATLAB中RGB影象的各分量灰度直方圖
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(.