Class EpipolarMinimizeGeometricError

java.lang.Object
boofcv.alg.geo.f.EpipolarMinimizeGeometricError

public class EpipolarMinimizeGeometricError
extends Object
Given point correspondences x[1] and x[2] and a fundamental matrix F, compute the correspondences x'[1] and x'[2] which minimize the geometric error subject to x'[2] F' x'[1] = 0

Page 318 in: R. Hartley, and A. Zisserman, "Multiple View Geometry in Computer Vision", 2nd Ed, Cambridge 2003

  • Constructor Details

    • EpipolarMinimizeGeometricError

      public EpipolarMinimizeGeometricError()
  • Method Details

    • process

      public boolean process​(DMatrixRMaj F21, double x1, double y1, double x2, double y2, Point2D_F64 p1, Point2D_F64 p2)
      Minimizes the geometric error
      Parameters:
      F21 - (Input) Fundamental matrix x2 * F21 * x1 == 0
      x1 - (Input) Point 1 x-coordinate. Pixels
      y1 - (Input) Point 1 y-coordinate. Pixels
      x2 - (Input) Point 2 x-coordinate. Pixels
      y2 - (Input) Point 2 y-coordinate. Pixels
      p1 - (Output) Point 1. Pixels
      p2 - (Output) Point 2. Pixels
      Returns:
      true if a solution was found or false if it failed
    • solvePolynomial

      public boolean solvePolynomial​(double f1, double f2, double a, Double b, double c, double d)
      Solves for the roots of an ugly polynomial defined in 12.7 in book [1] Coefficients found using Sage Math a,b,c,d,f1,f2,t = var('a,b,c,d,f1,f2,t') g = t*((a*t+b)^2 + f2^2*(c*t+d)^2)^2 - (a*d-b*c)*(1+f1^2*t^2)^2*(a*t+b)*(c*t+d) g.expand().collect(t)