imfilter和conv2的關係

2021-06-18 14:04:29 字數 2436 閱讀 2565

首先定義兩個矩陣

>> a = [1 2 3 5 ; 4 7 9 5;1 4 6 7;5 4 3 7;8 7 5 1] %a矩陣取5*4

b = [1 5 4; 3 6 8; 1 5 7]   %b矩陣如多數模板一樣取3*3

然後定義乙個高斯模板

>> gaussian=fspecial('gaussian',3,1.8)

gaussian =

0.0997    0.1163    0.0997

0.1163    0.1358    0.1163

0.0997    0.1163    0.0997

之後我們看看利用imfilter計算結果

>> g=imfilter(a,gaussian)

g =1.5318    2.8476    3.4654    2.5070

2.1885    4.2578    5.4600    4.0195

2.7451    4.7312    5.7839    4.2411

3.2882    4.7479    4.8615    3.3270

2.8811    3.7260    3.0555    1.8311

然後我們看看用卷積的結果

>> cc=conv2(a,gaussian,'same')

cc =

1.5318    2.8476    3.4654    2.5070

2.1885    4.2578    5.4600    4.0195

2.7451    4.7312    5.7839    4.2411

3.2882    4.7479    4.8615    3.3270

2.8811    3.7260    3.0555    1.8311

這裡cc和g的結果是一樣的

然而 如果我們把高斯矩陣換成b矩陣又會有什麼結果呢?

先對b歸一化 

>> bb=b/sum(sum(b))

bb =

0.0250    0.1250    0.1000

0.0750    0.1500    0.2000

0.0250    0.1250    0.1750

>> gg=imfilter(a,bb)  %濾波

gg =

2.2750    3.5250    3.7750    1.8250

3.1500    5.3000    5.8750    3.1500

3.4750    4.9000    6.1000    3.3000

4.3000    4.6500    4.6750    2.5500

3.6250    3.5750    2.6500    1.4750

>> ccc=conv2(a,bb,'same')  %執行卷積操作的結果

ccc =

0.9750    2.2250    3.1750    2.8750

1.5250    3.7750    5.3000    5.1750

1.8500    4.1250    5.6500    5.6250

2.4500    4.4500    4.7500    4.2000

2.4500    4.4750    3.4750    2.5500

這裡執行的結果卻不相等~ 無法理解

然而 若執行

>> ggg=imfilter(a,bb,'conv')  %表示a與bb矩陣執行的是卷積操作 這個時候的結果與直接ccc=conv2(a,bb,'same')  %執行卷積操作的結果是一樣的

ggg =

0.9750    2.2250    3.1750    2.8750

1.5250    3.7750    5.3000    5.1750

1.8500    4.1250    5.6500    5.6250

2.4500    4.4500    4.7500    4.2000

2.4500    4.4750    3.4750    2.5500

事實證明不進行歸一化conv2的結果與imfilter的結果是一樣的

>> ggg=imfilter(a,b,'conv')

ggg =

39    89   127   115

61   151   212   207

74   165   226   225

98   178   190   168

98   179   139   102

>> ccc=conv2(a,b,'same')

ccc =

39    89   127   115

61   151   212   207

74   165   226   225

98   178   190   168

98   179   139   102

Matlab函式 conv2的用法

matlab函式conv2的用法 c conv2 a,b c conv2 hcol,hrow,a c conv2 shape 說明 對於 c conv2 a,b conv2 的算矩陣 a 和 b 的卷積,若 ma,na size a mb,nb size b 則 size c ma mb 1,na ...

TensorFlow學習 卷積層conv2d引數

卷積層引數解釋 tf.nn.conv2d input,filter,strides,padding,use cudnn on gpu bool,data format name none input 指定需要做卷積的輸入影象,輸入要求為乙個4維的 tensor 要求輸入型別為 float32 或者f...

matlab 函式說明 conv2

conv 是卷積的意思,2表示2維卷積。conv2的呼叫形式如下 1.c conv2 a,b 這是最簡單的一種呼叫形式,b作為卷積核在a的範圍內滑動,若 ma na size a mb nb size b mc nc size c 則有mc max ma mb 1,ma,mb nc max na n...