Skip to content

Commit

Permalink
Merge pull request #1 from xiesc/xiesc-fix-bug
Browse files Browse the repository at this point in the history
fix a bug in calculating belonging cell
  • Loading branch information
xiesc committed Mar 31, 2021
2 parents 791847a + 40aa201 commit 8bd0071
Showing 1 changed file with 9 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -220,14 +220,19 @@ double ComputeBiasedness(
constexpr double kBiasProbabilityHalfExtent = 2.5;
constexpr int kBiasCellMinNumFeatures = 5; // Must be at least 2. This discards cells with very few samples to reduce the influence of their very noisy results.
constexpr int kBiasCellCount = 50; // 50 x 50 cells within the calibrated area

constexpr double margin = 1e-7;
const double step_u = (double)(cam->calibration_max_x() - cam->calibration_min_x()) / kBiasCellCount + margin;
const double step_v = (double)(cam->calibration_max_y() - cam->calibration_min_y()) / kBiasCellCount + margin;

Image<SinglePassMeanAndVariance<double>> bias_statistics(kBiasCellCount, kBiasCellCount);

for (usize i = 0; i < reprojection_errors.size(); ++ i) {
const Vec2d& reprojection_error = reprojection_errors[i];
const Vec2f& feature = features[i];

int bias_cell_x = std::min<int>(bias_statistics.width() - 1, std::max<int>(0, (feature.x() - cam->calibration_min_x()) / kBiasCellCount));
int bias_cell_y = std::min<int>(bias_statistics.height() - 1, std::max<int>(0, (feature.y() - cam->calibration_min_y()) / kBiasCellCount));
int bias_cell_x = std::min<int>(bias_statistics.width() - 1, std::max<int>(0, (feature.x() - cam->calibration_min_x()) / step_u));
int bias_cell_y = std::min<int>(bias_statistics.height() - 1, std::max<int>(0, (feature.y() - cam->calibration_min_y()) / step_v));
bias_statistics(bias_cell_x, bias_cell_y).AddData(reprojection_error.norm());
}

Expand Down Expand Up @@ -268,8 +273,8 @@ double ComputeBiasedness(
const Vec2d& reprojection_error = reprojection_errors[i];
const Vec2f& feature = features[i];

int bias_cell_x = std::min<int>(bias_statistics.width() - 1, std::max<int>(0, (feature.x() - cam->calibration_min_x()) / kBiasCellCount));
int bias_cell_y = std::min<int>(bias_statistics.height() - 1, std::max<int>(0, (feature.y() - cam->calibration_min_y()) / kBiasCellCount));
int bias_cell_x = std::min<int>(bias_statistics.width() - 1, std::max<int>(0, (feature.x() - cam->calibration_min_x()) / step_u));
int bias_cell_y = std::min<int>(bias_statistics.height() - 1, std::max<int>(0, (feature.y() - cam->calibration_min_y()) / step_v));

auto& bias_cell = bias_statistics(bias_cell_x, bias_cell_y);
if (bias_cell.count() < kBiasCellMinNumFeatures) {
Expand Down

0 comments on commit 8bd0071

Please sign in to comment.