AI Earth地球科学云平台开发者模式提供了丰富的遥感数据和函数计算能力,下面介绍结合AIE Notebook,实现遥感数据的百分比线性灰度拉伸。
本期开发者实践案例——遥感影像百分比线性拉伸
灰度拉伸 (GrayScale Stretch) 是遥感影像处理过程中的重要步骤,其目的是将遥感影像的原始像元值区间通过某种对应关系映射到另一个像元值区间,如映射到RGB图像的 [0, 255] 或 [0, 65535] 区间,映射到 [0, 1] 的归一化区间等。通过对遥感图像进行合理的灰度拉伸预处理,可有效提高后续如特征提取等处理流程的效果,也有助于获得良好的图像可视化结果。
/ 直接线性拉伸 /
在介绍百分比线性灰度拉伸之前,先介绍最基本的直接线性拉伸。直接线性拉伸是最常见的图像增强方法,不依赖于外部参数输入,实现步骤如下:
Step 1:获取待拉伸图像的最大灰度值和最小灰度值;
Step 2:使用图像灰度最值对所有像元对灰度进行归一化(0~1);
Step 3:将归一化后的像元值重新转换到0~255或者0~65535区间;
直接线性拉伸的操作如下:
01/ 平台初始化和数据导入
import aie
aie.Authenticate()
aie.Initialize()
#准备数据
def s2_collection(start_date, end_date, region):
s2 = aie.ImageCollection('SENTINEL_MSIL2A') \
.filterBounds(region) \
.filterDate(start_date, end_date) \
.filter('eo:cloud_cover<20')
mosaic_image = s2.median().clip(region)
return s2, mosaic_image
#获取区域:浙江省
region = aie.FeatureCollection('China_Province') \
.filter(aie.Filter.eq('province', '浙江省')) \
.geometry()
#获取遥感数据
s2, s2_mosaic = s2_collection('2021-04-01', '2022-08-30', region)
02/ 获取灰度值范围
获取待拉伸图像的的最小和最大灰度值,哨兵2号B4/B3/B2分别对应R/G/B通道。
#直接线性拉伸
def get_actual_min_max(image, bands, region