はじめに
ImageHashのハミング距離が 0 が同一画像、 1~10 が潜在的に似ている画像とのことだが、
ImageHashのみで類似画像検知ができるか再確認する。
ソースコード
ハッシュは、dhushを使用する。
参考:
https://tech.unifa-e.com/entry/2017/11/27/111546
sample.py
import imagehash
from PIL import Image
hash1 = imagehash.dhash(Image.open('./images/001.png'))
hash2 = imagehash.dhash(Image.open('./images/002.png'))
hash3 = imagehash.dhash(Image.open('./images/003.png'))
print(hash1, hash2, hash3)
print('001.png:002.png - {}'.format(hash1 - hash2))
print('001.png:003.png - {}'.format(hash1 - hash3))
print('002.png:003.png - {}'.format(hash2 - hash3))
使用した画像
本プログラムでは以下の画像を使用する。
002.png と 003.png は似た画像を選び、
001.png は、ポーズは違うが中央にキャラクターがいる構図は同じ様になっている。
1 | 2 | 3 |
---|---|---|
001.png | 002.png | 003.png |
実行結果
001.pngとほかの画像のハミング距離は、それぞれ16と12となっていて大きく異なっている。
002.pngと003.pngはハミング距離が8となっている。
通常「1~10」が潜在的に似ている画像とのことだが、全く異なる画像であるため誤検知といえる。
先日の投稿でも記載したが、Imagehashのみで類似画像を判定させるというのは難しいといえる。
3868e0f870706979 a269e8e8f0f4f070 b860e0e8f1f0f070
001.png:002.png - 16
001.png:003.png - 12
002.png:003.png - 8