【技术类】Landsat 7 ETM+影像条带去除妙招

修复Landsat-7ETM+坏条带
本文介绍如何使用ArcGIS栅格函数修复Landsat-7ETM+遥感影像中的坏条带问题。文章详细阐述了条带丢失的原因及修复过程,包括设置无效值、掩膜运算和领域统计计算等步骤。
该文章已生成可运行项目,

      使用过Landsat-7 ETM+影像数据的童鞋,你们是否因为影像的数据条带丢失所困扰呢?数据条带丢失也就是我们通常说的坏条带问题,遇到这种数据很让人头疼。

图:原始影像

      坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用。此后Landsat 7 ETM SLC-on是指2003.5.31日Landsat 7SLC故障之前的数据产品,Landsat 7 ETMSLC-OFF则是故障之后的数据产品。

 

      坏条带的修复:部分学者开展了条带受损修复研究,一些遥感图像处理软件可以实现条带修复,如ENVI已有相应插件,利用掩膜通过插值方法修补缺失的条带。

今天主要向大家介绍利用ArcGIS的栅格函数实现Landsat-7 ETM+的条带修复。

 

      条带修复实现步骤

    (1)    加载影像数据:通过catalog窗口实现影像加载

     展开栅格产品 图标,将多光谱(下图红框中的数据)影像拖拽至影像视窗。

图:栅格产品显示影像数据

    (2)    进入影像属性窗口:展开栅格函数处理链

     Table Of Contents——>Layers图层——>右键影像——>Properties——>Functions选项,打开影像属性窗口函数选项。

 

图:栅格函数面板

    (3)    插入Mask Function:设置影像条带为无效值

      进行如下参数设置:

图:MaskFunction函数设置

      这里有几个参数需要注意一下:

      NoData Interpretation:NoData值的设置

下拉框里有“Any”和“All”两个选项,默认选项是“Any”,这也是首选项。如果选择了“All”,那就意味着一景影像的所有波段的Nodata值都位于相同的像元,做掩膜运算时只会把具有这些特性的像元设置为0值。而“Any”,则会把所有波段上的Nodata值都设置为0值。很明显,前者的要求比较苛刻,可能会遗漏一些零值的设置,所以通常此处设为“Any”。

      NoDataValues:无效值的设置

NoData设置为0。

 

    (4)    插入statistics Function:利用领域统计计算,去除无效值

参数设置如下:

图:统计参数设置

      这里有两个参数注意一下:

     Type:领域统计方法

  • Minimum—统计领域范围内各像元的最小值;
  • Maximum—统计领域范围内各像元的最大值;
  • Mean—统计领域范围内各像元的中值;
  • Standard Deviation—统计领域范围内各像元的中方差;

     默认类型是“Mean”,通常此种方法能得到较理想的结果。可根据影像具体情况进行设置。

Neighborhood Settings:领域行列数设置

根据条带的行列数进行该参数的设置,该值无上限。但需要注意的是,如果数值偏大,统计值计算的速度会变慢,并且参与统计的行列数过多,可能会导致影像变得模糊起来

Fill NoData pixel values only,当进行坏线去除时,这个参数需要选中,表示只进行无效值的填充。


图:最终结果

图:细节图

      通过以上几步,即可实现影像坏线去除。利用ArcGIS实时处理技术,可以瞬时得到处理后的影像,如果对结果不满意,可以适当的进行参数修改。

      整个坏线去除的思路为:设置坏线处的无效值为0值,利用Mask Function进行掩膜运算;对于0值的区域,利用领域统计算法去除这些无效值。

 

      想动手试试整个坏线去除流程吗?如果你手中有这类数据不妨动手一试。这里也提供了一景坏的比较严重的测试数据链接: http://pan.baidu.com/s/1kp0L5  密码: pi35       还等什么,快点行动吧~

本文章已经生成可运行项目
### Landsat 7 条带修复方法和工具 对于Landsat 7 ETM+影像中存在的条带问题,可以采用特定的软件工具来进行修复处理。在ENVI环境中,存在专门针对此现象的功能模块来解决这一难题。通过进入Basic Tools -> Preprocessing -> General Purpose Utilities-> TM6去条带(改进),能够有效去除影响数据质量的条带效应[^1]。 具体操作上,在上述路径下找到并启动TM6去条带功能后,用户可以根据实际需求调整参数设置以优化修复效果。该过程涉及对原始图像进行预处理分析,并应用算法消除由传感器故障引起的空间分布异常模式,从而提高遥感影像的整体可用性和视觉表现力。 此外,除了利用专业的地理信息系统(GIS)平台提供的内置解决方案外,还有其他开源库或编程接口可供开发者探索实现自定义的条纹移除技术。例如Python中的GDAL库支持读取多种类型的栅格文件格式,并允许编写脚本来批量处理大量卫星图片;而Scikit-image则是一个专注于图像处理任务的扩展包,其中包含了用于滤波和平滑噪声等多种实用函数,这些都可能成为构建个性化条带校正流程的重要组成部分。 ```python from osgeo import gdal import numpy as np from skimage.restoration import denoise_nl_means, estimate_sigma def remove_stripes(image_path): dataset = gdal.Open(image_path) array = dataset.ReadAsArray() sigma_est = np.mean(estimate_sigma(array)) patch_kw = dict(patch_size=5, # 邻域窗口大小 patch_distance=6, # 考虑相似性的距离范围 multichannel=False) result_array = denoise_nl_means(array, h=0.8 * sigma_est, fast_mode=True, **patch_kw).astype(np.float32) output_file = 'corrected_' + image_path.split('/')[-1] driver = gdal.GetDriverByName('GTiff') outdata = driver.Create(output_file, dataset.RasterXSize, dataset.RasterYSize, 1, gdal.GDT_Float32) outdata.SetGeoTransform(dataset.GetGeoTransform()) outdata.SetProjection(dataset.GetProjection()) outdata.GetRasterBand(1).WriteArray(result_array) outdata.FlushCache() remove_stripes("path_to_your_image.tif") ```
评论 24
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值