矩阵的卷积

转载 2013年12月04日 16:14:27

转载地址:http://blog.csdn.net/frankyzhangc/article/details/6990782  自己也做了一定的添加和修改

想要深刻理解矩阵的卷积,那么首先要知道什么是离散序列的卷积。

已知离散序列x(n)和h(n),则x(n)和h(n)的卷积定义为:


其计算过程是对h(n)翻转,平移,相乘,求和。也可以用不进位乘法计算,并且Length(y)=Length(x)+Length(h)。

还有,若x(n):n1≤n≤n2;h(n):n3≤n≤n4;那么y(n):n1+n3≤n≤n2+n4


一个矩阵与另一个矩阵的卷积运算大部分运用在图像处理上,例如用一个模板去对一幅图像进行卷积。我们这里只考虑n*n的模板,并且n为奇数(当然不是方阵或者n不是奇数也可以,但是在实际应用中模板大都为n为奇数的方阵)。

把模板(n*n)放在矩阵上(中心对准要处理的元素),用模板的每个元素去乘矩阵中的的元素,累加和等于这个元素,依次计算每个元素的值,如果矩阵的中心在边缘就要将原矩阵进行扩展,例如补0,或者直接规定模板的中心距离边缘(n-1)/2个单位以上。

卷积的计算步骤:
(1)    卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)
(2)    移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3)    在旋转后的卷积核中,将输入图像的像素值作为权重相乘
(4)    第三步各结果的和做为该输入像素对应的输出像素


以下举一个简单的例子,并用Matlab来观察

相关MATALB代码

a=[2 1 3 1;1 2 1 2;2 1 3 2;1 3 1 2];%大小为ma*na
b=[1 1 1;1 1 1;1 1 1];%大小为mb*nb
c=conv2(a,b,'same');%返回和a同样大小的部分,ma*na,一般在图像中的应用都是这样使用
d=conv2(a,b,'full');%返回完整矩阵,大小为(ma+mb-1,na+nb-1)
fprintf('\na = \n');
disp(a);
fprintf('\nb = \n');
disp(b);
fprintf('\nc = \n');
disp(c);
fprintf('\nd = \n');
disp(d);


MATALB仿真结果

a = 
     2     1     3     1
     1     2     1     2
     2     1     3     2
     1     3     1     2

b = 
     1     1     1
     1     1     1
     1     1     1

c = 
     6    10    10     7
     9    16    16    12
    10    15    17    11
     7    11    12     8

d = 
     2     3     6     5     4     1
     3     6    10    10     7     3
     5     9    16    16    12     5
     4    10    15    17    11     6
     3     7    11    12     8     4
     1     4     5     6     3     2



相关文章推荐

Openblas加速二维矩阵卷积操作

Openblas可以加速矩阵卷积的操作,越复杂的卷积,越适合Openblas的加速,以下程序经博主测试准确无误。...
  • samylee
  • samylee
  • 2017年06月14日 18:32
  • 804

卷积运算转换为矩阵乘法

看卷积神经网络的时候,发现代码中计算卷积是通过矩阵乘法来计算的。 搜了一下发现网上这方面的资料很少。刚开始找中文的,找到两个。 http://blog.csdn.net/anan1205/articl...

卷积的循环矩阵求解方法

通常我们求解一维卷积或者二维卷积都是采用模板平移的方法,今天我们介绍一种新的求解方法,可以一次性求出所有的结果。一维卷积卷积定义对于两个长度分别为m和n的序列x(i)和g(i)有, h(i)=x(i...

Openblas加速二维矩阵卷积操作-增加pad计算

上个博客中(http://blog.csdn.net/samylee/article/details/73251042)提到了openblas加速二维矩阵的卷积计算,本博客增加了pad计算。 下个博客...
  • samylee
  • samylee
  • 2017年06月14日 22:01
  • 445

OpenCV在矩阵上的卷积

转载请注明出处!!!http://blog.csdn.net/zhonghuan1992   OpenCV在矩阵上的卷积          在openCV官网上说是戴面具,其实就是重新计算一下矩阵中的...

opencv矩阵的卷积

一个矩阵与另一个矩阵的卷积运算大部分运用在图像处理上,例如用一个模板去对一幅图像进行卷积。 卷积方法: 1、函数法(fileter2D) //CV_EXPORTS_W void filter2D(...
  • j_d_c
  • j_d_c
  • 2015年12月05日 14:24
  • 967

矩阵卷积的快速算法

悲剧的面试上周二去面试一家公司,好几个问题上都卡住了。原先刷的都是算法、数据结构上的问题。简历上写的课程上的知识几乎全忘了(本身也没兴趣),结果面试官按着简历上的课程问,悲剧了。题目一个M×N的矩阵A...

Openblas加速三维矩阵卷积操作-增加num_output计算

上个博客中(http://blog.csdn.net/samylee/article/details/73302547)提到了Openblas加速三维矩阵卷积操作,本博客增加了num_output计算...
  • samylee
  • samylee
  • 2017年06月16日 22:41
  • 317

向量与矩阵的卷积算法

由于我发现网上并没有关于向量与矩阵两者进行卷积计算的具体算法,所以我就跟各位网友分享一下我的观点。因为本人知识储备有限,对卷积的了解也很是肤浅,没有深入研究,所以有错误的地方还请大神们指正,小子不胜感...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:矩阵的卷积
举报原因:
原因补充:

(最多只允许输入30个字)