1

我有一个名为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

4

2 回答 2

5

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

boatDbl = boat / 255;

figure;
imshow(boatDbl);

figure;
imhist(boatDbl);

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

boat = uint8(boat);
于 2013-04-14T11:51:48.360 回答
0

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

newImage = rgb2gray(oldImage);

之后,您应该能够imhist(newImage)毫无问题地执行。让我知道它是否有效!

于 2018-03-18T13:19:21.833 回答