MATLAB中显示.mat图像文件方法/imshow显示全白的原因

今天看论文的时候发现作者使用了一个数据集:Indian pines dataset,这是一个145x145x220的高光谱图像数据集,但我只下载了它的.mat文件,所以特别想看看它是长什么样子的~

这是我下载的数据集
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
双击它!读取!
这时工作区和命令行窗口就显示以下信息
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
这时就可以看看它的信息,输入whos(当然不看也行)
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
145x145x220代表该数据集有大小为145x145的220张图片,论文里用到的是第103张,所以我想看看第103张长啥样。
输入indian_pines(:,:,103),两个冒号表示第103张图片的每一行、每一列全都要,显示出一大堆像素信息——
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
本来,我想转换成uint8类型,便于显示
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
哇~竟然全变成255了呢,显示出来就是全白的!
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
这可怎么办呢!可不可以不转换类型直接显示呢,我们试一下
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
由于像素值都超过了1000,直接用imshow显示的话,也是全白的(同上图)
但我忽略掉的是,imshow还可以自动调整数据的范围以便于显示!!
就是这样表示
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
如此操作,我终于看到了.mat图像文件的真容~
MATLAB中显示.mat图像文件方法/imshow显示全白的原因
烫知识:
imshow(I,[low high])用指定的灰度范围 [low high]显示灰度图像 I。图像中灰度值等于或低于low的都将用黑色显示,而灰度值大于等于high的都显示为白色,介于low和high之间的用其灰度级的默认值的中间色调显示。
如果你用了一个空矩阵 ([]) 来代替 [low high], imshow 函数将使用 [min(I(:))max(I(:))]作为第二个参数。