植被指数

比值被指数

归一化植被指数

土壤调节植被指数

修正的土壤调节植被指数

三波段梯度差植被指数

水体指数

归一化水体指数

MNDWI

AWEI

EWI

NWI

建筑指数

DBI

NDBI

IBI

归一化差值裸地与建筑用地指数

裸土指数

代码

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;//植被指数计算void RVI(const Mat &nir, const Mat &r,Mat &rvi)
{divide(nir, r, rvi,1,CV_32F);
}void NDVI(const Mat &nir, const Mat &r, Mat &ndvi)
{divide(nir - r, nir + r, ndvi, 1, CV_32F);
}void SAVI(const Mat &nir, const Mat &r, double L,Mat &savi)
{divide((nir - r)*(1 + L), nir + r + L, savi, 1, CV_32F);
}void MSAVI(const Mat &nir,const Mat &r,Mat &msavi)
{Mat tmp1, tmp2,tmp3;pow(2 * nir + 1, 2, tmp1);tmp2 = tmp1 - 8 * (nir - r);tmp2.convertTo(tmp2, CV_32F);pow(tmp2, 0.5, tmp3);subtract(2 * nir + 1, tmp3, msavi, noArray(), CV_32F);msavi *= 0.5;return;
}//水体指数计算
void NDWI(const Mat &nir, const Mat &g, Mat & ndwi)
{divide(g - nir, g + nir, ndwi, 1, CV_32F);
}void MNDWI(const Mat &swir, const Mat &g, Mat &mndwi)
{divide(g - swir, g + swir, mndwi, 1, CV_32F);
}//建筑指数计算
void DBI(const Mat &mir, const Mat & nir, Mat & dbi)
{dbi = mir - nir;
}void NDBI(const Mat &swir, const Mat &nir, Mat & ndbi)
{divide(swir - nir, swir + nir, ndbi, 1, CV_32F);
}//OTSU 阈值分割
void OTSUSegmentation(const Mat & input, Mat & output, double &value)
{double minv, maxv;minMaxLoc(input, &minv, &maxv);Mat tmp;divide(input - minv, maxv - minv, tmp, 1, CV_32F);tmp = tmp * 255;tmp.convertTo(tmp, CV_8U);value = threshold(tmp, output, 128, 255, ThresholdTypes::THRESH_BINARY | ThresholdTypes::THRESH_OTSU);value /= 255;value = value * (maxv - minv) + minv;
}int main()
{Mat nir = imread("./tifs/tm4.tif", ImreadModes::IMREAD_GRAYSCALE);Mat r = imread("./tifs/tm3.tif", ImreadModes::IMREAD_GRAYSCALE);Mat swir = imread("./tifs/tm5.tif", ImreadModes::IMREAD_GRAYSCALE);Mat b= imread("./tifs/tm1.tif", ImreadModes::IMREAD_GRAYSCALE);Mat g=imread("./tifs/tm2.tif", ImreadModes::IMREAD_GRAYSCALE);Mat mir= imread("./tifs/tm7.tif", ImreadModes::IMREAD_GRAYSCALE);Mat rvi;RVI(nir, r, rvi);imwrite("./tifs/rvi.tif", rvi);Mat rviArea;double rviV;OTSUSegmentation(rvi, rviArea, rviV);imwrite("./tifs/rviArea.tif", rviArea);cout << "rvi阈值:" << rviV << endl;Mat ndvi;NDVI(nir, r, ndvi);imwrite("./tifs/ndvi.tif", ndvi);Mat ndviArea;double ndviV;OTSUSegmentation(ndvi, ndviArea, ndviV);imwrite("./tifs/ndviArea.tif", ndviArea);cout << "ndvi阈值:" << ndviV << endl;Mat savi;SAVI(nir, r, 0.5,savi);imwrite("./tifs/savi.tif", savi);Mat saviArea;double saviV;OTSUSegmentation(savi,saviArea,saviV);imwrite("./tifs/saviArea.tif", saviArea);cout << "savi阈值:" << saviV << endl;Mat msavi;MSAVI(nir, r,msavi);imwrite("./tifs/msavi.tif", msavi);Mat msaviArea;double msaviV;OTSUSegmentation(msavi, msaviArea, msaviV);imwrite("./tifs/msaviArea.tif", msaviArea);cout << "msavi阈值:" << msaviV << endl;Mat ndwi;NDWI(nir, g,ndwi);imwrite("./tifs/ndwi.tif", ndwi);Mat ndwiArea;double ndwiV;OTSUSegmentation(ndwi, ndwiArea, ndwiV);imwrite("./tifs/ndwiArea.tif",ndwiArea);cout << "ndwi阈值:" << ndwiV << endl;Mat mndwi;MNDWI(swir, g, mndwi);imwrite("./tifs/mndwi.tif", mndwi);Mat mndwiArea;double mndwiV;OTSUSegmentation(mndwi, mndwiArea, mndwiV);imwrite("./tifs/mndwiArea.tif", mndwiArea);cout << "mndwi阈值:" << mndwiV << endl;Mat dbi;DBI(mir, nir, dbi);imwrite("./tifs/dbi.tif", dbi);Mat dbiArea;double dbiV;OTSUSegmentation(dbi, dbiArea, dbiV);imwrite("./tifs/dbiArea.tif", dbiArea);cout << "dbi阈值:" << dbiV << endl;Mat ndbi;NDBI(swir, nir, ndbi);imwrite("./tifs/ndbi.tif", ndbi);Mat ndbiArea;double ndbiV;OTSUSegmentation(ndbi, ndbiArea, ndbiV);imwrite("./tifs/ndbiArea.tif", ndbiArea);cout << "dbi阈值:" << ndbiV << endl;system("pause");return 0;
}

