遥感影像百分比线性拉伸

article/2025/8/16 11:21:25

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, scale):minValue = image.select(bands).reduceRegion(aie.Reducer.min(), region, scale)maxValue = image.select(bands).reduceRegion(aie.Reducer.max(), region, scale)return minValue.getInfo(), maxValue.getInfo()#获取待拉伸图像的最小、最大灰度值
show_bands = ['B4', 'B3', 'B2']
min_value, max_value = get_actual_min_max(s2_mosaic, show_bands, region, 1000)

03/  可视化

使用addLayer方法中的vis_params参数,其中min和max作为Image拉伸渲染的最小值和最大值,遥感影像的原始数据位于这两个参数之间的数据会被线性映射到0~255之间,小于min的被映射为0,大于max的被映射为255。目前该参数支持单波段或3波段。

04/  拉伸效果分析

是否感觉有点不对劲儿,怎么图像这么暗?

对遥感影像原始数据进行直方图分析可以发现问题所在。


import matplotlib.pyplot as plt
histogram = s2_mosaic.select(show_bands).reduceRegion(aie.Reducer.histogram(2000), None, scale)
for band in show_bands:band_range = histogram.getInfo()[band+'_range']band_counts = histogram.getInfo()[band+'_counts']plt.plot(band_range, band_counts)plt.xlabel(band + '_range')plt.ylabel(band + '_counts')plt.show()

从直方图数据可以发现,原始数据的区间虽然很大(0~12000),但是绝大多数像元的数据都位于0~2000左右,导致直接线性拉伸后的图像对比度差,不利于可视化和后续处理。

/ 百分比线性拉伸 /

百分比线性拉伸是直接线性拉伸的进一步改进,直接线性拉伸是对所有灰度值进行拉伸,而百分比线性拉伸则只对一定灰度值区间进行拉伸。例如ENVI的2%线性灰度拉伸,就是针对低灰度值设置2%,高灰度值设置98%,即只对该区间进行拉伸。实现步骤如下:

Step 1:计算待拉伸图像的灰度直方图;

Step 2:对灰度直方图进行遍历,当低灰度像元累计数量达到2%时,将该灰度值设定为起始灰度值;继续对像元数量进行累加,当像元数量累加到98%时,将该灰度值设置为终止灰度值;

Step 3:使用获取得到的起始灰度值和终止灰度值对所有像元灰度值进行归一化;

Step 4:将归一化后对像元值重新转换到0~255或者0~65535区间,如果转换后的值超过映射区间,则设置对应的最大值或者最小值。

 

01/  获取灰度值范围


import numpy as npdef get_percent_min_max_hist(band_range, band_counts, min_percent, max_percent):key = np.array(band_counts)accSum = np.cumsum(key)accPercent = accSum / accSum[-1]pmin = np.searchsorted(accPercent, min_percent)min_hist = band_range[pmin + 1]pmax = np.searchsorted(accPercent, max_percent)max_hist = band_range[pmax]return min_hist, max_hist  #百分比线性拉伸获取起始灰度值和终止灰度值
def get_percent_min_max(image, bands, scale, min_percent, max_percent):min_value = {}max_value = {}histogram = image.select(bands).reduceRegion(aie.Reducer.histogram(2000), None, scale)for band in bands:print('start band ' + band + ' ...')band_range = histogram.getInfo()[band+'_range']band_counts = histogram.getInfo()[band+'_counts']temp_min, temp_max = get_percent_min_max_hist(band_range, band_counts, min_percent, max_percent)min_value[band+'_min'] = temp_minmax_value[band+'_max'] = temp_maxprint('end band ' + band + ' ! min=' + str(temp_min) + ', max=' + str(temp_max))return min_value, max_value#获取待拉伸图像的最小、最大灰度值
show_bands = ['B4', 'B3', 'B2']
min_value, max_value = get_percent_min_max(s2_mosaic, show_bands, 1000, 0.02, 0.98)

02/  效果分析

使用百分比线性灰度拉伸后的遥感影像可视化效果比直接线性拉伸有明显提升。

直接线性拉伸效果

百分比线性灰度拉伸后效果

