计算感知哈希的距离

时间:2018-03-10 17:22:16

标签: imagemagick

我正在使用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个哈希值之间的距离?

1 个答案:

答案 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"