一、函数调用方式:
1.C=conv(A,B)
C的size分别为A、B行列值对应相加再减1,比如conv(33,44)->(6*6)
2.C=conv2(Hcol,Hrow,A)
3.C=conv(A,B,shape)
根据shape返回子区,shape=‘same’时返回子区中心域
二、计算公式
最直观的表示,就是把卷积核旋转180°后再卷积,也可以从数学表达式层面进行解读:
公式:
一般认知是卷积之后图像会变小,但是2D卷积怎么还会变大呢?这是由于公式中B(j-p+1,k-q+1)部分允许坐标出现负值而无效,从而卷积核可以“部分”卷积对象矩阵,如何理解哪些卷积核元素,在某次卷积中是有效的(卷积对象坐标大于等于一)?
假设Ama,na,Bmb,nb,对于conv2(A,B)
令j-p+1>=1,k-q+1>=1,得到j>=p,k>=q,可以得知,当想得到位置(j,k)的卷积结果时,只有A中 p<=j,q<=k的卷积核元素是参与了卷积的,此时,B像素的坐标才不会出现负值或零值。
观察式子可以得到,对于点(j,k),j-p+1和k-q+1从j到j-p‘+1和k到k-q’+1变化,则该次卷积中的被卷积矩阵可以根据如下规律判断:
图中括号内为坐标,q‘=max(k-na+1,1),p’类似,最后该位置的结果为
参考链接:
matlab中conv2函数
MathWork_conv2