在matlab中创建2D模糊矩阵

时间:2014-05-04 20:46:26

标签: matlab image-processing convolution

我可以通过以下代码在图片I上应用过滤器:

h = fspecial('gaussian',20,4);
blurred = conv2(I,h,'same');

图像I的大小与blurred相同,我想以矩阵乘法形式编写卷积过程,即blurred=H*I(:),所以我尝试了以下内容:

 H=convmtx2(h,size(I));
 blurred=H*I(:);

但重塑后blurred的大小将大于I,因为convmtx2会返回一个完整的卷积矩阵,我怎样才能得到一个只返回中心部分的卷积矩阵不是完整的卷积。

1 个答案:

答案 0 :(得分:2)

看看这是否适合你 -

h = fspecial('gaussian',20,4);

H=convmtx2(h,size(I));

I_conv = reshape(H*I(:),size(h)+size(I)-1);
s1 = round(size(h,1)/2);
blurred = I_conv(s1+1:s1+size(I,1),s1+1:s1+size(I,2));