From c862312ea2403e663067dc65055683f0097edf56 Mon Sep 17 00:00:00 2001 From: mdim Date: Fri, 5 Mar 2010 17:59:46 +0000 Subject: [PATCH] added stereoSGBM test git-svn-id: https://code.ros.org/svn/opencv/trunk@2754 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08 --- opencv/tests/cv/src/astereomatching.cpp | 247 +++++++++++++----- .../algorithms/stereobm_params.xml | 18 +- .../algorithms/stereobm_res.xml | 32 +-- .../algorithms/stereogc_params.xml | 18 +- .../algorithms/stereogc_res.xml | 32 +-- .../algorithms/stereosgbm_params.xml | 22 ++ .../algorithms/stereosgbm_res.xml | 244 +++++++++++++++++ .../cv/stereomatching/datasets/datasets.xml | 19 +- 8 files changed, 501 insertions(+), 131 deletions(-) create mode 100644 opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_params.xml create mode 100644 opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_res.xml diff --git a/opencv/tests/cv/src/astereomatching.cpp b/opencv/tests/cv/src/astereomatching.cpp index d83ae0d1..51b2925c 100755 --- a/opencv/tests/cv/src/astereomatching.cpp +++ b/opencv/tests/cv/src/astereomatching.cpp @@ -329,32 +329,39 @@ public: protected: // assumed that left image is a reference image virtual void runStereoMatchingAlgorithm( const Mat& leftImg, const Mat& rightImg, - Mat& leftDisp, Mat& rightDisp, FileStorage& paramsFS, const string& datasetName ) = 0; + Mat& leftDisp, Mat& rightDisp, int caseIdx ) = 0; - int readDatasetsInfo(); + int readDatasetsParams( FileStorage& fs ); + virtual int readRunParams( FileStorage& fs ); void writeErrors( const string& errName, const vector& errors, FileStorage* fs = 0 ); void readErrors( FileNode& fn, const string& errName, vector& errors ); int compareErrors( const vector& calcErrors, const vector& validErrors, const vector& eps, const string& errName ); - int processStereoMatchingResults( FileStorage& fs, int datasetIdx, bool isWrite, + int processStereoMatchingResults( FileStorage& fs, int caseIdx, bool isWrite, const Mat& leftImg, const Mat& rightImg, const Mat& trueLeftDisp, const Mat& trueRightDisp, const Mat& leftDisp, const Mat& rightDisp ); void run( int ); - vector datasetsNames; - vector dispScaleFactors; - vector dispUnknownVal; - vector rmsEps; vector fracEps; + + struct DatasetParams + { + int dispScaleFactor; + int dispUnknVal; + }; + map datasetsParams; + + vector caseNames; + vector caseDatasets; }; void CV_StereoMatchingTest::run(int) { string dataPath = ts->get_data_path(); - string algoritmName = name; - assert( !algoritmName.empty() ); + string algorithmName = name; + assert( !algorithmName.empty() ); if( dataPath.empty() ) { ts->printf( CvTS::LOG, "dataPath is empty" ); @@ -362,17 +369,24 @@ void CV_StereoMatchingTest::run(int) return; } - int code = readDatasetsInfo(); + FileStorage datasetsFS( dataPath + DATASETS_DIR + DATASETS_FILE, FileStorage::READ ); + int code = readDatasetsParams( datasetsFS ); if( code != CvTS::OK ) { ts->set_failed_test_info( code ); return; } - - string fullResultFilename = dataPath + ALGORITHMS_DIR + algoritmName + RESULT_FILE; - bool isWrite = true; // write or compare results - FileStorage runParamsFS( dataPath + ALGORITHMS_DIR + algoritmName + RUN_PARAMS_FILE, FileStorage::READ ); + FileStorage runParamsFS( dataPath + ALGORITHMS_DIR + algorithmName + RUN_PARAMS_FILE, FileStorage::READ ); + code = readRunParams( runParamsFS ); + if( code != CvTS::OK ) + { + ts->set_failed_test_info( code ); + return; + } + + string fullResultFilename = dataPath + ALGORITHMS_DIR + algorithmName + RESULT_FILE; FileStorage resFS( fullResultFilename, FileStorage::READ ); + bool isWrite = true; // write or compare results if( resFS.isOpened() ) isWrite = false; else @@ -380,41 +394,42 @@ void CV_StereoMatchingTest::run(int) resFS.open( fullResultFilename, FileStorage::WRITE ); if( !resFS.isOpened() ) { - ts->printf( CvTS::LOG, "file named %s can not be read or written\n", fullResultFilename.c_str() ); + ts->printf( CvTS::LOG, "file %s can not be read or written\n", fullResultFilename.c_str() ); ts->set_failed_test_info( CvTS::FAIL_BAD_ARG_CHECK ); return; } resFS << "stereo_matching" << "{"; } - int progress = 0; - for( int dsi = 0; dsi < (int)datasetsNames.size(); dsi++) + int progress = 0, caseCount = caseNames.size(); + for( int ci = 0; ci < caseCount; ci++) { - progress = update_progress( progress, dsi, (int)datasetsNames.size(), 0 ); - string datasetFullDirName = dataPath + DATASETS_DIR + datasetsNames[dsi] + "/"; + progress = update_progress( progress, ci, caseCount, 0 ); + + string datasetName = caseDatasets[ci]; + string datasetFullDirName = dataPath + DATASETS_DIR + datasetName + "/"; Mat leftImg = imread(datasetFullDirName + LEFT_IMG_NAME); Mat rightImg = imread(datasetFullDirName + RIGHT_IMG_NAME); Mat trueLeftDisp = imread(datasetFullDirName + TRUE_LEFT_DISP_NAME, 0); Mat trueRightDisp = imread(datasetFullDirName + TRUE_RIGHT_DISP_NAME, 0); - if( leftImg.empty() || rightImg.empty() || trueLeftDisp.empty()/* || trueRightDisp.empty()*/ ) + if( leftImg.empty() || rightImg.empty() || trueLeftDisp.empty() ) { - ts->printf( CvTS::LOG, "images or left ground-truth disparities of dataset %s can not be read", datasetsNames[dsi].c_str() ); + ts->printf( CvTS::LOG, "images or left ground-truth disparities of dataset %s can not be read", datasetName.c_str() ); code = CvTS::FAIL_INVALID_TEST_DATA; continue; } - Mat tmp; - int dispScaleFactor = dispScaleFactors[dsi]; - trueLeftDisp.convertTo( tmp, CV_32FC1, 1.f/dispScaleFactor ); trueLeftDisp = tmp; tmp.release(); + int dispScaleFactor = datasetsParams[datasetName].dispScaleFactor; + Mat tmp; trueLeftDisp.convertTo( tmp, CV_32FC1, 1.f/dispScaleFactor ); trueLeftDisp = tmp; tmp.release(); if( !trueRightDisp.empty() ) trueRightDisp.convertTo( tmp, CV_32FC1, 1.f/dispScaleFactor ); trueRightDisp = tmp; tmp.release(); Mat leftDisp, rightDisp; - runStereoMatchingAlgorithm( leftImg, rightImg, leftDisp, rightDisp, runParamsFS, datasetsNames[dsi] ); + runStereoMatchingAlgorithm( leftImg, rightImg, leftDisp, rightDisp, ci ); leftDisp.convertTo( tmp, CV_32FC1 ); leftDisp = tmp; tmp.release(); rightDisp.convertTo( tmp, CV_32FC1 ); rightDisp = tmp; tmp.release(); - int tempCode = processStereoMatchingResults( resFS, dsi, isWrite, + int tempCode = processStereoMatchingResults( resFS, ci, isWrite, leftImg, rightImg, trueLeftDisp, trueRightDisp, leftDisp, rightDisp); code = tempCode==CvTS::OK ? code : tempCode; } @@ -464,7 +479,7 @@ void calcErrors( const Mat& leftImg, const Mat& rightImg, badPxlsFractions[5] = badMatchPxlsFraction( calcLeftDisp, trueLeftDisp, depthDiscontMask ); } -int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int datasetIdx, bool isWrite, +int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int caseIdx, bool isWrite, const Mat& leftImg, const Mat& rightImg, const Mat& trueLeftDisp, const Mat& trueRightDisp, const Mat& leftDisp, const Mat& rightDisp ) @@ -477,12 +492,13 @@ int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int da // get masks for unknown ground truth disparity values Mat leftUnknMask, rightUnknMask; - absdiff( trueLeftDisp, Scalar(dispUnknownVal[datasetIdx]), leftUnknMask ); + DatasetParams params = datasetsParams[caseDatasets[caseIdx]]; + absdiff( trueLeftDisp, Scalar(params.dispUnknVal), leftUnknMask ); leftUnknMask = leftUnknMask < numeric_limits::epsilon(); assert(leftUnknMask.type() == CV_8UC1); if( !trueRightDisp.empty() ) { - absdiff( trueRightDisp, Scalar(dispUnknownVal[datasetIdx]), rightUnknMask ); + absdiff( trueRightDisp, Scalar(params.dispUnknVal), rightUnknMask ); rightUnknMask = rightUnknMask < numeric_limits::epsilon(); assert(leftUnknMask.type() == CV_8UC1); } @@ -492,10 +508,9 @@ int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int da calcErrors( leftImg, rightImg, trueLeftDisp, trueRightDisp, leftUnknMask, rightUnknMask, leftDisp, rightDisp, rmss, badPxlsFractions ); - const string& datasetName = datasetsNames[datasetIdx]; if( isWrite ) { - fs << datasetName << "{"; + fs << caseNames[caseIdx] << "{"; cvWriteComment( fs.fs, RMS_STR.c_str(), 0 ); writeErrors( RMS_STR, rmss, &fs ); cvWriteComment( fs.fs, BAD_PXLS_FRACTION_STR.c_str(), 0 ); @@ -504,13 +519,13 @@ int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int da } else // compare { - ts->printf( CvTS::LOG, "\nquality on dataset %s\n", datasetName.c_str() ); + ts->printf( CvTS::LOG, "\nquality of case named %s\n", caseNames[caseIdx].c_str() ); ts->printf( CvTS::LOG, "%s\n", RMS_STR.c_str() ); writeErrors( RMS_STR, rmss ); ts->printf( CvTS::LOG, "%s\n", BAD_PXLS_FRACTION_STR.c_str() ); writeErrors( BAD_PXLS_FRACTION_STR, badPxlsFractions ); - FileNode fn = fs.getFirstTopLevelNode()[datasetName]; + FileNode fn = fs.getFirstTopLevelNode()[caseNames[caseIdx]]; vector validRmss, validBadPxlsFractions; readErrors( fn, RMS_STR, validRmss ); @@ -523,28 +538,36 @@ int CV_StereoMatchingTest::processStereoMatchingResults( FileStorage& fs, int da return code; } -int CV_StereoMatchingTest::readDatasetsInfo() +int CV_StereoMatchingTest::readDatasetsParams( FileStorage& fs ) { - string datasetsFilename = string(ts->get_data_path()) + DATASETS_DIR + DATASETS_FILE; - - FileStorage fs( datasetsFilename, FileStorage::READ ); if( !fs.isOpened() ) { - ts->printf( CvTS::LOG, "%s can not be read\n", datasetsFilename.c_str() ); + ts->printf( CvTS::LOG, "datasetsParams can not be read " ); return CvTS::FAIL_INVALID_TEST_DATA; } - FileNode fn = fs.getFirstTopLevelNode()["names_scale_unknown"]; + datasetsParams.clear(); + FileNode fn = fs.getFirstTopLevelNode(); assert(fn.isSeq()); - datasetsNames.clear(); - dispScaleFactors.clear(); - dispUnknownVal.clear(); for( int i = 0; i < (int)fn.size(); i+=3 ) { - string name = fn[i]; datasetsNames.push_back(name); - string scale = fn[i+1]; dispScaleFactors.push_back(atoi(scale.c_str())); - string unkn = fn[i+2]; dispUnknownVal.push_back(atoi(unkn.c_str())); + string name = fn[i]; + DatasetParams params; + string sf = fn[i+1]; params.dispScaleFactor = atoi(sf.c_str()); + string uv = fn[i+2]; params.dispUnknVal = atoi(uv.c_str()); + datasetsParams[name] = params; } + return CvTS::OK; +} +int CV_StereoMatchingTest::readRunParams( FileStorage& fs ) +{ + if( !fs.isOpened() ) + { + ts->printf( CvTS::LOG, "runParams can not be read " ); + return CvTS::FAIL_INVALID_TEST_DATA; + } + caseNames.clear();; + caseDatasets.clear(); return CvTS::OK; } @@ -593,28 +616,44 @@ class CV_StereoBMTest : public CV_StereoMatchingTest { public: CV_StereoBMTest() : CV_StereoMatchingTest( "stereobm" ) - { fill(rmsEps.begin(), rmsEps.end(), 0.001f); fill(fracEps.begin(), fracEps.end(), 0.00001f); } + { fill(rmsEps.begin(), rmsEps.end(), 0.4f); fill(fracEps.begin(), fracEps.end(), 0.02f); } + protected: - virtual void runStereoMatchingAlgorithm( const Mat& _leftImg, const Mat& _rightImg, - Mat& leftDisp, Mat& rightDisp, FileStorage& paramsFS, const string& datasetName ) + struct RunParams + { + int ndisp; + int winSize; + }; + vector caseRunParams; + + virtual int readRunParams( FileStorage& fs ) { - int ndisp = 16; - int winSize = 21; - assert( !datasetName.empty() ); - if( paramsFS.isOpened() ) + int code = CV_StereoMatchingTest::readRunParams( fs ); + FileNode fn = fs.getFirstTopLevelNode(); + assert(fn.isSeq()); + for( int i = 0; i < (int)fn.size(); i+=4 ) { - FileNodeIterator fni = paramsFS.getFirstTopLevelNode()[datasetName].begin(); - fni >> ndisp >> winSize; + string caseName = fn[i], datasetName = fn[i+1]; + RunParams params; + string ndisp = fn[i+2]; params.ndisp = atoi(ndisp.c_str()); + string winSize = fn[i+3]; params.winSize = atoi(winSize.c_str()); + caseNames.push_back( caseName ); + caseDatasets.push_back( datasetName ); + caseRunParams.push_back( params ); } - else - ts->printf( CvTS::LOG, "%s was tested with default params " - "(ndisp = 16, winSize = 21)\n", datasetName.c_str()); - assert( ndisp%16 == 0 ); + return code; + } + + virtual void runStereoMatchingAlgorithm( const Mat& _leftImg, const Mat& _rightImg, + Mat& leftDisp, Mat& rightDisp, int caseIdx ) + { + RunParams params = caseRunParams[caseIdx]; + assert( params.ndisp%16 == 0 ); assert( _leftImg.type() == CV_8UC3 && _rightImg.type() == CV_8UC3 ); Mat leftImg; cvtColor( _leftImg, leftImg, CV_BGR2GRAY ); Mat rightImg; cvtColor( _rightImg, rightImg, CV_BGR2GRAY ); - StereoBM bm( StereoBM::BASIC_PRESET, ndisp, winSize ); + StereoBM bm( StereoBM::BASIC_PRESET, params.ndisp, params.winSize ); bm( leftImg, rightImg, leftDisp, CV_32F ); } }; @@ -637,21 +676,35 @@ public: fracEps[5] = 0.10f; // borderedDepthDiscont } protected: - virtual void runStereoMatchingAlgorithm( const Mat& _leftImg, const Mat& _rightImg, - Mat& leftDisp, Mat& rightDisp, FileStorage& paramsFS, const string& datasetName ) + struct RunParams { - int ndisp = 20; - int icount = 2; - assert( !datasetName.empty() ); - if( paramsFS.isOpened() ) + int ndisp; + int iterCount; + }; + vector caseRunParams; + + virtual int readRunParams( FileStorage& fs ) + { + int code = CV_StereoMatchingTest::readRunParams(fs); + FileNode fn = fs.getFirstTopLevelNode(); + assert(fn.isSeq()); + for( int i = 0; i < (int)fn.size(); i+=4 ) { - FileNodeIterator fni = paramsFS.getFirstTopLevelNode()[datasetName].begin(); - fni >> ndisp >> icount; + string caseName = fn[i], datasetName = fn[i+1]; + RunParams params; + string ndisp = fn[i+2]; params.ndisp = atoi(ndisp.c_str()); + string iterCount = fn[i+3]; params.iterCount = atoi(iterCount.c_str()); + caseNames.push_back( caseName ); + caseDatasets.push_back( datasetName ); + caseRunParams.push_back( params ); } - else - ts->printf( CvTS::LOG, "%s was tested with default params " - "(ndisp = 20, icount = 2)\n", datasetName.c_str()); + return code; + } + virtual void runStereoMatchingAlgorithm( const Mat& _leftImg, const Mat& _rightImg, + Mat& leftDisp, Mat& rightDisp, int caseIdx ) + { + RunParams params = caseRunParams[caseIdx]; assert( _leftImg.type() == CV_8UC3 && _rightImg.type() == CV_8UC3 ); Mat leftImg, rightImg, tmp; cvtColor( _leftImg, leftImg, CV_BGR2GRAY ); @@ -661,7 +714,7 @@ protected: rightDisp.create( rightImg.size(), CV_16SC1 ); CvMat _limg = leftImg, _rimg = rightImg, _ldisp = leftDisp, _rdisp = rightDisp; - CvStereoGCState *state = cvCreateStereoGCState( ndisp, icount ); + CvStereoGCState *state = cvCreateStereoGCState( params.ndisp, params.iterCount ); cvFindStereoCorrespondenceGC( &_limg, &_rimg, &_ldisp, &_rdisp, state ); cvReleaseStereoGCState( &state ); @@ -671,3 +724,55 @@ protected: }; CV_StereoGCTest stereoGC; + +//----------------------------------- StereoSGBM test ----------------------------------------------------- + +class CV_StereoSGBMTest : public CV_StereoMatchingTest +{ +public: + CV_StereoSGBMTest() : CV_StereoMatchingTest( "stereosgbm" ) + { fill(rmsEps.begin(), rmsEps.end(), 0.1f); fill(fracEps.begin(), fracEps.end(), 0.01f); } + +protected: + struct RunParams + { + int ndisp; + int winSize; + bool fullDP; + }; + vector caseRunParams; + + virtual int readRunParams( FileStorage& fs ) + { + int code = CV_StereoMatchingTest::readRunParams(fs); + FileNode fn = fs.getFirstTopLevelNode(); + assert(fn.isSeq()); + for( int i = 0; i < (int)fn.size(); i+=5 ) + { + string caseName = fn[i], datasetName = fn[i+1]; + RunParams params; + string ndisp = fn[i+2]; params.ndisp = atoi(ndisp.c_str()); + string winSize = fn[i+3]; params.winSize = atoi(winSize.c_str()); + string fullDP = fn[i+4]; params.fullDP = atoi(fullDP.c_str()) == 0 ? false : true; + caseNames.push_back( caseName ); + caseDatasets.push_back( datasetName ); + caseRunParams.push_back( params ); + } + return code; + } + + virtual void runStereoMatchingAlgorithm( const Mat& leftImg, const Mat& rightImg, + Mat& leftDisp, Mat& rightDisp, int caseIdx ) + { + RunParams params = caseRunParams[caseIdx]; + assert( params.ndisp%16 == 0 ); + StereoSGBM sgbm( 0, params.ndisp, params.winSize, 6*params.winSize*params.winSize, 15*params.winSize*params.winSize, + 1, 63, 10, 100, 32, params.fullDP ); + sgbm( leftImg, rightImg, leftDisp ); + assert( leftDisp.type() == CV_16SC1 ); + leftDisp/=16; + } +}; + +CV_StereoSGBMTest stereoSGBM; + diff --git a/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_params.xml b/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_params.xml index 699c4a5c..f4ef854c 100644 --- a/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_params.xml +++ b/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_params.xml @@ -1,14 +1,14 @@ - - 16 19 - 16 39 - 64 7 - 48 9 - 16 13 - 48 9 - 16 7 - 32 43 + + case_barn2 barn2 "16" "19" + case_bull bull "16" "39" + case_cones cones "64" "7" + case_poster poster "48" "9" + case_sawtooth sawtooth "16" "13" + case_teddy teddy "48" "9" + case_tsukuba tsukuba "16" "7" + case_venus venus "32" "43" diff --git a/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_res.xml b/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_res.xml index f8b8884f..53af7f44 100644 --- a/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_res.xml +++ b/opencv_extra/testdata/cv/stereomatching/algorithms/stereobm_res.xml @@ -1,7 +1,7 @@ - + 2.9697046279907227e+00 2.6947205066680908e+00 @@ -15,8 +15,8 @@ 9.5660561323165894e-01 7.7511578798294067e-02 9.5420710742473602e-02 - 4.3494275212287903e-01 - + 4.3494275212287903e-01 + 2.6354846954345703e+00 2.4656887054443359e+00 @@ -30,8 +30,8 @@ 9.8041474819183350e-01 8.6934097111225128e-02 8.8989585638046265e-02 - 4.7518435120582581e-01 - + 4.7518435120582581e-01 + 1.6001134872436523e+01 1.2243816375732422e+01 @@ -45,8 +45,8 @@ 9.8274689912796021e-01 1.7283539474010468e-01 1.6594004631042480e-01 - 3.6046066880226135e-01 - + 3.6046066880226135e-01 + 4.6672196388244629e+00 4.4640636444091797e+00 @@ -60,8 +60,8 @@ 9.6538126468658447e-01 1.1097636073827744e-01 3.2097390294075012e-01 - 2.4112132191658020e-01 - + 2.4112132191658020e-01 + 5.9703788757324219e+00 5.8280234336853027e+00 @@ -75,8 +75,8 @@ 9.7759723663330078e-01 1.5190416574478149e-01 1.8714335560798645e-01 - 2.5391057133674622e-01 - + 2.5391057133674622e-01 + 1.3826770782470703e+01 1.1086133956909180e+01 @@ -90,8 +90,8 @@ 9.9260163307189941e-01 1.8982644379138947e-01 1.8450041115283966e-01 - 3.8109087944030762e-01 - + 3.8109087944030762e-01 + 3.0015664100646973e+00 2.8946506977081299e+00 @@ -105,8 +105,8 @@ 9.1699779033660889e-01 9.2220596969127655e-02 2.3998285830020905e-01 - 3.1393453478813171e-01 - + 3.1393453478813171e-01 + 3.3121912479400635e+00 2.9800443649291992e+00 @@ -120,5 +120,5 @@ 9.5995551347732544e-01 8.5449673235416412e-02 1.3546563684940338e-01 - 4.1135340929031372e-01 + 4.1135340929031372e-01 diff --git a/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_params.xml b/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_params.xml index ad5438b0..ae7077cb 100644 --- a/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_params.xml +++ b/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_params.xml @@ -1,14 +1,14 @@ - - 32 2 - 40 2 - 50 3 - 51 3 - 20 3 - 70 3 - 16 3 - 25 2 + + case_barn2 barn2 "32" "2" + case_bull bull "40" "2" + case_cones cones "50" "3" + case_poster poster "51" "3" + case_sawtooth sawtooth "20" "3" + case_teddy teddy "70" "3" + case_tsukuba tsukuba "16" "3" + case_venus venus "25" "2" diff --git a/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_res.xml b/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_res.xml index 3d88126f..62d2f705 100644 --- a/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_res.xml +++ b/opencv_extra/testdata/cv/stereomatching/algorithms/stereogc_res.xml @@ -1,7 +1,7 @@ - + 8.8603770732879639e-01 6.9244784116744995e-01 @@ -15,8 +15,8 @@ 5.4741239547729492e-01 1.1144985444843769e-02 3.2244794070720673e-02 - 8.4495998919010162e-02 - + 8.4495998919010162e-02 + 3.7193709611892700e-01 3.6503484845161438e-01 @@ -30,8 +30,8 @@ 2.0391705632209778e-01 5.6590605527162552e-03 2.0203370600938797e-02 - 1.3673509657382965e-01 - + 1.3673509657382965e-01 + 3.7660238742828369e+00 2.2453501224517822e+00 @@ -45,8 +45,8 @@ 7.0024454593658447e-01 1.1467904597520828e-01 1.2472582608461380e-01 - 1.9106541574001312e-01 - + 1.9106541574001312e-01 + 4.7536170482635498e-01 3.3776870369911194e-01 @@ -60,8 +60,8 @@ 1.1853637546300888e-01 1.7978340620175004e-03 5.7604793255450204e-05 - 8.2927709445357323e-03 - + 8.2927709445357323e-03 + 1.1130944490432739e+00 8.3637070655822754e-01 @@ -75,8 +75,8 @@ 3.0674543976783752e-01 8.1253368407487869e-03 1.0415319353342056e-02 - 6.5905548632144928e-02 - + 6.5905548632144928e-02 + 2.4008355140686035e+00 1.8177765607833862e+00 @@ -90,8 +90,8 @@ 7.4075204133987427e-01 8.8783964514732361e-02 2.5913196802139282e-01 - 2.3737339675426483e-01 - + 2.3737339675426483e-01 + 9.2417442798614502e-01 7.7376806735992432e-01 @@ -105,8 +105,8 @@ 3.6732891201972961e-01 2.0044153556227684e-02 2.8173983097076416e-02 - 8.9960016310214996e-02 - + 8.9960016310214996e-02 + 7.1949613094329834e-01 6.6295725107192993e-01 @@ -120,5 +120,5 @@ 4.4901743531227112e-01 1.2435927987098694e-02 5.0676062703132629e-02 - 1.1578573286533356e-01 + 1.1578573286533356e-01 diff --git a/opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_params.xml b/opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_params.xml new file mode 100644 index 00000000..8128171d --- /dev/null +++ b/opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_params.xml @@ -0,0 +1,22 @@ + + + + + case_barn2_0 barn2 "32" "1" "0" + case_barn2_1 barn2 "32" "1" "1" + case_bull_0 bull "32" "5" "0" + case_bull_1 bull "32" "5" "1" + case_cones_0 cones "64" "5" "0" + case_cones_1 cones "64" "5" "1" + case_poster_0 poster "32" "1" "0" + case_poster_1 poster "32" "1" "1" + case_sawtooth_0 sawtooth "32" "1" "0" + case_sawtooth_1 sawtooth "32" "1" "1" + case_teddy_0 teddy "48" "1" "0" + case_teddy_1 teddy "48" "1" "1" + case_tsukuba_0 tsukuba "16" "1" "0" + case_tsukuba_1 tsukuba "16" "1" "0" + case_venus_0 venus "32" "1" "0" + case_venus_1 venus "32" "1" "0" + + diff --git a/opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_res.xml b/opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_res.xml new file mode 100644 index 00000000..7ab15aed --- /dev/null +++ b/opencv_extra/testdata/cv/stereomatching/algorithms/stereosgbm_res.xml @@ -0,0 +1,244 @@ + + + + + + 3.6340250968933105e+00 + 3.4821333885192871e+00 + 7.9718170166015625e+00 + 2.1075375080108643e+00 + 4.3835029602050781e+00 + 3.5368020534515381e+00 + + 1.7852847278118134e-01 + 1.6128475964069366e-01 + 9.8167788982391357e-01 + 6.7847795784473419e-02 + 2.4750202894210815e-01 + 2.3828186094760895e-01 + + + 3.5442306995391846e+00 + 3.3751916885375977e+00 + 8.1877794265747070e+00 + 2.1069571971893311e+00 + 4.2198753356933594e+00 + 3.7755236625671387e+00 + + 1.6724544763565063e-01 + 1.4962145686149597e-01 + 9.8810672760009766e-01 + 6.8365499377250671e-02 + 2.2459892928600311e-01 + 2.7245649695396423e-01 + + + 2.6510539054870605e+00 + 2.4391152858734131e+00 + 1.3829360961914062e+01 + 2.8044779300689697e+00 + 2.1012372970581055e+00 + 3.4373311996459961e+00 + + 8.1465929746627808e-02 + 7.6114013791084290e-02 + 9.9539172649383545e-01 + 8.2276366651058197e-02 + 7.1179524064064026e-02 + 2.8164240717887878e-01 + + + 2.5439765453338623e+00 + 2.3214499950408936e+00 + 1.3833223342895508e+01 + 2.7445819377899170e+00 + 1.9164147377014160e+00 + 3.6878821849822998e+00 + + 7.5556866824626923e-02 + 7.0143364369869232e-02 + 1. + 8.1168830394744873e-02 + 6.1314735561609268e-02 + 2.8403428196907043e-01 + + + 1.4948005676269531e+01 + 1.0714867591857910e+01 + 3.4735446929931641e+01 + 9.6662015914916992e+00 + 1.3054833412170410e+01 + 1.3836570739746094e+01 + + 2.3410512506961823e-01 + 1.5086595714092255e-01 + 9.8566770553588867e-01 + 1.5058843791484833e-01 + 1.5158818662166595e-01 + 3.0715781450271606e-01 + + + 1.4871568679809570e+01 + 1.0673042297363281e+01 + 3.4523502349853516e+01 + 9.6144456863403320e+00 + 1.3030851364135742e+01 + 1.3599418640136719e+01 + + 2.3518675565719604e-01 + 1.5182061493396759e-01 + 9.8811304569244385e-01 + 1.5232615172863007e-01 + 1.5050502121448517e-01 + 3.0839520692825317e-01 + + + 3.9232873916625977e+00 + 3.6647446155548096e+00 + 8.8422250747680664e+00 + 1.8588413000106812e+00 + 5.6067132949829102e+00 + 3.6829626560211182e+00 + + 1.9138371944427490e-01 + 1.6748243570327759e-01 + 9.5639789104461670e-01 + 5.6871127337217331e-02 + 3.6713454127311707e-01 + 1.5269514918327332e-01 + + + 3.7858898639678955e+00 + 3.5101103782653809e+00 + 8.8732309341430664e+00 + 1.7596650123596191e+00 + 5.3824634552001953e+00 + 3.7098689079284668e+00 + + 1.8374986946582794e-01 + 1.5913774073123932e-01 + 9.7151619195938110e-01 + 5.6424330919981003e-02 + 3.4453427791595459e-01 + 1.7919595539569855e-01 + + + 3.7617659568786621e+00 + 3.4613683223724365e+00 + 9.5704870223999023e+00 + 3.4877974987030029e+00 + 3.4165804386138916e+00 + 3.4102394580841064e+00 + + 1.4376677572727203e-01 + 1.2024582922458649e-01 + 9.8325949907302856e-01 + 1.0955993086099625e-01 + 1.3816918432712555e-01 + 2.0972643792629242e-01 + + + 3.5960786342620850e+00 + 3.2707345485687256e+00 + 9.6264677047729492e+00 + 3.3602063655853271e+00 + 3.1148989200592041e+00 + 3.5442509651184082e+00 + + 1.3551394641399384e-01 + 1.1169280856847763e-01 + 9.8572134971618652e-01 + 1.0569544136524200e-01 + 1.2175213545560837e-01 + 2.2737044095993042e-01 + + + 1.2739402770996094e+01 + 9.6110143661499023e+00 + 2.9743040084838867e+01 + 8.1161022186279297e+00 + 1.0950599670410156e+01 + 1.1757071495056152e+01 + + 2.2575500607490540e-01 + 1.5212815999984741e-01 + 9.8261004686355591e-01 + 1.2846168875694275e-01 + 1.7672659456729889e-01 + 2.7063372731208801e-01 + + + 1.2987769126892090e+01 + 9.9732618331909180e+00 + 2.9729139328002930e+01 + 8.4387731552124023e+00 + 1.1350399017333984e+01 + 1.2696497917175293e+01 + + 2.2498458623886108e-01 + 1.5106849372386932e-01 + 9.8466938734054565e-01 + 1.3293771445751190e-01 + 1.6991326212882996e-01 + 2.8500548005104065e-01 + + + 1.6951924562454224e+00 + 1.4115499258041382e+00 + 6.0092282295227051e+00 + 1.4895352125167847e+00 + 1.3159185647964478e+00 + 3.0281760692596436e+00 + + 6.7334882915019989e-02 + 4.5884985476732254e-02 + 8.7637966871261597e-01 + 3.8711227476596832e-02 + 5.4155535995960236e-02 + 1.8206721544265747e-01 + + + 1.6951924562454224e+00 + 1.4115499258041382e+00 + 6.0092282295227051e+00 + 1.4895352125167847e+00 + 1.3159185647964478e+00 + 3.0281760692596436e+00 + + 6.7334882915019989e-02 + 4.5884985476732254e-02 + 8.7637966871261597e-01 + 3.8711227476596832e-02 + 5.4155535995960236e-02 + 1.8206721544265747e-01 + + + 4.4572520256042480e+00 + 4.2245359420776367e+00 + 1.1420451164245605e+01 + 3.2037136554718018e+00 + 4.9442439079284668e+00 + 3.0051858425140381e+00 + + 2.0508112013339996e-01 + 1.9092726707458496e-01 + 9.7960698604583740e-01 + 7.3960274457931519e-02 + 2.9271477460861206e-01 + 2.1201705932617188e-01 + + + 4.4572520256042480e+00 + 4.2245359420776367e+00 + 1.1420451164245605e+01 + 3.2037136554718018e+00 + 4.9442439079284668e+00 + 3.0051858425140381e+00 + + 2.0508112013339996e-01 + 1.9092726707458496e-01 + 9.7960698604583740e-01 + 7.3960274457931519e-02 + 2.9271477460861206e-01 + 2.1201705932617188e-01 + diff --git a/opencv_extra/testdata/cv/stereomatching/datasets/datasets.xml b/opencv_extra/testdata/cv/stereomatching/datasets/datasets.xml index 4f4c26e7..e9280129 100644 --- a/opencv_extra/testdata/cv/stereomatching/datasets/datasets.xml +++ b/opencv_extra/testdata/cv/stereomatching/datasets/datasets.xml @@ -1,15 +1,14 @@ - - barn2 "8" "0" - bull "8" "0" - cones "4" "0" - poster "8" "0" - sawtooth "8" "0" - teddy "4" "0" - tsukuba "16" "0" - venus "8" "0" - + + barn2 "8" "0" + bull "8" "0" + cones "4" "0" + poster "8" "0" + sawtooth "8" "0" + teddy "4" "0" + tsukuba "16" "0" + venus "8" "0" -- 2.39.2