Class ThreeViewEstimateMetricScene


  • public class ThreeViewEstimateMetricScene
    extends java.lang.Object
    Estimates the metric scene's structure given a set of sparse features associations from three views. This is intended to give the best possible solution from the sparse set of matching features. Its internal methods are updated as better strategies are found. Assumptions:
    • Principle point is zero
    • Zero skew
    • fx = fy approximately
    The zero principle point is enforced prior to calling process(java.util.List<boofcv.struct.geo.AssociatedTriple>, int, int) by subtracting the image center from each pixel observations. Steps:
    1. Fit Trifocal tensor using RANSAC
    2. Get and refine camera matrices
    3. Compute dual absolute quadratic
    4. Estimate intrinsic parameters from DAC
    5. Estimate metric scene structure
    6. Sparse bundle adjustment
    7. Tweak parameters and sparse bundle adjustment again
    • Field Summary

      Fields 
      Modifier and Type Field Description
      boofcv.abst.geo.bundle.BundleAdjustment<boofcv.abst.geo.bundle.SceneStructureMetric> bundleAdjustment  
      boofcv.factory.geo.ConfigTrifocalError configError  
      org.ddogleg.optimization.lm.ConfigLevenbergMarquardt configLM  
      boofcv.factory.geo.ConfigRansac configRansac  
      boofcv.factory.geo.ConfigBundleAdjustment configSBA  
      boofcv.factory.geo.ConfigTrifocal configTriFit  
      boofcv.factory.geo.ConfigTrifocal configTriRansac  
      boofcv.misc.ConfigConverge convergeSBA  
      java.util.List<boofcv.struct.geo.AssociatedTriple> inliers  
      protected java.util.List<boofcv.struct.calib.CameraPinhole> listPinhole  
      double manualFocalLength  
      boofcv.abst.geo.bundle.SceneObservations observations  
      protected org.ejml.data.DMatrixRMaj P1  
      protected org.ejml.data.DMatrixRMaj P2  
      protected org.ejml.data.DMatrixRMaj P3  
      double pruneFraction  
      org.ddogleg.fitting.modelset.ransac.Ransac<boofcv.struct.geo.TrifocalTensor,​boofcv.struct.geo.AssociatedTriple> ransac  
      boofcv.abst.geo.bundle.SceneStructureMetric structure  
      boofcv.abst.geo.Estimate1ofTrifocalTensor trifocalEstimator  
      protected java.util.List<georegression.struct.se.Se3_F64> worldToView  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boofcv.abst.geo.bundle.SceneStructureMetric getStructure()  
      boolean process​(java.util.List<boofcv.struct.geo.AssociatedTriple> associated, int width, int height)
      Determines the metric scene.
      void setVerbose​(java.io.PrintStream verbose, int level)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • configRansac

        public boofcv.factory.geo.ConfigRansac configRansac
      • configTriRansac

        public boofcv.factory.geo.ConfigTrifocal configTriRansac
      • configTriFit

        public boofcv.factory.geo.ConfigTrifocal configTriFit
      • configError

        public boofcv.factory.geo.ConfigTrifocalError configError
      • configLM

        public org.ddogleg.optimization.lm.ConfigLevenbergMarquardt configLM
      • configSBA

        public boofcv.factory.geo.ConfigBundleAdjustment configSBA
      • convergeSBA

        public boofcv.misc.ConfigConverge convergeSBA
      • ransac

        public org.ddogleg.fitting.modelset.ransac.Ransac<boofcv.struct.geo.TrifocalTensor,​boofcv.struct.geo.AssociatedTriple> ransac
      • inliers

        public java.util.List<boofcv.struct.geo.AssociatedTriple> inliers
      • trifocalEstimator

        public boofcv.abst.geo.Estimate1ofTrifocalTensor trifocalEstimator
      • P1

        protected org.ejml.data.DMatrixRMaj P1
      • P2

        protected org.ejml.data.DMatrixRMaj P2
      • P3

        protected org.ejml.data.DMatrixRMaj P3
      • listPinhole

        protected java.util.List<boofcv.struct.calib.CameraPinhole> listPinhole
      • bundleAdjustment

        public boofcv.abst.geo.bundle.BundleAdjustment<boofcv.abst.geo.bundle.SceneStructureMetric> bundleAdjustment
      • structure

        public boofcv.abst.geo.bundle.SceneStructureMetric structure
      • observations

        public boofcv.abst.geo.bundle.SceneObservations observations
      • manualFocalLength

        public double manualFocalLength
      • pruneFraction

        public double pruneFraction
      • worldToView

        protected java.util.List<georegression.struct.se.Se3_F64> worldToView
    • Constructor Detail

      • ThreeViewEstimateMetricScene

        public ThreeViewEstimateMetricScene()
        Sets configurations to their default value
    • Method Detail

      • process

        public boolean process​(java.util.List<boofcv.struct.geo.AssociatedTriple> associated,
                               int width,
                               int height)
        Determines the metric scene. The principle point is assumed to be zero in the passed in pixel coordinates. Typically this is done by subtracting the image center from each pixel coordinate for each view.
        Parameters:
        associated - List of associated features from 3 views. pixels
        width - width of all images
        height - height of all images
        Returns:
        true if successful or false if it failed
      • setVerbose

        public void setVerbose​(java.io.PrintStream verbose,
                               int level)
      • getStructure

        public boofcv.abst.geo.bundle.SceneStructureMetric getStructure()