Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中创建二维模糊矩阵_Matlab_Image Processing_Convolution - Fatal编程技术网

在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))
最大差异非常小。