利用开源工具处理Landsat8影像

Landsat系列卫星影像是NASA发射的一系列陆地监测卫星,从1972的第一颗陆地卫星Landsat1到2013年发射的Landsat8,已经有将近50个年头了,Landsat系列卫星为地球监测,尤其是长时间序列的监测活动做出了巨大的贡献,而这也是我们所拿到的质量最好的免费遥感影像数据,Landsat的空间分辨率为30m,重访周期16天。

本文将使用GDAL这一开源工具来进行基本的Landsat8遥感影像处理,生成一幅漂亮的遥感影像图。

关于Landsat数据的获取,可以到USGS下载,下载下来的数据是GeoTiff格式的灰度图像,每个波段1个文件,这里所说的波段是指传感器的不同感受视野,不同的波段接收的光谱范围不同,那么Landsat8 共有11波段

每个波段的文件都是一张灰度图像,大概都张这个样子:

而这显然不是我们想象中的的地球样子,将其合并成rgb彩色图像才符合我们人类的视觉认知
利用GDAL提供的gdal_merge工具便可以将这些单波段的灰度图像组合到一起,生成一个RGB图像,下面我们把4、3、2波段分别对应到Red、Green、Blue三个通道

gdal_merge.py -separate -o merged_432.tif LC08_L1TP_118038_20170824_20170912_01_T1_B{4,3,2}.TIF

合并后的图像非常的暗,对比度太低,无法看清细节,怎么解决这一问题呢,只要做一个对比度拉伸就行,遥感影像中通常保留2%~98% histogram percentage就能达到一个比较好的可视化效果,对于当波段的灰度图像也是如此。

import numpy as np
import skimage.exposure as exposure

percent=2
pLow, pHigh = np.percentile(img[img > 0], (percent,100-percent))
img_rescale = exposure.rescale_intensity(img, in_range=(pLow,pHigh))
tifffile.imsave('merged_432_stretch.tif', img_rescale)
tifffile.imshow(img_rescale)

保存下载图tif文件任然无法直接在系统文件中预览,可以利用下面的命令将其转换成JPG文件

gdal_translate -of JPEG -scale -co worldfile=yes merged_432_stretch.tif merged_432_translate.jpg

上面利用4、3、2波段生成的是真彩色图像,也就是实际地表的颜色,其实还可以组合不同的图像生成不同的样色,比如利用5、4、3波段可以组合生成标准假彩色图像(突出显示植被)。

再比如利用5,6,4合成的假彩色,用于区分陆地和水体。

以上只是一些基本的操作,如果想要得到更加准确的效果,还要加入辐射定标系数、太阳高度角、日地距离等参数进行计算。