几种常见植被指数

NDVI(归一化植被指数):NDVI=(NIR-R)/(NIR+R),或两个波段反射率的计算。

NDVI的应用:检测植被生长状态、植被覆盖度和消除部分辐射误差等;

2.-1<=NDVI<=1,负值表示地面覆盖为云、水、雪等,对可见光高反射;0表示有岩石或裸土等,NIR和R近似相等;正值,表示有植被覆盖,且随覆盖度增大而增大

3.NDVI的局限性表现在,用非线性拉伸的方式增强了NIR和R的反射率的对比度。对于同一幅图象,分别求RVI和NDVI时会发现,RVI值增加的速度高于NDVI增加速度,即NDVI对高植被区具有较低的灵敏度;

4.NDVI能反映出植物冠层的背景影响,如土壤、潮湿地面、雪、枯叶、粗糙度等,且与植被覆盖有关

//NDVIfloat* ndvi = (float*)malloc(sizeof(float) * src_width * src_height);for (int i = 0; i < src_height * src_width; i++){ndvi[i] = float(data[0][i] - data[1][i]) / float(data[0][i] + data[1][i]);}GDALDataset* po_NDVI = poDriver->Create(NDVIname, src_width, src_height, 1, GDT_Float32, NULL);po_NDVI->SetGeoTransform(adfInGeoTransform);po_NDVI->SetProjection(pszWKT);po_NDVI->GetRasterBand(1)->RasterIO(GF_Write, 0, 0, src_width, src_height, ndvi, src_width, src_height, GDT_Float32, 0, 0);//NDVI阈值分割unsigned char** NDVI_result = new unsigned char* [3];for (int i = 0; i < 3; i++){NDVI_result[i] = new unsigned char[src_width * src_height];memset(NDVI_result[i], 0, sizeof(unsigned char) * src_width * src_height);}for (int i = 0; i < src_width * src_height; i++){if (ndvi[i] < 0.3){NDVI_result[0][i] = 0;NDVI_result[1][i] = 255;NDVI_result[2][i] = 0;}else{NDVI_result[0][i] = 0;NDVI_result[1][i] = 0;NDVI_result[2][i] = 0;}}GDALDataset* po_NDVIclassify = poDriver->Create(NDVIclassify, src_width, src_height, 3, GDT_Float32, NULL);po_NDVIclassify->SetGeoTransform(adfInGeoTransform);po_NDVIclassify->SetProjection(pszWKT);for (int i = 0; i < 3; i++){po_NDVIclassify->GetRasterBand(i + 1)->RasterIO(GF_Write, 0, 0, src_width, src_height, NDVI_result[i], src_width, src_height, GDT_Byte, 0, 0);}

RVI(比值植被指数):RVI=NIR/R,或两个波段反射率的比值。

1.绿色健康植被覆盖地区的RVI远大于1,而无植被覆盖的地面(裸土、人工建筑、水体、植被枯死或严重虫害)的RVI在1附近。植被的RVI通常大于2;

2.RVI是绿色植物的灵敏指示参数,与LAI、叶干生物量(DM)、叶绿素含量相关性高,可用于检测和估算植物生物量

3.植被覆盖度影响RVI,当植被覆盖度较高时,RVI对植被十分敏感;当植被覆盖度<50%时,这种敏感性显著降低;

4.RVI受大气条件影响,大气效应大大降低对植被检测的灵敏度,所以在计算前需要进行大气校正,或用反射率计算RVI。

