详解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字典基本操作实例分析
Jul 11 Python
python实现决策树分类算法
Dec 21 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
Jan 22 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
python实现剪切功能
Jan 23 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
python2和python3哪个使用率高
Jun 23 Python
MATLAB数学建模之画图汇总
Jul 16 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 sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php发送邮件的问题详解
2015/06/22 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
Three.js快速入门教程
2016/09/09 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
跟老齐学Python之重回函数
2014/10/10 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
美国眼镜网:GlassesUSA
2017/09/07 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
行政经理岗位职责
2013/11/09 职场文书
经管应届生求职信
2013/11/17 职场文书
员工培训心得体会
2013/12/30 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
大学生村官典型材料
2014/01/12 职场文书
工商管理自荐书
2014/07/06 职场文书
电力培训心得体会
2014/09/02 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
会计简历自我评价
2015/03/10 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
你需要掌握的20个Python常用技巧
2022/02/28 Python
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python