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

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

引言

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

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

数据介绍

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

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

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结果:

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

你可能感兴趣的:(matlab图像降噪)