结果

ndvi

nvdi阈值分割

rvi

rvi阈值分割

savi

savi阈值分割

msavi

msavi阈值分割

ndwi

ndwi阈值分割

mndwi

mndwi阈值分割

dbi

dbi阈值分割

ndbi

ndbi阈值分割

分割阈值输出

OpenCV各种遥感指数计算相关推荐

  1. QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布(1)-数据预处理

    本文演示使用QGIS基于NDVI遥感指数阈值法结合决策树提取冬小麦种植面积的过程,总体思路为:根据研究区域冬小麦生长周期特点,选择关键生长期多期遥感影像,计算NDVI指数,并根据NDVI提取关键地类, ...

  2. QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布(4)-分类精度评价

    本文继续介绍使用QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布,本文为教程的第四部分:分类结果精度评价.所使用的示范数据下载地址为: 链接: https://pan.baidu.com/s/1 ...

  3. QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布(3)-NDVI阈值

    本文继续介绍使用QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布,本文为教程的第三部分:NDVI阈值选择和冬小麦种植面积提取.所使用的示范数据下载地址为: 链接: https://pan.bai ...

  4. 部分常见遥感指数(RSEI)原理与计算方法,以及效果比较

    目录 前言 指数使用前需知 遥感指数 植被指数 归一化植被指数NDVI 归一化差值山地植被指数NDMVI 增强型植被指数EVI 比值植被指数SR/植被指数RVI 差值植被指数DVI 调节土壤的植被指数 ...

  5. GEE系列:第6单元 在 Google 地球引擎中构建各种遥感指数

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  6. 使用OpenCV和Python高效计算视频的总帧数

    使用OpenCV和Python高效计算视频的总帧数 1. 效果图 2. 源码 参考 这篇博客将介绍两种使用OpenCV和Python计算视频文件中帧数的方法. 超级快,它依靠OpenCV的视频属性功能 ...

  7. opencv 2d人脸姿态计算

    opencv 2d人脸姿态计算 可以的: # -*- coding: utf-8 -*- # 测试使用opencv中的函数solvepnp import cv2 import numpy as np ...

  8. OpenCV中直方图的计算和绘制

    OpenCV中直方图的计算和绘制 主要记录一下几个关键的API: cvRound(输入一个浮点数 );//返回一个整型数,取整的方法为四舍五入 split(输入多通道图像,数组或者vector变量. ...

  9. ENVI_建模工具的使用——以“指数计算”批处理为例

    总流程图如下 一.插入数据集 二.插入迭代 三.插入指数计算

最新文章

  1. 10秒一部电影,全球首个5G数据连接完成
  2. python自学流程-python 学习流程
  3. LeetCode26. Remove Duplicates from Sorted Array
  4. 网站性能优化之HTTP请求过程简述!
  5. Spark(十二) -- Spark On Yarn Spark as a Service Spark On Tachyon
  6. linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...
  7. 加快liferay 7的启动速度
  8. JAVA https证书相关
  9. php正则表达式以及正则函数详解
  10. mysql 从库relay_MySQL主库binlog(master-log)与从库relay-log关系代码详解
  11. Juniper SSG 550M HA配置文档
  12. HDU 3729【二分匹配】
  13. LoRaWAN网络协议与LoRa私有协议相比有哪些优势
  14. WDM驱动开发 电源管理
  15. Hadoop笔记(1)——hdfs命令访问方式
  16. 递归函数c语言求爬格子,指标的含义,真或假.doc
  17. 一本程序员黑话进阶指南!拿走不谢!
  18. TextSymbol使用方法
  19. 初等矩阵及初等变换中的符号意义
  20. www.wolframalpha.com

热门文章

  1. 纯css实现3D立方体
  2. ntdll.dll故障(资源管理器无法打开)
  3. 如何配置java环境?
  4. 查找表(LUT,Look-up Table)的简单理解
  5. excel不能自动筛选原因
  6. Dagger2图文完全教程
  7. Java入门(项目三,职员管理系统)
  8. 人工智能的降维映射,实在智能数字员工为企业转型创新解
  9. java枚举后面括号是什么意思_浅谈java枚举类
  10. org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to localhost:9876 failed