OpenCV 4.5.3(日本語機械翻訳)
|
Principal Component Analysis [詳解]
#include <core.hpp>
公開型 |
|
enum | Flags { DATA_AS_ROW = 0 , DATA_AS_COL = 1 , USE_AVG = 2 } |
公開メンバ関数 |
|
PCA () | |
デフォルトコンストラクタ[【詳解】(英語]
|
|
PCA (InputArray data, InputArray mean, int flags, int maxComponents=0) | |
PCA (InputArray data, InputArray mean, int flags, double retainedVariance) | |
PCA & | operator() (InputArray data, InputArray mean, int flags, int maxComponents=0) |
PCAの実行[【詳解】(英語]
|
|
PCA & | operator() (InputArray data, InputArray mean, int flags, double retainedVariance) |
Mat | project (InputArray vec) const |
ベクトルを主成分部分空間に投影します.[【詳解】(英語]
|
|
void | project (InputArray vec, OutputArray result) const |
Mat | backProject (InputArray vec) const |
ベクトルをPC投影から再構成します。[【詳解】(英語]
|
|
void | backProject (InputArray vec, OutputArray result) const |
void | write (FileStorage &fs) const |
書き込みPCAオブジェクト[【詳解】(英語]
|
|
void | read (const FileNode &fn) |
ロードPCAオブジェクト[【詳解】(英語]
|
|
公開変数類 |
|
Mat | eigenvectors |
共分散行列の固有ベクトル |
|
Mat | eigenvalues |
共分散行列の固有値 |
|
Mat | mean |
投影前に減算され,逆投影後に加算される平均値. |
|
主成分分析
このクラスは,ベクトルの集合に対する特別な基底を計算するために使用されます.基底は,入力されたベクトルの集合から計算された共分散行列の固有ベクトルから構成されます.PCA クラスは,基底によって定義された新しい座標空間との間で,ベクトルを変換することもできます.通常,この新しい座標系では,元の集合からの各ベクトル(およびそのようなベクトルの任意の線形結合)は,共分散行列の最大の固有値の固有ベクトルに対応する最初の数個の成分を取ることによって,非常に正確に近似することができます.幾何学的には、共分散行列の支配的な固有値に対応するいくつかの固有ベクトルで形成される部分空間へのベクトルの投影を計算することを意味します。そして、通常、このような投影は、元のベクトルに非常に近いものになります。つまり、高次元空間の元のベクトルを、部分空間に投影されたベクトルの座標からなるずっと短いベクトルで表すことができるのです。このような変換は、Karhunen-Loeve変換(KLT)とも呼ばれます。参照http://en.wikipedia.org/wiki/Principal_component_analysis
下のサンプルは,2つの行列を受け取る関数です.最初の関数は,ベクトルの集合(1つのベクトルにつき1行)を格納しており,これを用いてPCA. 2 番目の関数には,別の「テスト」用のベクトルセット(1 つのベクトルにつき 1 行)が格納されています.まず,これらのベクトルは,次のように圧縮されます.PCAで圧縮され,次に再構成されます.そして,各ベクトルに対する再構成誤差ノルムが計算され,出力されます.
enum cv::PCA::Flags |
cv::PCA::PCA | ( | ) |
デフォルトコンストラクタ
デフォルトコンストラクタは,空の PCA 構造体を初期化します.他のコンストラクタは,構造体を初期化し,次のように呼び出します.PCA::operator()().
cv::PCA::PCA | ( | InputArray | data, |
InputArray | mean, | ||
int | flags, | ||
int |
maxComponents
=
0 |
||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
data | 入力サンプルが行列の行または列として格納されていることを示します. |
mean | オプションの平均値;行列が空(noArray() )の場合は,データから平均値が計算されます. |
flags | 演算フラグ.現在のところ,このパラメータはデータのレイアウトを指定するためだけに利用されています(PCA::Flags) |
maxComponents | PCA が保持すべき成分の最大数; デフォルトでは,すべての成分が保持されます. |
cv::PCA::PCA | ( | InputArray | data, |
InputArray | mean, | ||
int | flags, | ||
double | retainedVariance | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
data | 入力サンプルが行列の行または列として格納されていることを示します. |
mean | オプションの平均値.行列が空の場合(noArray()),データから平均値が計算されます. |
flags | 演算フラグ.現在のところ,このパラメータはデータのレイアウトを指定するためだけに利用されています(PCA::Flags) |
retainedVariance | 保持すべき分散の割合.PCAを保持します.このパラメータを使用するとPCAが保持する成分の数を決定しますが,常に最低でも2つの成分を保持します. |
Mat cv::PCA::backProject | ( | InputArray | vec | ) | const |
ベクトルをPC投影から再構成します。
その方法は、以下の逆演算です。PCA::project. これらのメソッドは,投影されたベクトルの PC 座標を受け取り,元のベクトルを再構成します.すべての主成分が保持されていなければ,再構成されたベクトルは元のベクトルとは異なります.しかし,一般に,成分数が十分に多ければ,その差は小さくなります(それでも,元のベクトルの次元数よりはずっと小さい).その結果PCAが使われます。
vec | 主成分部分空間におけるベクトルの座標は,レイアウトとサイズがPCA::project出力ベクトルです. |
void cv::PCA::backProject | ( | InputArray | vec, |
OutputArray | result | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
vec | 主成分部分空間におけるベクトルの座標は,レイアウトとサイズがPCA::project出力ベクトルです. |
result | 再構成されたベクトルで,レイアウトとサイズは入力ベクトルと同じです.PCA::project入力ベクトル. |
PCA & cv::PCA::operator() | ( | InputArray | data, |
InputArray | mean, | ||
int | flags, | ||
double | retainedVariance | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
data | 行列の行または列として保存される入力サンプル. |
mean | オプションの平均値.行列が空の場合(noArray()),データから平均値が計算されます. |
flags | 操作フラグ.現在,このパラメータはデータのレイアウトを指定するためにのみ利用されます.(PCA::Flags) |
retainedVariance | PCAが保持すべき分散の割合.このパラメータを使用すると,PCA は保持する成分の数を決定しますが,常に最低2つの成分を保持します. |
PCA & cv::PCA::operator() | ( | InputArray | data, |
InputArray | mean, | ||
int | flags, | ||
int |
maxComponents
=
0 |
||
) |
PCAの実行
この演算子は与えられたデータセットに対してPCAを実行します。同じ構造を複数のデータセットに再利用しても安全です。PCA構造体を複数のデータセットに再利用しても安全です。つまり,その構造体が以前に別のデータセットで使われていた場合,既存の内部データは回収され,新しいeigenvalues,eigenvectorsおよびmeanが割り当てられ,計算されます.
計算されたeigenvaluesは,大きいものから小さいものへとソートされ,対応するeigenvectorsは固有ベクトルの行として格納されます.
data | 行列の行または列として保存される入力サンプル. |
mean | オプションの平均値.行列が空の場合(noArray()),データから平均値が計算されます. |
flags | 操作フラグ.現在,このパラメータはデータレイアウトを指定するためにのみ使用されます.(Flags) |
maxComponents | を保持すべき成分の最大数.PCAデフォルトでは,すべての成分が保持されます. |
Mat cv::PCA::project | ( | InputArray | vec | ) | const |
ベクトルを主成分部分空間に投影します.
このメソッドは、1 つ以上のベクトルを主成分部分空間に投影します。各ベクトルの投影は、主成分基底の係数で表されます。このメソッドの第 1 の形式は,第 2 の形式が結果に書き込む行列を返します.したがって,第 1 の形式は式の一部として使用でき,第 2 の形式は処理ループの中でより効率的に使用できます.
vec | input vector(s); PCA フェーズで使用される入力データと同じ次元,同じレイアウトでなければならない,つまり,DATA_AS_ROW が指定された場合はvec.cols==data.cols (ベクトルの次元) とvec.rows は投影するベクトルの数であり,同様にPCA::DATA_AS_COLの場合です。 |
void cv::PCA::project | ( | InputArray | vec, |
OutputArray | result | ||
) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
vec | input vector(s); で使用した入力データと同じ次元、同じレイアウトでなければならない。PCAフェーズ、つまり DATA_AS_ROW が指定されている場合はvec.cols==data.cols (ベクトルの次元) とvec.rows は投影するベクトルの数であり,同様にPCA::DATA_AS_COLの場合です。 |
result | 出力ベクトル; の場合PCA::DATA_AS_COLの場合,出力行列は入力ベクトルの数と同じ数の列を持つことになります.result.cols==vec.cols となり,行数は主成分の数と一致します(例えばmaxComponents パラメータがコンストラクタに渡されます). |
void cv::PCA::read | ( | const FileNode & | fn | ) |
ロードPCAオブジェクト
オブジェクトをロードします.eigenvalues eigenvectorsおよびmean指定されたものからFileNode
void cv::PCA::write | ( | FileStorage & | fs | ) | const |
書き込みPCAオブジェクト
書込みeigenvalues eigenvectorsおよびmean指定した場所にFileStorage