Package boofcv.alg.structure.score3d
Class ScoreFundamentalVsRotation
java.lang.Object
boofcv.alg.structure.score3d.ScoreFundamentalVsRotation
- All Implemented Interfaces:
EpipolarScore3D
,VerbosePrint
Determines the amount of 3D information by comparing the results from robustly fitting a Fundamental matrix vs
fitting pure rotation/self calibration. A generic
-
Field Summary
Modifier and TypeFieldDescriptionAssumes pure rotation then refines rotation and intrinsics to observationsdouble
A pair of observations are within tolerance to the model if the error is less than or equal to thisprotected final DogArray_I32
protected final DMatrixRMaj
protected final DMatrixRMaj
double
The error ratio can get massive and this number prevents large values for being weighted too much in the scorefinal ConfigLength
The minimum number of inliers for an edge to be accepted.protected final DMatrixRMaj
double
If number of matches from fundamental divided by homography is more than this then it is considered a 3D scene -
Constructor Summary
ConstructorDescription -
Method Summary
Modifier and TypeMethodDescriptiondouble
getScore()
Returns a score for how much 3D information there is.boolean
is3D()
Decides if the two views have a 3D relationship.void
process
(CameraPinholeBrown cameraA, @Nullable CameraPinholeBrown cameraB, int featuresA, int featuresB, List<AssociatedPair> pairs, DMatrixRMaj fundamental, DogArray_I32 inliersIdx) Determines if there's a 3D relationship between the views and scores how strong it isvoid
setVerbose
(@Nullable PrintStream out, @Nullable Set<String> configuration)
-
Field Details
-
ratio3D
public double ratio3DIf number of matches from fundamental divided by homography is more than this then it is considered a 3D scene -
maxRatioScore
public double maxRatioScoreThe error ratio can get massive and this number prevents large values for being weighted too much in the score -
minimumInliers
The minimum number of inliers for an edge to be accepted. If relative, then relative to pairs. -
inlierErrorTol
public double inlierErrorTolA pair of observations are within tolerance to the model if the error is less than or equal to this -
fitRotation
Assumes pure rotation then refines rotation and intrinsics to observations -
inliersRotationIdx
-
K1
-
K2
-
R
-
-
Constructor Details
-
ScoreFundamentalVsRotation
-
-
Method Details
-
process
public void process(CameraPinholeBrown cameraA, @Nullable @Nullable CameraPinholeBrown cameraB, int featuresA, int featuresB, List<AssociatedPair> pairs, DMatrixRMaj fundamental, DogArray_I32 inliersIdx) Description copied from interface:EpipolarScore3D
Determines if there's a 3D relationship between the views and scores how strong it is- Specified by:
process
in interfaceEpipolarScore3D
- Parameters:
cameraA
- (Input) Prior information on the camera intrinsics. View A.cameraB
- (Input) Prior information on the camera intrinsics. View B. If null then it's assumed the two cameras are the same.featuresA
- (Input) Number of features in imageAfeaturesB
- (Input) Number of features in imageBpairs
- (Input) Set of point feature pairs between the two imagesfundamental
- (Output) Fundamental matrix describing the geometric relationship between the two viewsinliersIdx
- (Output) Which features inside of pairs are in the inlier sets
-
getScore
public double getScore()Description copied from interface:EpipolarScore3D
Returns a score for how much 3D information there is. 0 = no 3D information. 1 = very strong 3D information. score is 0 to 1.- Specified by:
getScore
in interfaceEpipolarScore3D
- Returns:
- score
-
is3D
public boolean is3D()Description copied from interface:EpipolarScore3D
Decides if the two views have a 3D relationship.- Specified by:
is3D
in interfaceEpipolarScore3D
- Returns:
- true if 3D or false if not
-
setVerbose
public void setVerbose(@Nullable @Nullable PrintStream out, @Nullable @Nullable Set<String> configuration) - Specified by:
setVerbose
in interfaceVerbosePrint
-