[解決済み] 2つの画像の類似度を測るには?[クローズド]
質問
あるアプリケーション (Web ページでもよい) のスクリーン ショットを、以前に撮影したスクリーン ショットと比較して、アプリケーションが正しく表示されているかどうかを判断したいと思います。アスペクトがわずかに異なる可能性があるため、完全に一致する比較はしたくありません (Web アプリケーションの場合、ブラウザによって、いくつかの要素がわずかに異なる位置にある可能性があります)。スクリーンショットがどの程度似ているかの指標になるはずです。
すでにそれを行うライブラリ/ツールはありますか?どのようにそれを実装しますか?
どのように解決するのですか?
これは、アルゴリズムにどの程度の賢さを求めるかに完全に依存します。
例えば、以下のような問題です。
- トリミングされた画像とトリミングされていない画像の比較
- テキストを追加した画像と、追加していない画像
- ミラーリングされた画像
最も簡単でシンプルな アルゴリズム このために私が見たのは、各画像に対して次のステップを実行することだけです。
- 64x64 や 32x32 などの小さなサイズにスケールし、アスペクト比を無視し、直近のピクセルの代わりに結合スケーリング アルゴリズムを使用します。
- 最も暗い色が黒、最も明るい色が白になるように、色の範囲を拡大縮小します。
- 最も明るい色が左上、そして右上が次に暗く、左下が次に暗くなるように画像を回転、反転させる(もちろん、可能な限り)。
編集 A 結合スケーリングアルゴリズム とは、10 ピクセルを 1 つに縮小するときに、これら 10 ピクセルすべての色を取り、それらを 1 つに結合する関数を使用してそれを行うものです。平均化、平均値、またはバイキュービック スプラインのようなより複雑なアルゴリズムで行うことができます。
次に、2つの画像間のピクセルごとの平均距離を計算します。
データベースで一致する可能性のあるものを調べるには、ピクセル色をデータベース内の個々の列として保存し、それらの束にインデックスを付け (ただし、非常に小さい画像を使用しない限り、すべてではない)、各ピクセル値の範囲を使用するクエリを実行します。
これは実装が簡単で、かなり高速に実行できますが、もちろん、ほとんどの高度な差分を処理することはできません。そのためには、もっと高度なアルゴリズムが必要です。
関連
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] 並行処理と並列処理の違いは何ですか?
-
[解決済み] 2つの緯度経度点間の距離を計算する?(ハバーシンの公式)
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】画像の類似性を比較する簡単で高速な方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜO(n)はO( nlog(n) )よりも優れているのでしょうか?)
-
[解決済み] 簡単:T(n)=T(n-1)+nを反復法で解く。
-
[解決済み] Bogosort (a.k.a Monkey Sort)よりも悪いソートアルゴリズムはあるのか?[クローズド]
-
[解決済み] k-meansの時間計算量はどの程度ですか?
-
[解決済み] 最小ボトルネックスパニングツリーと最小スパニングツリーはどう違うのですか?
-
[解決済み】画像の類似性を比較する簡単で高速な方法
-
[解決済み】2つの画像の違いを数値化するには?
-
[解決済み] クイックソート ピボットの選択
-
[解決済み] スペルチェッカーで候補を出すアルゴリズムとは?
-
[解決済み] トライ式と基幹トライ式のデータ構造の違いは何ですか?