相似图片检测

一、传统哈希算法

1.平均哈希算法(aHash)

此算法是基于比较灰度图每个像素与平均值来实现的,最适用于缩略图,放大图搜索

步骤:
1.缩放图片:为了保留结构去掉细节,去除大小、横纵比的差异,把图片统一缩放到8*8,共64个像素的图片
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图
    附上几种常用的灰度图相关算法(R = red, G = green, B = blue)
    1.浮点算法:Gray = R * 0.3 + G * 0.59 + B * 0.11
    2.整数方法:Gray = (R * 30 + G * 59 + B * 11) / 100
    3.移位方法:Gray = (R * 76 + G * 151 + B * 28) >> 8
    4.平均值法:Gray = (R + G + B) / 3
    5.仅取绿色:Gray = G
3.计算平均值: 计算进行灰度处理后图片的所有像素点的平均值
4.比较像素灰度值:遍历灰度图片每一个像素,如果大于平均值记录为1,否则为0
5.得到信息指纹:组合64个bit位,顺序随意保持一致性即可

此算法可参考开源项目下载地址: http://download.csdn.net/detail/nash_/5093143

2.感知哈希算法(pHash)

平均哈希算法过于严格,不够精确,更适合搜索缩略图,为了获得更精确的结果可以选择感知哈希算法,它采用的是DCT(离散余弦变换)来降低频率的方法

步骤:
1.缩小图片:32 * 32是一个较好的大小,这样方便DCT计算
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图。(具体算法见平均哈希算法步骤)
3.计算DCT:DCT把图片分离成分率的集合
4.缩小DCT:DCT是32*32,保留左上角的8*8,这些代表的图片的最低频率
5.计算平均值:计算缩小DCT后的所有像素点的平均值
6.进一步减小DCT:大于平均值记录为1,反之记录为0
7.得到信息指纹:组合64个信息位,顺序随意保持一致性即可

此算法可参考开源项目pHash,下载地址: http://www.phash.org/download/

3.差异哈希算法(dHash)

相比pHash,dHash的速度要快的多,相比aHash,dHash在效率几乎相同的情况下的效果要更好,它是基于渐变实现的

步骤:
1.缩小图片:收缩到9*8的大小,以便它有72的像素点
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图。(具体算法见平均哈希算法步骤)
3.计算差异值:dHash算法工作在相邻像素之间,这样每行9个像素之间产生了8个不同的差异,一共8行,则产生了64个差异值
4.获得指纹:如果左边的像素比右边的更亮,则记录为1,否则为0

流程如下:原始图像->压缩->灰度处理->计算hash值->汉明距离 这里着重介绍最后两步 对比指纹:根据两幅图片的指纹(选用上面三种hash计算方法中的一种计算出的值),计算汉明距离(从一个指纹到另一个指纹需要变几次),汉明距离越大则说明图片越不一致,反之,汉明距离越小则说明图片越相似,当距离为0时,说明完全相同。(通常认为距离>10 就是两张完全不同的图片)

二、几种特征算法

1.SIFT特征

SIFT具有较好的尺度不变性,即使改变旋转角度或者拍摄角度,仍然能够得到较好的检测效果,主要用来查找关键信息比如图片搜索。而且现在因为专利问题比较麻烦。

SIFT算法实现物体识别主要有三大工序,1、提取关键点;2、对关键点附加详细的信息(局部特征)也就是所谓的描述器;3、通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,也就建立了景物间的对应关系。

2.SURF特征

SURF(Speeded Up Robust Features)是对SIFT的改进版本,改进后的主要优点是速度更快,更适合做实时的特征检查。对于需要实时运算的场合,如基于特征点匹配的实时目标跟踪系统,每秒要处理8-24帧的图像,需要在毫秒级内完成特征点的搜索、特征矢量生成、特征矢量匹配、目标锁定等工作,这样SIFT算法就很难适应这种需求了。实验证明,SURF算法较SIFT在运算速度上要快3倍左右。

3.GIST特征

三、聚类算法

1.K-means聚类、聚类中心点作为特征向量、对比向量相近度

四、颜色直方图匹配

图像直方图是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数。
直方图只能做相同图像相同事物的比较,在做相似性图像的比较时效果较差,很难直接用于工业上的图像的相似性检索等工作

五、卷积神经网络

计算量比较大
Copyright © 413132340@qq.com 2020 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 07:49:29

results matching ""

    No results matching ""