web-dev-qa-db-ja.com

2つの画像のトリミング/比率がわずかに異なる場合でも、2つの画像が「同じ」であることをどのように検出しますか?

2つの異なる画像があります。

100pxで enter image description here または400px enter image description here

そして

100px幅 enter image description here または400px enter image description here

ご覧のとおり、この2つは人間の観点からは明らかに「同じ」です。次に、それらが同じであることをプログラムで検出します。私はRuby gemと呼ばれるrmagickを介して次のように画像マジックを使用しています:

img1 = Magick::Image.from_blob(File.read("image_1.jpeg")).first
img2 = Magick::Image.from_blob(File.read("image_2.jpeg")).first

if img1.difference(img2).first < 4000.0 # I have found this to be a good threshold, but does not work for cropped images
  puts "they are the same!!!"
end

これは、同じ比率/トリミングを持つ画像に適していますが、トリミングがわずかに異なり、同じ幅にサイズ変更されている場合は理想的ではありません。

トリミングが異なる画像にそれを行う方法はありますか?私は次のようなことを言うことができる解決策に興味があります。その90%。

PS。それが役立つ場合は、画像をより高い解像度で取得できます(例:ダブル)

11
Niels Kristian

find_similar_region メソッドを考えます。 2つの画像のうち小さい方をターゲット画像として使用します。画像とターゲット画像のファズ属性にさまざまな値を試します。

2
An RMagick User