//计算RV_比值植被指数float* RVI = new float[src_width * src_height];for (int i = 0; i < src_width * src_height; i++){RVI[i] = float (data[0][i] ) / float (data[1][i]+0.00001);/** 一、RVI——比值植被指数:* RVI=NIR/R* 1、值的范围:0-30+,一般绿色植被区的范围是2-8,无植被覆盖的地面(裸土、人工建筑、水体、植被枯死或严重虫害)的RVI在1附近。; * 2、RVI与LAI、叶干生物量(DM)、叶绿素含量相关性高,可用于检测和估算植物生物量; 与植被覆盖度:当植被覆盖度较高时,RVI对植被十分敏感;当植被覆盖度<50%时,敏感性显著降低;* 3、局限:RVI受大气条件影响,大气效应大大降低对植被检测的灵敏度,所以在计算前需要进行大气校正,或用反射率计算RVI。* 4、应用:“由于研究区植被覆盖度普遍较高,与其他植被指数相比,SR对高覆盖植被区域更为敏感,与生物量的相关性最好。
此外,在山区比值型植被指数(如ND-VI、SR)能够消除大量的地形影响,地形效应通常可以忽略,而非比值型植被指数(如DVI、包含有常数项L的SAVI)对地形起伏变化更敏感[14],由此可能造成了SAVI和DVI的表现要比SR和NDVI差。”[1]*/}GDALDataset* po_RVI = poDriver->Create(RVIname, src_width, src_height, 1, GDT_Float32, NULL);po_RVI->SetGeoTransform(adfInGeoTransform);po_RVI->SetProjection(pszWKT);po_RVI->GetRasterBand(1)->RasterIO(GF_Write, 0, 0, src_width, src_height, RVI, src_width, src_height, GDT_Float32, 0, 0);//RVI阈值分割处理/*//绿色健康植被覆盖地区的RVI远大于1,而无植被覆盖的地面(裸土、人工建筑、水体、植被枯死或严重虫害)的RVI在1附近。植被的RVI通常大于2//阈值分割 > 2.计算阈值分割在1~2之间的物体//查一下 >1与 >2的区别,以及精度,利用1~2区间看设施蔬菜的提取//RVI受大气条件影响,大气效应大大降低对植被检测的灵敏度,所以在计算前需要进行大气校正,或用反射率计算RVI。//在利用RVI之前做去云处理*/unsigned char** RVI_result = new unsigned char* [3];for (int i = 0; i < 3; i++){RVI_result[i] = new unsigned char[src_width * src_height];memset(RVI_result[i], 0, sizeof(unsigned char) * src_width * src_height);}for (int i = 0; i < src_width * src_height; i++){if (RVI[i] > 2){RVI_result[0][i] = 0;RVI_result[1][i] = 255;RVI_result[2][i] = 0;}else{RVI_result[0][i] = 0;RVI_result[1][i] = 0;RVI_result[2][i] = 0;}}GDALDataset* po_RVIclassify = poDriver->Create(RVIclassify, src_width, src_height, 3, GDT_Float32, NULL);po_NDVIclassify->SetGeoTransform(adfInGeoTransform);po_NDVIclassify->SetProjection(pszWKT);for (int i = 0; i < 3; i++){po_RVIclassify->GetRasterBand(i + 1)->RasterIO(GF_Write, 0, 0, src_width, src_height, RVI_result[i], src_width, src_height, GDT_Byte, 0, 0);}

DVI(差值环境植被指数):DVI=NIR-R,或两个波段反射率的计算。

//计算DVI——差值环境植被float* DVI = new float[src_width * src_height];for (int i = 0; i < src_width * src_height; i++){DVI[i] = float(data[0][i]) - float(data[1][i]);}GDALDataset* po_DVI = poDriver->Create(DVIname, src_width, src_height, 1, GDT_Float32, NULL);po_DVI->SetGeoTransform(adfInGeoTransform);po_DVI->SetProjection(pszWKT);po_DVI->GetRasterBand(1)->RasterIO(GF_Write, 0, 0, src_width, src_height, DVI, src_width, src_height, GDT_Float32, 0, 0);

笔记整理参考百度

植被指数参考笔记:

https://blog.csdn.net/weixin_43897736/article/details/99865993https://blog.csdn.net/weixin_43897736/article/details/99865993全部代码:

