Basic Image AlgorithmS Library
2.8.0
|
singular value decomposition for 3x3 matrices More...
#include <MathAlgo/SVD3x3.hh>
Public Member Functions | |
const int | AbsLeftNullspaceDim () const |
returns the dim of the matrix's left nullspace, using absolute threshold criterion More... | |
const int | AbsNullspaceDim () const |
returns dim of nullspace using the absolute threshold criterion More... | |
const int | AbsRightNullspaceDim () const |
returns the dim of the matrix's right nullspace, using absolute threshold criterion More... | |
void | AddDebugLevel (const long int lv) |
void | AddDebugLevel (const std::string &name) |
int | Compute (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD) |
set a new matrix and compute its decomposition. More... | |
int | compute (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD) |
use our naming convention More... | |
int | ComputeOpenCV (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD) |
Use OpenCV for decomposition as Lapack frequently leads to crashes under windows. More... | |
bool | DebugLevelIsSet (const long int lv) const |
bool | DebugLevelIsSet (const std::string &name) const |
int | General_Eigenproblem_GeneralMatrix_Lapack (const Matrix< double > &M) |
solve the general (non-special) eigenvalue/eigenvector problem of a general (non-symmetric) matrix M calls the extern liblapack routine dgesvd . More... | |
int | GetDebugLevel () const |
std::ostream & | GetDebugStream () const |
void | GetDebugStream (std::ostream &os) const |
BIAS::Vector< double > | GetEigenValues () |
Call this after Compute(), returns the eigenvalues of the matrix in ascending order (smallest first), which are NOT the singular values! Works only, if the original Matrix was symmetric. More... | |
bool | GetLeftNullvector (Vector< double > &nv, const int last_offset=0) |
Return one of the left nullvectors. More... | |
Vector< double > | GetLeftNullvector (const int last_offset=0) |
same as above but returning vector More... | |
Vector< double > | GetNullvector (const int last_offset=0) |
return one of the nullvectors. More... | |
bool | GetNullvector (Vector< double > &NullVec, const int last_offset=0) |
Returns one of the nullvectors in argument and true if Nullvector exists. More... | |
const Vector< double > & | GetS () const |
return S which is a vector of the singular values of A in descending order. More... | |
const double | GetSingularValue (int index) const |
return one singular value (which may be zero). More... | |
const Matrix< double > & | GetU () const |
return U U is a m x m orthogonal matrix More... | |
Matrix< double > | GetV () const |
return V More... | |
const Matrix< double > & | GetVT () const |
return VT (=transposed(V)) More... | |
double | GetZeroThreshold () const |
return zerothresh currently used More... | |
Matrix< double > | Invert () |
returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T More... | |
Matrix< double > | Invert (int rank) |
returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T the first "rank" elements of S are inverted the others are set to zero More... | |
Matrix< double > | Invert (Matrix< double > A) |
as above, but compute new svd for a More... | |
Matrix< double > | InvertOpenCV (const Matrix< double > &A) |
Calculates new inverse with OpenCV cvInvert. More... | |
const int | LeftNullspaceDim () const |
returns the dim of the matrix's left nullspace 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... | |
const int | NullspaceDim () const |
return the dim of the nullspace. More... | |
void | PrintDebugLevel (std::ostream &os=std::cout) const |
unsigned int | Rank () |
returns the rank of A_ More... | |
const int | RelLeftNullspaceDim () const |
const int | RelNullspaceDim () const |
compare singular values against greatest, not absolute More... | |
const int | RelRightNullspaceDim () const |
void | RemoveDebugLevel (const long int lv) |
void | RemoveDebugLevel (const std::string &name) |
const int | RightNullspaceDim () const |
returns the dim of the matrix's right nullspace More... | |
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 | size () const |
return the length of the singular value vector inline const int size() const More... | |
Vector< double > | Solve (const Vector< double > &y) const |
Vector< double > | solve (const Vector< double > &y) const |
use our naming convention More... | |
int | Solve (Matrix< double > &A, Vector< double > &B, Vector< double > &X) |
solves the overdetermined linear system $AX=B$ with the unknown $X$, where $A$ is an $m x n$ matrix ($m>n$)and B is a vector of size $m$. More... | |
Matrix< double > | Sqrt () |
returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S) * V_T, such that A*A = M. More... | |
Matrix< double > | Sqrt (const Matrix< double > &A) |
as above, but compute new svd for More... | |
Matrix< double > | SqrtT () |
returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S), such that A*A^T = M. More... | |
Matrix< double > | SqrtT (const Matrix< double > &A) |
as above, but compute new svd for More... | |
SVD3x3 () | |
SVD3x3 (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD) | |
constructor solve the general eigenproblem of the rectangular matrix M More... | |
virtual | ~SVD3x3 () |
Static Public Member Functions | |
static long int | GetGlobalDebugLevel () |
static void | SetGlobalDebugLevel (long int lev) |
Protected Member Functions | |
void | _Swap (int a, int b) |
long | ConsumeNextFreeDebuglevel_ () |
returns the next available debuglevel More... | |
Protected Attributes | |
long int | _liDebugLevel |
long int | _liNextDebugLevel |
new concept, debuglevel are managed here in the debug class More... | |
std::map< std::string, long int > | _String2Debuglevel |
Matrix< double > | A_ |
data members: original matrix (to be decomposed) More... | |
bool | AbsoluteZeroThreshold_ |
determines whether we compare singular-values directly (absolute) to the zero threshold or whether we compare the ratio of the sing-value under inspection and the largest one to the threshold (relative) More... | |
bool | Decomposed_ |
flag for holding decomposed matrix More... | |
Vector< double > | S_ |
contains the singular values of A_ corresponding to the i'th column in descending order. More... | |
Matrix< double > | U_ |
contains columnwise the left singular vectors of A_ corresponding to the i'th singular value More... | |
Matrix< double > | VT_ |
contains the right singular vectors of A- in rows [because VT is transpose(V) ] More... | |
double | ZeroThreshold_ |
values below this threshold are treated as zero More... | |
Static Protected Attributes | |
static std::ostream | _zDebugStream |
static long int | GlobalDebugLevel = 0 |
singular value decomposition for 3x3 matrices
koeser: There is an example matrix F[0][0] =0.00075284066373225704; F[0][1] =-0.099906426438442303; F[0][2] =0.16267766990357244; F[1][0] =0.10333163045064053; F[1][1] =0.0014727467665194025; F[1][2] =0.6803859609102173; F[2][0] =-0.16234020366691171; F[2][1] =-0.68087420277635458; F[2][2] =0.0021896762792443826; where the svd fails (at least) on p4 systems with gcc 3.3.1 and 3.3.3 with -O3 (independent of march-flag), but where it does not fail with O2. SVD3x3 is implemented as an algorithm, which computes each singular value and corresponding vector by iterating until some error measure e becomes small compared to a reference value ref: if (ref+e==ref) then converged=true; With O3 this condition never becomes true for the second singular value, because the difference of lhs and rhs stays at 1e-18, while in O2 this converges after two iterations to zero. We have problems here in the order of machine precision, the question is now whether this different behaviour of O2 and O3 is due to a compiler error or an algorithmic weakness. When tracing back the two execution branches of ExampleSVD3x3 (O2 and O3), which uses the above matrix one finds that in the very beginning, s and a[k][i] are absolutely the same before the line: s += a[k][i]*a[k][i]; and after this line s differs by the last digit. Such effects sum up and result in the failing of the convergence of the SVD. Debugging in O3 is complicated because every cout causes a side-effect and changes execution order and results, so I found that even adding one simple cout at some line made the algorithm converge for that example.
In my opinion this means that the svd algorihtm makes some convergence assumptions about values in the order of machine precision which are not always fulfilled, therefore it does not converge. This is just one example which happens with O3 but there may also be one for O2, which we have not found ? It may however also be an optimization "error" of gcc.
SVD3x3::SVD3x3 | ( | ) |
Definition at line 40 of file SVD3x3.cpp.
SVD3x3::SVD3x3 | ( | const Matrix< double > & | M, |
double | ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD |
||
) |
constructor solve the general eigenproblem of the rectangular matrix M
Definition at line 50 of file SVD3x3.cpp.
|
inherited |
|
inherited |
returns dim of nullspace using the absolute threshold criterion
For rectangular matrices this is the number of singular values which are (about) zero. The nullspace is spaned by the singular vectors corresponding to the zero singular values. woelk 4 2003: changed API, diffentiate between Left and Right Nullspace
|
inherited |
|
inlineinherited |
Definition at line 355 of file Debug.hh.
Referenced by BIAS::GLProjectionParametersBase::AddDebugLevel(), BIAS::Triangulation::CorrectCorrespondences(), BIAS::FilterBase< InputStorageType, OutputStorageType >::FilterBase(), BIAS::ShowCamWxVideoSourceFactory::OpenDevice(), and BIAS::SceneOpenSceneGraph::SceneOpenSceneGraph().
|
inlineinherited |
int SVD3x3::Compute | ( | const Matrix< double > & | M, |
double | ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD |
||
) |
set a new matrix and compute its decomposition.
this function is based on svdcmp from the numerical recipes in C
solves the general eigenproblem of the rectangular matrix M
Definition at line 68 of file SVD3x3.cpp.
References TNT::Matrix< T >::num_cols(), and TNT::Matrix< T >::num_rows().
|
inlineinherited |
use our naming convention
Definition at line 132 of file SVD.hh.
Referenced by BIAS::PMatrix::MakeSVD_().
|
inherited |
Use OpenCV for decomposition as Lapack frequently leads to crashes under windows.
Definition at line 51 of file SVD.cpp.
References BIAS::Matrix< T >::GetCols(), and BIAS::Matrix< T >::GetRows().
|
inlineprotectedinherited |
|
inlineinherited |
Definition at line 341 of file Debug.hh.
Referenced by BIAS::GenSynthMatches::_AddUniformDistributedOutliers(), BIAS::GenSynthMatches::_CreateCamMovement(), BIAS::GenSynthMatches::_CreateStatic2DPoints(), BIAS::UnscentedTransform::ComputeSigmaPoints_(), BIAS::Triangulation::CorrectCorrespondences(), BIAS::GenSynthMatches::GetGTNormalizedF(), BIAS::MonteCarloTransform::GetSamples_(), and BIAS::MonteCarloTransform::Transform().
|
inlineinherited |
|
inherited |
solve the general (non-special) eigenvalue/eigenvector problem of a general (non-symmetric) matrix M calls the extern liblapack routine dgesvd .
computes the genral singular value decomposition with M = U * Sigma(S) * VT with Sigma(S) is the qudratic, symmetric matrix which contains the singular vales in the diagonal and zero and zero else. U, VT as described in the data mambers.
Definition at line 110 of file SVD.cpp.
References General_singular_value_decomposition().
|
inlineinherited |
Definition at line 332 of file Debug.hh.
Referenced by BIAS::listenthread(), BIAS::Image< StorageType >::operator=(), and BIAS::ImageBase::operator=().
|
inlineinherited |
|
inlineinherited |
|
inherited |
Call this after Compute(), returns the eigenvalues of the matrix in ascending order (smallest first), which are NOT the singular values! Works only, if the original Matrix was symmetric.
Definition at line 573 of file SVD.cpp.
Referenced by BIAS::CamPoseCalib::SolveLM_().
|
inlinestaticinherited |
|
inlineinherited |
Return one of the left nullvectors.
If last_offset=0 then the last nullvector (corresponding to the smallest singular value) is returned, if last_offset=1 then the last but one nullvector is returned, and so on. The last_offset must be in [0..NullspaceDim-1] otherwise 0 is returned
Definition at line 443 of file SVD.hh.
References TNT::Vector< T >::newsize(), BIAS::SVD::NullspaceDim(), TNT::Matrix< T >::num_rows(), BIAS::SVD::S_, BIAS::SVD::U_, and BIAS::SVD::VT_.
Referenced by BIAS::TrifocalTensor::ComputeEpipoles(), BIAS::TrifocalTensor::GetEpipolarLines(), BIAS::FMatrix::GetEpipoles(), and BIAS::SVD::GetLeftNullvector().
|
inlineinherited |
same as above but returning vector
Definition at line 434 of file SVD.hh.
References BIAS::SVD::GetLeftNullvector(), TNT::Matrix< T >::num_rows(), and BIAS::SVD::VT_.
|
inlineinherited |
return one of the nullvectors.
if last_offset=0 then the last nullvector (corresponding to the smallest singular value) is returned, if last_offset=1 then the last but one nullvector is returned, and so on. The last_offset must be in [0..NullspaceDim-1].
Definition at line 404 of file SVD.hh.
References TNT::Matrix< T >::num_cols(), and BIAS::SVD::VT_.
Referenced by BIAS::TFTensorEstimation::Compute(), BIAS::TrifocalTensor::ComputeEpipoles(), BIAS::ProjectionParametersProjective::GetC(), BIAS::TrifocalTensor::GetEpipolarLines(), BIAS::FMatrix::GetEpipoles(), BIAS::PMatrix::GetNullVector(), BIAS::Conic2D::GetPoint(), BIAS::PlaneRANSAC::RefineSolution(), and BIAS::FMatrixEstimation::SevenPoint().
|
inlineinherited |
Returns one of the nullvectors in argument and true if Nullvector exists.
if last_offset=0 then the last nullvector (corresponding to the smallest singular value) is returned, if last_offset=1 then the last but one nullvector is returned, and so on. The last_offset must be in [0..NullspaceDim-1].
Definition at line 413 of file SVD.hh.
References TNT::Vector< T >::newsize(), BIAS::SVD::NullspaceDim(), TNT::Matrix< T >::num_cols(), and BIAS::SVD::VT_.
|
inlineinherited |
return S which is a vector of the singular values of A in descending order.
The diagonalelements of Sigma are the singular values of A.
Definition at line 167 of file SVD.hh.
Referenced by BIAS::CovMatrix3x3::_Decompose(), BIAS::ImageAlignment::Align(), BIAS::PMatrixLinear::Compute(), BIAS::PMatrixLinear::ComputeCalibrated(), BIAS::PMatrixEstimation::ComputeFromFDirect(), BIAS::LDA::ComputeReductionMatrix(), BIAS::PCA::ComputeReductionMatrix(), BIAS::FMatrixEstimation::EnforceMaxRank2(), BIAS::HMatrix::FactorizeAffineMatrixRLeft(), BIAS::HMatrix::FactorizeAffineMatrixRRight(), BIAS::LDA::GenerateRandomTestData(), BIAS::GetBaseLevel(), BIAS::FMatrix::GetEpipoles(), BIAS::PMatrix::GetPseudoInverse(), BIAS::Quadric3D::GetSignature(), BIAS::Conic2D::GetSignature(), BIAS::PMatrix::GetSVD(), BIAS::EMatrix::InitFromF(), Lapack_LLS_QR_linear_solve(), and BIAS::Quadric3D::Quadric3D().
|
inlineinherited |
return one singular value (which may be zero).
inline implementations
the index runs from 0.. (size-1)
Definition at line 386 of file SVD.hh.
References BIAS::SVD::S_, BIAS::SVD::size(), and TNT::Vector< T >::size().
Referenced by BIAS::CamPoseCalib::outputPose_().
|
inlineinherited |
return U U is a m x m orthogonal matrix
Definition at line 187 of file SVD.hh.
Referenced by BIAS::CovMatrix3x3::_Decompose(), BIAS::PMatrixLinear::ComputeCalibrated(), BIAS::RMatrix::EnforceConstraints(), BIAS::FMatrixEstimation::EnforceMaxRank2(), BIAS::HMatrix::FactorizeAffineMatrixRLeft(), BIAS::HMatrix::FactorizeAffineMatrixRRight(), BIAS::LDA::GenerateRandomTestData(), BIAS::Conic2D::GetDualConic(), BIAS::FMatrix::GetEpipoles(), BIAS::PMatrix::GetPseudoInverse(), BIAS::EMatrix::GetRotationTranslation(), BIAS::PMatrix::GetSVD(), BIAS::EMatrix::InitFromF(), and BIAS::Quadric3D::Quadric3D().
|
inlineinherited |
return V
Definition at line 396 of file SVD.hh.
References BIAS::Matrix< T >::Transpose(), and BIAS::SVD::VT_.
Referenced by BIAS::RotationAveraging::ChordalL2Mean(), BIAS::LDA::ComputeReductionMatrix(), BIAS::Conic2D::GetDualConic(), BIAS::PMatrix::GetPseudoInverse(), and BIAS::Quadric3D::Quadric3D().
|
inlineinherited |
return VT (=transposed(V))
Definition at line 177 of file SVD.hh.
Referenced by BIAS::CovMatrix3x3::_Decompose(), BIAS::TFTensorEstimation::Compute(), BIAS::PMatrixLinear::Compute(), BIAS::PMatrixLinear::ComputeCalibrated(), BIAS::ImageBlender::ComputeCylCamGeometry(), BIAS::ImageBlenderIncremental::ComputeCylCamGeometry_(), BIAS::clfTrimmedICP::ComputeOptimalMotion_(), BIAS::LDA::ComputeReductionMatrix(), BIAS::PCA::ComputeReductionMatrix(), BIAS::RMatrix::EnforceConstraints(), BIAS::FMatrixEstimation::EnforceMaxRank2(), BIAS::HMatrix::FactorizeAffineMatrixRLeft(), BIAS::HMatrix::FactorizeAffineMatrixRRight(), BIAS::LDA::GenerateRandomTestData(), BIAS::Triangulation::GetCovarianceProjective(), BIAS::FMatrix::GetEpipoles(), BIAS::EMatrix::GetRotationTranslation(), BIAS::Quadric3D::GetSignature(), BIAS::Conic2D::GetSignature(), BIAS::PMatrix::GetSVD(), BIAS::EMatrix::InitFromF(), BIAS::FMatrixEstimation::Linear(), and BIAS::Triangulation::TriangulateLinear().
|
inlineinherited |
return zerothresh currently used
Definition at line 160 of file SVD.hh.
Referenced by BIAS::PMatrixLinear::Compute().
|
inherited |
returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T
Definition at line 214 of file SVD.cpp.
References BIAS::Matrix< T >::SetZero().
Referenced by BIAS::ImageAlignment::Align(), BIAS::TextureTransformAffine::ComposeWithInverseDeltaP(), BIAS::ImageBlender::ComputeCylCamGeometry(), BIAS::ImageBlenderIncremental::ComputeCylCamGeometry_(), BIAS::ProjectionError::ComputeDiff(), BIAS::GaussHelmert::ComputeNormalSystem_(), BIAS::LDA::ComputeReductionMatrix(), BIAS::ContourBSplineShapeMatrix::ComputeRegularisationMatrix(), BIAS::ContourDetectorBSpline< StorageType >::Fit_(), BIAS::PMatrix::GetCanonicalH(), BIAS::Triangulation::GetCovarianceProjective(), BIAS::CamPoseCalib::GetCoVarMatrix(), BIAS::Conic2D::GetDualConic(), BIAS::Quadric3D::GetDualQuadric(), BIAS::Interpolator::InitSpline3(), BIAS::CoordinateTransform3D::SetFromMatrix3x4(), BIAS::GaussHelmert::Solve(), BIAS::TrackerBaseAffine< StorageType >::TrackAffine_(), BIAS::TrackerBaseAffine2< StorageType >::TrackAffine_(), and BIAS::IteratedExtendedKalman::Update().
|
inherited |
returns pseudoinverse of A = U * S * V^T A^+ = V * S^+ * U^T the first "rank" elements of S are inverted the others are set to zero
Definition at line 243 of file SVD.cpp.
References BIAS::Matrix< T >::SetZero().
Calculates new inverse with OpenCV cvInvert.
Definition at line 182 of file SVD.cpp.
References BIAS::Matrix< T >::GetCols(), and BIAS::Matrix< T >::GetRows().
|
inlineinherited |
returns the dim of the matrix's left nullspace
Definition at line 223 of file SVD.hh.
Referenced by BIAS::TFTensorEstimation::Compute().
|
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(), BIAS::Triangulation::Triangulation(), and BIAS::UnscentedTransform::UnscentedTransform().
|
inlineinherited |
return the dim of the nullspace.
For rectangular matrices this is the number of singular values which are (about) zero. The nullspace is spaned by the singular vectors corresponding to the zero singular values. woelk 4 2003: changed API, diffentiate between Left and Right Nullspace koeser 01/2005: rel/abs handled by flag: AbsoluteZeroThreshold_ determines whther we compare absolute or relative singular values against the threshold
Definition at line 209 of file SVD.hh.
Referenced by BIAS::FMatrix::GetEpipoles(), BIAS::SVD::GetLeftNullvector(), BIAS::SVD::GetNullvector(), and BIAS::FMatrix::IsValid().
|
inlineinherited |
|
inherited |
returns the rank of A_
Definition at line 506 of file SVD.cpp.
Referenced by BIAS::LDA::ComputeReductionMatrix(), Lapack_LLS_QR_linear_solve(), and BIAS::PlaneRANSAC::RefineSolution().
|
inherited |
compare singular values against greatest, not absolute
Definition at line 433 of file SVD.cpp.
Referenced by BIAS::PMatrixLinear::Compute(), BIAS::PMatrixLinear::ComputeCalibrated(), and BIAS::Conic2D::GetDualConic().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
returns the dim of the matrix's right nullspace
Definition at line 216 of file SVD.hh.
Referenced by BIAS::TFTensorEstimation::Compute().
|
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 |
|
inlineinherited |
return the length of the singular value vector inline const int size() const
Definition at line 192 of file SVD.hh.
Referenced by BIAS::SVD::GetSingularValue().
Definition at line 135 of file SVD.cpp.
References TNT::Vector< T >::size(), and BIAS::Matrix< T >::Transpose().
Referenced by BIAS::CamPoseCalib::Estimate(), BIAS::PolynomialSolve::FitPolynomial(), BIAS::ProjectionParametersSphericalFast::FitPolynomial(), BIAS::ProjectionParametersSpherical::FitPolynomialWithoutLinearMonomial_(), BIAS::PMatrix::GetCanonicalH(), BIAS::GaussHelmert::Solve(), BIAS::CamPoseCalib::Solve_(), and BIAS::TrackerBaseAffine< StorageType >::TrackAffine_().
solves the overdetermined linear system $AX=B$ with the unknown $X$, where $A$ is an $m x n$ matrix ($m>n$)and B is a vector of size $m$.
Definition at line 516 of file SVD.cpp.
References BIAS::Matrix< T >::GetSystemMatrix(), TNT::Matrix< T >::num_cols(), TNT::Matrix< T >::num_rows(), and BIAS::Matrix< T >::Transpose().
|
inherited |
returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S) * V_T, such that A*A = M.
The result is only valid when the M is symmetric positive definite.
Definition at line 276 of file SVD.cpp.
References BIAS::Equal(), BIAS::GreaterEqual(), BIAS::MatrixZero, BIAS::Matrix< T >::SetZero(), TNT::Vector< T >::size(), and Upper_symmetric_eigenvalue_solve().
|
inherited |
returns the square root of a symmetric positive definite matrix M A = sqrt(M) = U * sqrt(S), such that A*A^T = M.
The result is only valid when the M is symmetric positive definite.
Definition at line 344 of file SVD.cpp.
References BIAS::Equal(), BIAS::GreaterEqual(), BIAS::MatrixZero, TNT::Vector< T >::size(), and Upper_symmetric_eigenvalue_solve().
Referenced by BIAS::LDA::ComputeReductionMatrix(), and BIAS::UnscentedTransform::ComputeSigmaPoints_().
|
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=().
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
staticprotectedinherited |
|
protectedinherited |
contains the singular values of A_ corresponding to the i'th column in descending order.
Definition at line 359 of file SVD.hh.
Referenced by BIAS::SVD::GetLeftNullvector(), and BIAS::SVD::GetSingularValue().
|
protectedinherited |
contains columnwise the left singular vectors of A_ corresponding to the i'th singular value
Definition at line 363 of file SVD.hh.
Referenced by BIAS::SVD::GetLeftNullvector().
|
protectedinherited |
contains the right singular vectors of A- in rows [because VT is transpose(V) ]
Definition at line 367 of file SVD.hh.
Referenced by BIAS::SVD::GetLeftNullvector(), BIAS::SVD::GetNullvector(), and BIAS::SVD::GetV().
|
protectedinherited |