1. 程式人生 > >matlab conv2 和filter2的區別

matlab conv2 和filter2的區別

MATLAB中提供了卷積運算的函式命令conv2,其語法格式為:
C = conv2(A,B)
C = conv2(A,B)返回矩陣A和B的二維卷積C。若A為ma×na的矩陣,B為mb×nb的矩陣,則C的大小為(ma+mb+1)×(na+nb+1)。
例:
A=magic(5)
A =
17 24  1  8 15
23  5  7 14 16
4   6 13 20 22
10 12 19 21  3
11 18 25  2  9
>> B=[1 2 1 ;0 2 0;3 1 3]
B =
1 2 1
0 2 0
3 1 3
>> C=conv2(A,B)
C =
17  58  66  34  32  38  15
23  85  88  35  67  76  16
55 149 117 163 159 135  67
79  78 160 161 187 129  51
23  82 153 199 205 108  75
30  68 135 168  91  84   9
33  65 126  85 104  15  27
MATLAB影象處理工具箱提供了基於卷積的圖象濾波函式filter2,filter2的語法格式為:
Y = filter2(h,X)
其中Y = filter2(h,X)返回影象X經運算元h濾波後的結果,預設返回影象Y與輸入影象X大小相同。

其實filter2和conv2是等價的。MATLAB在計算filter2時先將卷積核旋轉180度,再呼叫conv2函式進行計算。
Fspecial函式用於建立預定義的濾波運算元,其語法格式為:
h = fspecial(type)
h = fspecial(type,parameters)
引數type制定運算元型別,parameters指定相應的引數,具體格式為:
type='average',為均值濾波,引數為n,代表模版尺寸,用向量表示,預設值為[3,3]。
type= 'gaussian',為高斯低通濾波器,引數有兩個,n表示模版尺寸,預設值為[3,3],sigma表示濾波器的標準差,單位為畫素,預設值為0.5