來源:https://www.cnblogs.com/hyb221512/p/9276621.html
1.conv(向量卷積運算)
所謂兩個向量卷積,說白了就是多項式乘法。
比如:p=[1 2 3],q=[1 1]是兩個向量,p和q的卷積如下:
把p的元素作為一個多項式的系數,多項式按升冪(或降冪)排列,比如就按升冪吧,寫出對應的多項式:1+2x+3x^2;同樣的,把q的元素也作為多項式的系數按升冪排列,寫出對應的多項式:1+x。
卷積就是“兩個多項式相乘取系數”。
(1+2x+3x^2)×(1+x)=1+3x+5x^2+3x^3
所以p和q卷積的結果就是[1 3 5 3]。
記住,當確定是用升冪或是降冪排列后,下面也都要按這個方式排列,否則結果是不對的。
你也可以用matlab試試
p=[1 2 3]
q=[1 1]
conv(p,q)
看看和計算的結果是否相同。
>> p=[1 2 3];
q=[1 1];
conv(p,q)
ans =
1 3 5 3
2.conv2(二維矩陣卷積運算)
語法:
conv2(原圖像,卷積核)
a=[1 1 1;1 1 1;1 1 1];
b=[1 1 1;1 1 1;1 1 1];
>> conv2(a,b)
ans =
1 2 3 2 1
2 4 6 4 2
3 6 9 6 3
2 4 6 4 2
1 2 3 2 1
>> conv2(a,b,'valid')
ans =
9
'valid'就意味着不對原圖像padding.
>> conv2(a,b,'same')
ans =
4 6 4
6 9 6
4 6 4
same的解釋:
卷積的時候需要對卷積核進行180的旋轉,同時卷積核中心與需計算的圖像像素對齊,輸出結構為中心對齊像素的一個新的像素值
>> conv2(a,b,'full')
ans =
1 2 3 2 1
2 4 6 4 2
3 6 9 6 3
2 4 6 4 2
1 2 3 2 1
圖中藍色為原圖像,白色為對應卷積所增加的padding,通常全部為0,綠色是卷積后圖片。圖的卷積的滑動是從卷積核右下角與圖片左上角重疊開始進行卷積,滑動步長為1,卷積核的中心元素對應卷積后圖像的像素點。