高斯函数的 imshow 命令

信息处理 matlab 图片 高斯
2022-02-19 21:27:26

我正在尝试在 MATLAB 中使用“imshow”绘制二维高斯函数。但是我在图像中看不到任何白点。我试图改变采样值和 x 和 y 值的限制。除此之外,我尝试了 z.^2 和更高的命令,但没有任何改变。谢谢您的帮助。可能是什么问题?我的代码如下:

sigma = 10;
[X,Y] = meshgrid(-40:0.5:40,-40:0.5:40);
z     = (1/(2*pi*(sigma^2)))*exp(-((X.^2)+(Y.^2))/(2*(sigma^2)));
figure
surf(X,Y,z);%shading interp
figure
imshow(z);

使用“冲浪”命令

使用“imshow”命令

2个回答

为什么不简单地使用:

imagesc(z);

或者:

h=pcolor(z)
set(h, 'LineStyle','None')

虽然如果你真的想使用imshow那么提供一组额外的参数来缩放绘图范围。它的计算和内存效率更高。

imshow(z, [min(min(z)) max(max(z))])

查看 3d 图上的比例。z 轴(或绘制为图像时的强度值)的数量级为 10^-3

在matlab中任何双(十进制)数字上的imshow会自动将图像缩放为0 =黑色1 =白色。考虑到这一点,您的绘图本质上是一个零矩阵或黑色矩阵。

您可以通过两种方式解决此问题

1.使用 imagesc,缩放图像以占据整个动态范围

imshow(imagesc(z)); 

2.模拟图像c

Max_val= max(max(z));
Min_val=min(min(z));
scaledz = 1/(Max_val - Min_val) * (z - Min_val); %this gets our numbers between 0-1
Imshow(scaledz)

代码未经测试,我只是从手机上的内存中编写的。它可能无法完全正常工作,但应该非常接近