在matlab中创建二维模糊矩阵
我可以通过以下代码对图像在matlab中创建二维模糊矩阵,matlab,image-processing,convolution,Matlab,Image Processing,Convolution,我可以通过以下代码对图像I应用过滤器: h = fspecial('gaussian',20,4); blurred = conv2(I,h,'same'); 图像I的大小与模糊的大小相同,我想以矩阵乘法形式编写卷积过程,即模糊=H*I(:),因此我尝试了以下方法: H=convmtx2(h,size(I)); blurred=H*I(:); 但是整形后的模糊的大小将大于I的大小,因为convmtx2返回一个完整的卷积矩阵,如何得到一个只返回中心部分而不返回完整卷积的卷积矩阵。看看这是否
I
应用过滤器:
h = fspecial('gaussian',20,4);
blurred = conv2(I,h,'same');
图像I
的大小与模糊
的大小相同,我想以矩阵乘法形式编写卷积过程,即模糊=H*I(:)
,因此我尝试了以下方法:
H=convmtx2(h,size(I));
blurred=H*I(:);
但是整形后的
模糊
的大小将大于I
的大小,因为convmtx2
返回一个完整的卷积矩阵,如何得到一个只返回中心部分而不返回完整卷积的卷积矩阵。看看这是否适用于您-
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));
我只是好奇这里提供的解决方案是否对您有效。谢谢您的回答,当然我会在访问matlabOh后检查它。没关系,我认为轻推不会是个坏主意:)
b2=imfilter(i,h);err=模糊-b2;max(max(err))
最大差异非常小。