mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 23:33:05 +04:00
1. removed (almost all) additional scale parameter mentions
2. refactored funcptrs to switch/cases & more
This commit is contained in:
@@ -156,7 +156,6 @@ public:
|
||||
OdometryAlgoType algtype;
|
||||
double maxError1;
|
||||
double maxError5;
|
||||
bool testScale;
|
||||
double idError;
|
||||
};
|
||||
|
||||
@@ -251,17 +250,13 @@ void OdometryTest::run()
|
||||
odf.setImage(image);
|
||||
odf.setDepth(depth);
|
||||
Mat calcRt;
|
||||
float scale = 1.0f;
|
||||
|
||||
// 1. Try to find Rt between the same frame (try masks also).
|
||||
Mat mask(image.size(), CV_8UC1, Scalar(255));
|
||||
|
||||
odometry.prepareFrame(odf);
|
||||
bool isComputed;
|
||||
if (testScale)
|
||||
isComputed = odometry.compute(odf, odf, calcRt, scale);
|
||||
else
|
||||
isComputed = odometry.compute(odf, odf, calcRt);
|
||||
isComputed = odometry.compute(odf, odf, calcRt);
|
||||
|
||||
if(!isComputed)
|
||||
{
|
||||
@@ -290,8 +285,6 @@ void OdometryTest::run()
|
||||
|
||||
Mat warpedImage, warpedDepth, scaledDepth;
|
||||
|
||||
float test_scale = 1.03f;
|
||||
scaledDepth = testScale ? depth * test_scale : depth;
|
||||
|
||||
warpFrame(image, scaledDepth, rvec, tvec, K, warpedImage, warpedDepth);
|
||||
dilateFrame(warpedImage, warpedDepth); // due to inaccuracy after warping
|
||||
@@ -299,18 +292,13 @@ void OdometryTest::run()
|
||||
OdometryFrame odfSrc = odometry.createOdometryFrame();
|
||||
OdometryFrame odfDst = odometry.createOdometryFrame();
|
||||
|
||||
float scale_error = 0.05f;
|
||||
|
||||
odfSrc.setImage(image);
|
||||
odfSrc.setDepth(depth);
|
||||
odfDst.setImage(warpedImage);
|
||||
odfDst.setDepth(warpedDepth);
|
||||
|
||||
odometry.prepareFrames(odfSrc, odfDst);
|
||||
if (testScale)
|
||||
isComputed = odometry.compute(odfSrc, odfDst, calcRt, scale);
|
||||
else
|
||||
isComputed = odometry.compute(odfSrc, odfDst, calcRt);
|
||||
isComputed = odometry.compute(odfSrc, odfDst, calcRt);
|
||||
|
||||
if (!isComputed)
|
||||
{
|
||||
@@ -334,8 +322,6 @@ void OdometryTest::run()
|
||||
|
||||
// compare rotation
|
||||
double possibleError = algtype == OdometryAlgoType::COMMON ? 0.11f : 0.015f;
|
||||
if (testScale)
|
||||
possibleError = 0.2f;
|
||||
|
||||
Affine3f src = Affine3f(Vec3f(rvec), Vec3f(tvec));
|
||||
Affine3f res = Affine3f(Vec3f(calcRvec), Vec3f(calcTvec));
|
||||
@@ -344,15 +330,14 @@ void OdometryTest::run()
|
||||
double rdiffnorm = cv::norm(diff.rvec());
|
||||
double tdiffnorm = cv::norm(diff.translation());
|
||||
|
||||
if (rdiffnorm < possibleError && tdiffnorm < possibleError && abs(scale - test_scale) < scale_error)
|
||||
if (rdiffnorm < possibleError && tdiffnorm < possibleError)
|
||||
better_1time_count++;
|
||||
if (5. * rdiffnorm < possibleError && 5 * tdiffnorm < possibleError && abs(scale - test_scale) < scale_error)
|
||||
if (5. * rdiffnorm < possibleError && 5 * tdiffnorm < possibleError)
|
||||
better_5times_count++;
|
||||
|
||||
CV_LOG_INFO(NULL, "Iter " << iter);
|
||||
CV_LOG_INFO(NULL, "rdiff: " << Vec3f(diff.rvec()) << "; rdiffnorm: " << rdiffnorm);
|
||||
CV_LOG_INFO(NULL, "tdiff: " << Vec3f(diff.translation()) << "; tdiffnorm: " << tdiffnorm);
|
||||
CV_LOG_INFO(NULL, "test_scale: " << test_scale << "; scale: " << scale);
|
||||
|
||||
CV_LOG_INFO(NULL, "better_1time_count " << better_1time_count << "; better_5time_count " << better_5times_count);
|
||||
}
|
||||
@@ -423,12 +408,6 @@ TEST(RGBD_Odometry_ICP, algorithmic)
|
||||
test.run();
|
||||
}
|
||||
|
||||
TEST(RGBD_Odometry_ICP_Scale, algorithmic)
|
||||
{
|
||||
OdometryTest test(OdometryType::DEPTH, OdometryAlgoType::COMMON, 0.65, 0.0, true);
|
||||
test.run();
|
||||
}
|
||||
|
||||
TEST(RGBD_Odometry_RgbdICP, algorithmic)
|
||||
{
|
||||
OdometryTest test(OdometryType::RGB_DEPTH, OdometryAlgoType::COMMON, 0.99, 0.99);
|
||||
@@ -437,7 +416,7 @@ TEST(RGBD_Odometry_RgbdICP, algorithmic)
|
||||
|
||||
TEST(RGBD_Odometry_FastICP, algorithmic)
|
||||
{
|
||||
OdometryTest test(OdometryType::DEPTH, OdometryAlgoType::FAST, 0.99, 0.89, false, FLT_EPSILON);
|
||||
OdometryTest test(OdometryType::DEPTH, OdometryAlgoType::FAST, 0.99, 0.89, FLT_EPSILON);
|
||||
test.run();
|
||||
}
|
||||
|
||||
@@ -462,7 +441,7 @@ TEST(RGBD_Odometry_RgbdICP, UMats)
|
||||
|
||||
TEST(RGBD_Odometry_FastICP, UMats)
|
||||
{
|
||||
OdometryTest test(OdometryType::DEPTH, OdometryAlgoType::FAST, 0.99, 0.89, false, FLT_EPSILON);
|
||||
OdometryTest test(OdometryType::DEPTH, OdometryAlgoType::FAST, 0.99, 0.89, FLT_EPSILON);
|
||||
test.checkUMats();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user