基础知识:
1:遥感高分影像,一般默认为tif或tiff 格式,均为16位(uint16)。
matlab:
a) tiff的读取,需要用到geotiffread()函数,如:
[data,R] =geotiffread('D:\GF1_WFV1_E99.4_N36.3_20140716_L2A0000278923.tiff');
#其中data 为图像数据,R为图像的通道数
b) tif的读取,直接用imread()函数即可,如:
img = imread('D:\1.tif');
c)显示:四波段数据无法在matlab中直接imshow(),matlab输出图像要求最高三波段,常用cat()函数截取三波段,再输出。如:
img=cat(3,GF1data(:,:,1),GF1data(:,:,2),GF1data(:,:,3)); //此时得到三波段的uint16数据。
img_gray = rgb2gray(img); //得到灰度图,单波段的uint16
imshow(img_gray ,[]); //正常显示
python:
a)tiff的读取,建议引入gdal库,具体可参考搜索引擎!
b)tif 的读取,直接cv2.imread()或os.imread(),如:
img = cv2.imread('C:/MU/img1_12.tif',-1)
注: 尾巴加了-1,是为了保证img以原始uint16保存,否则会python系统自动将读取的16位改为8位,自动压缩数据,必定带来一些信息损失,可能影像结果也可能不影响!
c)显示: python无法直接输出超过三波段的影像,且只有uint8位的数据才能正常显示,为了让图像显示更符合人类视觉,我们经常做的就是转换一下:
img = np.uint8(255.0 * (img - np.min(img)) / (np.max(img) - np.min(img)))
# 归一化(normalization )操作,uint8后的img,直接:
cv2.imshow('img_uint8',img) #即可正常显示图片