Basic Image AlgorithmS Library
2.8.0
|
describes the epipolar relationship between a point and his mapping on a corresponding epipolar line. More...
#include <Base/Geometry/FMatrixBase.hh>
Public Member Functions | |
void | Compose (const KMatrix &K1, const RMatrixBase &R1, const Vector3< double > &C1, const KMatrix &K2, const RMatrixBase &R2, const Vector3< double > &C2) |
constructs the FMatrix from image 1 to image 2 as K1 [e]_x R K2 More... | |
void | Compose (const RMatrixBase &R1, const Vector3< double > &C1, const RMatrixBase &R2, const Vector3< double > &C2) |
constructs the FMatrix from image 1 to image 2 as [e]_x R, assumes K1=K2=Identity() More... | |
FMatrixBase () | |
default constructor untested (04/18/2002) More... | |
FMatrixBase (const MatrixInitType &i) | |
constructor setting identity or zero More... | |
FMatrixBase (const Matrix3x3< FMATRIX_TYPE > &A) | |
FMatrixBase (const FMATRIX_TYPE *d) | |
constructor for convenience to build form a c-style aaray amtrix More... | |
FMatrixBase (const Vector3< FMATRIX_TYPE > &epipole, const RMatrixBase &R) | |
see Set(Vector3<FMATRIX_TYPE>& epipole, RMatixBase& R); More... | |
FMatrixBase (const Vector3< FMATRIX_TYPE > &epipole, const Vector3< FMATRIX_TYPE > &EulerAngXYZ) | |
see Set(Vector3<FMATRIX_TYPE>& epipole, Vector3<FMATRIX_TYPE>& EulerAngXYZ); More... | |
void | GetAbsMaxMin (FMATRIX_TYPE &max, FMATRIX_TYPE &min) const |
void | GetColumn (const unsigned int col, Vector3< FMATRIX_TYPE > &r) const |
extract one column ('Spalte') from this matrix (for convenience) More... | |
BIAS::Vector3< FMATRIX_TYPE > | GetColumn (const unsigned int col) const |
double | GetCosAngleErrorHomogenized (const BIAS::HomgPoint2D &p1, const BIAS::HomgPoint2D &p2) |
returns the cosine of the angle bewteen epipolar line and match line More... | |
FMATRIX_TYPE * | GetData () |
const FMATRIX_TYPE * | GetData () const |
FMATRIX_TYPE | GetDeterminant () const |
returns the Determinant |A| of this More... | |
double | GetEpipolarError (BIAS::HomgPoint2D &P1, BIAS::HomgPoint2D &P2) |
computes error in epipolar geometry for the given correspondence P1,P2 using above function after homogenizing the points More... | |
double | GetEpipolarErrorHomogenized (const BIAS::HomgPoint2D &P1, const BIAS::HomgPoint2D &P2) const |
computes error in epipolar geometry for the given correspondence P1;P2 More... | |
HomgLine2D | GetEpipolarLineImage1 (const HomgPoint2D &point) const |
Returns epipolar line in image 1 for point in image 2. More... | |
void | GetEpipolarLineImage1 (const HomgPoint2D &point, HomgLine2D &homline) const |
Returns epipolar line in image 1 for point in image 2. More... | |
HomgLine2D | GetEpipolarLineImage2 (const HomgPoint2D &point) const |
Returns epipolar line in image 2 for point in image 1. More... | |
void | GetEpipolarLineImage2 (const HomgPoint2D &point, HomgLine2D &homline) const |
Returns epipolar line in image 2 for point in image 1. More... | |
int | GetInverse (Matrix3x3< FMATRIX_TYPE > &inv) const |
Matrix inversion: inverts this and stores resulty in argument inv. More... | |
FMATRIX_TYPE | GetMax () const |
void | GetMaxMin (FMATRIX_TYPE &max, FMATRIX_TYPE &min) const |
return biggest and smallest entry More... | |
FMATRIX_TYPE | GetMin () const |
unsigned | GetNumElements () const |
void | GetRow (const unsigned int row, Vector3< FMATRIX_TYPE > &r) const |
extract one row ('Zeile') from ths matrix (for convenience) More... | |
Vector3< FMATRIX_TYPE > | GetRow (const unsigned int row) const |
int | InvertIP () |
In place matrix conversion. More... | |
bool | IsIdentity (const FMATRIX_TYPEeps=std::numeric_limits< FMATRIX_TYPE >::epsilon()) const |
bool | IsZero (const FMATRIX_TYPEeps=std::numeric_limits< FMATRIX_TYPE >::epsilon()) const |
bool | Load (const std::string &fname) |
void | MakeSymmetric () |
void | Mult (const Vector3< FMATRIX_TYPE > &argvec, Vector3< FMATRIX_TYPE > &destvec) const |
matrix - vector multiplicate this matrix with Vector3, storing the result in destvec calculates: destvec = (this Matrix) * argvec More... | |
void | Mult (const Matrix3x3< FMATRIX_TYPE > &argmat, Matrix3x3< FMATRIX_TYPE > &destmat) const |
matrix-matrix multiplication with other Matrix3x3, storing the result in destmat calculates: destmat = (this mat) * argmat More... | |
void | Mult (const Matrix3x4< FMATRIX_TYPE > &argmat, Matrix3x4< FMATRIX_TYPE > &destmat) const |
FMATRIX_TYPE | Normalize () |
divide this by biggest absolute entry, returns biggest entry More... | |
double | NormFrobenius () const |
FMATRIX_TYPE | NormL1 () const |
double | NormL2 () const |
bool | operator!= (const Matrix3x3< FMATRIX_TYPE > &arg) const |
Matrix3x3< FMATRIX_TYPE > & | operator*= (const Matrix3x3< FMATRIX_TYPE > &arg) |
woelk 11/2007 (c) www.vision-n.de More... | |
Matrix3x3< FMATRIX_TYPE > & | operator*= (const FMATRIX_TYPE &arg) |
woelk 11/2007 (c) www.vision-n.de More... | |
Matrix3x3< FMATRIX_TYPE > & | operator+= (const Matrix3x3< FMATRIX_TYPE > &arg) |
Matrix3x3< FMATRIX_TYPE > & | operator-= (const Matrix3x3< FMATRIX_TYPE > &arg) |
Matrix3x3< FMATRIX_TYPE > & | operator/= (const FMATRIX_TYPE &arg) |
FMatrixBase & | operator= (const Matrix3x3< FMATRIX_TYPE > &mat) |
assignment operators calling corresponding operator from base class "TNT::Matrix" if appropriate More... | |
bool | operator== (const Matrix3x3< FMATRIX_TYPE > &arg) const |
FMATRIX_TYPE * | operator[] (const unsigned row) |
const FMATRIX_TYPE * | operator[] (const unsigned row) const |
bool | Save (const std::string &fname) const |
void | Scale (const FMATRIX_TYPE &scalar, Matrix3x3< FMATRIX_TYPE > &destmat) const |
scalar-matrix multiplication More... | |
void | Set (const Vector3< FMATRIX_TYPE > &epipole, const RMatrixBase &R) |
set it from epipole and rotation matrix in order to generate essential matrix from image 1 to image 2 (i.e. More... | |
void | Set (const Vector3< FMATRIX_TYPE > &epipole, const Vector3< FMATRIX_TYPE > &EulerAngXYZ) |
see constructor from epipole and rotation matrix builds rotation matrix in x, y, z order with moving axis see RMatrixBase More... | |
void | Set (RMatrixBase &R, Vector3< FMATRIX_TYPE > &C) |
set function, it is undocumented if this really works with the camer center C, I doubt it, woelk 12/2004 More... | |
void | SetAsCrossProductMatrix (const Vector3< FMATRIX_TYPE > &vec) |
Sets matrix from vector as cross product matrix of this vector. More... | |
void | SetAsCrossProductMatrix (const FMATRIX_TYPE &x, const FMATRIX_TYPE &y, const FMATRIX_TYPE &z) |
Sets matrix from vector as cross product matrix of a vector. More... | |
void | SetColumn (const unsigned int col, const Vector3< FMATRIX_TYPE > &c) |
void | SetFromColumnVectors (const BIAS::Vector3< FMATRIX_TYPE > &v0, const BIAS::Vector3< FMATRIX_TYPE > &v1, const BIAS::Vector3< FMATRIX_TYPE > &v2) |
set this matrix from 3 vectors each representating a column More... | |
void | SetFromRowVectors (const BIAS::Vector3< FMATRIX_TYPE > &v0, const BIAS::Vector3< FMATRIX_TYPE > &v1, const BIAS::Vector3< FMATRIX_TYPE > &v2) |
set this matrix from 3 vectors, each representating a row More... | |
void | SetFromVector (const TNT::Vector< FMATRIX_TYPE > &vec) |
sets the diagonalelements of this 3x3 Matrix rowwise with the values of the 9 (x1) vector More... | |
void | SetIdentity () |
set the elements of this matrix to the identity matrix (possibly overriding the inherited method) More... | |
void | SetRow (const unsigned int row, const Vector3< FMATRIX_TYPE > &r) |
void | SetZero () |
FMATRIX_TYPE | Trace () const |
return the trace of the matrix More... | |
Matrix3x3< FMATRIX_TYPE > | Transpose () const |
returns transposed matrix tested 12.06.2002 More... | |
void | Transpose (const Matrix3x3< FMATRIX_TYPE > &arg) |
sets this as transposed arg, fw More... | |
void | TransposedMult (const Vector3< FMATRIX_TYPE > &argvec, Vector3< FMATRIX_TYPE > &destvec) const |
multiplies matrix from left with transposed argvec, resulting in transposed destvec More... | |
void | TransposeIP () |
tranpose this matrix "in place" example: 0 1 2 –> 0 3 6 3 4 5 –> 1 4 7 6 7 8 –> 2 5 8 More... | |
~FMatrixBase () | |
destructor untested (04/18/2002) More... | |
Protected Attributes | |
HomgPoint2D | _epipole |
bool | _isDecomposed |
RMatrixBase | _R |
FMATRIX_TYPE | Data_ [9] |
describes the epipolar relationship between a point and his mapping on a corresponding epipolar line.
The 3x3 matrix F is the fundamental matrix of an image pair (b1, b2). In particular, with p' = transpose(p) this results in the epipolar constraint: p1' F p2 = 0 for every pair (p1, p2) of corresponding image points in b1 and b2 respectively.
Only implementation very specific to FMatrixBase (and not valid for a general 3x3 matrix) should be implemented here.
Definition at line 67 of file FMatrixBase.hh.
FMatrixBase::~FMatrixBase | ( | ) |
destructor untested (04/18/2002)
Definition at line 36 of file FMatrixBase.cpp.
|
inline |
default constructor untested (04/18/2002)
Definition at line 77 of file FMatrixBase.hh.
|
inlineexplicit |
|
inline |
Definition at line 89 of file FMatrixBase.hh.
|
inlineexplicit |
constructor for convenience to build form a c-style aaray amtrix
Definition at line 96 of file FMatrixBase.hh.
|
inline |
see Set(Vector3<FMATRIX_TYPE>& epipole, RMatixBase& R);
Definition at line 105 of file FMatrixBase.hh.
|
inline |
see Set(Vector3<FMATRIX_TYPE>& epipole, Vector3<FMATRIX_TYPE>& EulerAngXYZ);
Definition at line 112 of file FMatrixBase.hh.
void FMatrixBase::Compose | ( | const KMatrix & | K1, |
const RMatrixBase & | R1, | ||
const Vector3< double > & | C1, | ||
const KMatrix & | K2, | ||
const RMatrixBase & | R2, | ||
const Vector3< double > & | C2 | ||
) |
constructs the FMatrix from image 1 to image 2 as K1 [e]_x R K2
Definition at line 92 of file FMatrixBase.cpp.
References BIAS::Matrix3x3< T >::GetInverse(), BIAS::Matrix3x3< T >::Mult(), and BIAS::Matrix3x3< T >::Transpose().
void FMatrixBase::Compose | ( | const RMatrixBase & | R1, |
const Vector3< double > & | C1, | ||
const RMatrixBase & | R2, | ||
const Vector3< double > & | C2 | ||
) |
constructs the FMatrix from image 1 to image 2 as [e]_x R, assumes K1=K2=Identity()
Definition at line 76 of file FMatrixBase.cpp.
References BIAS::HomgPoint2D::Homogenize(), BIAS::Matrix3x3< T >::Mult(), BIAS::Matrix3x3< T >::SetAsCrossProductMatrix(), and BIAS::Matrix3x3< T >::Transpose().
|
inherited |
|
inherited |
extract one column ('Spalte') from this matrix (for convenience)
|
inlineinherited |
Definition at line 202 of file Matrix3x3.hh.
|
inline |
returns the cosine of the angle bewteen epipolar line and match line
Definition at line 302 of file FMatrixBase.hh.
References _epipole, _isDecomposed, _R, BIAS::HomgLine2D::Homogenize(), BIAS::Matrix3x3< T >::Mult(), and BIAS::HomgLine2D::Set().
|
inlineinherited |
Definition at line 99 of file Matrix3x3.hh.
Referenced by GetEpipolarErrorHomogenized().
|
inlineinherited |
Definition at line 103 of file Matrix3x3.hh.
|
inherited |
returns the Determinant |A| of this
|
inline |
computes error in epipolar geometry for the given correspondence P1,P2 using above function after homogenizing the points
Definition at line 167 of file FMatrixBase.hh.
References BIAS::HomgPoint2D::Homogenize().
|
inline |
computes error in epipolar geometry for the given correspondence P1;P2
this error is the sum of squared distances to epipolar lines in both images, for inliers it should typically be of one or two pixels (if not-normalized pixel coordinates are used)
P1 | homogenized first point of correspondence to check |
P2 | homogenized second point of correspondence to check tested, optimized |
Definition at line 250 of file FMatrixBase.hh.
References BIAS::Matrix3x3< FMATRIX_TYPE >::GetData().
HomgLine2D FMatrixBase::GetEpipolarLineImage1 | ( | const HomgPoint2D & | point | ) | const |
Returns epipolar line in image 1 for point in image 2.
Definition at line 41 of file FMatrixBase.cpp.
void FMatrixBase::GetEpipolarLineImage1 | ( | const HomgPoint2D & | point, |
HomgLine2D & | homline | ||
) | const |
Returns epipolar line in image 1 for point in image 2.
Definition at line 48 of file FMatrixBase.cpp.
HomgLine2D FMatrixBase::GetEpipolarLineImage2 | ( | const HomgPoint2D & | point | ) | const |
Returns epipolar line in image 2 for point in image 1.
Definition at line 64 of file FMatrixBase.cpp.
void FMatrixBase::GetEpipolarLineImage2 | ( | const HomgPoint2D & | point, |
HomgLine2D & | homline | ||
) | const |
Returns epipolar line in image 2 for point in image 1.
Definition at line 70 of file FMatrixBase.cpp.
|
inherited |
Matrix inversion: inverts this and stores resulty in argument inv.
Returns -1 if determinant is zero, 0 on success.
|
inherited |
|
inherited |
return biggest and smallest entry
|
inherited |
|
inlineinherited |
Definition at line 107 of file Matrix3x3.hh.
|
inherited |
extract one row ('Zeile') from ths matrix (for convenience)
|
inlineinherited |
Definition at line 196 of file Matrix3x3.hh.
|
inherited |
In place matrix conversion.
Returns -1 if determinant is zero, 0 on success.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inlineinherited |
matrix - vector multiplicate this matrix with Vector3, storing the result in destvec calculates: destvec = (this Matrix) * argvec
|
inlineinherited |
matrix-matrix multiplication with other Matrix3x3, storing the result in destmat calculates: destmat = (this mat) * argmat
|
inherited |
|
inherited |
divide this by biggest absolute entry, returns biggest entry
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 255 of file Matrix3x3.hh.
|
inlineinherited |
Definition at line 274 of file Matrix3x3.hh.
|
inlineinherited |
woelk 11/2007 (c) www.vision-n.de
Definition at line 143 of file Matrix3x3.hh.
|
inherited |
woelk 11/2007 (c) www.vision-n.de
|
inherited |
|
inherited |
|
inherited |
|
inline |
assignment operators calling corresponding operator from base class "TNT::Matrix" if appropriate
Definition at line 123 of file FMatrixBase.hh.
References BIAS::Matrix3x3< T >::operator=().
Referenced by BIAS::FMatrix::operator=().
|
inherited |
|
inlineinherited |
Definition at line 91 of file Matrix3x3.hh.
|
inlineinherited |
Definition at line 95 of file Matrix3x3.hh.
|
inherited |
|
inlineinherited |
scalar-matrix multiplication
|
inline |
set it from epipole and rotation matrix in order to generate essential matrix from image 1 to image 2 (i.e.
implementation
generating the epipolar line in image 2, gfiven a point in image 1), use epipole in second image and rotation matrix from image 1 to image 2
Definition at line 215 of file FMatrixBase.hh.
References _epipole, _isDecomposed, _R, BIAS::HomgPoint2D::Homogenize(), BIAS::Matrix3x3< T >::Mult(), and BIAS::Matrix3x3< T >::SetAsCrossProductMatrix().
Referenced by BIAS::Parametrization::ParamsToEMatrix(), and Set().
|
inline |
see constructor from epipole and rotation matrix builds rotation matrix in x, y, z order with moving axis see RMatrixBase
Definition at line 227 of file FMatrixBase.hh.
References Set(), and BIAS::RMatrixBase::SetXYZ().
|
inline |
set function, it is undocumented if this really works with the camer center C, I doubt it, woelk 12/2004
Definition at line 235 of file FMatrixBase.hh.
References BIAS::Matrix3x3< T >::Transpose().
|
inherited |
Sets matrix from vector as cross product matrix of this vector.
|
inherited |
Sets matrix from vector as cross product matrix of a vector.
with components (x, y, z)
|
inherited |
|
inherited |
set this matrix from 3 vectors each representating a column
|
inherited |
set this matrix from 3 vectors, each representating a row
|
inherited |
sets the diagonalelements of this 3x3 Matrix rowwise with the values of the 9 (x1) vector
|
inlineinherited |
set the elements of this matrix to the identity matrix (possibly overriding the inherited method)
|
inherited |
|
inlineinherited |
|
inlineinherited |
return the trace of the matrix
Definition at line 230 of file Matrix3x3.hh.
|
inherited |
returns transposed matrix tested 12.06.2002
|
inlineinherited |
sets this as transposed arg, fw
|
inlineinherited |
multiplies matrix from left with transposed argvec, resulting in transposed destvec
|
inlineinherited |
tranpose this matrix "in place" example: 0 1 2 –> 0 3 6 3 4 5 –> 1 4 7 6 7 8 –> 2 5 8
|
protected |
Definition at line 205 of file FMatrixBase.hh.
Referenced by GetCosAngleErrorHomogenized(), and Set().
|
protected |
Definition at line 204 of file FMatrixBase.hh.
Referenced by GetCosAngleErrorHomogenized(), and Set().
|
protected |
Definition at line 206 of file FMatrixBase.hh.
Referenced by GetCosAngleErrorHomogenized(), and Set().
|
protectedinherited |
Definition at line 282 of file Matrix3x3.hh.