32 #define TEST_NAME "optim/ransac"
36 #include <Eigen/Geometry>
52 BOOST_CHECK_EQUAL(options.
max_num_trials, std::numeric_limits<size_t>::max());
57 BOOST_CHECK_EQUAL(report.success,
false);
58 BOOST_CHECK_EQUAL(report.num_trials, 0);
59 BOOST_CHECK_EQUAL(report.support.num_inliers, 0);
60 BOOST_CHECK_EQUAL(report.support.residual_sum,
61 std::numeric_limits<double>::max());
62 BOOST_CHECK_EQUAL(report.inlier_mask.size(), 0);
82 100, 100, 0.999, 1.0),
92 const size_t num_samples = 1000;
93 const size_t num_outliers = 400;
97 Eigen::Vector3d(100, 10, 10));
100 std::vector<Eigen::Vector3d> src;
101 std::vector<Eigen::Vector3d> dst;
102 for (
size_t i = 0; i < num_samples; ++i) {
103 src.emplace_back(i, std::sqrt(i) + 2, std::sqrt(2 * i + 2));
104 dst.push_back(src.back());
109 for (
size_t i = 0; i < num_outliers; ++i) {
110 dst[i] = Eigen::Vector3d(
RandomReal(-3000.0, -2000.0),
119 const auto report = ransac.
Estimate(src, dst);
121 BOOST_CHECK_EQUAL(report.success,
true);
122 BOOST_CHECK_GT(report.num_trials, 0);
125 BOOST_CHECK_EQUAL(report.support.num_inliers, num_samples - num_outliers);
126 for (
size_t i = 0; i < num_samples; ++i) {
127 if (i < num_outliers) {
128 BOOST_CHECK(!report.inlier_mask[i]);
130 BOOST_CHECK(report.inlier_mask[i]);
135 const double matrix_diff =
136 (orig_tform.
Matrix().topLeftCorner<3, 4>() - report.model).norm();
137 BOOST_CHECK(std::abs(matrix_diff) < 1
e-6);
Report Estimate(const std::vector< typename Estimator::X_t > &X, const std::vector< typename Estimator::Y_t > &Y)
void SetPRNGSeed(unsigned seed)
Eigen::Vector4d ComposeIdentityQuaternion()
T RandomReal(const T min, const T max)
BOOST_AUTO_TEST_CASE(TestOptions)