图像相似度计算

上传人:桔**** 文档编号:467636898 上传时间:2022-10-14 格式:DOCX 页数:7 大小:255.98KB
返回 下载 相关 举报
图像相似度计算_第1页
第1页 / 共7页
图像相似度计算_第2页
第2页 / 共7页
图像相似度计算_第3页
第3页 / 共7页
图像相似度计算_第4页
第4页 / 共7页
图像相似度计算_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《图像相似度计算》由会员分享,可在线阅读,更多相关《图像相似度计算(7页珍藏版)》请在金锄头文库上搜索。

1、图像相似度计算图像相似度计算主要用于对于两幅图像之间内容的相似程度进行打分, 根据分数的高低 来判断图像内容的相近程度。可以用于计算机视觉中的检测跟踪中目标位置的获取, 根据已有模板在图像中找到一个与之最接近的区域。 然后一直跟着。 已有的一些算法比如 BlobTracking, Meanshift , Camshift , 粒子滤波等等也都是需要这方面的理论去支撑。还有一方面就是基于图像内容的图像检索,也就是通常说的以图检图。比如给你某一个人在海量的图像数据库中罗列出与之最匹配的一些图像,当然这项技术可能也会这样做,将图像抽象为几个特征值,比如 Trace 变换,图像哈希或者 Sift 特征

2、向量等等,来根据数据库中存得这些特征匹配再返回相应的图像来提高效率。下面就一些自己看到过的算法进行一些算法原理和效果上的介绍。(1)直方图匹配。比如有图像 A和图像B,分别计算两幅图像的直方图,HistA, HistB,然后计算两个直方图的归一化相关系数(巴氏距离,直方图相交距离)等等。这种思想是基于简单的数学上的向量之间的差异来进行图像相似程度的度量, 这种方法是目前用的比较多的一种方法,第一,直方图能够很好的归一化,比如通常的 256 个 bin 条 的。 那么两幅分辨率不同的图像可以直接通过计算直方图来计算相似度很方便。 而且计算量 比较小。这种方法的缺点 :1 、直方图反映的是图像像素

3、灰度值的概率分布,比如灰度值为 200 的像素有多少个,但是对于这些像素原来的位置在直方图中并没有体现, 所以图像的骨架, 也就是图像内部到底存在什么样的物体, 形状是什么, 每一块的灰度分布式什么样的这些在直方图信息中是被省略掉得。 那么造成的一个问题就是, 比如一个上黑下白的图像和上白下黑的图像其直方图分布是一模一样的,其相似度为100%。2、两幅图像之间的距离度量,采用的是巴氏距离或者归一化相关系数,这种用分析数学向量的方法去分析图像本身就是一个很不好的办法。3、就信息量的道理来说,采用一个数值来判断两幅图像的相似程度本身就是一个信息压缩的过程,那么两个256 个元素的向量(假定直方图有

4、256 个 bin 条)的距离用一个数值表示那么肯定就会存在不准确性。卜面是一个基于直方图距离的图像相似度计算的Matlab Demo 和实验结果.%计算图像直方图距离%巴氏系数计算法M=imread(1.jpg);N=imread(2.jpg);I=rgb2gray(M);J=rgb2gray(N);Count1,x=imhist(I);Count2,x=imhist(J);Sum1=sum(Count1);Sum2=sum(Count2);Sumup = sqrt(Count1.*Count2);SumDown = sqrt(Sum1*Sum2);Sumup = sum(Sumup);fi

5、gure(1);subplot(2,2,1);imshow(I);subplot(2,2,2);imshow(J);subplot(2,2,3);imhist(I);subplot(2,2,4);imhist(J);HistDist=1-sqrt(1-Sumup/SumDown)HlstDist =0.5556通过上图可以看到这种计算图像相似度的方法确实存在很大的弊端。然而很多人也对于这种方法进行了修改,比如FragTrack算法,具体可以参见这篇论文。其中对图像分成横纵的小块,然后对于每一个分块搜索与之最匹配的直方图。来计算两幅图像的相似度,融 入了直方图对应位置的信息。但是计算效率上很慢。

