发生这种情况的原因是因为您使用后的平均图像filter2
是双类型图像。你不是第一个(也可能不是最后一个……)经历这种混淆的人imshow
。事实上,我imshow
在 StackOverflow 上解决的几乎所有问题都是因为与imshow
.
在决定使用该功能之前,您必须了解您尝试显示的图像类型。imshow
预计类型图像的double
强度/颜色通道在[0,1]
. 下面的任何内容0
都设置为黑色,而超出的任何内容1
都设置为白色,这就是您获得全白图像的原因。
您需要转换回以uint8
正确显示图像。因此,请在显示图像之前尝试执行此操作:
down1 = uint8(down1);
imshow(down1);
当我这样做时,这就是我显示下采样图像时得到的结果。

小评论
FWIW,当涉及到图像过滤时,我会亲自使用imfilter
。 imfilter
专为图像过滤而设计,适用filter2
于更通用的 2D 信号。一件好事是imfilter
它会输出一个相同类型的图像,默认filter2
为double
. filter2
除非您被迫在图像上使用它,否则我会远离。
因此,将您的filter2
语法替换为:
avgimg = imfilter(img, avgfilter);
如果您改为这样做,则无需将图像转换回uint8
. 您将能够使用 正确可视化结果imshow
。