11

元の高解像度の写真を調べて、プロ アカウントを持つ前に Flickr にアップロードした古い低解像度の写真を置き換えるスクリプトを作成しようとしています。

それらの多くでは、日付などの Exif 情報を使用して一致を判断できます。しかし、いくつかは本当に古いもので、元のファイルに Exif 情報がなかったか、当時私が使っていたばかげたサイズ変更ソフトウェアによって上書きされたものです。

そのため、メタデータに頼ることができず、コンテンツ自体に頼らざるを得なくなりました。問題は、オリジナルの解像度が Flickr のものとは異なることです (これがこの取り組みの要点です)。それで、人間の入力を必要とするかどうかのしきい値を設定できるようにする、ある種のあいまいな類似性尺度とそれらを比較する方法はありますか?

1 つの画像が他の画像のサイズ変更されたバージョンであることを知っていると、一般的な類似性よりも優れた結果が得られると思います。どの言語でも解決できますが、Ruby がプラスになります :)

4

3 に答える 3

7

興味深い問題、ところで:)

遅い解決策 - 成功する可能性が高い

スケール不変特徴検出器を使用して、両方のイメージで対応する特徴を見つけます。フィーチャが類似の場所で高いスコアと一致する場合、一致したことになります。

画像で見つかった特徴に対して、スケールと回転の不変の 128 整数記述子を生成するSIFTをお勧めします。SURF (OpenCV で利用可能) は、もう 1 つの (高速な) 特徴点検出器です。

O(n^2) ですが、非常に高速です (特に VL SIFT 実装の場合)。ただし、1 つの画像の特徴を複数の画像と比較する必要がある場合 (必要になる場合があります)、特徴のツリーを構築して、他の画像の特徴を照会する必要があります。KD ツリーは便利で、OpenCVには優れた実装があります。

迅速な解決策 - うまくいくかもしれません

高解像度画像を低解像度サイズにダウンサンプリングし、SAD (両方の画像のピクセルの周囲の 3x3 ピクセルのブロック間の差異の合計がスコア) のような類似度測定を使用して、一致を判断します。

于 2009-11-10T05:40:08.567 に答える
3

ImageMagick からソリューションをスクリプト化することをお勧めします。以下 (画像と IM の比較に関するドキュメントから) は、使用できる比較値を出力します。

convert image1 image2 \
        -compose difference -composite -colorspace gray miff:- |\
  identify -verbose - |\
    sed -n '/^.*Mean: */{s//scale=2;/;s/(.*)//;s/$/*100\/32768/;p;q;}' | bc
于 2009-11-10T06:48:51.330 に答える
3

両方の画像の正規化された 色のヒストグラムを計算し、何らかの方法を使用してそれらを比較します (ヒストグラムの交差など - 上記のリンクを参照)。画像の解像度が異なるため、正規化されたヒストグラムが必要であることに注意してください。画像が非常に似ていない場合、それらは同じ画像ではありません。ただし、それらが類似している場合は、次の 2 つのケースのいずれかになります。(i) それらは同じ画像である、または (ii) それらは異なる画像ですが、同様のグローバルカラー分布を示します。

ケース (ii) の場合、画像と長方形のタイルを分割し、対応するタイルを比較してプロセスを繰り返します。画像のローカルプロパティを考慮しようとしています。結果をランク付けし、最適な一致を選択します。

于 2009-11-10T11:48:28.840 に答える