私はImagehashをPythonで使用して、約30,000画像の48桁の16進ハッシュを生成します。これは辞書のリスト他のいくつかの画像特性)。たとえば:固定長ヘックスのリスト内で最小のハミング距離を見つける最も速い方法
[{"name":"name1", "phash":"a12a5e81127d890a7c91897edc752b506657233f56c594b7e6575e24e457d465"},
{"name":"name2", "phash":"a1aa7e011367812a7c9181be9975a9e86657239f3ec09697e6565a24e50bf477"}
...
{"name":"name30000", "phash":"a1aa7e05136f810afc9181ba9951a9686617239f3ec4d497e6765a04e52bfc77"}]
私はその後、phashedれるラズベリーパイからのビデオ入力を持っており、そのハッシュがパイカメラの性質を考えると、このデータベース(と比較され、ビデオストリームからテストハッシュは今までありませんデータベース内のハッシュと一致します)。今私はダムループをしています。これは、ループスルーしてあまりにも遅い〜30,000の計算済みハッシュのそれぞれのハミング距離を確認するのに約5秒かかります。私が使用しているImagehashライブラリは、dbHash1 - testHash
を実行するだけで、ハミング距離を計算できることを意味しています。明らかにソートしてやることは、ソートがハミング距離と無関係であるので、これに近づく方法ではありません。だから、私はこれを行うためのより速い方法がなければならないと思いますか?私はメトリックスペースに関してthis questionを読んだことがありますが、誰かが知っている(比較的)シンプルなPython実装があるかどうかを確認したいと思いました。
ああ、私はOPでこれを明らかにする。私が探しているテストハッシュは、データベースハッシュのいずれともまったくマッチしません。ハミング距離が最小のものを探しています。 – IronWaffleMan
メトリックスペースの検索をサポートする多くのデータ構造があります。このSOの質問を参照してください。http://stackoverflow.com/questions/6389841/efficiently-find-binary-strings-with-low-hamming-distance-in-大規模なセット – AChampion
私はそれを見たことがありますが、そのうちのどれを実装するのかわかりません。 – IronWaffleMan