遥感tif图像中如何忽略背景值为NAN或者-inf求均值和最值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、背景值为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求均值和最值相关推荐
- R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置、图例标题、键值、文本字体大小(title、text、key)、颜色标识的大小、点形状pch的大小
R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置.图例标题.键值.文本字体大小(title.text.key).颜色标识的大小.点形状pch的大小 目录
- matlab去除图像背景,从图像中移除背景(首选MATLAB、Java或Python)
分割每个叶子不是一个容易的任务,因为边界不是那么清楚.下面显示的解决方案分割了一些叶子,但不是所有的叶子.这是一个简单的解决方案,可能是一个好的起点.在反转图像颜色 二值化 形态侵蚀 形态扩张 在原始 ...
- python中列表数据汇总和平均值_python的列表List求均值和中位数实例
这篇文章主要介绍了python的列表List求均值和中位数实例,具有很好对参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 我就废话不多说了,直接上代码吧! import numpy as np ...
- 自动检测图像中的圆形或圆形对象
文章目录 加载图像 确定搜索圈的半径范围 初步尝试查找圆形 提高检测灵敏度 在图像上绘制圆圈 使用第二种方法(两阶段)寻找圆圈 为什么有些圈子仍然被错过? 在图像中找到"明亮"的圆 ...
- 学习何凯明在图像中的降噪技术和识别率问题
之前玩微信由于图像噪音干扰太高一直导致没法在工业是过渡,我是从从事交通大类的神经计算开发,这个转年几年过去我对算法其实很多还是不同,太零碎了.并且实际开发过程涉及对硬件的流处理器和存储单位的思考和分配 ...
- 理解图像中的高频、低频分量
原文:图像频率的理解 不同频率信息在图像结构中有不同的作用.图像的主要成分是低频信息,它形成了图像的基本灰度等级,对图像结构的决定作用较小:中频信息决定了图像的基本结构,形成了图像的主要边缘结构:高频 ...
- 数字图像处理(3): 图像中的高频分量与低频分量
目录 1 为什么图像边缘是图像高频分量呢? 2 图像傅立叶变换的物理意义 参考资料 1 为什么图像边缘是图像高频分量呢? 网上有一个解释非常形象:将傅里叶变换比作一个玻璃棱镜.棱镜是可以将光分解为不同 ...
- 遥感图像中的小样本目标检测:Few-shot Object Detection on Remote SensingImages
论文下载:https://arxiv.org/pdf/2006.07826v2.pdf Abstract 在本文中,我们处理遥感图像上的目标检测问题.以前的方法已经发展了许多基于深度卷积的遥感图像目标 ...
- 访问图像中每个像素的值
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7557063 !!此篇是基于IplImage* (C接口或者说2.1之前版本的接口, ...
最新文章
- 全国大学生智能车竞赛赛场准备好,就等同学们入驻展示
- java如何实现连接wifi_java-是否可以检测到您要连接的WiFi类型?
- python程序设计报告-20194115 实验二《Python程序设计》实验报告
- 区分错误类型_PETCT能区分癌症和炎症吗?
- php里 \r\n换行问题
- java+对图像进行直线检测_Java调用OpenCV进行Hough变换直线检测
- 大数据分析平台的作用有什么
- VS2010 SP1发布及下载地址
- 读书笔记《Redis入门指南》
- 松翰单片机--SN8F5702学习笔记(五)PWM
- Python程序设计基础(第九章 字典和集合 练习记录)
- 纵横捭阖C++之从异步谈起
- PSQLException: ERROR: permission denied: no privilege to create a readable gpfdist(s) external table
- 不要做全职UP主,除非你非常有钱
- 人工智能产业链的三个核心,底层硬件、通用AI技术及平台、应用领域相关公司盘点
- python符号或非并列,Python运算符
- Unity3D 《拥挤城市》3D房子建筑透视效果实
- 一片文章带你了解汇编语言
- redis安装Windows
- 新自媒体账号想要开直播?大周给你几点建议