2012-02-26 23 views
5

私は、通過する人の顔をすべて検出できるアプリケーションを設計する必要があるプロジェクトに取り組んでいます...私はいくつかの既知の人々から成る非常に大きなデータベースを持っています...私はEigenObjectRecognizerを使ってWebcamでキャプチャされた画像フレーム...しかし、問題は時には間違って一部の人物を認識する....だから、この顔の一致の信頼値を取得する場合...私はそれが大きい場合は、私はPCAベースの認識が基本であることを知っていますが、私は間違いなく他の新しいアルゴリズムに移ります。プロジェクトの締め切り日のために、私はすぐにそれを提出する必要があります...私はこのEigenObjectRecognizer顔認識の信頼値を得る方法を教えてください....EMGU CVを使用して顔認識に信頼性の値を取得するには?

答えて

7

しかし、正確な信頼値はありませんereは、使用可能であり、Eigen Distanceであるように大まかに解釈される可変スケールである。

あなたが持っているデータの量とトレーニングパラメータに応じて、良い一致と分類される値は変化しますので、異なる顔を使って値をテストして閾値を計算する必要があります。

この値を取得するには、Eigenクラスに関数を追加する必要があります。最初に、私たちが使用するEigenObjectRecognizerを上書きします。これは、ファイルEigenObjectRecognizer.csの本当に簡単なファイルです。\ EMGUインストールディレクトリ\ Emgu.CVにあります。または、ファイルを解凍した場所では、すべてのフォルダがあるbinフォルダと同じフォルダにありますので、あなたが使っている.dll。

Visual Studioのソリューションエクスプローラでプロジェクト名を右クリックし、[追加]> [既存のアイテム...]を選択してファイルをプロジェクトに追加します。ファイルに移動して追加します。あなたのプロジェクトは、あなたの参照にEMGU.CV.dllで保持されているものではなく、自動的にこれを使用します。

あなたのプロジェクトで今すぐEigenObjectRecognizer.csを開きます。オリジナルのコピーであることを心配しないでください。変更しても元のソースには影響しません。 Ctrlキーを押しながらmキーを押しながらoキーを押すと、すべてのメソッドフィールドが折りたたまれます。

私のEmgu.Customという名前空間を上書きする必要があります。今のコードの上部に

は他人

private float eigenDistance; 

の下に次の変数を追加しますが、クラス内で明らかにこのどこかにあなたを置くことができますが、クラスに

/// <summary> 
    /// Get the calculated Eignen Distance for the last proceessed frame 
    /// </summary> 
    public float GetEignenDistance 
    { 
     get { return eigenDistance; } 
    } 

を次のメソッドを追加します。メソッドの外側で、今重要なビットです。 eigenDistanceをグローバルにしましたが、.Recognize(Image image)メソッドを呼び出すと非公開になりました。

はeigenDistance EigenObjectRecognizer.cs以内にこの方法を見つけて、あなたはフロートを削除することができ

eigenDistance = -1; 

float eigenDistance; 

を変更。認識が正しく適用されていれば常に正でなければならないので、私はエラーのために観察できる値で上書きされていることを確認したい。あなたは、コードの次のセクションが含まれていることがわかります:

FindMostSimilarObject(image, out index, out eigenDistance, out label); 
  • インデックス
  • eigenDistance
  • ラベル

少し余分なコーディングで使用可能なすべての出力です。

私たちの書き込み1に、当社の固有認識変数を指し示すする必要はありません:私たちは今、この関数呼び出しでEigenDistanceを得ることができ

Emgu.Custom.EigenObjectRecognizer recognizer; 

float EigenDistance = recognizer.GetEignenDistance; 

希望これは、

を物事をクリア

乾杯、

Chris

+0

Sir、私のコードレコグナイザーは、EigenObjectRecognizerへの参照の名前です...私はrecognizer.Get_Eigen_Resultsを使ってみました。しかし、 "Get_Eigen_Results"という名前のメンバーが見つかりませんでした。私はここに参照を追加するために行方不明ですか? –

+0

こんにちは、申し訳ありませんSurya私はEigenクラスに追加した関数です私はそれに応じて私の答えを更新します – Chris

+0

こんにちは、あなたと同じ人がいる場合、私は画像と比較したいと思う、それは働くことができると思いますか? 1つ、他のものと比較して、そして最後にこの距離を比較するか?または、データベースにない人の写真2枚を比較する方法はありますか? –

関連する問題