2つの画像が同じかどうかを知る方法は?[閉まっている]


20

JPEG、PNG、GIFなど、他の形式で複製された約2000個の画像が10000個以上あります。これらの数値は両方とも毎日増加しています。それらの重複を削除する必要があります。そのためには、まずそれらを見つける方法を知る必要があります。

最初に考えたのは、画像のピクセルをチェックし、同じ座標で同じ色のピクセルを持つ他の写真を見つけることでした。ただし、このオプションは常に機能するとは限りません。重複を検索するとしましょう。検索可能なオブジェクトについては、8ビットのPNGファイルを選択します。その画像のすべての複製が見つかりますが、8ビットPNG、時には8ビットGIF、まれにJPEGのみが見つかります(画像のアルゴリズムのせいでしょうか?)。

私の2番目の考えは、これらの画像をすべて複製し、厳密な2色パレット(白黒など)で色を変更し、上記と同じスキャンを実行することでした。それでも、JPEG画像はPNGまたはGIF形式と100%類似していません(上記と同じ理由?)。

3番目の考えは、画像がどれだけ馴染む必要があるかについての割合を減らし、色がどれだけ変化する可能性があるかを増やして、不要な画像の除去をもたらすことでした...

何かご意見は?



非可逆圧縮のフォーマットは、ロスレスバージョンと100%同一ではない画像になります。コマンドラインユーティリティを持っている必要がありますか、または提案を行い、90%以上の類似ピクセルを持つ画像を表示する(平均偏差を計算する)GUIプログラムを実行できますか?(そしてもちろん、ピクセルサイズはどの形式でも同じでなければなりません)
thorstenmüller11年


1
同じファイル名で拡張子が異なるものはいくつありますか?
ジェフ

4
数週間のコーディングを必要としない有用な回答:stackoverflow.com/questions/596262/…–
mac

回答:


17

知覚的なハッシュが答えかもしれません:

http://www.phash.org/

知覚ハッシュは、コンテンツのさまざまな機能から派生したマルチメディアファイルのフィンガープリントです。出力の劇的な変化をもたらす入力の小さな変化の雪崩効果に依存する暗号化ハッシュ関数とは異なり、機能が類似している場合、知覚ハッシュは互いに「近接」しています。


9
  1. 寸法を確認してください。異なる場合=>画像は同じではありません。
  2. 形式を確認してください。同じ場合=>ピクセルごとに正確な比較を実行します。
  3. 異なるフォーマットがこれを行う場合:

RGB(赤、緑、青)を比較しないでください。明るさを半分の重量と比較し、色/色相を他の半分と比較します(または2/3と1/3)。値の差を計算し、「許容」値に応じて、値が同じかそうでないかを計算します。

JPEGは色情報を大幅に圧縮しますが、輝度値を損なわないようにします。


6

数年前に大量の画像をデュープ用にスクリーニングしていたときに、すべてを8x8のサムネイルに縮小し、サムネイル間の距離の2乗に基づいて類似度スコアを計算する(3つの色を別々に処理する)ことが非常にうまくいくことを発見しました。あなたが保持できることに注意してくださいLOTメモリに8×8のサムネイルを。

事実上すべてのデュープは非デュープよりも低いスコアを記録しました。問題は、実際のコンテンツは異なりますが、コントラストが非常に低く全体的に類似した画像のみであったことです(それぞれの背景は砂浜でした)。

これは、ファイルサイズを削減するために誰かが解像度や品質を下げた以外は、だまされた画像を捕らえるのにも効果的でした。


1
通常、YUVはRGBよりも優れており、カラーバランスのわずかな変化に敏感ではありません。
マーティンベケット

潜在的な一致を事前に選択するためのサムネイルのこの手法は有効であり、YUVは良いタッチであり、同じ理由で純粋な輝度マップに変わったのを見ました。
パトリックヒューズ

@Martin Beckett:RGBの差の平方和が最初に試したものであり、それを改善しようとはしなかったので十分に機能しました-そして、それは編集で重複をキャッチしていました。デュープの厳密な定義では、自動削除を許可するのに十分でした。
ローレンペクテル

@Loren、それらが機能するはずの同じ画像のマイナーなピクセル編集である場合。jpegのようなものは、YUV色空間よりもRGBを台無しにしているだけです。ちょっとしたヒント;
マーティンベケット

本質的に、非常に暗い画像は、たとえまったく類似していない場合でも、差の平方和が小さくなる傾向があります。しきい値は、画像の平均輝度で調整される場合があります。この平均輝度をプレフィルターとして使用して、O(n ^ 2)画像の比較を避けるため、すでに存在しています。
ガブリエル

1

似ているかどうか画像をスキャンするコードを書く必要があるかもしれません。すべての写真をARGB形式に変換して比較できます。(メモリ内)

考えられるアプローチは次のとおりです。写真をゾーンに分割します。ゾーンの平均色や明るさをスキャンして、似ているかどうか2つの写真を比較します。

ゾーンの90%以上が一致する場合、削除候補リストに移動するゾーンを選択しました。これにより、候補者のリストができます。写真の縦横比を使用して、写真を水平および垂直の写真に分類して比較を高速化できます。このようにして、ピクセルごとに正しい色を再現しない損失の多いアルゴリズムを補正できます。あなたはプログラムを一晩実行し、午前中にそれを完了します:)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.