Basic Image AlgorithmS Library
2.8.0
|
Class for triangulation of 3Dpoints from 2D matches. Covariance matrix (refering to an uncertainty ellipsoid) is computed also. More...
#include <Geometry/Triangulation.hh>
Public Member Functions | |
void | AddDebugLevel (const long int lv) |
void | AddDebugLevel (const std::string &name) |
int | CorrectCorrespondences (const FMatrix &F, HomgPoint2D &p1, HomgPoint2D &p2, bool refine=false) |
optimize 2d correspondences regarding F for triangulation More... | |
bool | DebugLevelIsSet (const long int lv) const |
bool | DebugLevelIsSet (const std::string &name) const |
int | GetCovariance (PMatrix &P1, PMatrix &P2, const HomgPoint2D &p1, const Matrix2x2< double > &cov1, const HomgPoint2D &p2, const Matrix2x2< double > &cov2, HomgPoint3D &p, Matrix3x3< double > &cov, const int num, bool quasiEuclidean=false) |
returns an approximation to the 3D point p with uncertainty cov as derived from the 2D points p1 and p2 with uncertainties cov1 and cov2 More... | |
int | GetCovariance2D (PMatrix &P1, PMatrix &P2, HomgPoint2D &p1, HomgPoint2D &p2, HomgPoint3D &point3D, Matrix3x3< double > &covariance, const double &triangdeltapixel=TRIANGULATION_DEFAULT_DELTAPIXEL) |
Calculates and returns the uncertainty as normalized covariance matrix in 'covariance'. More... | |
int | GetCovarianceAnalytic (PMatrix &P1, PMatrix &P2, HomgPoint2D &p1, HomgPoint2D &p2, HomgPoint3D &point3D, Matrix3x3< double > &covariance, const double &triangdeltapixel=TRIANGULATION_DEFAULT_DELTAPIXEL, const double &sigma=TRIANGULATION_DEFAULT_SIGMA) |
Calculates and returns the uncertainty as normalized covariance matrix in 'covariance'. More... | |
int | GetCovarianceProjective (PMatrix &P1, PMatrix &P2, const HomgPoint2D &p1, const HomgPoint2DCov &cov1, const HomgPoint2D &p2, const HomgPoint2DCov &cov2, HomgPoint3D &p, HomgPoint3DCov &cov) |
int | GetDebugLevel () const |
std::ostream & | GetDebugStream () const |
void | GetDebugStream (std::ostream &os) const |
int | Intersect (Vector3< double > &pA, Vector3< double > &dirA, Vector3< double > &pB, Vector3< double > &dirB, Vector3< double > &res) |
analytic correct intersection of two lines, point returned has minimum distance to both lines. More... | |
int | Intersect (Vector3< double > &pA, Vector3< double > &dirA, Vector3< double > &pB, Vector3< double > &dirB, Vector3< double > &res, double &dist) |
analytic correct intersection of two lines, point returned has minimum distance to both lines, distance between lines is returned in dist. More... | |
Vector3< double > | Intersect (Vector3< double > &a1, Vector3< double > &a2, Vector3< double > &b1, Vector3< double > &b2) |
analytic correct intersection of two lines, point returned has minimum distance to both lines. More... | |
long int | Name2DebugLevel (const std::string &name) const |
looks up a debuglevel in the internal map, returns 0 if not found More... | |
long int | NewDebugLevel (const std::string &name) |
creates a new debuglevel More... | |
int | Optimal (PMatrix &P1, PMatrix &P2, HomgPoint2D &p1, HomgPoint2D &p2, HomgPoint3D &point3d) |
method from Hartley Zisserman chapter 12.5 pp 315 first uses CorrectCorrespondences() and then calls TriangulateLinear() More... | |
void | PrintDebugLevel (std::ostream &os=std::cout) const |
void | RemoveDebugLevel (const long int lv) |
void | RemoveDebugLevel (const std::string &name) |
void | SetDebugLevel (const long int lv) |
void | SetDebugLevel (const std::string &name) |
void | SetDebugStream (const std::ostream &os) |
void | ShowDebugLevel (std::ostream &os=std::cout) const |
prints all internally known debuglevels More... | |
int | Triangulate (PMatrix &P1, PMatrix &P2, const HomgPoint2D &p1, const HomgPoint2D &p2, BIAS::Vector3< double > &point3d) |
Triangulation for metric PMatrices (using C and Hinf) More... | |
int | Triangulate (PMatrix &P1, PMatrix &P2, const HomgPoint2D &p1, const HomgPoint2D &p2, BIAS::HomgPoint3D &point3d) |
deprecated More... | |
int | Triangulate (const ProjectionParametersBase *P1, const ProjectionParametersBase *P2, const HomgPoint2D &p1, const HomgPoint2D &p2, Vector3< double > &point3d) |
Triangulation for metric Poses (using C and R) More... | |
int | Triangulate (const ProjectionParametersBase *P1, const ProjectionParametersBase *P2, const HomgPoint2D &p1, const HomgPoint2D &p2, HomgPoint3D &point3d) |
deprecated More... | |
int | Triangulate (const Pose &P1, const Pose &P2, const HomgPoint2D &p1, const HomgPoint2D &p2, Vector3< double > &point3d) |
Triangulation for metric Poses (using C and R) More... | |
int | Triangulate (const Pose &P1, const Pose &P2, const HomgPoint2D &p1, const HomgPoint2D &p2, HomgPoint3D &point3d) |
deprecated More... | |
int | Triangulate (const Vector3< double > &C1, const Quaternion< double > &Q1, const Vector3< double > &C2, const Quaternion< double > &Q2, const HomgPoint2D &p1, const HomgPoint2D &p2, Vector3< double > &point3d) |
Triangulation for metric Poses (using C and Q) More... | |
int | Triangulate (const Vector3< double > &C1, const Quaternion< double > &Q1, const Vector3< double > &C2, const Quaternion< double > &Q2, const HomgPoint2D &p1, const HomgPoint2D &p2, HomgPoint3D &point3d) |
deprecated More... | |
int | Triangulate2D (PMatrix &P1, PMatrix &P2, HomgPoint2D &p1, HomgPoint2D &p2, HomgPoint3D &point3d, double &dist, double &angle) |
does not use BackprojectPseudoInverse but get NormRayWorldCoo More... | |
int | Triangulate2D (PMatrix &P1, PMatrix &P2, HomgPoint2D &p1, HomgPoint2D &p2, HomgPoint3D &point3d, Matrix3x3< double > &CovMatrix, double &dist, double &angle, const double &triangdeltapixel=TRIANGULATION_DEFAULT_DELTAPIXEL) |
as above, but also determines the covariance matrix More... | |
int | TriangulateLinear (PMatrix &P1, PMatrix &P2, HomgPoint2D &p1, HomgPoint2D &p2, HomgPoint3D &point3d) |
Triangulates a 3d point without decomposition of P matrix, use this method in selfcalibration scenarios. More... | |
int | TriangulateLinear (std::vector< PMatrix > pmatrices, std::vector< HomgPoint2D > homgPoints2D, HomgPoint3D &point3d) |
Triangulates a 3d point without decomposition of P matrix, use this method in selfcalibration scenarios. More... | |
int | TriangulateProjective (const ProjectionParametersBase *P1, const ProjectionParametersBase *P2, const HomgPoint2D &p1, const HomgPoint2D &p2, HomgPoint3D &point3d) |
Triangulation for metric Poses (using C and R) More... | |
Triangulation () | |
~Triangulation () | |
Static Public Member Functions | |
static long int | GetGlobalDebugLevel () |
static void | SetGlobalDebugLevel (long int lev) |
Protected Member Functions | |
void | _UpdateCovWeights (const double &TriangDeltaPixels=TRIANGULATION_DEFAULT_DELTAPIXEL, const double &sigma=TRIANGULATION_DEFAULT_SIGMA) |
called by constructor to set up neighbourhood weights for covariance computation More... | |
long | ConsumeNextFreeDebuglevel_ () |
returns the next available debuglevel More... | |
Protected Attributes | |
double | _dTriangDeltaPixels |
value to go up/down/left/right for "manual" covariance computation More... | |
double | _dTriangSigmaPixels |
long int | _liDebugLevel |
long int | _liNextDebugLevel |
new concept, debuglevel are managed here in the debug class More... | |
std::map< std::string, long int > | _String2Debuglevel |
Matrix3x3< double > | cov_weights_ |
neighbourhood weights for covariance computation More... | |
Static Protected Attributes | |
static std::ostream | _zDebugStream |
static long int | GlobalDebugLevel = 0 |
Class for triangulation of 3Dpoints from 2D matches. Covariance matrix (refering to an uncertainty ellipsoid) is computed also.
all functions so far only for 2 images (no trifocal).
Definition at line 75 of file Triangulation.hh.
Triangulation::Triangulation | ( | ) |
Definition at line 44 of file Triangulation.cpp.
References _UpdateCovWeights(), and BIAS::Debug::NewDebugLevel().
Triangulation::~Triangulation | ( | ) |
Definition at line 63 of file Triangulation.cpp.
|
protected |
called by constructor to set up neighbourhood weights for covariance computation
Definition at line 711 of file Triangulation.cpp.
References _dTriangDeltaPixels, _dTriangSigmaPixels, and cov_weights_.
Referenced by GetCovariance2D(), GetCovarianceAnalytic(), and Triangulation().
|
inlineinherited |
Definition at line 355 of file Debug.hh.
Referenced by BIAS::GLProjectionParametersBase::AddDebugLevel(), CorrectCorrespondences(), BIAS::FilterBase< InputStorageType, OutputStorageType >::FilterBase(), BIAS::ShowCamWxVideoSourceFactory::OpenDevice(), and BIAS::SceneOpenSceneGraph::SceneOpenSceneGraph().
|
inlineinherited |
|
inlineprotectedinherited |
int Triangulation::CorrectCorrespondences | ( | const FMatrix & | F, |
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
bool | refine = false |
||
) |
optimize 2d correspondences regarding F for triangulation
In projective reconstruction you have to optimize the correspondences regarding epipolar geometry for the 3d point to be projectively optimal before you use TriangulateLinear() See section Hartley/Zisserman "Multiple View Geometry", section "optimal triangulation", section 12.5, pp.315
if refine==true, a non linear optimization for the real roots of the 6 degree polynomial is done using the powell algorithm from minpack
Hereby F maps point from image 1 into lines in image 2, i.e. F_{12}.
see mupad assume(a, Type::Real): assume(b, Type::Real): assume(c, Type::Real): assume(d, Type::Real): assume(f, Type::Real): assume(mfp, Type::Real): assume(t, Type::Real):
g:=t*((a*t+b)^2+mfp^2*(c*t+d)^2)^2-(a*d-b*c)*(1+f^2*t^2)^2*(a*t+b)*(c*t+d):
g:=simplify(expand(g)):
PRETTYPRINT := FALSE:
res:=poly(collect(g, [t]), [t]);
fprint(Unquoted, 0, "coeff[0]=", coeff(res, t, 0), "; // t^0"): fprint(Unquoted, 0, "coeff[1]=", coeff(res, t, 1), "; // t^1"): fprint(Unquoted, 0, "coeff[2]=", coeff(res, t, 2), "; // t^2"): fprint(Unquoted, 0, "coeff[3]=", coeff(res, t, 3), "; // t^3"): fprint(Unquoted, 0, "coeff[4]=", coeff(res, t, 4), "; // t^4"): fprint(Unquoted, 0, "coeff[5]=", coeff(res, t, 5), "; // t^5"): fprint(Unquoted, 0, "coeff[6]=", coeff(res, t, 6), "; // t^6"):
Definition at line 191 of file Triangulation.cpp.
References BIAS::Debug::AddDebugLevel(), BIAS::PolynomialSolve::CheckCoefficients(), BIAS::Debug::DebugLevelIsSet(), BIAS::PolynomialSolve::EvaluatePolynomial(), BIAS::FMatrix::GetEpipoles(), BIAS::HomgPoint2D::Homogenize(), BIAS::PolynomialSolve::NonLinearRefine(), BIAS::PolynomialSolve::Numeric(), BIAS::Vector3< T >::Set(), BIAS::HomgPoint2D::Set(), BIAS::Matrix3x3< T >::SetIdentity(), BIAS::Matrix3x3< T >::Transpose(), and BIAS::Matrix3x3< T >::TransposedMult().
Referenced by Optimal().
|
inlineinherited |
Definition at line 341 of file Debug.hh.
Referenced by BIAS::GenSynthMatches::_AddUniformDistributedOutliers(), BIAS::GenSynthMatches::_CreateCamMovement(), BIAS::GenSynthMatches::_CreateStatic2DPoints(), BIAS::UnscentedTransform::ComputeSigmaPoints_(), CorrectCorrespondences(), BIAS::GenSynthMatches::GetGTNormalizedF(), BIAS::MonteCarloTransform::GetSamples_(), and BIAS::MonteCarloTransform::Transform().
|
inlineinherited |
int Triangulation::GetCovariance | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
const HomgPoint2D & | p1, | ||
const Matrix2x2< double > & | cov1, | ||
const HomgPoint2D & | p2, | ||
const Matrix2x2< double > & | cov2, | ||
HomgPoint3D & | p, | ||
Matrix3x3< double > & | cov, | ||
const int | num, | ||
bool | quasiEuclidean = false |
||
) |
returns an approximation to the 3D point p with uncertainty cov as derived from the 2D points p1 and p2 with uncertainties cov1 and cov2
Generates randomly num 2D coordinates distributed according to cov1 centered around p1 and num 2D coordinates distributed according to cov2 centered around p2. For every possible combination of these two 2D point clouds a 3D point is triangulated resulting in a 3D point cloud of maximum num*num points. The mean and the covariance of this 3D point cloud is calculated and returned in p (mean) and cov. The 3D point p, which is the mean of the point cloud, is generally not* aequivalent to the 3D point resulting from simple triangulation using p1 and p2.
The 2D points p1 and p2 must be homogenized and are not allowed to be at infinity.
!! untested !!
Definition at line 992 of file Triangulation.cpp.
References BIAS::Random::GetNormalDistributed(), BIAS::HomgPoint3D::Homogenize(), BIAS::HomgPoint2D::IsAtInfinity(), BIAS::HomgPoint2D::IsHomogenized(), BIAS::MatrixZero, BIAS::HomgPoint3D::Set(), BIAS::HomgPoint2D::Set(), BIAS::Matrix3x3< T >::SetZero(), BIAS::Matrix2x2< T >::SetZero(), Triangulate(), and TriangulateLinear().
int Triangulation::GetCovariance2D | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
HomgPoint3D & | point3D, | ||
Matrix3x3< double > & | covariance, | ||
const double & | triangdeltapixel = TRIANGULATION_DEFAULT_DELTAPIXEL |
||
) |
Calculates and returns the uncertainty as normalized covariance matrix in 'covariance'.
It is calculated by triangulation of all neighboring pixels within +- triangdeltapixel of p1 and p2 and taking the variance with 'point'. Uses Triangulate2D. returns 0 in case of success returns -4 in case of error (too little triangulations succeeded)
Definition at line 748 of file Triangulation.cpp.
References _dTriangDeltaPixels, _UpdateCovWeights(), cov_weights_, BIAS::HomgPoint3D::Homogenize(), BIAS::HomgPoint2D::Homogenize(), BIAS::HomgPoint2D::Set(), BIAS::Matrix3x3< T >::SetZero(), and Triangulate2D().
Referenced by Triangulate2D().
int Triangulation::GetCovarianceAnalytic | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
HomgPoint3D & | point3D, | ||
Matrix3x3< double > & | covariance, | ||
const double & | triangdeltapixel = TRIANGULATION_DEFAULT_DELTAPIXEL , |
||
const double & | sigma = TRIANGULATION_DEFAULT_SIGMA |
||
) |
Calculates and returns the uncertainty as normalized covariance matrix in 'covariance'.
It is calculated by triangulation of all neighboring pixels within +- triangdeltapixel of p1 and p2 and taking the variance with 'point'. Uses Triangulate.
P1 | PMatrix for image one |
P1 | PMatrix for image two |
p1 | Homogenized(!) point in image one |
p2 | Homogenized(!) point in image two |
triangdeltapixel | offset in all directions and both images tested |
Definition at line 851 of file Triangulation.cpp.
References _dTriangDeltaPixels, _dTriangSigmaPixels, _UpdateCovWeights(), cov_weights_, BIAS::HomgPoint3D::IsHomogenized(), BIAS::HomgPoint2D::IsHomogenized(), BIAS::HomgPoint2D::Set(), BIAS::Matrix3x3< T >::SetZero(), and Triangulate().
int Triangulation::GetCovarianceProjective | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2DCov & | cov1, | ||
const HomgPoint2D & | p2, | ||
const HomgPoint2DCov & | cov2, | ||
HomgPoint3D & | p, | ||
HomgPoint3DCov & | cov | ||
) |
Definition at line 1136 of file Triangulation.cpp.
References BIAS::SVD::GetVT(), BIAS::HomgPoint2D, BIAS::SVD::Invert(), BIAS::Vector< T >::KroneckerProduct(), BIAS::Matrix< T >::MultLeft(), Optimal(), BIAS::Matrix< T >::SetRow(), and BIAS::Matrix< T >::SetZero().
|
inlineinherited |
Definition at line 332 of file Debug.hh.
Referenced by BIAS::listenthread(), BIAS::Image< StorageType >::operator=(), and BIAS::ImageBase::operator=().
|
inlineinherited |
|
inlineinherited |
|
inlinestaticinherited |
int Triangulation::Intersect | ( | Vector3< double > & | pA, |
Vector3< double > & | dirA, | ||
Vector3< double > & | pB, | ||
Vector3< double > & | dirB, | ||
Vector3< double > & | res | ||
) |
analytic correct intersection of two lines, point returned has minimum distance to both lines.
Lines have parametric description by point and direction. IMPORTANT: directions MUST BE normalized!!
Refer to Kanatani Statistical Opt. for Geometric Comp. , page 108
Definition at line 1263 of file Triangulation.cpp.
References BIAS::Vector3< T >::CrossProduct(), BIAS::Vector3< T >::Multiply(), BIAS::Vector3< T >::NormL2(), and BIAS::Vector3< T >::ScalarProduct().
Referenced by Intersect(), and Triangulate().
int Triangulation::Intersect | ( | Vector3< double > & | pA, |
Vector3< double > & | dirA, | ||
Vector3< double > & | pB, | ||
Vector3< double > & | dirB, | ||
Vector3< double > & | res, | ||
double & | dist | ||
) |
analytic correct intersection of two lines, point returned has minimum distance to both lines, distance between lines is returned in dist.
Lines have parametric description by point and direction. IMPORTANT: directions MUST BE normalized!!
Refer to Kanatani Statistical Opt. for Geometric Comp. , page 108
Definition at line 1333 of file Triangulation.cpp.
References BIAS::Vector3< T >::CrossProduct(), BIAS::Vector3< T >::Multiply(), BIAS::Vector3< T >::NormL2(), and BIAS::Vector3< T >::ScalarProduct().
Vector3< double > Triangulation::Intersect | ( | Vector3< double > & | a1, |
Vector3< double > & | a2, | ||
Vector3< double > & | b1, | ||
Vector3< double > & | b2 | ||
) |
analytic correct intersection of two lines, point returned has minimum distance to both lines.
Line A is described by points a1,a2 and line B by b1,b2 Refer to Kanatani Statistical Opt. for Geometric Comp. ,page108
Definition at line 975 of file Triangulation.cpp.
References Intersect(), BIAS::Vector3< T >::Normalize(), and BIAS::Vector3< T >::NormL2().
|
inlineinherited |
|
inlineinherited |
creates a new debuglevel
Definition at line 474 of file Debug.hh.
Referenced by BIAS::COSAC< SolutionType >::COSAC(), BIAS::ProjectionParametersPerspectiveDepth::Init(), BIAS::MonteCarloTransform::MonteCarloTransform(), BIAS::PMatrixEstimation::PMatrixEstimation(), BIAS::PreemptiveRANSAC< SolutionType >::PreemptiveRANSAC(), BIAS::RANSACPreKnowledge< SolutionType >::RANSACPreKnowledge(), BIAS::ROI::ROI(), BIAS::RotationAveraging::RotationAveraging(), BIAS::SceneOpenSceneGraph::SceneOpenSceneGraph(), BIAS::ThreeDOutOpenSceneGraph::ThreeDOutOpenSceneGraph(), Triangulation(), and BIAS::UnscentedTransform::UnscentedTransform().
int Triangulation::Optimal | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d | ||
) |
method from Hartley Zisserman chapter 12.5 pp 315 first uses CorrectCorrespondences() and then calls TriangulateLinear()
Definition at line 68 of file Triangulation.cpp.
References CorrectCorrespondences(), BIAS::Vector3< T >::ScalarProduct(), and TriangulateLinear().
Referenced by GetCovarianceProjective(), and BIAS::FMatrixEstimation::GoldStandard().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 318 of file Debug.hh.
Referenced by BIAS::ShowCamWxVideoSourceFactory::CreateBumbleBee(), BIAS::ShowCamWxVideoSourceFactory::CreateDCAM(), BIAS::VideoSource_MDcam::ScanBus(), BIAS::GLProjectionParametersBase::SetDebugLevel(), BIAS::VideoSource_Disk::VideoSource_Disk(), BIAS::VideoSource_DV2::VideoSource_DV2(), BIAS::VideoSource_DV::VideoSource_DV_Internal_Init_(), and BIAS::VideoSource_V4L::VideoSource_V4L().
|
inlineinherited |
|
inlineinherited |
|
inlinestaticinherited |
|
inlineinherited |
int Triangulation::Triangulate | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
BIAS::Vector3< double > & | point3d | ||
) |
Triangulation for metric PMatrices (using C and Hinf)
point3d | (output) euclidean 3d point |
Definition at line 570 of file Triangulation.cpp.
References BIAS::PMatrix::GetHinf(), BIAS::PMatrix::GetNullVector(), BIAS::HomgPoint3D::Homogenize(), Intersect(), BIAS::Vector3< T >::NormL2(), and BIAS::Vector3< T >::Set().
Referenced by BIAS::RectificationViaProjectionMappingBase< InputStorageType, OutputStorageType >::Disp2Depth(), GetCovariance(), GetCovarianceAnalytic(), BIAS::EMatrix::GetRotationTranslation(), Triangulate(), and TriangulateProjective().
int Triangulation::Triangulate | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
BIAS::HomgPoint3D & | point3d | ||
) |
deprecated
Definition at line 607 of file Triangulation.cpp.
References BIAS::HomgPoint3D::Set(), and Triangulate().
int Triangulation::Triangulate | ( | const ProjectionParametersBase * | P1, |
const ProjectionParametersBase * | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
Vector3< double > & | point3d | ||
) |
Triangulation for metric Poses (using C and R)
point3d | (output) guaranteed to be homogenized, inf causes error |
Definition at line 540 of file Triangulation.cpp.
References BIAS::ProjectionParametersBase::GetC(), Intersect(), BIAS::Vector3< T >::Normalize(), BIAS::Vector3< T >::NormL2(), and BIAS::ProjectionParametersBase::UnProjectToRay().
int Triangulation::Triangulate | ( | const ProjectionParametersBase * | P1, |
const ProjectionParametersBase * | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d | ||
) |
deprecated
Definition at line 525 of file Triangulation.cpp.
References BIAS::HomgPoint3D::Set(), and Triangulate().
int Triangulation::Triangulate | ( | const Pose & | P1, |
const Pose & | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
Vector3< double > & | point3d | ||
) |
Triangulation for metric Poses (using C and R)
point3d | (output) guaranteed to be homogenized, inf causes error |
Definition at line 471 of file Triangulation.cpp.
References BIAS::CoordinateTransform3D::GetC(), BIAS::CoordinateTransform3D::GetR(), Intersect(), and BIAS::Vector3< T >::NormL2().
int Triangulation::Triangulate | ( | const Pose & | P1, |
const Pose & | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d | ||
) |
deprecated
Definition at line 458 of file Triangulation.cpp.
References BIAS::HomgPoint3D::Set(), and Triangulate().
int Triangulation::Triangulate | ( | const Vector3< double > & | C1, |
const Quaternion< double > & | Q1, | ||
const Vector3< double > & | C2, | ||
const Quaternion< double > & | Q2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
Vector3< double > & | point3d | ||
) |
Triangulation for metric Poses (using C and Q)
Definition at line 441 of file Triangulation.cpp.
References Intersect(), BIAS::Quaternion< T >::MultVec(), and BIAS::Vector3< T >::NormL2().
int Triangulation::Triangulate | ( | const Vector3< double > & | C1, |
const Quaternion< double > & | Q1, | ||
const Vector3< double > & | C2, | ||
const Quaternion< double > & | Q2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d | ||
) |
deprecated
Definition at line 426 of file Triangulation.cpp.
References BIAS::HomgPoint3D::Set(), and Triangulate().
int Triangulation::Triangulate2D | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d, | ||
double & | dist, | ||
double & | angle | ||
) |
does not use BackprojectPseudoInverse but get NormRayWorldCoo
Also calculates the minimal distance between the two rays (dist) and the cos of the angle between the two rays (angle) (scalarproduct) input: P1, P2, p1, p2 output: point3d, dist
Definition at line 622 of file Triangulation.cpp.
References BIAS::PMatrix::GetC(), BIAS::PMatrix::GetNormRayWorldCoo(), BIAS::Vector3< T >::ScalarProduct(), and BIAS::HomgPoint3D::Set().
Referenced by GetCovariance2D(), and Triangulate2D().
int Triangulation::Triangulate2D | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d, | ||
Matrix3x3< double > & | CovMatrix, | ||
double & | dist, | ||
double & | angle, | ||
const double & | triangdeltapixel = TRIANGULATION_DEFAULT_DELTAPIXEL |
||
) |
as above, but also determines the covariance matrix
Definition at line 697 of file Triangulation.cpp.
References GetCovariance2D(), and Triangulate2D().
int Triangulation::TriangulateLinear | ( | PMatrix & | P1, |
PMatrix & | P2, | ||
HomgPoint2D & | p1, | ||
HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d | ||
) |
Triangulates a 3d point without decomposition of P matrix, use this method in selfcalibration scenarios.
Homogeneous DLT algorithm using SVD, see Hartley/Zisserman: "Multiple View Geometry", p.297 For projective reconstructions first optimize 2d points using CorrectCorrespondences() regarding epipolar geometry
Definition at line 87 of file Triangulation.cpp.
References BIAS::Matrix< T >::GetRow(), BIAS::SVD::GetVT(), BIAS::HomgPoint3D::Homogenize(), and BIAS::Matrix< T >::NormalizeRows().
Referenced by GetCovariance(), and Optimal().
int Triangulation::TriangulateLinear | ( | std::vector< PMatrix > | pmatrices, |
std::vector< HomgPoint2D > | homgPoints2D, | ||
HomgPoint3D & | point3d | ||
) |
Triangulates a 3d point without decomposition of P matrix, use this method in selfcalibration scenarios.
Homogeneous DLT algorithm using SVD, see Hartley/Zisserman: "Multiple View Geometry", p.297 For projective reconstructions first optimize 2d points using CorrectCorrespondences() regarding epipolar geometry
Definition at line 124 of file Triangulation.cpp.
References BIAS::Matrix< T >::GetRow(), BIAS::SVD::GetVT(), BIAS::HomgPoint3D::Homogenize(), and BIAS::Matrix< T >::NormalizeRows().
int Triangulation::TriangulateProjective | ( | const ProjectionParametersBase * | P1, |
const ProjectionParametersBase * | P2, | ||
const HomgPoint2D & | p1, | ||
const HomgPoint2D & | p2, | ||
HomgPoint3D & | point3d | ||
) |
Triangulation for metric Poses (using C and R)
point3d,: | resulting 3D point. It may be at infinity. |
Definition at line 506 of file Triangulation.cpp.
References BIAS::HomgPoint3D::Set(), Triangulate(), and BIAS::ProjectionParametersBase::UnProjectToRay().
|
protected |
value to go up/down/left/right for "manual" covariance computation
Definition at line 353 of file Triangulation.hh.
Referenced by _UpdateCovWeights(), GetCovariance2D(), and GetCovarianceAnalytic().
|
protected |
Definition at line 354 of file Triangulation.hh.
Referenced by _UpdateCovWeights(), and GetCovarianceAnalytic().
|
protectedinherited |
Definition at line 510 of file Debug.hh.
Referenced by BIAS::Debug::operator=(), and BIAS::ImageBase::operator=().
|
protectedinherited |
new concept, debuglevel are managed here in the debug class
Definition at line 516 of file Debug.hh.
Referenced by BIAS::Debug::operator=().
|
protectedinherited |
Definition at line 517 of file Debug.hh.
Referenced by BIAS::Debug::operator=().
|
staticprotectedinherited |
Definition at line 511 of file Debug.hh.
Referenced by BIAS::Debug::operator=().
|
protected |
neighbourhood weights for covariance computation
Definition at line 351 of file Triangulation.hh.
Referenced by _UpdateCovWeights(), GetCovariance2D(), and GetCovarianceAnalytic().
|
staticprotectedinherited |