ここでは、類似画像検出法の一つであるAverage HASHを説明します。
二つの画像を比較して、類似度を算出するAverage Hash法を解説することにより、類似度の意味を理解して頂くことを目的としています。
- 比較元の画像ファイルを読込みます。
- 元画像をグレースケール化します。
- 元画像の縦横比を無視して、16×16ピクセル(総画素数256)に縮小します。
10倍に拡大表示しています。 - これで画像のRGB(赤・緑・青)の各色素は輝度情報(0~255の値を取ります)のみになります。
- RGBのいずれかを選択し(RGBどれを選択しても得られる輝度情報は同じ値である)、全ピクセル(256ピクセル)の輝度平均(Average)を求めます。
- 改めて全ピクセル平均輝度(Average)と各ピクセルの輝度を比較し、ピクセル輝度が平均輝度より大きい場合は”1″、ピクセル輝度が平均輝度以下なら”0″として判定して行きます。
- この結果、256ビットのAverage Hashが求められます。(以下このAverage Hashをソースハッシュと呼びます)
- 次に、比較先画像を読み込みます。
- 上記2~6と同じ処理を比較先画像に対して行います。
出来上がったAverage Hashをターゲットハッシュと呼びます。 - ソースハッシュとターゲットハッシュをXOR(排他的論理和)演算します。
ソースハッシュ :1001100011001011・・・・10011 256ビットの2進数
ターゲットハッシュ :1001000010000111・・・・10010 256ビットの2進数
XOR演算値 :0000100001001100・・・・00001 256ビットの2進数 - XOR計算値から”1″の数を求めます。1の所が一致していないことになっっています。これをUnmatched Countと呼ぶことにします。
- 次式で一致度(%)を求めます。
一致度(%)=100-(Unmatched Count/256) - この結果、
比較元画像と
比較先画像の
一致度は82.4%となります。 - IMCで採用している画像比較法はAverage Hash法のみならず
Perceptual Hash法(公知の方法)
Color Hash法(独自開発)
Contour Hash法(独自開発)
共にXOR演算値を求めて、一致度(%)を算出しています。
最後にAverage Hashアルゴリズムを開発されたDr. Neal Krawetz氏に感謝いたします。