/*
* 20210926
* 3种植被指数计算
*/
#include "iostream"
#include "gdal_priv.h"
#include "gdalwarper.h"
#include "ogr_spatialref.h"
#include "string"#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "imgproc/imgproc_c.h"using namespace std;
using namespace cv;int main()
{//gdal测试const char* inFilename = "D:\\C++\\homework\\Project2\\Project2\\data.tif";const char* outFilename = "data_out2.tif";const char* NDVIname = "NDVI2.tif";const char* RVIname = "RVI.tif";const char* DVIname = "DVI.tif";const char* NDVIclassify = "NDVIclassify.tif";const char* RVIclassify = "RVIclassify.tif";//const char* DVIclassify = "DVIclassify.tif";GDALAllRegister();//为了支持中文路径CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");//打开影像GDALDataset* poIn = (GDALDataset*)GDALOpen(inFilename, GA_ReadOnly);//判断指针是否创建成功if (poIn == NULL){cout << "can not open img";return -1;}//获取影像大小int src_width = poIn->GetRasterXSize();//列数int src_height = poIn->GetRasterYSize();//行数cout << "该影像列数:" << src_width << endl;cout << "该影像行数:" << src_height << endl;//获取影像波段数int InBands = poIn->GetRasterCount();cout << "影像波段数:" << InBands << endl;//获取影像格式GDALDataType eDataType = poIn->GetRasterBand(1)->GetRasterDataType();cout << " 影像格式:" << eDataType << endl;//返回值是1;//定义存储影像的空间参考数组double adfInGeoTransform[6] = { 0 };const char* pszWKT = NULL;//获取影像空间参考poIn->GetGeoTransform(adfInGeoTransform);pszWKT = poIn->GetProjectionRef();cout << "影像的坐标系:" << pszWKT << endl;cout << "影像的仿射变换系数:" << endl;for (int i = 0; i < 6; i++){cout << adfInGeoTransform[i] << "  " << endl;}cout << endl;unsigned char** data = (unsigned char**)malloc(sizeof(unsigned char*) * InBands);for (int i = 0; i < InBands; i++){data[i] = (unsigned char*)malloc(sizeof(unsigned char) * src_width * src_height);poIn->GetRasterBand(i + 1)->RasterIO(GF_Read, 0, 0, src_width, src_height, data[i], src_width, src_height, GDT_Byte, 0, 0);}//创建文件            需要用到一个驱动器GDALDriver* poDriver = (GDALDriver*)GDALGetDriverByName("GTiff");//tiff影像(文件类型)//NDVIfloat* ndvi = (float*)malloc(sizeof(float) * src_width * src_height);for (int i = 0; i < src_height * src_width; i++){ndvi[i] = float(data[0][i] - data[1][i]) / float(data[0][i] + data[1][i]);}GDALDataset* po_NDVI = poDriver->Create(NDVIname, src_width, src_height, 1, GDT_Float32, NULL);po_NDVI->SetGeoTransform(adfInGeoTransform);po_NDVI->SetProjection(pszWKT);po_NDVI->GetRasterBand(1)->RasterIO(GF_Write, 0, 0, src_width, src_height, ndvi, src_width, src_height, GDT_Float32, 0, 0);//NDVI阈值分割unsigned char** NDVI_result = new unsigned char* [3];for (int i = 0; i < 3; i++){NDVI_result[i] = new unsigned char[src_width * src_height];memset(NDVI_result[i], 0, sizeof(unsigned char) * src_width * src_height);}for (int i = 0; i < src_width * src_height; i++){if (ndvi[i] < 0.3){NDVI_result[0][i] = 0;NDVI_result[1][i] = 255;NDVI_result[2][i] = 0;}else{NDVI_result[0][i] = 0;NDVI_result[1][i] = 0;NDVI_result[2][i] = 0;}}GDALDataset* po_NDVIclassify = poDriver->Create(NDVIclassify, src_width, src_height, 3, GDT_Float32, NULL);po_NDVIclassify->SetGeoTransform(adfInGeoTransform);po_NDVIclassify->SetProjection(pszWKT);for (int i = 0; i < 3; i++){po_NDVIclassify->GetRasterBand(i + 1)->RasterIO(GF_Write, 0, 0, src_width, src_height, NDVI_result[i], src_width, src_height, GDT_Byte, 0, 0);}//计算RV_比值植被指数float* RVI = new float[src_width * src_height];for (int i = 0; i < src_width * src_height; i++){RVI[i] = float (data[0][i] ) / float (data[1][i]+0.00001);/** 一、RVI——比值植被指数:* RVI=NIR/R* 1、值的范围:0-30+,一般绿色植被区的范围是2-8,无植被覆盖的地面(裸土、人工建筑、水体、植被枯死或严重虫害)的RVI在1附近。; * 2、RVI与LAI、叶干生物量(DM)、叶绿素含量相关性高,可用于检测和估算植物生物量; 与植被覆盖度:当植被覆盖度较高时,RVI对植被十分敏感;当植被覆盖度<50%时,敏感性显著降低;* 3、局限:RVI受大气条件影响,大气效应大大降低对植被检测的灵敏度,所以在计算前需要进行大气校正,或用反射率计算RVI。* 4、应用:“由于研究区植被覆盖度普遍较高,与其他植被指数相比,SR对高覆盖植被区域更为敏感,与生物量的相关性最好。
此外,在山区比值型植被指数(如ND-VI、SR)能够消除大量的地形影响,地形效应通常可以忽略,而非比值型植被指数(如DVI、包含有常数项L的SAVI)对地形起伏变化更敏感[14],由此可能造成了SAVI和DVI的表现要比SR和NDVI差。”[1]*/}GDALDataset* po_RVI = poDriver->Create(RVIname, src_width, src_height, 1, GDT_Float32, NULL);po_RVI->SetGeoTransform(adfInGeoTransform);po_RVI->SetProjection(pszWKT);po_RVI->GetRasterBand(1)->RasterIO(GF_Write, 0, 0, src_width, src_height, RVI, src_width, src_height, GDT_Float32, 0, 0);//RVI阈值分割处理/*//绿色健康植被覆盖地区的RVI远大于1,而无植被覆盖的地面(裸土、人工建筑、水体、植被枯死或严重虫害)的RVI在1附近。植被的RVI通常大于2//阈值分割 > 2.计算阈值分割在1~2之间的物体//查一下 >1与 >2的区别,以及精度,利用1~2区间看设施蔬菜的提取//RVI受大气条件影响,大气效应大大降低对植被检测的灵敏度,所以在计算前需要进行大气校正,或用反射率计算RVI。//在利用RVI之前做去云处理*/unsigned char** RVI_result = new unsigned char* [3];for (int i = 0; i < 3; i++){RVI_result[i] = new unsigned char[src_width * src_height];memset(RVI_result[i], 0, sizeof(unsigned char) * src_width * src_height);}for (int i = 0; i < src_width * src_height; i++){if (RVI[i] > 2){RVI_result[0][i] = 0;RVI_result[1][i] = 255;RVI_result[2][i] = 0;}else{RVI_result[0][i] = 0;RVI_result[1][i] = 0;RVI_result[2][i] = 0;}}GDALDataset* po_RVIclassify = poDriver->Create(RVIclassify, src_width, src_height, 3, GDT_Float32, NULL);po_NDVIclassify->SetGeoTransform(adfInGeoTransform);po_NDVIclassify->SetProjection(pszWKT);for (int i = 0; i < 3; i++){po_RVIclassify->GetRasterBand(i + 1)->RasterIO(GF_Write, 0, 0, src_width, src_height, RVI_result[i], src_width, src_height, GDT_Byte, 0, 0);}//计算DVI——差值环境植被float* DVI = new float[src_width * src_height];for (int i = 0; i < src_width * src_height; i++){DVI[i] = float(data[0][i]) - float(data[1][i]);}GDALDataset* po_DVI = poDriver->Create(DVIname, src_width, src_height, 1, GDT_Float32, NULL);po_DVI->SetGeoTransform(adfInGeoTransform);po_DVI->SetProjection(pszWKT);po_DVI->GetRasterBand(1)->RasterIO(GF_Write, 0, 0, src_width, src_height, DVI, src_width, src_height, GDT_Float32, 0, 0);GDALClose(po_NDVI);GDALClose(po_RVI);GDALClose(po_DVI);GDALClose(po_NDVIclassify);GDALClose(po_RVIclassify);return 1;
}