百分比线性灰度拉伸的完整代码:


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)import numpy as npdef get_percent_min_max_hist(band_range, band_counts, min_percent, max_percent):key = np.array(band_counts)accSum = np.cumsum(key)accPercent = accSum / accSum[-1]pmin = np.searchsorted(accPercent, min_percent)min_hist = band_range[pmin + 1]pmax = np.searchsorted(accPercent, max_percent)max_hist = band_range[pmax]return min_hist, max_hist  #百分比线性拉伸获取起始灰度值和终止灰度值
def get_percent_min_max(image, bands, scale, min_percent, max_percent):min_value = {}max_value = {}histogram = image.select(bands).reduceRegion(aie.Reducer.histogram(2000), None, scale)for band in bands:print('start band ' + band + ' ...')band_range = histogram.getInfo()[band+'_range']band_counts = histogram.getInfo()[band+'_counts']temp_min, temp_max = get_percent_min_max_hist(band_range, band_counts, min_percent, max_percent)min_value[band+'_min'] = temp_minmax_value[band+'_max'] = temp_maxprint('end band ' + band + ' ! min=' + str(temp_min) + ', max=' + str(temp_max))return min_value, max_value#获取待拉伸图像的最小、最大灰度值
show_bands = ['B4', 'B3', 'B2']
min_value, max_value = get_percent_min_max(s2_mosaic, show_bands, 1000, 0.02, 0.98)#可视化
vis_params = {'bands': ['B4', 'B3', 'B2'],   'min': [min_value['B4_min'], min_value['B3_min'], min_value['B2_min']],'max': [max_value['B4_max'], max_value['B3_max'], max_value['B2_max']]
}map = aie.Map(center=region.getCenter(),height=800,zoom=6
)
map.addLayer(s2_mosaic,vis_params,'sample image',bounds=region.getBounds()
)
map


http://chatgpt.dhexx.cn/article/o0ypNnKe.shtml

相关文章

遥感影像分类方法

最初的遥感影像分类是通过目视解译(濮静娟, 1984)来完成的&#xff0c;对研究人员的主观意识有较强的依赖性&#xff0c;而且效率较低&#xff0c;适用于数据量较小的情况&#xff0c;通常作为其他方法对比的对象。目前的遥感图像分类主要以计算机分类为主&#xff0c;因此按照…

遥感影像配准

文章目录 前言步骤1.ENVI&#xff1a;打开Image Registration Workflow2.Image Registration Workflow(1)选择GF2为Base Image File&#xff0c;某季节Sentinel2为Warp&#xff0c;然后Next(2)修改该参数为100(3)人为选择5个左右控制点&#xff0c;然后Next(4)删除离谱点(5)在E…

遥感图像分类技术

什么是遥感图像分类技术&#xff1f; 图像分类是将土地覆盖类别分配给像素的过程。例如&#xff0c;这9个全球土地覆盖数据集将图像分为森林、城市、农业和其他类别。 https://gisgeography.com/free-global-land-cover-land-use-data/ 一般来说&#xff0c;这是遥感中的三种主…

遥感图像分类

遥感图像分类 一、背景简介 遥感图像分类就是利用计算机通过对遥感图像中各类地物的光谱信息和空间信息进行分析&#xff0c;选择特征&#xff0c;将图像中各个像元按照某种规则或算法划分不同的类别&#xff0c;然后获得遥感图像中与实际地物的对应信息&#xff0c;从而实现…

WorldView卫星遥感影像数据/米级分辨率遥感影像

数据样例&#xff1a;百度云下载链接&#xff1a;https://pan.baidu.com/s/17ofPwpDM3OCHnE-LuhvUp 提取码&#xff1a;i0m4 目前世界上最常用的高分辨率卫星影像莫过于WORLDVIEW系列了&#xff0c;在卫星遥感圈内可谓大名鼎鼎&#xff0c;不仅具有超高的分辨率还具有其他高分…

遥感数据下载平台汇总

1中国资源卫星应用中心http://www.cresda.com.cn中巴卫星、HJ星、ZY系列 、GF系列2中科院对地观测与数字地球科学中心http://ids.ceode.ac.cn/Index.aspxERS卫星&#xff0c;Enviset_1卫星&#xff0c;法国的spot4卫星&#xff0c;中巴资源卫星&#xff0c;landset-5-73地球系统…

遥感多光谱数据下载与预处理(一、数据选择 下载)

首先说明本人并非专业大牛&#xff0c;不是教程贴只是记录一下学习过程和大家交流&#xff0c;过程有不严谨不合规范不对的地方欢迎各位大神指正。 本人目前做过接触过最多的是多光谱遥感数据&#xff0c;也是与无人机、雷达、高光谱等相比最简单的一种&#xff0c;这是我自己总…

地理空间数据云下载遥感影像

目录 1、先上网址&#xff1a;www.gscloud.cn 2、介绍界面&#xff1a; 2.1 “数据资源” 2.2 “高级检索” 1、先上网址&#xff1a;www.gscloud.cn 2、介绍界面&#xff1a; 地理空间数据云&#xff0c;作为国内免费下载遥感卫星影像的一个大平台&#xff0c;随着年代发…

遥感图像入门

