相似图像的检测方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相似图像的检测方法
一、哈希算法
哈希算法可对每张图像生成一个“指纹”(fingerprint)字符串,然后比较不同图像的指纹。结果越接近,就说明图像越相似。
常用的哈希算法有三种:
1.均值哈希算法(ahash)
均值哈希算法就是利用图片的低频信息。将图片缩小至8*8,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。将缩小后的图片,转为64级灰度。计算所有64个像素的灰度平均值,将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。
均值哈希算法计算速度快,不受图片尺寸大小的影响,但是缺点就是对均值敏感,例如对图像进行伽马校正或直方图均衡就会影响均值,从而影响最终的hash值。
2.感知哈希算法(phash)
感知哈希算法是一种比均值哈希算法更为健壮的算法,与均值哈希算法的区别在于感知哈希算法是通过DCT(离散余弦变换)来获取图片的低频信息。先将图像缩小至32*32,并转化成灰度图像来简化DCT的计算量。通过DCT变换,得到32*32的DCT系数矩阵,保留左上角的8*8的低频矩阵(这部分呈现了图片中的最低频率)。再计算8*8矩阵的DCT的均值,然后将低频矩阵中大于等于DCT均值的设为”1”,小于DCT均值的设为“0”,组合在一起,就构成了一个64位的整数,组成了图像的指纹。
感知哈希算法能够避免伽马校正或颜色直方图被调整带来的影响。对于变形程度在25%以内的图片也能精准识别。
3.差异值哈希算法(dhash)
差异值哈希算法将图像收缩小至8*9,共72的像素点,然后把缩放后的图片转化为256阶的灰度图。通过计算每行中相邻像素之间的差异,若左边的像素比右边的更亮,则记录为1,否则为0,共形成64个差异值,组成了图像的指纹。
相对于pHash,dHash的速度要快的多,相比aHash,dHash在效率几乎相同的情况下的效果要更好,它是基于渐变实现的。
二、单通道直方图和三直方图
单通道图,俗称灰度图,每个像素点只能有有一个值表示颜色,它的像素值在0到255之间,0是黑色,255是白色,中间值是一些不同等级的灰色。三通道图,每个像素点都有3个值表示(如RGB图),所以就是3通道。图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。可以通过计算图像直方图的重合度,来判断图像之间的相似度。
直方图能够很好的归一化,比如256个bin条,那么即使是不同分辨率的图像都可以直接通
过其直方图来计算相似度,计算量适中。比较适合描述难以自动分割的图像。
三、基于特征提取与匹配的方法
1.ORB特征
ORB特征是将FAST特征点的检测方法与BRIEF特征描述子结合起来,并在它们原来的基础上做了改进与优化。ORB特征提取速度快,提取的特征直接是二元编码形式,无需使用哈希学习方法就可以直接利用汉明距离快速计算相似度。在大多数情况下,去重效果能够与SIFT/SURF 持平。
2.SIFT/SURF特征
SIFT特征提取是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出、不会因光照、仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。
四、基于BOW+K-Means的相似图像检测
BOW模型被广泛用于计算机视觉中,相比于文本的BOW,图像的特征被视为单词(word),视觉词汇的字典则由图片集中的所有视觉词汇构成,词袋模型的生成如下图。首先,用sift算法生成图像库中每幅图的特征点及描述符。再用k-Means算法对图像库中的特征点进行聚类,聚类中心有k个,聚类中心被称为视觉词汇,将这些聚类中心组合在一起,形成一部字典。根据IDF原理,计算每个视觉单词TF-IDF权重来表示视觉单词对区分图像的重要程度。对于图像库中的每一幅图像,统计字典中每个单词在在其特征集中出现的次数,将每张图像表示为K 维数值向量(直方图)。得到每幅图的直方图向量后,构造特征到图像的倒排表,通过倒排表快速索引相关候选的图像。对于待检测的图像,计算出sift特征,并根据TF-IDF转化成特征向量(频率直方图),根据索引结果进行直方图向量的相似性判断。
五、基于卷积网络的相似图像检测
在ImageNet中的卷积网络结构(vgg16)基础上,在第7层(4096个神经元)和output 层之间多加一个全连接层,并选用sigmoid激活函数使得输出值在0-1之间,设定阈值0.5之后可以转成01二值向量作为二值检索向量。这样,对所有的图片做卷积网络前向运算,得到第7层4096维特征向量和代表图像类别分桶的第8层output。对于待检测的图片,同样得到4096维特征向量和128维01二值检索向量,在数据库中查找二值检索向量对应的图片,比对4096维特征向量之间距离,重新排序即得到最终结果。