详解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的异常处理
Jun 19 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
Python生成随机数组的方法小结
Apr 15 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
Python使用python-docx读写word文档
Aug 26 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
Python爬虫之Selenium实现关闭浏览器
Dec 04 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
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
对pandas replace函数的使用方法小结
2018/05/18 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
python实现电子产品商店
2019/02/26 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
市场营销管理毕业生自荐信
2014/03/03 职场文书
民事授权委托书范文
2014/08/02 职场文书
小学老师对学生的评语
2014/12/29 职场文书
党员评议自我评价
2015/03/03 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
法院答辩状格式
2015/05/22 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python