|
OpenCV 4.5.3(日本語機械翻訳)
|
Singular Value Decomposition [詳解]
#include <core.hpp>
公開型 |
|
| enum | Flags { MODIFY_A = 1 , NO_UV = 2 , FULL_UV = 4 } |
公開メンバ関数 |
|
| SVD () | |
| デフォルトコンストラクタ[【詳解】(英語]
|
|
| SVD (InputArray src, int flags=0) | |
| SVD & | operator() (InputArray src, int flags=0) |
| を実行する演算子.SVD. 先に確保された u, w, vt は解放されます.[【詳解】(英語]
|
|
| void | backSubst (InputArray rhs, OutputArray dst) const |
| 特異値後退代入を行います.[【詳解】(英語]
|
|
静的公開メンバ関数 |
|
| static void | compute (InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags=0) |
| 行列を分解し,その結果をユーザが用意した行列に格納します.[【詳解】(英語]
|
|
| static void | compute (InputArray src, OutputArray w, int flags=0) |
| static void | backSubst (InputArray w, InputArray u, InputArray vt, InputArray rhs, OutputArray dst) |
| 背面置換を行います. |
|
| static void | solveZ (InputArray src, OutputArray dst) |
| は,過小決定された特異な連立方程式を解きます.[【詳解】(英語]
|
|
| 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) |
| 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) |
公開変数類 |
|
| Mat | u |
| Mat | w |
| Mat | vt |
特異値分解(Singular Value Decomposition)
浮動小数点行列の特異値分解を計算するクラス。特異値分解は,最小二乗問題,過小決定された連立方程式,行列の反転,条件数の計算などに利用されます.
行列の条件数や行列式の絶対値を計算したい場合は、次のようなものは必要ありません。uおよびvt. flags= を渡すことができます.SVD::NO_UV|... . 別のフラグSVD::FULL_UVは,フルサイズのuとvtを計算しなければならないことを示していますが,ほとんどの場合は必要ありません.
| enum cv::SVD::Flags |
| cv::SVD::SVD | ( | ) |
デフォルトコンストラクタ
は,空のSVD構造体
| cv::SVD::SVD | ( | InputArray | src, |
| int |
flags
=
0 |
||
| ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。SVD構造体を初期化し,SVD::operator()を呼び出します.
| src | 分解された行列。深さは CV_32F または CV_64F でなければいけません. |
| flags | 演算フラグ (SVD::Flags) |
|
static |
| void cv::SVD::backSubst | ( | InputArray | rhs, |
| OutputArray | dst | ||
| ) | const |
特異値後退代入を行います.
このメソッドは,指定された右辺に対する後退代入を計算します.
この手法を用いると,便利な連立方程式の非常に正確な解を得ることができます.あるいは,過決定連立方程式の最良の(最小二乗法による)擬似解を得ることができます.
| rhs | 線形システムの右辺 (u*w*v')*dst = rhs to be solved, ここでAは事前に分解されている。 |
| dst | 連立方程式の発見された解。 |
|
static |
|
static |
|
static |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。行列の特異値を計算します。
| src | 分解された行列。深さは CV_32F または CV_64F でなければいけません. |
| w | 計算された特異値 |
| flags | 操作フラグ - 参照SVD::Flags. |
|
static |
行列を分解し,その結果をユーザが用意した行列に格納します.
このメソッド/関数はSVD行列の特異値を計算します.とは異なりSVD::SVDコンストラクタや SVD::operator() とは異なり,これらのメソッド/関数は結果をユーザが指定した行列に格納します.
| src | 分解された行列。深さは CV_32F または CV_64F でなければいけません. |
| w | 計算された特異値 |
| u | 計算された左特異点ベクトル |
| vt | 右特異点ベクトルの転置行列。 |
| flags | 操作フラグ - 参照SVD::Flags. |
| SVD & cv::SVD::operator() | ( | InputArray | src, |
| int |
flags
=
0 |
||
| ) |
を実行する演算子.SVD. 先に確保された u, w, vt は解放されます.
この演算子は,与えられた行列の特異値分解を行います.このとき,u,vtと,特異値のベクトル w が構造体に格納されます.同じSVD構造体は,異なる行列に対して何度でも再利用できます.毎回,必要に応じて,前の u,vt, , および w が再生され,新しい行列が作成されますが,これらはすべてMat::create.
| src | 分解された行列。深さは CV_32F または CV_64F でなければいけません. |
| flags | 演算フラグ (SVD::Flags) |
|
static |
は,過小決定された特異な連立方程式を解きます.
このメソッドは,特異な連立方程式 A*x = 0 の単位長さの解 x を求めます.A のランクに応じて,解が存在しないことも,単一の解であることも,無限の数の解であることもあります.一般的に、このアルゴリズムは以下の問題を解きます。
| src | 左辺の行列。 |
| dst | 見つかった解。 |