详解Python修复遥感影像条带的两种方式


Posted in Python onFebruary 23, 2020

GDAL修复Landsat ETM+影像条带

Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带。如下图所示, 影像中均匀的布满条带。

详解Python修复遥感影像条带的两种方式

使用GDAL修复影像条带的代码如下:

def gdal_repair(tif_name, out_name, bands):
  """
    tif_name(string): 源影像名
    out_name(string): 输出影像名
    bands(integer): 影像波段数
  """
  # 打开影像文件
  tif = gdal.Open(tif_name)
  
  # 根据文件类型获取对应的驱动程序
  driver = gdal.GetDriverByName('GTiff')
  
  # 根据指定文件的驱动程序,使用现有数据集创建新的可写数据集
  # 所有支持创建新文件的驱动程序都支持该`CreateCopy()`方法,   # 但仅`Create()`部分支持该方法
  # CreateCopy的第一个参数为目标文件名,第二个参数为源数据集
  # 第三个参数的值是`0`或`1`,值是`0`。即使无法将原始数据准确地转换为目标数据,程序仍将执行
  new_img = driver.CreateCopy(out_name, tif, 0)
 
  for i in tqdm(range(1, bands)):
    # 分别对每个波段处理
    band = new_img.GetRasterBand(i)
    
    # 使用FillNodata对条带部分进行插值
    gdal.FillNodata(targetBand = band, maskBand = band, maxSearchDist = 15, smoothingIterations=0)
    
    # 将修复好的波段写入新数据集中
    new_img.GetRasterBand(i).WriteArray(band.ReadAsArray())

修复之后的效果图如下所示:

详解Python修复遥感影像条带的两种方式

Opencv修复Landsat ETM+影像条带

使用opencv修复影像的代码如下:

def cv2_repair(tif_name):
  # 读取tif影像
  tif_data = gdal_array.LoadFile(tif_name).astype('float32')

  # 获取掩膜
  mask = tif_data.sum(axis=0)
  mask = (mask == 0).astype(np.uint8)
  
  bands = tif_data.shape[0]

  res = []
  for i in tqdm(range(bands)):
    # cv.Inpaint(src, inpaintMask, dst, inpaintRadius, flags)
    # src:源图像,可以是8位、16位无符号整型和32位浮点型1通道或者8位无符号3通道
    # inpaintMask:掩膜,8位无符号整型
    # dst:和源图像具有一样大小的输出
    # inpaintRadius:算法考虑的每个已修复点的圆形邻域的半径     # flags:修复算法类型,可选cv2.INPAINT_NS和cv2.INPAINT_TELEA
    
    repaired = cv2.inpaint(tif_data[i], mask, 3, flags=cv2.INPAINT_TELEA)
    res.append(repaired)

  return np.array(res)

修复之后的结果图:

详解Python修复遥感影像条带的两种方式

使用opencv修复影像,速度要比Gdal慢许多,但修复质量更好。

Reference

https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_reconstruction_Inpainting_Interpolation.php

https://gis.stackexchange.com/questions/151020/how-to-use-gdal-fillnodata-in-python

到此这篇关于详解Python修复遥感影像条带的两种方式的文章就介绍到这了,更多相关Python修复遥感影像条带内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
基于python的汉字转GBK码实现代码
Feb 19 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
Python、PyCharm安装及使用方法(Mac版)详解
Apr 28 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
Python OpenCV实现视频分帧
Jun 01 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
Python内置类型性能分析过程实例
Jan 29 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
Python ATM功能实现代码实例
Mar 19 Python
Python利用命名空间解析XML文档
Aug 10 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
python2 对excel表格操作完整示例
Feb 23 #Python
深入浅析python变量加逗号,的含义
Feb 22 #Python
详解django中Template语言
Feb 22 #Python
Python使用configparser库读取配置文件
Feb 22 #Python
Pytest参数化parametrize使用代码实例
Feb 22 #Python
Pytest mark使用实例及原理解析
Feb 22 #Python
python如何通过闭包实现计算器的功能
Feb 22 #Python
You might like
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
在Django的模板中使用认证数据的方法
2015/07/23 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Python笔记之facade模式
2019/11/20 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
房屋改造计划书
2014/01/10 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
python基础之//、/与%的区别详解
2022/06/10 Python