笔记:图像相似性度量方法总结


什么是图像相似性度量?

图像相似性度量是测量两幅图像的相似程度。这个定义看起来没有做什么解释,实际上图像相似性度量就像它的名字一样容易理解,通过度量的方式测度两幅图像到底有多么一样。

相似性度量能做什么?

从自顶向下的思维出发,研究完what is it ? 就该what can it do ?

目前学术中最常用的场景是做目标追踪、位置获取,在一些算法如blobTracking,Meanshift,Camshift和粒子滤波等都需要图像相似性度量做理论支撑。市场应用是Google的以图搜图,就是根据已有图像搜索更多类似的图像,但是性能远不如文字检索。下面是百度和谷歌的搜索对比。

我们都用詹皇的图片来搜索。

笔记:图像相似性度量方法总结_第1张图片

百度直接空白。
笔记:图像相似性度量方法总结_第2张图片

谷歌做的还不错。
笔记:图像相似性度量方法总结_第3张图片

1、SSIM算法—结构相似性

《Image Quality Assessment: From Error Visibility to Structural Similarity》

笔记:图像相似性度量方法总结_第4张图片SSIM(structural similarity)是一种用来衡量图片相似度的指标,也可用来判断图片压缩后的质量。SSIM取值范围[0, 1],值越大,表示图像失真越小。
基本原理:
SSIM由亮度对比、对比度对比、结构对比三部分组成。
笔记:图像相似性度量方法总结_第5张图片
亮度比较函数l(x,y)是μx和μy的函数。
然后,对比度比较c(x,y)是σx和σy的比较。
这三个组成部分相对独立。 例如,亮度和/或对比度的变化不会影响图像的结构。
C1、C2、C3为常数,避免分母接近于0时造成的不稳定性。
SSIM函数S具有对称性、有界性(不超过1)和最大值唯一性(当且仅当x=y时,S=1,表示两幅图一样)。

2、 Siamese network

Siamese Network 是一种神经网络的框架,而不是具体的某种网络,用于评估两个输入样本的相似度。如下图所示:
笔记:图像相似性度量方法总结_第6张图片

两个网络分别接受输入,共享权重,然后计算两个输出向量之间的距离或者相似度,以此来判别原输入的相似性。例如判别两张脸是否为同一个人的,两个签名是否为同一个人所作。当然,siamese network不仅只适用这种二分类问题,在目标跟踪领域也被广泛的应用如siamMask。
图中上下两个network,都由CNN构成,两个模型的参数值完全相同。不同于传统CNN的地方,是Siamese网络并不直接输出类别,而是输出一组一维向量。
若输入的两张图像为同一个人,则上下两个模型输出的一维向量欧氏距离较小
若输入的两张图像不是同一个人,则上下两个模型输出的一维向量欧氏距离较大
所以通过对上下两个模型输出的向量做欧氏距离计算,就能得到输入两幅图像的相似度

3、 均值Hash算法

Hash算法进行图片相似度识别的本质,就是将图片进行Hash转化,生成一组二进制数字,然后通过比较不同图片的Hash值距离找出相似图片。
基本原理:
1、缩小尺寸。这样做会去除图片的细节,只保留结构、明暗等基本信息,目的是统一图片大小,保证后续图片都有相同长度的哈希值,方便距离计算。网上看到的案例基本都将尺寸缩小为8*8,64个像素点,暂时不清楚缩小为这个尺寸的原因,但如果觉得损失的信息太多,可以将尺寸适当调大,当然像素点多了后续计算就会稍慢一些。
2、灰度化处理。将图片全部转换为统一的灰度图。
3、计算像素均值。计算像素的灰度平均值(此处均值出现)。
4、哈希值计算。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1,小于平均值,记为0,由此生成二进制数组。
5、图片配对,计算汉明距离。距离越近,越相似。当图片缩小为8 * 8时,通常认为汉明距离小于10的一组图片为相似图片。PS:(汉明距离:它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。)

优点:速度快
缺点:精确度较差,对均值敏感

4、 差异哈希算法

在对图片进行哈希转换时,通过左右两个像素大小的比较,得到最终哈希序列。

基本原理:
1、缩小尺寸。将图片缩小为9*8大小,此时照片有72个像素点。
2、灰度化处理。
3、计算差异值,获得最后哈希值(与均值主要区别处)。
比较每行左右两个像素,如果左边的像素比右边的更亮(左边像素值大于右边像素值),则记录为1,否则为0。因为每行有9个像素,左右两个依次比较可得出8个值,所以8行像素共可以得出64个值,因此此时哈希值为长度是64的0-1序列。
4、图片配对,计算汉明距离。

5、 感知哈希算法

基本原理:

DCT是一种特殊的傅立叶变换,将图片从像素域变换为频率域,并且DCT矩阵从左上角到右下角代表越来越高频率的系数,但是除左上角外,其他地方的系数为0或接近0,因此只保留左上角的低频区域。

1、 图片缩放为32 * 32大小
2、 将图片灰度化
3、 对图片进行离散余弦变换DCT,将图片从像素域转换为频率域。
4、 取频率域左上角8 * 8大小(图片的能量都集中在低频部分,低频位于左上角)
5、 计算平均值(同均值哈希)
6、 生成哈希值
7、 图片配对,计算汉明距离

其他方法:

cosin相似度:把图片表示成一个向量,通过计算向量之间的余弦距离来表征两张图片的相似度。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似。
基于直方图:直方图能够描述一幅图像中颜色的全局分布,是一种入门级的图像相似度计算方法。直方图过于简单,只能捕捉颜色信息的相似性,捕捉不到更多的信息。只要颜色分布相似,就会判定二者相似度较高,显然不合理。
欧几里得距离:指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。
皮尔逊相关系数:用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但其数值上受量纲的影响很大,不能简单地从协方差的数值大小给出变量相关程度的判断。为了消除这种量纲的影响,于是就有了相关系数的概念。

你可能感兴趣的:(计算机视觉)