详解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基于DES算法加密解密实例
Jun 03 Python
tensorflow中next_batch的具体使用
Feb 02 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
Python读取txt某几列绘图的方法
Oct 14 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
Python 读取位于包中的数据文件
Aug 07 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静态类
2006/11/25 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP制作用户注册系统
2015/10/23 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
python从ftp下载数据保存实例
2013/11/20 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
简单实现Python爬取网络图片
2018/04/01 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
有关打架的检讨书
2014/01/25 职场文书
学生手册家长评语
2014/02/10 职场文书
施工安全责任书
2014/04/14 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
python Polars库的使用简介
2021/04/21 Python
详解Redis瘦身指南
2021/05/26 Redis