matlab中有conv2函数可以计算图像卷积
比如F矩阵size为m1×n1m1 \times n1m1×n1, G矩阵size为m2×n2m2 \times n2m2×n2
那么卷积结果的size就是(m1+m2−1)×(n1+n2−1)(m1+m2-1) \times (n1+n2-1)(m1+m2−1)×(n1+n2−1)
如何计算:
比如F=[1234]\left[
\begin{array}{cc}
1&2\\
3&4
\end{array}
\right][1324]
G=[−11−22]\left[ \begin{array}{cc} -1&1\\ -2&2 \end{array} \right][−1−212]
首先在右边和下边补0以达到结果的size
F=[120340000]\left[
\begin{array}{ccc}
1&2&0\\
3&4&0\\
0&0&0
\end{array}
\right]⎣⎡130240000⎦⎤
G=[−110−220000]\left[ \begin{array}{ccc} -1&1&0\\ -2&2&0\\ 0&0&0 \end{array} \right]⎣⎡−1−20120000⎦⎤
然后把G旋转180°180\degree180°,注意是180°180\degree180°
G=[00002−201−1]\left[ \begin{array}{ccc} 0&0&0\\ 0&2&-2\\ 0&1&-1 \end{array} \right]⎣⎡0000210−2−1⎦⎤
再用G的窗口在F从左上到右下滑动,刚开始是G右下角的-1对应F左上角的1,直到计算出size是3×33 \times 33×3的结果
F * G = [−1−12−5−38−6−28]\left[
\begin{array}{ccc}
-1&-1&2\\
-5&-3&8\\
-6&-2&8
\end{array}
\right]⎣⎡−1−5−6−1−3−2288⎦⎤
而CNN中G是不需要补0和旋转的,F在不要求padding时也不需要补0
size为f + 2p - g /s +1 , 其中p为padding,s为stride
Matlab卷积计算详解
本文详细介绍了在Matlab中使用conv2函数进行图像卷积的计算过程,包括矩阵补零、旋转及滑动计算,并对比了卷积神经网络(CNN)中的不同处理方式。
1049

被折叠的 条评论
为什么被折叠?



