MATLAB 读取32位TIFF图显示异常问题解决

例如某TIFF数据,在arcmap、ENVI等软件中打开显示如下:

MATLAB 读取32位TIFF图显示异常问题解决

但用MATLAB   imread命令加载进去显示异常,如下图所示:

MATLAB 读取32位TIFF图显示异常问题解决

 

并且用Windows自带照片查看器打开仍是上图这个鬼样子。

 

经详查后发现,此图在arcmap属性中显示数据位数为32位 (32 bit),在网上又查阅一番资料后有了答案。

造成此现象的原因:虽然TIFF格式支持32位 ,但Matlab不支持32位TIFF。Matlab接受的TIFF数据格式是double,single,uint8,uint16或logical。

 

解决方法:在arcmap里导出一下就好了

1. 

MATLAB 读取32位TIFF图显示异常问题解决

2. 勾选 Use Render。使得数据位数变为8bit。

MATLAB 读取32位TIFF图显示异常问题解决

 

不过此方法会造成影像数据精度的些许损失。