提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、背景值为NAN或者-inf的原因?
  • 二、解决过程
    • 1.背景值的两种情况
    • 2.例子
  • 总结

前言

遥感影像由于卫星轨道的原因,经过初步地理校正通常都是倾斜的,存储为数组形式时,会出现部分背景。今天在处理数据时,由于计算波段指数中存在log(x)函数中x存在负值,导致部份非背景像元出现值为空值(NAN)的情况,并且背景像元值为-inf。今天记录下出现这种情况数组的处理方法。

图1 遥感影像(黑色部分为背景)


一、背景值为NAN或者-inf的原因?

通常遥感影像的背景值为NAN或者0(根据导出数据方式软件算法不同而变化)。然而今天由于处理遥感影像时使用波段运算工具有log函数,log函数处理的少部分非背景像元为负值,因此波段运算得到值为NAN。这种情况下背景不能为NAN,用ENVI导出为tif格式后,使用python的GDAL读取到背景值变成-inf(python中规定为负无穷大)。但是计算影像均值,方差等数据时需要忽略背景值或者NAN值,因此有了今天这篇博客。

二、解决过程

1.背景值的两种情况

(1)在影像非背景像元中没有出现NAN,此时背景值为0(numpy数组中包括普通像元值与背景值0)
(2)在影像非背景像元中出现NAN,此时背景值为-inf(numpy数组中包括普通像元值(NAN与正常值)与背景值-inf)
这里只是列举出我遇到的两种情况,可能还有可能有其他情况,比如背景值为NAN,建议先用GDAL库读为numpy数组,然后具体查看背景值的状况。
解决思路:
第一种情况需要忽略背景值0,第二种情况需要忽略背景值为NAN与-inf。因此使用if判断影像属于那种情景就行。然后再根据不同情景,求均值与最值。

2.例子

使用GDAL库读取为numpy数组后:

判断数组arr属于哪种情况:

#假设使用gdal读取的数组分别为arr1与arr2,arr1对应第二种情况(背景为-inf),arr2对应第一种情况(背景为0)
arr1 = np.array([float('-inf'),np.nan,0,1,2,3,float('-inf')])
arr2 = np.array([1, 0, 0, 0, 1, 2, 3])
a = [arr1,arr2]
for arr in a:if len(np.where(arr == float('-inf'))[0]) and np.isnan(arr).any():temp = float('-inf')min = np.nanmin(arr[arr != temp])max = np.nanmax(arr[arr != temp])mean = np.nanmean(arr[arr != temp])print(max, min, mean)else:temp = float(0)min = np.nanmin(arr[arr != temp])max = np.nanmax(arr[arr != temp])mean = np.nanmean(arr[arr != temp])print(max, min, mean)

输出为:
3.0 0.0 1.5
3 1 1.75

这里讲解下代码arr[arr != temp]的意思,arr != temp返回的是和arr长度一致的数组,其元素值为布尔类型,True表示该元素值不等于 temp,False表示元素值等于 temp,arr[arr != temp]表示取其中元素值不等于temp的元素,返回新numpy数组。至于np.nanmin等函数即忽略数组中的NAN值。


总结

今天记录了实验过程中遇到使用GDAL读取遥感影像中可能出现的背景,空值等异常的的情景。在这种情况下,可以忽略这些值进行计算。

