Merge pull request #17224 from ganesh-k13:bugfix/calib3d/17201
* Fixed indexing in prefilter * Initialised prefilter * Initialised prefilter with value initialisation * Added TC to trigger different Mem Allocs in BufferBM * Optimize cases with only needed conditions
This commit is contained in:
parent
ea3c2307dc
commit
cddd7f10d5
@ -347,7 +347,8 @@ public:
|
||||
htext(nstripes, NULL),
|
||||
cbuf0(nstripes, NULL),
|
||||
sad_short(nstripes, NULL),
|
||||
hsad_short(nstripes, NULL)
|
||||
hsad_short(nstripes, NULL),
|
||||
prefilter()
|
||||
{
|
||||
const int wsz = params.SADWindowSize;
|
||||
const int ndisp = params.numDisparities;
|
||||
@ -379,7 +380,7 @@ public:
|
||||
if (params.useNormPrefilter())
|
||||
{
|
||||
for (size_t i = 0; i < 2; ++i)
|
||||
area.allocate(prefilter[0], width + params.preFilterSize + 2);
|
||||
area.allocate(prefilter[i], width + params.preFilterSize + 2);
|
||||
}
|
||||
area.commit();
|
||||
|
||||
|
||||
@ -809,6 +809,55 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
TEST(Calib3d_StereoBM, regression) { CV_StereoBMTest test; test.safe_run(); }
|
||||
|
||||
/* < preFilter, < preFilterCap, SADWindowSize > >*/
|
||||
typedef tuple < int, tuple < int, int > > BufferBM_Params_t;
|
||||
|
||||
typedef testing::TestWithParam< BufferBM_Params_t > Calib3d_StereoBM_BufferBM;
|
||||
|
||||
const int preFilters[] =
|
||||
{
|
||||
StereoBM::PREFILTER_NORMALIZED_RESPONSE,
|
||||
StereoBM::PREFILTER_XSOBEL
|
||||
};
|
||||
|
||||
const tuple < int, int > useShortsConditions[] =
|
||||
{
|
||||
make_tuple(30, 19),
|
||||
make_tuple(32, 23)
|
||||
};
|
||||
|
||||
TEST_P(Calib3d_StereoBM_BufferBM, memAllocsTest)
|
||||
{
|
||||
const int preFilter = get<0>(GetParam());
|
||||
const int preFilterCap = get<0>(get<1>(GetParam()));
|
||||
const int SADWindowSize = get<1>(get<1>(GetParam()));
|
||||
|
||||
String path = cvtest::TS::ptr()->get_data_path() + "cv/stereomatching/datasets/teddy/";
|
||||
Mat leftImg = imread(path + "im2.png", 0);
|
||||
ASSERT_FALSE(leftImg.empty());
|
||||
Mat rightImg = imread(path + "im6.png", 0);
|
||||
ASSERT_FALSE(rightImg.empty());
|
||||
Mat leftDisp;
|
||||
{
|
||||
Ptr<StereoBM> bm = StereoBM::create(16,9);
|
||||
bm->setPreFilterType(preFilter);
|
||||
bm->setPreFilterCap(preFilterCap);
|
||||
bm->setBlockSize(SADWindowSize);
|
||||
bm->compute( leftImg, rightImg, leftDisp);
|
||||
|
||||
ASSERT_FALSE(leftDisp.empty());
|
||||
}
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(/*nothing*/, Calib3d_StereoBM_BufferBM,
|
||||
testing::Combine(
|
||||
testing::ValuesIn(preFilters),
|
||||
testing::ValuesIn(useShortsConditions)
|
||||
)
|
||||
);
|
||||
|
||||
//----------------------------------- StereoSGBM test -----------------------------------------------------
|
||||
|
||||
class CV_StereoSGBMTest : public CV_StereoMatchingTest
|
||||
@ -869,8 +918,6 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
TEST(Calib3d_StereoBM, regression) { CV_StereoBMTest test; test.safe_run(); }
|
||||
TEST(Calib3d_StereoSGBM, regression) { CV_StereoSGBMTest test; test.safe_run(); }
|
||||
|
||||
TEST(Calib3d_StereoSGBM_HH4, regression)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user