互いに比較しなければならない画像が 130 万枚以上あり、1 日に数百枚が追加されます。
私の会社はイメージを取り、ベンダーが利用できるバージョンを作成します。
多くの場合、ファイルは互いに非常に似ています。たとえば、2 つの異なる会社が 2 つの異なる画像 (マクドナルドのロゴが付いた JPG と GIF) を 1 か月間隔で送信することがあります。
起こっていることは、すでに作成されたものを単にコピーして貼り付けるか、少なくともアーティストの可能な出発点として提案することができたときに、同じロゴを2回作成していることに気付くということです.
フィンガープリントを作成するアルゴリズムや、新しい画像がアップロードされたときに簡単なクエリを実行できるものを探しました。時間は比較的問題ではありません。フィンガープリントの作成に 1 秒かかる場合、150 日かかります。指紋を作成しますが、それを行うために 3 つまたは 4 つのサーバーを取得することさえできるので、かなりの節約になります。
私はPHPに堪能ですが、アルゴリズムが疑似コードであるか、CIでさえそれを読んで翻訳を試みることができます(C固有のライブラリを使用しない限り)
現在、すべての画像の MD5 を実行して、まったく同じ画像をキャッチしています。この質問は、画像のサイズを変更し、サイズ変更された画像で md5 を実行して、変更された画像をキャッチすることを考えていたときに出てきました。別の形式で保存してサイズを変更しましたが、それでも十分な認識が得られませんでした。
言及していない場合は、「類似」の可能性のある画像を提案するだけで十分です.
編集
チェックは 1 分間に複数回実行する必要があることに注意してください。そのため、最適な解決策は、画像ごとにいくつかの値を取得して保存し、将来、見ている画像と比較する必要なく使用できるようにすることです。サーバー全体を再スキャンします。
ヒストグラムに言及しているページを読んだり、画像のサイズを非常に小さいサイズに変更したり、可能なタグを取り除いてからグレースケールに変換したり、そのファイルのハッシュを行って比較に使用したりしています。成功したら、ここにコード/回答を投稿します