3

指紋をフィールド「blob」に保存していますが、これらの印象を比較する唯一の方法は、データベースに保存されているすべてのプリントを取得し、関数「identify_finger」を使用してチェックするベクトルを作成することでしょうか。SELECT?を使用してデータベースから直接確認できますか?

私はlibfprintを使用しています。このコードでは、検証はベクトルで行われます。

def test_identify():
    cur = DB.cursor()
    cur.execute('select id, fp from print')
    id = []
    gallary = []
    for row in cur.fetchall():
        data = pyfprint.pyf.fp_print_data_from_data(str(row['fp']))
        gallary.append(pyfprint.Fprint(data_ptr = data))
        id.append(row['id'])
    n, fp, img = FingerDevice.identify_finger(gallary)
4

3 に答える 3

2

指紋データベースを使用するには、根本的に異なる 2 つの方法があります。1 つは、他の手段で知られている人物の身元を確認することであり、1 つは身元が不明な人物を検索することです。

のような単純なライブラリlibfprintは、最初のケースにのみ適しています。誰かを確認するためにそれを使用しているので、その身元を使用してデータベースから単一の行を検索できます。おそらく、複数の指をスキャンしたか、指ごとに複数のスキャンを保存したかもしれませんが、それでも返されるデータベース BLOB の数は少ないでしょう。

指紋検索アルゴリズムは、検索スペースを狭め、迅速に比較し、結果をランク付けして誤検知に対処するために、ゼロから設計する必要があります。Google 検索で探しているものとはまったく関係のないページが表示されるように、指紋検索でも同様です。この問題を解決するために、全社を挙げて取り組んでいる企業があります。

于 2013-02-06T19:04:55.013 に答える
1

もう 1 つの方法は、指紋画像の操作方法を認識し、探しているものに基づいて選択する mysql プラグインを用意することです。

私は本当にそのようなものがあることを疑います。

フィンガープリントの比較を並列化することもできます。つまり、次のように呼び出します。

FingerDevice.identify_finger(gallary)

並行して、異なるコア/マシンで

于 2012-07-10T06:42:10.803 に答える
0

各スキャンは異なり、異なるブロブが生成されるため、SELECT を使用してデータベースから直接チェックすることはできません。libfprint は、異なるスキャンを比較し、それらが同一人物のものかどうかを判断するという大変な作業を行います

zinkingとTudorが言っていることは、その判断プロセスがどのように機能するかを理解すれば(ちなみに、詳細比較によって)、プロセスに関連するデータを保存する方法を開発できるということです (*minutiae ,たぶん?) データベースで、次に関連する値を取得するためのメソッドです。おそらく、一種のインデックスまたはデータベースへの拡張の一種です。

言い換えれば、ループ内で保存されているすべての指紋とスキャンを比較する方法をlibfprint単に受け入れるのではなく、より複雑な (そして美しい) 方法でアルゴリズムを再実装する必要があります。libfprint

プログラムを高速化するためのその他のソリューション

Cを使用:

ある種の hello-world プログラムを作成するのに十分な C しか知りませんが、 のfp_identify_finger_img関数を使用するコードを純粋な C で作成することは難しくありませlibfprintんでしたpyfprint.identify_finger

Python での登録部分を引き続き行うことができます。私がやる。

時間/場所に基づく SELECT を使用します。

ユーザーが特定の時間に指紋をスキャンする可能性が高くなることがわかっている場合、または特定の場所で他の場所よりも指紋をスキャンする可能性が高いことがわかっている場合(たとえば、ある時間に職場に到着して指をスキャンする、建物を出る、または 1 つのゲートから建物に入る)または他の方法で)、確率を測定するためのデータを (各スキャンで) 収集し、並列テーブルを作成して、各時間と場所に到着する確率についてユーザーを並べ替えることができます。

リストで提供された指紋オブジェクトを使用してループで指を識別しようとすることがわかっているidentify_fingerので、それを使用して、その時間とその場所で最も可能性の高いユーザーが最初になるように並べ替えられたオブジェクトを与えることができますリストなどに。

于 2013-02-06T18:05:50.523 に答える