2016-04-10 7 views
1

私は静的な手ジェスチャー認識を6回のジェスチャーで実装しようとしています。手がちょっと変わるかもしれないので、これらは不変なのでサーフ+フランを試しました。 イメージはバイナリで、私がそれらを比較すると、私は悪い結果を得て、私もそれらを理解しません。例えば、画像が等しい場合、1つまたは2つの良好なキーポイントが得られ、異なる画像では、5または6の良好なキーポイントが得られます。surf記述子+ flannマッチャーを使った静的手振り認識

この場合、ジェスチャ認識を実装するための輻輳はありますか?電車とクエリ画像の

結果:

enter image description here

double max_dist = 0, min_dist = 100; 

matcher.match(gestoDescriptors,t1descriptors,matches); 

for (int i=0; i<gestoDescriptors.rows; i++){ 
    double dist = matches[i].distance; 
    if (dist<min_dist) 
    min_dist = dist; 
    if (dist>max_dist) 
    max_dist=dist; 
} 

vector<DMatch>t1_good_matches; 
for (int i=0; i<gestoDescriptors.rows; i++){ 
    if (matches[i].distance<=max(2*min_dist,0.02)){ 
    t1_good_matches.push_back(matches[i]); 
    } 
} 

//-- Draw only "good" matches 
Mat img_matches; 
drawMatches(gestoImage,gestoKeypoints,train1,t1keypoints,t1_good_matches, 
img_matches, Scalar::all(-1), Scalar::all(-1), 
      vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS); 
+0

[shape_example.cpp](https://github.com/Itseez/opencv/blob/master/samples/cpp/shape_example.cpp)をご覧ください。 – sturkmen

答えて

0

私は広範囲に特徴抽出のためにSURFを使用していないが、私は集めることができるものから、それは「画像が合理的であることが重要ですユニークな特性を持つ様々な興味のある点があるという意味で表現力豊かである。私はあなたが持っている主な問題は、手のイメージ(特にバイナリイメージを生成するために閾値処理されたイメージ)には、多くのユニークな興味がないということです。特に、SURFフィーチャーのスケールと回転不変の性質のため、特定のジェスチャーに特有のものとなるイメージはほとんどありません。

バイナリイメージをマスクとして使用してバックグラウンドを削除し、フルカラー(または多分グレースケール)の手ジェスチャーでSURFおよびFLANNロジックを試してみてください。

長期的には、高品質のジェスチャ認識システムを構築することを真剣に考えているならば、畳み込みニューラルネットワークを研究することをお勧めします。 CNNは、画像の前処理がはるかに少なく、この種のアプリケーションに特に適しています。

関連する問題