matlab中的Imhist不显示直方图

时间:2013-04-14 11:44:35

标签: 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

2 个答案:

答案 0 :(得分:5)

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

boatDbl = boat / 255;

figure;
imshow(boatDbl);

figure;
imhist(boatDbl);

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

boat = uint8(boat);

答案 1 :(得分:0)

关于imhist(image)部分,您可能想尝试首先将图像转换为灰度(即使它最初是灰度图像),如下所示:

newImage = rgb2gray(oldImage);

之后,您应该能够毫无问题地执行imhist(newImage)。如果有效,请告诉我!