传统的方法有

  1. ssim:http://www.imatest.com/docs/ssim/


计算图片的相似度-七月在线CV-3 - 图1

  1. ncc
  2. sift + HOG


基于深度学习的
各种图像分类网络 VGG/Inception V1~4/mobileNet/SqueezeNet

直方图距离


没有关注内容的位置信息,如:上白下黑和下白上黑的两张图相似度是 100%

平均哈希算法

算法步骤

  • 读取图片
  • 将图片转化成灰度图
  • 将灰度图压缩成 8×8 大小的图片(生成 64 位的哈希)
  • 计算图像所有灰度值的平均值
  • 将 8×8 的像素从左到右依次与平均值作比较,如果灰度值大于平均值,则将 1 添加到哈希中,否则将添加 0。
  • 得到一个哈希数,与系统中的其他哈希数比较


计算图片的相似度-七月在线CV-3 - 图2计算图片的相似度-七月在线CV-3 - 图3

计算图片的相似度-七月在线CV-3 - 图4计算图片的相似度-七月在线CV-3 - 图5

哈希数:0000000000010000000000000010000001000010100001101111111111111110

感知哈希算法


算法步骤

  • 读取图片
  • 转化成灰度图片
  • 将灰度图片压缩成 9×8 大小
  • 从每行开始,从左到右依次检查前 8 个像素,并将其与右边的相邻像素进行比较,类似于平均哈希算法,生成 64 位哈希数


计算图片的相似度-七月在线CV-3 - 图6 计算图片的相似度-七月在线CV-3 - 图7
计算图片的相似度-七月在线CV-3 - 图8 计算图片的相似度-七月在线CV-3 - 图9

哈希数:1111000000110000101110001100111010000110010011001000111010001110

差异哈希算法

算法步骤

  • 读取图片
  • 转化成灰度图
  • 压缩成 8×4×8×4(32×32)其中 4 为系数因子
  • 对图像进行离散余弦变换(discrete cosine transform,DTC),先行后列


计算图片的相似度-七月在线CV-3 - 图10

计算图片的相似度-七月在线CV-3 - 图11计算图片的相似度-七月在线CV-3 - 图12

计算图片的相似度-七月在线CV-3 - 图13计算图片的相似度-七月在线CV-3 - 图14
32×32 灰度图 对行进行离散余弦变换
计算图片的相似度-七月在线CV-3 - 图15计算图片的相似度-七月在线CV-3 - 图16
对列进行离散余弦变换

计算图片的相似度-七月在线CV-3 - 图17

哈希数:1010010010101101100110011011001101100010100100000111011010101110