遥感图像入门 一、 遥感基本概念地物光谱特性3S 技术瑞利散射大气窗口 二、 遥感系统的组成三、 遥感分类四、 遥感数字图像处理图像与数字图像数字图像获取时的基本参数数字图像类型 一、 遥感基本概念 遥感(Remote Sensing)——遥远的感知&#xff0c;在未接触物体的情况下获…

遥感影像的几何校正

一、引言&#xff08;INTRODUCTION&#xff09; 图像校正主要是指辐射校正和几何校正。辐射校正包括传感器的辐射校正、大气校正、照度校正遗迹条纹和斑点的判定和消除。几何校正就是校正成像过程中造成的各种几何畸变&#xff0c;包括几何粗校正和几何精校正。几何粗校正是针对…

遥感影像数据下载网站整理

遥感影像数据下载网站整理 1 遥感影像数据1.1 综合遥感数据1.1.1 USGS EarthExplore1.1.2 LAADS DAAC1.1.3 Copernicus Open Access Hub1.1.4 GloVis1.1.5 地理空间数据云 1.2 雷达遥感数据1.2.1 ASF DAAC 1.3 夜光遥感数据1.3.1 NOAA EOG1.3.2 珞珈一号 1.4 海洋卫星数据1.4.1…

高分GF与环境HJ系列国产卫星遥感影像数据图像免费批量下载方法

本文介绍高分&#xff08;GF&#xff09;与环境&#xff08;HJ&#xff09;等主要国产卫星遥感数据的免费下载&#xff08;包括批量下载&#xff09;方法。 首先&#xff0c;进入中国资源卫星应用中心官网&#xff1a;http://www.cresda.com/CN/。选择“查询系统”。 随后登录系…

【随笔】那些免费友好的遥感影像数据下载网站

1 .影像数据 1.1 地理空间数据云 推荐指数&#xff1a;❤❤❤❤❤交互界面&#xff1a;友好传输速度&#xff1a;0.4m/s数据集&#xff1a;开源数据集较为丰富&#xff0c;Landsat系列数据及DEM数据较丰富&#xff0c;但也有一些数据无法下载。 网址&#xff1a;地理空间数据…

完全免费的在线遥感影像下载器-转载

链接&#xff1a;link 转载学习使用&#xff0c;可免费下载&#xff01;

常用遥感数据下载平台

国内常用卫星数据下载网站 1&#xff0c;AI Earth 地球科学云平台 网址&#xff1a;AI Earth 数据&#xff1a;Landsat、Sentinel、MODIS、地形数据。 2&#xff0c;地理空间数据云 网址&#xff1a;http://www.gscloud.cn/ 数据&#xff1a;多种卫星数据 3&#xff0c;中…

Landsat遥感影像下载

摘要&#xff1a;本篇文章主要介绍下载遥感卫星影像数据常用的几种的获取方法。适合刚接触遥感这个领域不久却需要下载和使用遥感影像的人群。 本文着重介绍陆地资源卫星Landsat系列卫星的遥感影像查询和下载。 目录 1、陆地资源卫星Landsat系列卫星基本介绍 1.1 Landsat-5介绍…

遥感图像下载指南

文章目录 1、高分系列&#xff08;收费&#xff09;1.1 下载方式&#xff08;1&#xff09;&#xff1a;登录中国资源卫星应用中心1.2 下载方式&#xff08;2&#xff09;&#xff1a;登录数据分发系统 2、GOCI图像下载说明(免费),登录韩国海洋卫星中心3、MODIS图像下载4 、附录…

遥感数据下载网站

【补充1&#xff1a;】ASF DACC 12.5m的dem 数据&#xff08;https://search.asf.alaska.edu/#/&#xff09; 只需要注册一个账号就免费下载&#xff0c;Sentinel-1&#xff0c;ALOS PALSAR和其他SAR数据是开放访问的。可能需要cross wall。 【补充2&#xff1a;】陆地观测卫…

【保姆级教学】Landsat遥感影像下载

摘要&#xff1a;本篇文章主要介绍下载遥感卫星影像数据常用的几种的获取方法。适合刚接触遥感这个领域不久却需要下载和使用遥感影像的人群。 本文着重介绍陆地资源卫星Landsat系列卫星的遥感影像查询和下载。 目录 1、陆地资源卫星Landsat系列卫星基本介绍 1.1 Landsat-5…

批量下载Landsat遥感影像的方法

本文介绍在USGS网站批量下载Landsat系列遥感影像的方法。 首先 打开EarthExplorer的官网&#xff0c;首先完成注册与登录。 接下来 点击左侧“Search Criteria”&#xff0c;首先选择研究区域。研究区域的划定有多种方法&#xff0c;可以依据地理名称选定研究区域&#xff0c;也…