少し前に、this questionと答えるために2つの画像が同じかどうかを判断する方法を探しました。私は現在、わずかに異なる問題に直面しています:私は手元に約2,000の画像を持っていますが、その中のいくつかは同じコンテンツを持っていますが、スケール/回転バージョンです(回転は常に90°の倍数です)。さまざまな圧縮と画像フォーマット(主にjpg、いくつかのpng、その他はありません)。スケーリングはおよそ2:1を超えません。私がしたいのは、最高品質のインスタンスを保持しながら重複を排除することです。 Javaは私がかなり熟練している唯一の言語なので、Javaを使う必要があります。Javaで同じ内容の画像を確認する
The answers多くの有用なリンクを提供していますが、スケールされた/回転されたときに重複を識別することはできません。
This question along with the answersは、すべての画像を最初に非常に小さなサイズ(32 * 32または16 * 16など)にスケーリングしてから、基本的にハッシュを行い、ハッシュに基づいて比較します。これは私にとって十分にスマートに聞こえる、画像は比較の前にあらかじめソートすることができ、ソート後はO(n)の問題になります。しかし、画像が回転している場合、どのように対処するか分かりません。 1つの選択肢は、手動ですべての画像を通過し、回転を決定することである。なぜなら、それらの描写が明確な方向性を有するからである(人間の目は、どのように「上に」あるべきかを非常に容易に決定できる)。可能であれば、私はそれを避けたいと思います。
この種の問題に対処するための確立された方法/アルゴリズム(リンクにはSSIMが記載されています)がありますか?誰かが、Javaのためのライブラリを知っているかもしれませんが、それはタスクに適しています(リンクされた質問には、OpenCV用のJavaラッパー、ImageJ、imgsclrという言葉があります)。どんな助けもありがとうございます。
乾杯、私はそれらを見てみましょう - しっかりした音! –
この資料を見た後、私はあなたにいくつかのupvotesを与えるだろう;私がやりたいことをするのに十分な以上! –