详解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中的列表推导浅析
Apr 26 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Python qqbot 实现qq机器人的示例代码
Jul 11 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 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数组最大值,最小值的代码
2011/10/31 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
Javascript事件实例详解
2013/11/06 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python实现的一个p2p文件传输实例
2014/06/04 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Python封装原理与实现方法详解
2018/08/28 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
如何利用find命令查找文件
2015/02/07 面试题
竞聘书怎么写,如何写?
2014/03/31 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
初中数学教学反思范文
2016/02/17 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript
欧元符号 €
2022/02/17 杂记