Basic Image AlgorithmS Library
2.8.0
|
computes and holds the singular value decomposition of a rectangular (not necessarily quadratic) Matrix A More...
#include <MathAlgo/SVD.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... | |
SVD (const Matrix< double > &M, double ZeroThreshold=DEFAULT_DOUBLE_ZERO_THRESHOLD, bool AbsoluteZeroThreshold=true) | |
solve the general eigenproblem of the rectangular matrix M or with other words, make the U*S*V^T decomposition More... | |
SVD (bool AbsoluteZeroThreshold=true) | |
creates an empty svd without automatically decomposing any matrix More... | |
virtual | ~SVD () |
Static Public Member Functions | |
static long int | GetGlobalDebugLevel () |
static void | SetGlobalDebugLevel (long int lev) |
Protected Member Functions | |
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 |
computes and holds the singular value decomposition of a rectangular (not necessarily quadratic) Matrix A
M = U S V't.
The singular vectors vi and (right) singular values sigma_i satisfy the equation: A vi = sigma_i vi
The Vector S_ stores the singular values of A in decreasing order (smallest is last)
The columns of U are the left singular vectors of A and form an orthonormal basis of A which corresponds to the nonzero singular values. while the columns of U corresponding to (nearly) zero values are the nullspace.
This function is a base class and not a member in Matrix because:
You can create the svd object either in relative or in absolute mode: if AbsoluteZeroThreshold is true, a singular value is compared to the threshold "absolutely", otherwise the ratio of the largest and the current singular value is compared against the threshold. Usually you want AbsoluteZeroThreshold = false, but for the sake of interface stability/downwards compatibility, the default is true
SVD::SVD | ( | const Matrix< double > & | M, |
double | ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD , |
||
bool | AbsoluteZeroThreshold = true |
||
) |
solve the general eigenproblem of the rectangular matrix M or with other words, make the U*S*V^T decomposition
M | matrix to decompose |
ZeroThreshold | for nullspace determination, if a singular value is lower than ZeroThreshold, define the corresponding vector in V^T to be a null-vector (also sing.vals are treated this way) |
AbsoluteZeroThreshold | if true, a singular value is compared to the threshold "absoultely", otherwise the ratio of the largest and the current singular value is compared against the threshold. Usually you want AbsoluteZeroThreshold = false, but for the sake of interface stability/downwards compatibility, the default is true |
|
inline |
creates an empty svd without automatically decomposing any matrix
AbsoluteZeroThreshold | if true, a singular value is compared to the threshold "absolutely", otherwise the ratio of the largest and the current singular value is compared against the threshold. Usually you want AbsoluteZeroThreshold = false, but for the sake of interface stability/downwards compatibility, the default is true |
const int SVD::AbsLeftNullspaceDim | ( | ) | const |
const int SVD::AbsNullspaceDim | ( | ) | const |
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
const int SVD::AbsRightNullspaceDim | ( | ) | const |
|
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 SVD::Compute | ( | const Matrix< double > & | M, |
double | ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD |
||
) |
set a new matrix and compute its decomposition.
solves the general eigenproblem of the rectangular matrix M
Definition at line 102 of file SVD.cpp.
Referenced by BIAS::CovMatrix3x3::_Decompose(), BIAS::ImageAlignment::Align(), BIAS::LDA::ComputeReductionMatrix(), BIAS::HMatrix::FactorizeAffineMatrixRLeft(), BIAS::HMatrix::FactorizeAffineMatrixRRight(), BIAS::LDA::GenerateRandomTestData(), BIAS::EMatrix::GetRotationTranslation(), and BIAS::Interpolator::InitSpline3().
|
inline |
use our naming convention
Definition at line 132 of file SVD.hh.
Referenced by BIAS::PMatrix::MakeSVD_().
int SVD::ComputeOpenCV | ( | const Matrix< double > & | M, |
double | ZeroThreshold = DEFAULT_DOUBLE_ZERO_THRESHOLD |
||
) |
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 |
int SVD::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 .
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 |
BIAS::Vector< double > SVD::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.
Definition at line 573 of file SVD.cpp.
Referenced by BIAS::CamPoseCalib::SolveLM_().
|
inlinestaticinherited |
|
inline |
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(), NullspaceDim(), TNT::Matrix< T >::num_rows(), S_, U_, and VT_.
Referenced by BIAS::TrifocalTensor::ComputeEpipoles(), BIAS::TrifocalTensor::GetEpipolarLines(), BIAS::FMatrix::GetEpipoles(), and GetLeftNullvector().
|
inline |
same as above but returning vector
Definition at line 434 of file SVD.hh.
References GetLeftNullvector(), TNT::Matrix< T >::num_rows(), and VT_.
|
inline |
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 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().
|
inline |
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(), NullspaceDim(), TNT::Matrix< T >::num_cols(), and VT_.
|
inline |
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().
|
inline |
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 S_, size(), and TNT::Vector< T >::size().
Referenced by BIAS::CamPoseCalib::outputPose_().
|
inline |
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().
|
inline |
return V
Definition at line 396 of file SVD.hh.
References BIAS::Matrix< T >::Transpose(), and VT_.
Referenced by BIAS::RotationAveraging::ChordalL2Mean(), BIAS::LDA::ComputeReductionMatrix(), BIAS::Conic2D::GetDualConic(), BIAS::PMatrix::GetPseudoInverse(), and BIAS::Quadric3D::Quadric3D().
|
inline |
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().
|
inline |
return zerothresh currently used
Definition at line 160 of file SVD.hh.
Referenced by BIAS::PMatrixLinear::Compute().
Matrix< double > SVD::Invert | ( | ) |
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().
Matrix< double > SVD::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
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().
|
inline |
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().
|
inline |
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(), GetLeftNullvector(), GetNullvector(), and BIAS::FMatrix::IsValid().
|
inlineinherited |
unsigned int SVD::Rank | ( | ) |
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().
const int SVD::RelNullspaceDim | ( | ) | const |
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 |
|
inline |
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 |
|
inline |
return the length of the singular value vector inline const int size() const
Definition at line 192 of file SVD.hh.
Referenced by 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().
Matrix< double > SVD::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.
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().
Matrix< double > SVD::SqrtT | ( | ) |
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=().
|
protected |
|
protected |
|
protected |
|
staticprotectedinherited |
|
protected |
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 GetLeftNullvector(), and GetSingularValue().
|
protected |
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 GetLeftNullvector().
|
protected |
contains the right singular vectors of A- in rows [because VT is transpose(V) ]
Definition at line 367 of file SVD.hh.
Referenced by GetLeftNullvector(), GetNullvector(), and GetV().
|
protected |