一个矩阵与另一个矩阵的卷积运算大部分运用在图像处理上,例如用一个模板去对一幅图像进行卷积。
把模板(n*n)放在矩阵上(中心对准要处理的元素),用模板的每个元素去乘矩阵中的的元素,累加和等于这个元素例如例子中的第二行第二个元素16= 1*2+1*1+1*3+1*1+1*2+1*1+1*2+1*1+1*2+1*1+1*3的计算,依次计算每个元素的值,如果矩阵的中心在边缘就要将原矩阵进行扩展,例如补0,或者直接规定模板的中心距离边缘(n-1)/2个单位以上。
以下举一个简单的例子,并用Matlab来观察
相关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=conv2(a,b,'same');
d=conv2(a,b,'full');
fprintf('\na = \n');
disp(a);
fprintf('\nb = \n');
disp(b);
fprintf('\nc = \n');
disp(c);
fprintf('\nd = \n');
disp(d);
MATALB仿真结果
a =
b =
c =
d =
卷积的计算步骤:
(1)
(2)
(3)
(4)
请看用水平和垂直差分算子对矩阵处理后的结果,然后细细体会
a =
b =
e =
c =
d =