pythonの画像指紋(一意性)
1876 ワード
紹介する
各画像には一意の指紋があります.まるで人間の指紋がこの人を識別できるようだ.
画像の指紋は何ですか?(画像ハッシュ)は、画像指紋を用いて類似画像の検出を行う.この技術は、通常、「感知画像hash」または単純な「画像hash」と呼ばれる. ピクチャhashは、1枚のピクチャのコンテンツを検出し、検出されたコンテンツに基づいてピクチャに一意の値を確立するプロセスである. は、例えば、入力として1枚のピクチャを与え、hash関数を適用し、ピクチャの視覚に基づいて1つのピクチャhashを計算する.似たような画像にも似たようなhash値があるはずです. では、「差分Hash」または簡単なDHashアルゴリズムを使用して画像指紋を計算します.簡単に言えば、DHashアルゴリズムは2つの隣接画素間の差に着目している.そして,このような差に基づいてhash値が確立される.
なぜmd 5,sha-1などのアルゴリズムを使用しないのですか?
実装では暗号化hashアルゴリズムを使用することはできません.暗号化hashアルゴリズムの本質により,入力ファイルにおける非常にわずかな差も大きなhash値をもたらす.実際には,類似の入力に類似のhash出力値があることを望んでいる.
関連ライブラリのインストール
使用開始
画像の指紋を取得
ハミング距離の計算
ハミング距離は、ハッシュ内の異なるビット数を計算するために使用される.したがって,ハッシュには10ビットの異なるピクチャよりも1つの異なる2枚のピクチャだけが自然に似ている.
すべてのコード
各画像には一意の指紋があります.まるで人間の指紋がこの人を識別できるようだ.
画像の指紋は何ですか?(画像ハッシュ)
なぜmd 5,sha-1などのアルゴリズムを使用しないのですか?
実装では暗号化hashアルゴリズムを使用することはできません.暗号化hashアルゴリズムの本質により,入力ファイルにおける非常にわずかな差も大きなhash値をもたらす.実際には,類似の入力に類似のhash出力値があることを望んでいる.
関連ライブラリのインストール
pip install Pillow
pip install ImageHash
pip install numpy
pip install scipy
使用開始
画像の指紋を取得
from PIL import Image
import imagehash
#
img1 = Image.open('images/demo4.jpg')
res = imagehash.dhash(img1) # 4f999cc90979704c
ハミング距離の計算
ハミング距離は、ハッシュ内の異なるビット数を計算するために使用される.したがって,ハッシュには10ビットの異なるピクチャよりも1つの異なる2枚のピクチャだけが自然に似ている.
すべてのコード
from PIL import Image
import imagehash
def img(img_path):
"""
( :4f999cc90979704c)
:param img_path:
:return:
"""
img1 = Image.open(img_path)
res = imagehash.dhash(img1)
return res
def hamm_img(res1, res2):
"""
, , 0 , 10 ,
:param res1:
:param res2:
:return:
"""
str1 = str(res1) # str
str2 = str(res2)
num = 0 #
for i in range(len(str1)):
if str1[i] != str2[i]:
num += 1
return num
if __name__ == '__main__':
img_path1 = 'images/demo1.jpg'
img_path2 = 'images/demo2.jpg'
res = hamm_img(img(img_path1), img(img_path2))
print(' :', res)