一维卷积与二维卷积计算

介绍一维卷积的两种计算方法:

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)的数据,指的是模板元素全部参加运算的结果数据,即源图像和模板的交集为模板。

    

posted @ 2016-07-21 16:05  彤心Dasein  阅读(4757)  评论(0编辑  收藏  举报