我正在使用Imagemagick来获取图像的感知哈希值。我使用以下命令:
using the TDFA module
输出在其他参数中也返回了pereceptual hash:
how many times these tags have to be updated in order to match the sub-regex withing the regex for the given accepted input string
我想保存哈希值,然后计算2张图像之间的距离。如何将上面的输出转换为哈希值并计算2个哈希值之间的距离?
答案 0 :(得分:2)
有关此感知哈希的详细信息和测试,请参阅http://www.fmwconcepts.com/misc_tests/perceptual_hash_test_results_510/index.html。
基本上它创建了42个浮点值,需要使用Sum Squared指标与另一个42个浮点值进行比较。
这不是一个简单的二进制哈希,可以很容易地存储为1和0x的字符串,并使用汉明距离进行比较。
但您可以使用
比较ImageMagick中感知哈希的两个图像compare -metric phash image1 image2 null:
如果需要,可以将phash值输出到.json文件。
或者,我有两个bash unix ImageMagick shell脚本(phashconvert和phashcompare)。您可以将42个浮点数转换为可以保存在注释部分文件中的数字字符串。第二个将读取两个文件的注释部分以提取字符串,将它们转换回浮点数,然后使用Sum Squared Metric来评估它们。但请注意,由于从浮点数到数字的来回转换,此过程只是近似值。
如果你只想提取42个花车,这应该这样做(从我的脚本phashconvert)
identify -quiet -verbose -moments -alpha off "x.png" | grep "PH[1-7]" | sed -n 's/.*: \(.*\)$/\1/p' | sed 's/ *//g' | tr "," "\n"