matlab图像降噪_基于Python的遥感图像NDVI批处理

本文介绍了一种使用Python批量计算归一化植被指数(NDVI)的方法,适用于遥感图像处理。程序针对4波段遥感图像,但无法处理含有NoData值的情况。建议在运行前使用ENVI的波段运算去除NoData值。
摘要由CSDN通过智能技术生成

26c4995d4abe0c117ba01162476d589c.png

引言

在遥感应用领域,植被指数已广泛用于定性和定量评价植被覆盖及其长势。由于植被光谱表现为植被、土壤亮度、环境影响、阴影、土壤颜色和湿度复杂混合反应,而且受大气时空间变化的影响,因此植被指数没有一个普遍的值,其研究经常表明不同的结果。而归一化植被指数(NDVI)是遥感领域中最常用的植被指数之一。

本文提供了一种批量化计算NDVI的Python计算程序,将图像置于某一文件夹后,设定计算结果目录,运行该代码即可。注意:本程序无法处理含有NoData值的遥感图像,解决方法是先利用ENVI中的波段运算方法,去除NoData值。

数据介绍

4波段遥感图像,分别为蓝、绿、红、近红外波段,数据类型为uint16。下图显示了本实验所用的真彩色图像:

f1efc70f8947970d4b3c9502ddb2d5d8.png

Python代码实现

import numpy as np
from osgeo import gdal
import os


#定义图像的打开方式
def image_open(img):
    data = gdal.Open(img)
    if data == "None":
        print("图像无法读取")
    return data

#定义相关变量
FilePath = r"E:yynctryedataNDVI批处理实验"
image_name = os.listdir(FilePath)
SavePath = r"E:yynctryedataNDVI批处理实验结果"

##批量+NDVI处理+输出
#1.1 批量过程
for i in range(len(image_name)):
    QZ = os.path.splitext(image_name[i])[0]
    HZ = os.path.splitext(image_name[i])[1]
    if (HZ == ".tif"):
        image = FilePath + "/" + image_name[i]
        #NDVI处理
        data = image_open(image)
        Red = data.GetRasterBand(3).ReadAsArray().astype(np.float32)
        Nir = data.GetRasterBand(4).ReadAsArray().astype(np.float32)
        NDVI = (Nir - Red) / (Nir + Red)
        NDVI[np.isnan(NDVI)] = 0  # 空值转0
        NDVI = NDVI.astype(np.float32)

        #输出数据
        output1 = gdal.GetDriverByName("GTiff")
        output2 = output1.Create(SavePath + QZ + "_NDVI.tif", NDVI.shape[1], NDVI.shape[0], bands = 1, eType = gdal.GDT_Float32)
        output2.SetProjection(data.GetProjection())
        output2.SetGeoTransform(data.GetGeoTransform())
        output5 = output2.GetRasterBand(1).WriteArray(NDVI)

处理结果

下面是其中一副遥感图像的NDVI结果:

f21d2f888807f06c0bb6460299fc0c09.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值