matlab中的Imhist不显示直方图

Abh*_*ash 1 matlab

我有一个名为boat的图像存储在.mat文件(Boat.mat)中我使用load('Boat.mat') 如果我键入imshow(boat)它只是显示一个空白框.我只能用它来查看图像imshow(boat,[0 255]).当我使用时,imhist(boat)我再次得到一个空白框.我如何看直方图.我需要看直方图.此外,我无法histeq(boat)用于直方图均衡.

任何帮助将不胜感激.谢谢

以下是Boat.mat文件的链接 http://www.engr.colostate.edu/ECE513/SP11/Boat.mat

dev*_*obf 5

默认情况下,imshow假设浮点图像的值介于0和1之间,这就是为什么您的图像(值为0到255)完全显示为白色 - 所有值都大于1.如您所见,您可以强制imshow使用以不同方式缩放值,但如果您只是首先重新缩放图像可能会更容易,并保持这样:

boatDbl = boat / 255;

figure;
imshow(boatDbl);

figure;
imhist(boatDbl);
Run Code Online (Sandbox Code Playgroud)

编辑:正如Shai在下面指出的那样,这是因为imshow和其他人根据矩阵的数据类型预测值的范围 - 因为你的boat矩阵是a double,他们假设0到1的范围.因此另一种解决方案是转换矩阵到一个integer类型,imshow假设范围为0到255:

boat = uint8(boat);
Run Code Online (Sandbox Code Playgroud)

  • 也可以使用`uint8`类型:`boat = uint8(boat);`. (2认同)