opencv  2.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
cv::SVD Class Reference

#include <core.hpp>

Public Types

enum  { MODIFY_A =1, NO_UV =2, FULL_UV =4 }
 

Public Member Functions

void backSubst (const Mat &rhs, CV_OUT Mat &dst) const
 performs back substitution, so that dst is the solution or pseudo-solution of m*dst = rhs, where m is the decomposed matrix
 
SVDoperator() (const Mat &src, int flags=0)
 the operator that performs SVD. The previously allocated SVD::u, SVD::w are SVD::vt are released.
 
 SVD ()
 the default constructor
 
 SVD (const Mat &src, int flags=0)
 the constructor that performs SVD
 

Static Public Member Functions

static void backSubst (const Mat &w, const Mat &u, const Mat &vt, const Mat &rhs, CV_OUT Mat &dst)
 performs back substitution
 
template<typename _Tp , int m, int n, int nm, int nb>
static void backSubst (const Matx< _Tp, nm, 1 > &w, const Matx< _Tp, m, nm > &u, const Matx< _Tp, n, nm > &vt, const Matx< _Tp, m, nb > &rhs, Matx< _Tp, n, nb > &dst)
 
static void compute (const Mat &src, CV_OUT Mat &w, CV_OUT Mat &u, CV_OUT Mat &vt, int flags=0)
 decomposes matrix and stores the results to user-provided matrices
 
static void compute (const Mat &src, CV_OUT Mat &w, int flags=0)
 computes singular values of a matrix
 
template<typename _Tp , int m, int n, int nm>
static void compute (const Matx< _Tp, m, n > &a, Matx< _Tp, nm, 1 > &w, Matx< _Tp, m, nm > &u, Matx< _Tp, n, nm > &vt)
 
template<typename _Tp , int m, int n, int nm>
static void compute (const Matx< _Tp, m, n > &a, Matx< _Tp, nm, 1 > &w)
 
static void solveZ (const Mat &src, CV_OUT Mat &dst)
 finds dst = arg min_{|dst|=1} |m*dst|
 

Public Attributes

Mat u
 
Mat vt
 
Mat w
 

Detailed Description

Singular Value Decomposition class

The class is used to compute Singular Value Decomposition of a floating-point matrix and then use it to solve least-square problems, under-determined linear systems, invert matrices, compute condition numbers etc.

For a bit faster operation you can pass flags=SVD::MODIFY_A|... to modify the decomposed matrix when it is not necessarily to preserve it. If you want to compute condition number of a matrix or absolute value of its determinant - you do not need SVD::u or SVD::vt, so you can pass flags=SVD::NO_UV|... . Another flag SVD::FULL_UV indicates that the full-size SVD::u and SVD::vt must be computed, which is not necessary most of the time.

Member Enumeration Documentation

anonymous enum
Enumerator:
MODIFY_A 
NO_UV 
FULL_UV 

Constructor & Destructor Documentation

cv::SVD::SVD ( )
inline

the default constructor

cv::SVD::SVD ( const Mat src,
int  flags = 0 
)
inline

the constructor that performs SVD

Member Function Documentation

static void cv::SVD::backSubst ( const Mat w,
const Mat u,
const Mat vt,
const Mat rhs,
CV_OUT Mat dst 
)
static

performs back substitution

template<typename _Tp , int m, int n, int nm, int nb>
void cv::SVD::backSubst ( const Matx< _Tp, nm, 1 > &  w,
const Matx< _Tp, m, nm > &  u,
const Matx< _Tp, n, nm > &  vt,
const Matx< _Tp, m, nb > &  rhs,
Matx< _Tp, n, nb > &  dst 
)
inlinestatic
void cv::SVD::backSubst ( const Mat rhs,
CV_OUT Mat dst 
) const

performs back substitution, so that dst is the solution or pseudo-solution of m*dst = rhs, where m is the decomposed matrix

static void cv::SVD::compute ( const Mat src,
CV_OUT Mat w,
CV_OUT Mat u,
CV_OUT Mat vt,
int  flags = 0 
)
static

decomposes matrix and stores the results to user-provided matrices

static void cv::SVD::compute ( const Mat src,
CV_OUT Mat w,
int  flags = 0 
)
static

computes singular values of a matrix

template<typename _Tp , int m, int n, int nm>
void cv::SVD::compute ( const Matx< _Tp, m, n > &  a,
Matx< _Tp, nm, 1 > &  w,
Matx< _Tp, m, nm > &  u,
Matx< _Tp, n, nm > &  vt 
)
inlinestatic
template<typename _Tp , int m, int n, int nm>
void cv::SVD::compute ( const Matx< _Tp, m, n > &  a,
Matx< _Tp, nm, 1 > &  w 
)
inlinestatic
SVD& cv::SVD::operator() ( const Mat src,
int  flags = 0 
)

the operator that performs SVD. The previously allocated SVD::u, SVD::w are SVD::vt are released.

void cv::SVD::solveZ ( const Mat src,
CV_OUT Mat dst 
)
inlinestatic

finds dst = arg min_{|dst|=1} |m*dst|

Member Data Documentation

Mat cv::SVD::u
Mat cv::SVD::vt
Mat cv::SVD::w

The documentation for this class was generated from the following files: