マハラノビス距離
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
cvCalcCovarMatrix, [[cvInvert>逆行列の計算]], cvMahalanob...
#contents
*void cvCalcCovarMatrix( CvMat** data, int count, CvMat* ...
**引数 [#x8fc3841]
-data:CvMat**型の特徴ベクトル集合.CvMat*ではないのに注意...
-count:int型のdataの個数
-result:CvMat*型の共分散行列
-average:CvMat*型の平均ベクトル
-flags:int型の動作フラグ
--CV_COVAR_NORMAL:通常の共分散行列
--CV_COVAR_SCRAMBLED:スクランブル共分散行列
--CV_COVAR_ROWS:data[0]の各行をサンプルとする
--CV_COVAR_COLS:data[0]の各列をサンプルとする
--CV_COVAR_USE_AVG:指定したaverageを平均ベクトルとして使う
--CV_COVAR_SCALE:共分散行列をcountでスケーリングする
**返り値 [#y0614db8]
-void型なのでなし
*double cvMahalanobis( CvMat* reference, CvMat* vector, C...
**引数 [#oabc4181]
-reference:CvMat*型のベクトル
-vector:CvMat*型のベクトル
-matrix:CvMat*型の逆共分散行列
**返り値 [#ad66fc0a]
-referenceとvectorのマハラノビス距離
*解説 [#ce4b2102]
-flagsで共分散行列の求め方を指定する
--通常はCV_COVAR_NORMALで求める
--CV_COVAR_SCRAMBLEDは固有顔を求めるときに使うらしい
--CV_COVAR_SCRAMBLEDを使うと共分散行列の大きさはcount*cou...
--CV_COVAR_NORMALがCV_COVAR_SCRAMBLEDより優先される
--CV_COVAR_ROWSかCV_COVAR_COLSを指定した場合はdata[0]以外...
--CV_COVAR_COLSがCV_COVAR_ROWSより優先される
--CV_COVAR_USE_AVGを指定しなかった場合は関数内で平均ベク...
-matrixは''逆''共分散行列
--cvCalcCovarMatrixで求めた共分散行列の逆行列を[[cvInvert...
--ランク落ちの可能性があるのでSVD(特異値分解)を利用する
-最終的にはreferenceとvectorのマハラノビス距離が求まる
-referenceにはaverageなどを用いる(クラス中心)
-cvMahal''o''nobis(マハロ''ノ''ビス)というエイリアスがある
*サンプルコード [#l2d7959a]
**通常の求め方 [#sc7d3ec7]
#define MAX_DATA 500
#define DEMIENSION 3
int count; //データの個数
double distance; //マハラノビス距離
CvMat *data[MAX_DATA]; //クラス
CvMat *result = cvCreateMat( DIMENSION, DIMENSION...
CvMat *inversecovar = cvCreateMat( DIMENSION, DIMENSION...
CvMat *average = cvCreateMat( DIMENSION, 1, CV_32F...
CvMat *input = cvCreateMat( DIMENSION, 1, CV_32F...
//クラスの読み込み
//この場合dataの各要素は高さDIMENSION,幅1のベクトル
count = ReadData( data, MAX_DATA);
ReadInput( input); ...
cvCalcCovarMatrix( data, count, result, average, CV_COVA...
cvInvert( result, inversecovar, CV_SVD); ...
distance = cvMahalanobis( average, input, inversecovar);...
**CV_COVAR_COLSを使う場合(ROWSも同様) [#gefc795a]
#define DEMIENSION 3
int count = GetDataLength(); //データの個数
double distance; //マハラノビス距離
CvMat *data = cvCreateMat( DIMENSION, count, CV...
CvMat *result = cvCreateMat( DIMENSION, DIMENSION...
CvMat *inversecovar = cvCreateMat( DIMENSION, DIMENSION...
CvMat *average = cvCreateMat( DIMENSION, 1, CV_32F...
CvMat *input = cvCreateMat( DIMENSION, 1, CV_32F...
//クラスの読み込み
//この場合dataの要素数は1,dataの幅(列数)だけデータが存...
ReadData( data);
ReadInput( input); ...
...
cvCalcCovarMatrix( &data, 0, result, average, CV_COVAR_N...
cvInvert( result, inversecovar, CV_SVD); ...
distance = cvMahalanobis( average, input, inversecovar);...
*実体ファイル [#o5423f0e]
-cxcore/include/cxcore.h
-cxcore/src/cxmatmul.cpp
[[:OpenCV]][[:OpenCV 1.1]]準拠
終了行:
cvCalcCovarMatrix, [[cvInvert>逆行列の計算]], cvMahalanob...
#contents
*void cvCalcCovarMatrix( CvMat** data, int count, CvMat* ...
**引数 [#x8fc3841]
-data:CvMat**型の特徴ベクトル集合.CvMat*ではないのに注意...
-count:int型のdataの個数
-result:CvMat*型の共分散行列
-average:CvMat*型の平均ベクトル
-flags:int型の動作フラグ
--CV_COVAR_NORMAL:通常の共分散行列
--CV_COVAR_SCRAMBLED:スクランブル共分散行列
--CV_COVAR_ROWS:data[0]の各行をサンプルとする
--CV_COVAR_COLS:data[0]の各列をサンプルとする
--CV_COVAR_USE_AVG:指定したaverageを平均ベクトルとして使う
--CV_COVAR_SCALE:共分散行列をcountでスケーリングする
**返り値 [#y0614db8]
-void型なのでなし
*double cvMahalanobis( CvMat* reference, CvMat* vector, C...
**引数 [#oabc4181]
-reference:CvMat*型のベクトル
-vector:CvMat*型のベクトル
-matrix:CvMat*型の逆共分散行列
**返り値 [#ad66fc0a]
-referenceとvectorのマハラノビス距離
*解説 [#ce4b2102]
-flagsで共分散行列の求め方を指定する
--通常はCV_COVAR_NORMALで求める
--CV_COVAR_SCRAMBLEDは固有顔を求めるときに使うらしい
--CV_COVAR_SCRAMBLEDを使うと共分散行列の大きさはcount*cou...
--CV_COVAR_NORMALがCV_COVAR_SCRAMBLEDより優先される
--CV_COVAR_ROWSかCV_COVAR_COLSを指定した場合はdata[0]以外...
--CV_COVAR_COLSがCV_COVAR_ROWSより優先される
--CV_COVAR_USE_AVGを指定しなかった場合は関数内で平均ベク...
-matrixは''逆''共分散行列
--cvCalcCovarMatrixで求めた共分散行列の逆行列を[[cvInvert...
--ランク落ちの可能性があるのでSVD(特異値分解)を利用する
-最終的にはreferenceとvectorのマハラノビス距離が求まる
-referenceにはaverageなどを用いる(クラス中心)
-cvMahal''o''nobis(マハロ''ノ''ビス)というエイリアスがある
*サンプルコード [#l2d7959a]
**通常の求め方 [#sc7d3ec7]
#define MAX_DATA 500
#define DEMIENSION 3
int count; //データの個数
double distance; //マハラノビス距離
CvMat *data[MAX_DATA]; //クラス
CvMat *result = cvCreateMat( DIMENSION, DIMENSION...
CvMat *inversecovar = cvCreateMat( DIMENSION, DIMENSION...
CvMat *average = cvCreateMat( DIMENSION, 1, CV_32F...
CvMat *input = cvCreateMat( DIMENSION, 1, CV_32F...
//クラスの読み込み
//この場合dataの各要素は高さDIMENSION,幅1のベクトル
count = ReadData( data, MAX_DATA);
ReadInput( input); ...
cvCalcCovarMatrix( data, count, result, average, CV_COVA...
cvInvert( result, inversecovar, CV_SVD); ...
distance = cvMahalanobis( average, input, inversecovar);...
**CV_COVAR_COLSを使う場合(ROWSも同様) [#gefc795a]
#define DEMIENSION 3
int count = GetDataLength(); //データの個数
double distance; //マハラノビス距離
CvMat *data = cvCreateMat( DIMENSION, count, CV...
CvMat *result = cvCreateMat( DIMENSION, DIMENSION...
CvMat *inversecovar = cvCreateMat( DIMENSION, DIMENSION...
CvMat *average = cvCreateMat( DIMENSION, 1, CV_32F...
CvMat *input = cvCreateMat( DIMENSION, 1, CV_32F...
//クラスの読み込み
//この場合dataの要素数は1,dataの幅(列数)だけデータが存...
ReadData( data);
ReadInput( input); ...
...
cvCalcCovarMatrix( &data, 0, result, average, CV_COVAR_N...
cvInvert( result, inversecovar, CV_SVD); ...
distance = cvMahalanobis( average, input, inversecovar);...
*実体ファイル [#o5423f0e]
-cxcore/include/cxcore.h
-cxcore/src/cxmatmul.cpp
[[:OpenCV]][[:OpenCV 1.1]]準拠
ページ名: