Skip to content
Snippets Groups Projects
Commit 0917cec8 authored by Oleg Alexandrov's avatar Oleg Alexandrov
Browse files

Fix conflict

parents 45c8ee47 4c8ce703
No related branches found
No related tags found
No related merge requests found
......@@ -165,13 +165,11 @@ void removeDistortion(double dx, double dy, double &ux, double &uy,
case RADIAL: {
double rr = dx * dx + dy * dy;
if (rr > tolerance) {
double dr = opticalDistCoeffs[0] +
(rr * (opticalDistCoeffs[1] + rr * opticalDistCoeffs[2]));
ux = dx * (1.0 - dr);
uy = dy * (1.0 - dr);
}
} break;
// Computes undistorted focal plane (x,y) coordinates given a distorted
......@@ -363,13 +361,12 @@ void applyDistortion(double ux, double uy, double &dx, double &dy,
switch (distortionType) {
// Compute distorted focal plane coordinate given undistorted
// focal plane coordinate. This case works by iteratively adding distortion
// focal plane coordinates. This case works by iteratively adding distortion
// until the new distorted point, r, undistorts to within a tolerance of the
// original point, rp.
case RADIAL: {
double rp2 = (ux * ux) + (uy * uy);
if (rp2 > tolerance) {
double rp = sqrt(rp2);
// Compute first fractional distortion using rp
double drOverR =
......@@ -407,7 +404,7 @@ void applyDistortion(double ux, double uy, double &dx, double &dy,
dx = ux / (1.0 - drOverR);
dy = uy / (1.0 - drOverR);
}
} break;
case TRANSVERSE: {
computeTransverseDistortion(ux, uy, dx, dy, opticalDistCoeffs);
......
......@@ -124,17 +124,26 @@ TEST(transverse, removeDistortion_AlternatingOnes) {
EXPECT_NEAR(uy, 7.5, 1e-8);
}
TEST(Radial, testRemoveDistortion) {
csm::ImageCoord imagePt(0.0, 4.0);
TEST(Radial, testUndistortDistort) {
double ux, uy;
std::vector<double> coeffs = {0, 0, 0};
// Distorted pixel
csm::ImageCoord imagePt(0.0, 1e-1);
// Undistort
double ux, uy;
std::vector<double> coeffs = {0.03, 0.00001, 0.000004};
double tolerance = 1e-2;
removeDistortion(imagePt.samp, imagePt.line, ux, uy, coeffs,
DistortionType::RADIAL);
DistortionType::RADIAL, tolerance);
EXPECT_NEAR(ux, 4, 1e-8);
EXPECT_NEAR(uy, 0, 1e-8);
// Distort back
double desiredPrecision = 1e-6;
double dx, dy;
applyDistortion(ux, uy, dx, dy, coeffs,
DistortionType::RADIAL, desiredPrecision, tolerance);
EXPECT_NEAR(dx, imagePt.samp, 1e-8);
EXPECT_NEAR(dy, imagePt.line, 1e-8);
}
// If coeffs are 0 then this will have the same result as removeDistortion
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment