介绍一维卷积的两种计算方法:
1.h(n)序列倒置->位移->相乘->取和
举例:x(n) = [4,3,2,1],h(n) = [3,2,1]。
h(n)倒置为h'(n)[1,2,3],逐渐从前向x(n)位移,直到h'(n)最后一个元素3与x(n)第一个元素4接触时,开始相乘,也就是将两个序列相交的元素相乘并求和。
因此x(n)*h(n) = [4×3,2×4+3×3,1×4+2×3+3×2,1×3+2×2+3×1,1×2+2×1,1×1] = [12,17,16,10,4,1]
2.对位相乘求和。
步骤:①两序列右对齐;②逐个元素对应相乘但是不进位;③同列乘值相加
举例:
矩阵卷积:
同一维数据卷积一样,它的实质在于将卷积模板图像翻转(旋转180°),这里等同于一维信号的翻转,然后将卷积模板依次从上到下、从左到右滑动,计算在模板与原始图像交集元素的乘积和,该和就作为卷积以后的数值。
假设矩阵A(4*3)、B(2*3)如下:
首先,B需要旋转180,结果为
然后不断平移、相乘、求和。
依次计算直至结束,结果数据为:
卷积结果shape的取值有三种,令mA表示矩阵A的行数,nA代表矩阵A的列数。full代表返回卷积以后的全部数据,即为(mA+mB-1,nA+nB-1);same代表返回卷积以后的原图size (mA,nA)的部分数据;valid返回size为(mA-mB+1,nA-nB+1)的数据,指的是模板元素全部参加运算的结果数据,即源图像和模板的交集为模板。