Package boofcv.alg.structure.expand
Class MetricExpandByOneView
java.lang.Object
boofcv.alg.structure.expand.ExpandByOneView
boofcv.alg.structure.expand.MetricExpandByOneView
- All Implemented Interfaces:
VerbosePrint
Expands a metric
scene
by one view (the taget) using the geometric relationship between
the target and two known metric views.
- Input: A seed view and the known graph
- Selects two other views with known camera matrices
- Finds features in common with all three views
- Trifocal tensor and RANSAC to find the unknown seed camera matrix
- Estimate calibrating homography from found projective scene and known metric values
- Elevate target from projective to metric
- Bundle Adjustment to refine estimate
- Convert from local coordinates to world / scene coordinates
- Add found metric view for target to scene
The initial projective scene is found independently using common observations in an attempt to reduce the influence of past mistakes. To mitigate past mistakes, the intrisic parameters for the known views are optimized inside of bundle adjustment even though they are "known". Only the found intrinsic and Se3 for the target view will be added/modified in the scene graph.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Solution for a view's metric state from a particular approach/set of assumptions. -
Field Summary
Modifier and TypeFieldDescriptionboolean
Do not consider the uncalibrated case if the camera is already knowndouble
Fit score for uncalibrated case needs to be significantly better than calibrated to be selected.Fields inherited from class boofcv.alg.structure.expand.ExpandByOneView
utils, validCandidates, verbose, workGraph
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
process
(LookUpSimilarImages dbSimilar, LookUpCameraInfo dbCam, SceneWorkingGraph workGraph, PairwiseImageGraph.View target) Attempts to estimate the camera model in the global projective space for the specified viewvoid
setVerbose
(@Nullable PrintStream out, @Nullable Set<String> configuration) Methods inherited from class boofcv.alg.structure.expand.ExpandByOneView
selectTwoConnections
-
Field Details
-
onlyConsiderCalibrated
public boolean onlyConsiderCalibratedDo not consider the uncalibrated case if the camera is already known -
expandCalibrated
-
expandUnknown
-
overfitHandyCap
public double overfitHandyCapFit score for uncalibrated case needs to be significantly better than calibrated to be selected. This is how much its score is degraded. The reason is because you will almost always get a better fit when you allow more parameters to vary.
-
-
Constructor Details
-
MetricExpandByOneView
public MetricExpandByOneView()
-
-
Method Details
-
process
public boolean process(LookUpSimilarImages dbSimilar, LookUpCameraInfo dbCam, SceneWorkingGraph workGraph, PairwiseImageGraph.View target) Attempts to estimate the camera model in the global projective space for the specified view- Parameters:
dbSimilar
- (Input) image data baseworkGraph
- (Input/Output) scene graph. On input it will have the known scene and if successful the metric information for the target view.target
- (Input) The view that needs its projective camera estimated and the graph is being expanded into- Returns:
- true if successful target view has an estimated calibration matrix and pose, which have already been added to "workGraph"
-
setVerbose
public void setVerbose(@Nullable @Nullable PrintStream out, @Nullable @Nullable Set<String> configuration) - Specified by:
setVerbose
in interfaceVerbosePrint
- Overrides:
setVerbose
in classExpandByOneView
-