use of boofcv.abst.geo.Estimate1ofEpipolar in project BoofCV by lessthanoptimal.
the class FactoryMultiViewRobust method essentialLMedS.
/**
* Robust solution for estimating {@link Se3_F64} using epipolar geometry from two views with
* {@link LeastMedianOfSquares LMedS}. Input observations are in normalized image coordinates.
*
* <ul>
* <li>Error units is pixels squared times two</li>
* </ul>
*
* <p>See code for all the details.</p>
*
* @param essential Essential matrix estimation parameters. Can't be null.
* @param lmeds Parameters for RANSAC. Can't be null.
* @return Robust Se3_F64 estimator
*/
public static LeastMedianOfSquares<Se3_F64, AssociatedPair> essentialLMedS(ConfigEssential essential, ConfigLMedS lmeds) {
essential.checkValidity();
Estimate1ofEpipolar essentialAlg = FactoryMultiView.computeEssential_1(essential.which, essential.numResolve);
return epipolarLMedS(essentialAlg, essential.intrinsic, lmeds);
}
use of boofcv.abst.geo.Estimate1ofEpipolar in project BoofCV by lessthanoptimal.
the class FactoryMultiViewRobust method essentialRansac.
/**
* Robust solution for estimating {@link Se3_F64} using epipolar geometry from two views with
* {@link Ransac}. Input observations are in normalized image coordinates.
*
* <p>See code for all the details.</p>
*
* @param essential Essential matrix estimation parameters. Can't be null.
* @param ransac Parameters for RANSAC. Can't be null.
* @return Robust Se3_F64 estimator
*/
public static Ransac<Se3_F64, AssociatedPair> essentialRansac(ConfigEssential essential, ConfigRansac ransac) {
essential.checkValidity();
ransac.checkValidity();
Estimate1ofEpipolar essentialAlg = FactoryMultiView.computeEssential_1(essential.which, essential.numResolve);
return epipolarRansac(essentialAlg, essential.intrinsic, ransac);
}
use of boofcv.abst.geo.Estimate1ofEpipolar in project BoofCV by lessthanoptimal.
the class FactoryMultiViewRobust method fundamentalLMedS.
public static LeastMedianOfSquares<Se3_F64, AssociatedPair> fundamentalLMedS(ConfigEssential fundamental, ConfigLMedS lmeds) {
fundamental.checkValidity();
Estimate1ofEpipolar essentialAlg = FactoryMultiView.computeEssential_1(fundamental.which, fundamental.numResolve);
return epipolarLMedS(essentialAlg, fundamental.intrinsic, lmeds);
}
use of boofcv.abst.geo.Estimate1ofEpipolar in project BoofCV by lessthanoptimal.
the class FactoryMultiViewRobust method fundamentalRansac.
public static Ransac<Se3_F64, AssociatedPair> fundamentalRansac(ConfigFundamental essential, ConfigRansac ransac) {
essential.checkValidity();
ransac.checkValidity();
Estimate1ofEpipolar essentialAlg = FactoryMultiView.computeFundamental_1(essential.which, essential.numResolve);
return epipolarRansac(essentialAlg, essential.intrinsic, ransac);
}
use of boofcv.abst.geo.Estimate1ofEpipolar in project BoofCV by lessthanoptimal.
the class ExampleFundamentalMatrix method simpleFundamental.
/**
* If the set of associated features are known to be correct, then the fundamental matrix can
* be computed directly with a lot less code. The down side is that this technique is very
* sensitive to noise.
*/
public static DMatrixRMaj simpleFundamental(List<AssociatedPair> matches) {
// Use the 8-point algorithm since it will work with an arbitrary number of points
Estimate1ofEpipolar estimateF = FactoryMultiView.computeFundamental_1(EnumFundamental.LINEAR_8, 0);
DMatrixRMaj F = new DMatrixRMaj(3, 3);
if (!estimateF.process(matches, F))
throw new IllegalArgumentException("Failed");
// as was done above.
return F;
}
Aggregations