gpt4 book ai didi

c++ - 在 opencv 中创建 NDWI 矩阵

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:16 25 4
gpt4 key购买 nike

首先,如果你不知道,我应该告诉你什么是ndwi。 Ndwi 代表归一化差异水指数。水的图形指示器,取值范围为[-1 1]。 Ndwi定义如下:

(Green - NIR) / (Green + NIR)

我正在开发一个基于 opencv 的简单海岸线提取工具。我在 MATLAB 中完成了它,结果如下所示:

MATLAB NDWI

然而,opencv 版本的结果看起来像二值化的:

OPENCV NDWI

当我调试程序时,我看到 ndwi 矩阵中的最小值为零,这是错误的,因为它应该是 -0.8057。负责ndwi计算的代码(opencv版)如下:

Mat ndwi = (greenRoi - nirRoi) / (greenRoi + nirRoi);
double min;
double max;
minMaxIdx(ndwi, &min, &max);
Mat adjNDWI;
convertScaleAbs(ndwi, adjNDWI, 255 / max);

这里有什么问题,我怎样才能计算出正确的 ndwi 值?

注意:

greenRoi 和 nirRoi 是这样创建的:

Rect rectangle = boundingRect(Mat(testCorners)); //vector<Point2f> testCorners(4);

Mat testImgGreen = imread((LPCSTR)testImgGreenPath, 0);
Mat testImgNir = imread((LPCSTR)testImgNirPath, 0);

Mat greenRoi(testImgGreen, rectangle);
Mat nirRoi(testImgNir, rectangle);

最佳答案

您需要显式创建一个浮点 cv::Mat

cv::Mat image(cols,rows,CV_32FC1) 或者 CV_64FC1 如果你需要 double

关于c++ - 在 opencv 中创建 NDWI 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com