我有一个名为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
答案 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)
。如果有效,请告诉我!