1

私は興味深い問題を扱っています。

私は、 John Daugman のアルゴリズムを使用して人間の虹彩をバイナリ コードに変換する生体認証システムを持っています (大学での研究用)。

虹彩コードは「フラット」です (円として保存されるのではなく、長方形に変換されます)。

column 1 | column 2 | column 3 | ...

10011001 ...
10110111
01100010
...

column は 30 ビットを表します。問題は、虹彩のスキャンごとに独自のノイズ マスク (まぶた、反射など) があり、一致が 100% ではなく、せいぜい 96 ~ 98% 程度であることです。

これまでのところ、次のようなアルゴリズムを使用しています (ハミング距離マッチング):

mask = mask1 & mask2;
result = (code1 ^ code2) & mask;

// ration of 1 bits allowed by mask
double difference = (double)one_bits(result)/one_bits(mask); 

現在、虹彩の実際のデータベースを構築しているという問題があります (約 1200 から 1300 の被験者、それぞれ 3 から 5 の虹彩サンプルで、ローテーションでカウントする必要があるため、それぞれについて約 10 のテストを行う必要があります)。そして、現在のサンプルをデータベース全体 (80*30 ビットで 65 000 回の比較) と比較する必要がありますが、これは遅いことがわかりました。

質問:データ構造を反映する (そして、ビットが少し変化すると少しだけ変化する) ハッシュ関数、または「エラー トレラント」なハッシュ関数はありますか? データベース全体で高速検索アルゴリズムを構築する必要があります (そのため、これをインデックス化する方法を探しています)。

更新:ある種の「最も近い隣人」ルックアップによって実装するか、ある種のクラスタリングを使用する必要があると思います (同様の虹彩がグループ化され、最初のラウンドでは一部の代表者のみがチェックされます)。

4

1 に答える 1

5

Locality Sensitive Hashing ( LSH ) の実装を確認してください。

「nilsimsa コードはハッシュのようなものですが、ハッシュとは異なり、メッセージの小さな変更が nilsimsa コードの小さな変更になります。このような関数は、ローカリティ センシティブ ハッシュと呼ばれます。」

ローカリティ・センシティブ・ハッシングを理解するには?

于 2012-10-31T17:53:03.937 に答える