python
1コード 2def phash(image, hash_size=8, highfreq_factor=4): 3 """ 4 Perceptual Hash computation. 5 6 Implementation follows http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html 7 8 @image must be a PIL instance. 9 """ 10 import scipy.fftpack 11 img_size = hash_size * highfreq_factor 12 image = image.convert("L").resize((img_size, img_size), Image.ANTIALIAS) 13 pixels = numpy.array(image.getdata(), dtype=numpy.float).reshape((img_size, img_size)) 14 dct = scipy.fftpack.dct(scipy.fftpack.dct(pixels, axis=0), axis=1) 15 dctlowfreq = dct[:hash_size, :hash_size] 16 med = numpy.median(dctlowfreq) 17 diff = dctlowfreq > med 18 return ImageHash(diff) 19 20```以前もimagehashについて質問したのですが、 21・なぜ離散コサイン変換を使うとガンマ補正やヒストグラム補正がかかっている画像でも似たような画像と認識できるのか(Average hash)では異なる画像と認識されてしまうのか 22 23・Average hashでは8x8に縮小していたのにphashでは32×32に縮小していました。DCTを行うには良い大きさらしいですがそれは何故ですか? 24 25・imagehashのphashのアルゴリズム5.の平均値を計算するという所で、『最初の項は除去する』と書いてあるのですがそれはどういうことなのでしょうか?最初の行だけという意味で合ってますかね?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/28 16:19
2017/08/29 04:45