遥感tif图像中如何忽略背景值为NAN或者-inf求均值和最值相关推荐

  1. R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置、图例标题、键值、文本字体大小(title、text、key)、颜色标识的大小、点形状pch的大小

    R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置.图例标题.键值.文本字体大小(title.text.key).颜色标识的大小.点形状pch的大小 目录

  2. matlab去除图像背景,从图像中移除背景(首选MATLAB、Java或Python)

    分割每个叶子不是一个容易的任务,因为边界不是那么清楚.下面显示的解决方案分割了一些叶子,但不是所有的叶子.这是一个简单的解决方案,可能是一个好的起点.在反转图像颜色 二值化 形态侵蚀 形态扩张 在原始 ...

  3. python中列表数据汇总和平均值_python的列表List求均值和中位数实例

    这篇文章主要介绍了python的列表List求均值和中位数实例,具有很好对参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 我就废话不多说了,直接上代码吧! import numpy as np ...

  4. 自动检测图像中的圆形或圆形对象

    文章目录 加载图像 确定搜索圈的半径范围 初步尝试查找圆形 提高检测灵敏度 在图像上绘制圆圈 使用第二种方法(两阶段)寻找圆圈 为什么有些圈子仍然被错过? 在图像中找到"明亮"的圆 ...

  5. 学习何凯明在图像中的降噪技术和识别率问题

    之前玩微信由于图像噪音干扰太高一直导致没法在工业是过渡,我是从从事交通大类的神经计算开发,这个转年几年过去我对算法其实很多还是不同,太零碎了.并且实际开发过程涉及对硬件的流处理器和存储单位的思考和分配 ...

  6. 理解图像中的高频、低频分量

    原文:图像频率的理解 不同频率信息在图像结构中有不同的作用.图像的主要成分是低频信息,它形成了图像的基本灰度等级,对图像结构的决定作用较小:中频信息决定了图像的基本结构,形成了图像的主要边缘结构:高频 ...

  7. 数字图像处理(3): 图像中的高频分量与低频分量

    目录 1 为什么图像边缘是图像高频分量呢? 2 图像傅立叶变换的物理意义 参考资料 1 为什么图像边缘是图像高频分量呢? 网上有一个解释非常形象:将傅里叶变换比作一个玻璃棱镜.棱镜是可以将光分解为不同 ...

  8. 遥感图像中的小样本目标检测:Few-shot Object Detection on Remote SensingImages

    论文下载:https://arxiv.org/pdf/2006.07826v2.pdf Abstract 在本文中,我们处理遥感图像上的目标检测问题.以前的方法已经发展了许多基于深度卷积的遥感图像目标 ...

  9. 访问图像中每个像素的值

    转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7557063 !!此篇是基于IplImage* (C接口或者说2.1之前版本的接口, ...

最新文章

  1. 全国大学生智能车竞赛赛场准备好,就等同学们入驻展示
  2. java如何实现连接wifi_java-是否可以检测到您要连接的WiFi类型?
  3. python程序设计报告-20194115 实验二《Python程序设计》实验报告
  4. 区分错误类型_PETCT能区分癌症和炎症吗?
  5. php里 \r\n换行问题
  6. java+对图像进行直线检测_Java调用OpenCV进行Hough变换直线检测
  7. 大数据分析平台的作用有什么
  8. VS2010 SP1发布及下载地址
  9. 读书笔记《Redis入门指南》
  10. 松翰单片机--SN8F5702学习笔记(五)PWM
  11. Python程序设计基础(第九章 字典和集合 练习记录)
  12. 纵横捭阖C++之从异步谈起
  13. PSQLException: ERROR: permission denied: no privilege to create a readable gpfdist(s) external table
  14. 不要做全职UP主,除非你非常有钱
  15. 人工智能产业链的三个核心,底层硬件、通用AI技术及平台、应用领域相关公司盘点
  16. python符号或非并列,Python运算符
  17. Unity3D 《拥挤城市》3D房子建筑透视效果实
  18. 一片文章带你了解汇编语言
  19. redis安装Windows
  20. 新自媒体账号想要开直播?大周给你几点建议

热门文章

  1. 基于卷积神经网络的句子分类模型【经典卷积分类附源码链接】
  2. 无监督特征学习(半监督学习+自学习)
  3. 正确姿势临时和永久开启关闭Android的SELinux
  4. 转 fpga学习经验2
  5. TCP客户端与服务端开发
  6. 安卓开发仿有道词典和谷歌翻译词典软件在线输入翻译源码下载
  7. Centos操作系统yum源的使用
  8. java (基础、框架)思维脑图
  9. 弱网测试工具-Network-Emulator-Toolkit
  10. 算术的逻辑运算与指令详解