matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像。
详细来说imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。例如,彩色图像像素大小是400*300( 高 * 宽 ),则保存的数据矩阵为400*300*3,其中每个颜色通道值是处于0~255之间。
简单来说就是matlab只能正确显示uint8类型的图像,而uint16的影像读入就会是全黑。那么自然,将uint16转为double再转为uint8就可以正常显示了。
img = imread('your.tif');
I1 = double(img);
I2 = uint8(I1);
imshow(I2);
imwrite(I2,'your.tif');
参考文章:matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明_matlab double转uint8_无鞋童鞋的博客-CSDN博客