标签:情况 load 尺寸 识别 大致 api 信息 返回 osi
python工具包,用来计算图像之间的结构相似性 (Structural Similarity Image Metric: SSIM)。结构相似性介绍详见:https://zh.wikipedia.org/wiki/%E7%B5%90%E6%A7%8B%E7%9B%B8%E4%BC%BC%E6%80%A7
安装:sudo pip install pyssim
源码:https://github.com/jterrace/pyssim
使用示例: pyssim image1 image2 返回一个-1~1之间的实数,代表两张图片的结构相似。更多参数详见git中的介绍。
该方法能对两张图片的相似度进行一个大致的区分,它的计算基于两张图片的亮度、对比度和结构。但是对于有的图片,比如下面两个,它完全无法捕捉到它俩都是护照的信息,此方法计算的这两张图片的相似度接近于0。该方法更常用来衡量一张图片压缩后的失真度。
把图片表示成一个向量,通过计算向量之间的余弦距离来表征两张图片的相似度。
github上源码:https://github.com/hirobert/python-image-similarity
实现细节:首先会将两张图片缩小到相同的规格,一来可以减少运算量,二来大小不同的图片的表示向量没法直接点乘。向量每一维的值为对应像素点RGB值的平均。
即使缩小了图片,求范数和点积的运算量仍然很大,速度明显比使用pyssim方法慢。但是直观感觉计算的结果比pyssim更靠谱。
除了使用余弦相似度,还可以使用别的评价指标来表征两个向量之间的相似度。详见以下链接:http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html
直方图能够描述一幅图像中颜色的全局分布,是一种入门级的图像相似度计算方法。
原理介绍及源码参考:http://blog.csdn.net/gzlaiyonghao/article/details/2325027 http://www.ruanyifeng.com/blog/2013/03/similar_image_search_part_ii.html
过于简单,只能捕捉颜色的相似性,捕捉不到更多的信息。比如以下两张图片:
由于二者颜色分布相似,所以判定二者相似度较高,显然不合理。
通过计算两个图片的互信息来表征它们之间的相似度。
可以借助medpy来计算互信息,详见:http://pythonhosted.org/MedPy/_modules/medpy/metric/image.html
medpy是个基于python的医学影像处理工具,提供计算图像之间的互信息的接口。
这种方式,如果两张图片尺寸相同,还是能在一定程度上表征两张图片的相似性的。但是,大部分情况下图片的尺寸不相同,如果把两张图片尺寸调成相同的话,又会让原来很多的信息丢失,所以很难把握。经过实际验证,此种方法的确很难把握。
将图片归一化成一定大小,计算一个序列作为它的指纹信息,然后比较两张图片指纹信息序列相同的位数。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
一个简单的实现:http://www.ruanyifeng.com/blog/2011/07/imgHash.txt
使用上面的简单实现几乎没什么效果。当然上面的实现略显粗糙,图片被压缩得很小。
如果不使用基于模式识别的方法,以上所述多种方法都可以大致比较两张图片的相似性。但是以上各方法的效果也很大程度上依赖于许多具体实现细节,由于没有一个衡量尺度,所以很难比较各方法的优劣。
标签:情况 load 尺寸 识别 大致 api 信息 返回 osi
原文地址:http://www.cnblogs.com/vincent93/p/6893307.html