MATLAB卷积conv、conv2、convn详解
1. conv(向量卷積運算)
向量的卷積= 多項式乘法
使用說明:
w=conv(u,v)
u,v為向量,其長度可以不相同。
實例1:多項式乘法
(s^2+2s+2)(s+4)(s+1)
w=conv([1,2,2],conv([1,4],[1,1]))w = 1 7 16 18 8P=poly2str(w,'s')P = s^4 + 7 s^3 + 16 s^2 + 18 s + 82. conv2(二維矩陣卷積運算)
總結出full,same,valid三種卷積后圖像大小的計算公式:
1.full: 滑動步長為1,圖片大小為N1xN1,卷積核大小為N2xN2,卷積后圖像大小:(N1+N2-1) x (N1+N2-1)
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 12 4 6 4 23 6 9 6 32 4 6 4 21 2 3 2 1相當于把a看作圖片,b看作卷積核,默認為full 卷積后圖像大小為 3+3-1 = 5 * 5
如圖1, 滑動步長為1,圖片大小為2x2,卷積核大小為3x3,卷積后圖像大小:4x4(2+3-1)
圖中藍色為原圖像(22),灰色為卷積核(33),白色為對應卷積所增加的padding,通常全部為0,綠色是卷積后圖片(4*4)。(2+3-1)
圖的卷積的滑動是從卷積核右下角與圖片左上角重疊開始進行卷積,滑動步長為1,卷積核的中心元素對應卷積后圖像的像素點。
2.same: 滑動步長為1,圖片大小為N1xN1,卷積核大小為N2xN2,卷積后圖像大小:N1xN1
a=[1 1 1;1 1 1;1 1 1]; b=[1 1 1;1 1 1;1 1 1]; >> conv2(a,b,'same')ans =4 6 46 9 64 6 43.valid:滑動步長為S,圖片大小為N1xN1,卷積核大小為N2xN2,卷積后圖像大小:[(N1-N2)/S+1] x [(N1-N2)/S+1]
a=[1 1 1;1 1 1;1 1 1]; b=[1 1 1;1 1 1;1 1 1]; >> conv2(a,b,'valid')ans =9如圖2,滑動步長為1,圖片大小為5x5,卷積核大小為3x3,卷積后圖像大小:3x3
3. MATLAB的conv2函數實現步驟 conv2(A,B)
卷積的時候需要對卷積核進行180的旋轉,同時卷積核中心與需計算的圖像像素對齊,輸出結構為中心對齊像素的一個新的像素值
其中,矩陣A和B的尺寸分別為mana即mbnb
① 對矩陣A補零,
第一行之前和最后一行之后都補mb-1行,
第一列之前和最后一列之后都補nb-1列
(注意conv2不支持其他的邊界補充選項,函數內部對輸入總是補零);
③ 滑動旋轉后的卷積核,將卷積核的中心位于圖像矩陣的每一個元素,并求乘積和(即將旋轉后的卷積核在A上進行滑動,然后對應位置相乘,最后相加);
下面分別是shape=full, same, valid時取輸出圖像大小的情況,其中:
位置1表示輸出圖像的值從當前核的計算值開始(對應輸出圖像左上角),
位置2表示到該位置結束(對應輸出圖像右下角)
‘full’ 全卷積(默認值)。
‘same’ 與 u 大小相同的卷積的中心部分。
‘valid’ 僅計算沒有補零邊緣的卷積部分。此時,length(y) 是 max(length(u)-length(v)+1,0)。
4.convn(n維矩陣卷積運算)
a=ones(5,5,5)
a(:,:,1) =
1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1a(:,:,2) =
1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1a(:,:,3) =
1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1a(:,:,4) =
1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1a(:,:,5) =
1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1b=ones(5,5,5);
convn(a,b,‘valid’)
ans =
125
convn(a,b,‘same’)
ans(:,:,1) =
27 36 45 36 27 36 48 60 48 36 45 60 75 60 45 36 48 60 48 36 27 36 45 36 27ans(:,:,2) =
36 48 60 48 36 48 64 80 64 48 60 80 100 80 60 48 64 80 64 48 36 48 60 48 36ans(:,:,3) =
45 60 75 60 45 60 80 100 80 60 75 100 125 100 75 60 80 100 80 60 45 60 75 60 45Reference:
1.MATLAB卷積運算(conv、conv2、convn)解釋
2.MATLAB-conv函數
總結
以上是生活随笔為你收集整理的MATLAB卷积conv、conv2、convn详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#使用Protocol Buffer(
- 下一篇: fgui快速接入到一个laya实例项目中