我可以通过以下代码在图片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
会返回一个完整的卷积矩阵,我怎样才能得到一个只返回中心部分的卷积矩阵不是完整的卷积。
答案 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));