提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
遥感影像由于卫星轨道的原因,经过初步地理校正通常都是倾斜的,存储为数组形式时,会出现部分背景。今天在处理数据时,由于计算波段指数中存在log(x)函数中x存在负值,导致部份非背景像元出现值为空值(NAN)的情况,并且背景像元值为-inf。今天记录下出现这种情况数组的处理方法。
一、背景值为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