2

opencv 2.4.2 からのメソッド hierarchyClustering を使用しようとしています。

エラーなしで動作しますが、問題は、それが受け入れるパラメーターを理解していないことです。分岐...

そして、常に1つのクラスターしか得られないという問題が発生すると思います。

私の入力は cv::Mat の LBPH 機能 (顔検出用) です。行数は 12 で、列数は 6272 です。分岐係数の値が何であれ、常に 1 つのクラスターしか取得せず、その重心は行の平均です。入力行列 grouppeed_one_ferson_features から。アドバイスいただけますか???

どうもありがとうございます!!!

コードは次のとおりです。

cv::Mat groupped_one_person_features;  
.... // fill grouppeed_one_ferson_features with data 
int  Nclusters=50;
cv::Mat centroids (Nclusters,Features.data[0][0].cols,CV_32FC1);
int count = cv::flann::hierarchicalClustering<cvflann::L1<float>>groupped_one_person_features,centroids,cvflann::KMeansIndexParams(2000,11,cvflann::FLANN_CENTERS_KMEANSPP));
4

1 に答える 1

3

まず第一に、最後の行で括弧が抜けています:

int count = cv::flann::hierarchicalClustering<cvflann::L1<float>>(groupped_one_person_features,centroids,cvflann::KMeansIndexParams(2000,11,cvflann::FLANN_CENTERS_KMEANSPP));

パラメータの順序は次のとおりです( によるflann_base.hpp)。

  • クラスター化するポイント
  • 計算されたクラスターの中心。Matrix は事前に割り当てる必要があり、centers.rows は要求されたクラスターの数です。
  • クラスタリング パラメータ
  • クラスタリングに使用する距離

したがって、常に 1 つのクラスターを取得する場合は、centroids行列が 1 行しかないことを意味している可能性があります。これを確認できますか?

のパラメータは次のKMeansIndexParamsとおりです (によるとkmeans_index.h):

  • 分岐係数: ツリー内のノードの子の数
  • 反復: 1 回の kmeans クラスタリング (kmeans ツリー) で実行する最大反復回数
  • center_init: kmeans ツリーの初期クラスター中心を選択するために使用されるアルゴリズム
  • cb_index: クラスタ境界インデックス。kmeans ツリーの検索時に使用
于 2013-04-10T12:49:03.337 に答える