6、还有一种是计算一个图像外包多边形,一般得到跟踪图像的前景图后计算其外包多边形,根据外包多边形做Delauny 三角形分解,然后计算每个三角形内部的直方图,对于这两个直方图组进行相似距离计算。这样就融入了直方图的位置信息。(2)数学上的矩阵分解图像本身就是一个矩阵,可以依靠数学上矩阵分解的一些知识来获取矩阵中一些代表这个矩阵元素值和分布的一些鲁棒性特征来对图像的相似度进行计算。最常用的一般是 SVD分解和NMF分解。下面简单介绍下 SVD分解的一些性质,如果需要探究的更深入一点网上有一些相关 文献,读者可以去探究的更清楚:奇异值的稳定性 奇异值的比例不变性 奇异值的旋转不变性 奇异值的压缩性综上

7、所述,可以看出奇异值分解是基于整体的表示。图像奇异值特征向量不但具有正交变换、旋转、位移、镜像映射等代数和几何上的不变性,而且具有良好的稳定性和抗噪性,广泛应用于模式识别与图像分析中。 对图像进行奇异值分解的目的是: 得到唯一、 稳定的特征描述; 降低特征空间的维数; 提高抵抗干扰和噪声的能力。 但是由于奇异值分解得到的奇异矢量中有负数存在所以不能很好的解释其物理意义。非负矩阵分解(NMF):NMF 的主要思想是将非负矩阵分解为可以体现图像主要信息的基矩阵与系数矩阵,并且可以对基矩阵赋予很好的解释, 比如对人脸的分割, 得到的基向量正是人的 “眼睛 ”, “鼻 子”等主要概念特征,源图像表示为

8、这些特征的加权组合。所以NMF算法也在人脸识别等场合中发挥着巨大的作用。下面一个实验说明了SVD+NMF数学上的这些分解在图像相似度判定方面的应用,这个跟我目前的课题有关细节方面就不再透露更多了。5010015020025050 100 150 200 2505010015020025050 100 150 200 250景图的亶方图80060040020000100200感知蹈肃为二ans =0.0102判定结果为:相似图像当然基于数学上的矩阵特征值计算的还有很多方法比如Trace 变换,不变矩计算等等,当然如果有需要这方面资料的同学可以找我,我可以进行相关的帮助。( 3 )基于特征点的图像

9、相似度计算每一幅图像都有自己的特征点, 这些特征点表征图像中比较重要的一些位置, 比较类似函数的拐点那种,通常比较常用的有Harris 角点和 Sift 特征点。那么将得到的图像角点进行比较, 如果相似的角点数目较多, 那么可以认为这两幅图像的相似程度较高。 这里主要介绍基于 Sift 算子。对于 Sift 的原理和代码可以参见 David Lower 的网站。David G Lowe Sift 网站那么我们就可以通过找到匹配点的个数来判断两幅图像是否一致,这个算法的好处是对于一个物体, 两个不同角度下得到的照片依然可以找到很多的匹配点, 我也一直认为是一个综合来说结果相对较为准确的方法, 但

10、是由于每个特征点需要计算一个长度不小的特征值, 也造成了该算法的时间消耗比较大。 所以不常用于实时的视频处理。 这个算法还有一个好处就是可以通过找到的匹配特征点进行图像校正。 关于使用 Sift 做图像校正请参见我的另外一篇博文。原图访时受映后特征点匹配结果50 1W 19 2W 250 300 350 44M 450 5W我当时对于比如左边图像,找到50个特征点,如果其中有 60%以上的与右边的匹配上了,认为两幅图像是相似图像。校正结果上图使用Sift找到的匹配对应点,然后通过仿射变换的6维参数计算,然后逆变换得到校正后的图像,效果蛮不错的,可见 Sift对于抗旋转和噪声的效果确实很好。对于Sift也不能全部相信,一般使用RANSAC于错误匹配点去除可以达到更好的效果, 当然目前也有很多对 SIFT进行改进的算法。希望有这方面研究的可以多多交流

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号