我正在尝试编写一个用于图像模糊的matlab程序。我需要使用fspecial('average')
和conv2
功能。到目前为止,我已经编写了以下代码:
x=imread('ghoul.jpg');
subplot(211),imshow(x)
h=fspecial('average');
y=conv2(double(x),double(h));
subplot(212),imshow(y)
x
的大小为250X250 uint8
代码的问题在于它显示原始图像正常但图像仅在底部模糊而在剩余区域中为白色。
到目前为止,我已经猜到我没有在h
中指定大小。但我在如何定义h
中的大小方面存在问题。是否应该是x
的大小。如果有人可以告诉我如何写大小或其他提示,将会很有帮助。
谢谢你的帮助。
答案 0 :(得分:1)
matlab代码的问题在于它在双数据类型上使用imshow,导致图像强度值扭曲(在图像的某些区域几乎不可见或不可见)。滤波后的图像需要重新调整强度值,并且正如@eigenchris指出的那样使用:
imshow(Y,[])
重新调整图像强度值,图像完美模糊
注意:滤镜的大小对图像失真没有任何影响。 (大小仅用于衡量您想要模糊图像的程度)