首先,如果你不知道,我應該告訴什麼是ndwi。 Ndwi代表標準化的差異水指數。它是水的圖形指示器,其值範圍爲[-1 1]。 Ndwi定義如下:在opencv中創建NDWI矩陣
(Green - NIR)/(Green + NIR)
我是一個基於opencv的簡單海岸線提取工具的中間。我在MATLAB完成它,結果是這個樣子:
然而,結果OpenCV的版本看起來像二值化:
當我調試的程序,我發現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);
您能否展示更多代碼,特別是greenRoi&nirRoi Mats的創建。他們有什麼類型? greenRoi&nirRoi中的數值範圍是多少? – Bull
範圍是從0到255.這兩個都是灰度圖像,在這個應用程序中作爲roi沒有什麼特別之處,但我會添加代碼。 – onatm