C++ +GDAL计算遥感影像植被指数相关推荐

  1. gdal进行遥感影像读写_如何使用遥感影像进行矿物勘探

    gdal进行遥感影像读写 Meet Jose Manuel Lattus, a geologist from Chile. In the latest Soar Cast, he discusses ...

  2. python/gdal处理遥感影像(读取、投影转换、裁剪、建立图像金字塔等)

    python/gdal处理遥感影像(读取.投影转换.裁剪.建立图像金字塔等) gdal库简单介绍 python使用gdal 一.安装python环境 二.安装gdal库 三.使用gdal处理遥感影像 ...

  3. 计算遥感影像变异系数以及像元值变化趋势的小软件

    计算遥感影像变异系数以及像元值变化趋势的小软件 最近由于学习上的需要,需要计算很多遥感影像的相关系数,使用envi软件波段计算比较繁琐,就在网上找了不少计算相关指数的python代码,并且自己写了一些 ...

  4. 8影像计算ndvi landsat_使用GDAL读取遥感影像的信息

    读取影像数据集的元数据 GDAL已经提供了足够方便的函数,可以读取影像的一些元数据信息, 从而方便对数据进行处理.GDAL一般是以字典的形式对元数据进行组织的, 但是对于不同的栅格数据类型,元数据的类 ...

  5. 原创程序|基于GDAL的遥感影像批量处理工具介绍(三)

    本文主要介绍基于C#+GDAL-Python实用工具开发的遥感影像批量处理工具,该工具目前主要包括影像批量切片生成KML文件和影像批量切片生成Tiles文件.该工具.Net框架版本为4.0,GDAL版 ...

  6. Python地学分析 — GDAL对遥感影像重投影

    欢迎关注博主的微信公众号:"智能遥感". 该公众号将为您奉上Python地学分析.爬虫.数据分析.Web开发.机器学习.深度学习等热门源代码. 本人的GitHub代码资料主页(持续 ...

  7. 基于c语言的遥感图像处理,基于GDAL的遥感影像显示(C#版)

    在matlab中实现遥感影像和shp文件的结合显示 clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure ...

  8. 数字图像处理:基于NDVI的遥感影像植被提取

    文章目录 一.实验任务与内容 二.实验原理 三.编程思路 四.实验成果图 五.源代码 ImageProcessing.h ImageProcessing.cpp Main.cpp 一.实验任务与内容 ...

  9. ArcGIS中ArcMap快速自动计算单一波段或多波段栅格遥感影像NDVI的方法

      本文介绍在ArcMap软件中,快速对单一波段或多波段栅格遥感影像自动计算NDVI数值的方法.   计算遥感影像的NDVI值是一个很常见.也很基础的操作,基于ENVI.ERDAS等专业遥感影像数据处 ...

  10. python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...

    (1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...

最新文章

  1. ie浏览器服务器ini文件在哪,怎么用IE浏览器打开电脑中的一个文件?
  2. 一文读懂PyTorch张量基础(附代码)
  3. Spring Boot 、Spring Data JPA、Hibernate集成
  4. 静态程序分析chapter1 - 概述和两个重要步骤
  5. 备忘--Sinfors 设备出厂IP
  6. 免费开源分布式系统日志收集框架 Exceptionless
  7. 买铅笔(洛谷-P1909)
  8. 一图说清:做数据分析,到底要懂多少业务知识?
  9. keras利用flow_from_directoryt自己构建数据集
  10. http://www.boobooke.com/bbs/thread-51022-1-1.html
  11. !!obj与JavaScript中!!的作用
  12. 均匀裁剪图片(3000X3000到1000X1000)
  13. 手把手教你电机FOC控制【二】
  14. ml5.js入门二(介绍)+featureExtractor特征提取器
  15. 亲手打造自己的 Linux 桌面环境
  16. 使用Tesseract训练lang文件并OCR识别集装箱号
  17. uniapp让ios软键盘-点击-非输入框地方-自动收起
  18. python爬取B站动态的评论总数(不含用户评论内容详情)
  19. 国有企业数字化转型的特殊性
  20. crypto 抄错的字符

热门文章

  1. javabs架构实习管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  2. python做meta分析_浅析python的metaclass
  3. XFTP6 要继续使用此程序,您必须应用最新的更新或使用新版本
  4. 华为认证怎么考?华为认证考试费用是多少?
  5. java打印list_java打印list中的元素
  6. 2021计算机考研408真题和答案(回忆版)
  7. paypal php 接口文档,paypal接口开发记录
  8. 《乌合之众》思维导图
  9. 【分享】外卖优惠券怎么弄微信返利公众号系统的流程和方法
  10. sketch 52.2 中文破解版发布 附下载地址