声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday

先将两张图片转化为直方图,图像的相似度计算就转化为直方图的距离计算了,本文依照如下公式进行直方图相似度的定量度量:

Sim(G,S)=

其中G,S为直方图,N 为颜色空间样点数

转换为相应的 Python 代码如下:

#!/usr/bin/env python
# coding=utf-8 import Image def make_regalur_image(img,size=(256,256)):
return img.resize(size).convert('RGB') def split_image(img,part_size=(64,64)):
w,h = img.size
pw,ph = part_size assert w%pw == h%ph==0 return [img.crop((i,j,i+pw,j+ph)).copy() for i in xrange(0,w,pw) for j in xrange(0,h,ph)] def hist_similar(lh,rh):
assert len(lh)==len(rh)
return sum(1-(0 if l==r else float(abs(l-r))/max(l,r))for l,r in zip(lh,rh))/len(lh) def calc_similar(li,ri):
# return hist_similar(li.histogram(),ri.histogram())
return sum(hist_similar(l.histogram(),r.histogram()) for l,r in zip(split_image(li),split_image(ri)))/16.0 def calc_similar_by_path(lf,rf):
li,ri = make_regalur_image(Image.open(lf)),make_regalur_image(Image.open(rf))
return calc_similar(li,ri) def make_doc_data(lf,rf):
li = make_regalur_image(Image.open(lf))
ri = make_regalur_image(Image.open(rf))
li.save(lf+'_regalur.png')
ri.save(rf+'_regalur.png') fd = open('stat.csv','w')
fd.write('\n'.join(l+','+r for l,r in zip(map(str,li.histogram()),map(str,ri.histogram()))))
fd.close() import ImageDraw
li = li.convert('RGB')
draw = ImageDraw.Draw(li)
for i in xrange(0,256,64):
draw.line((0,i,256,i),fill ='#F00')
draw.line((i,0,i,256),fill='#F00')
li.save(lf+'_lines.png') if __name__=='__main__':
path = r'test/TEST%d/%d.JPG'
for i in xrange(1,7):
print 'test_case_%d: %.3f%%'%(i,calc_similar_by_path('test/TEST%d/%d.JPG'%(i,1),'test/TEST%d/%d.JPG'%(i,2))*100) make_doc_data('test/TEST4/1.JPG','test/TEST4/2.JPG')

参考:

用Python做图像处理

计算图像相似度——《Python也可以》之一

计算图像相似度——《Python也可以》之一的更多相关文章

  1. MatLab计算图像圆度

    本文所述方法可以检测同一图像中的多个圆形(准确的说,应该是闭合图像). 在Matlab2010a中可以实现. 附录效果图: %颗粒圆度 clear;close all; %% %读取源图像 I = i ...

  2. 图像相似度算法的C#实现及测评

    近日逛博客的时候偶然发现了一个有关图片相似度的Python算法实现.想着很有意思便搬到C#上来了,给大家看看. 闲言碎语 才疏学浅,只把计算图像相似度的一个基本算法的基本实现方式给罗列了出来,以至于在 ...

  3. OpenCV进行图像相似度对比的几种办法

    转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/43853435, 来自:shiter编写程序的艺术 对计算图像相似度的方法,本文做 ...

  4. 图像相似度计算之哈希值方法OpenCV实现

    http://blog.csdn.net/fengbingchun/article/details/42153261 图像相似度计算之哈希值方法OpenCV实现 2014-12-25 21:27 29 ...

  5. Python OpenCV 图像相识度对比

    强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...

  6. python计算余弦复杂度

    import numpy as np from sklearn.metrics.pairwise import cosine_similarity a = np.array([1, 2, 3, 4]) ...

  7. 深入学习OpenCV中图像灰度化原理,图像相似度的算法

    最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...

  8. 转-------CNN图像相似度匹配 2-channel network

    基于2-channel  network的图片相似度判别 原文地址:http://blog.csdn.net/hjimce/article/details/50098483 作者:hjimce 一.相 ...

  9. 我用JAVA做了个简易图像相似度计算器

    简单说两句: 笔主利用这个七夕前后两天的寂寞时光,用JAVA磨了一个简单的图像相似度计算小程序,就在刚才终于纠结完毕,输出了1.0版本,小小的满足了一下可怜的虚荣心..→_→ 使用最简单最基础的感知哈 ...

随机推荐

  1. Free 4 months Serial License Key Of Outpost Security Suite Pro 8.1

    VISIT HEREto gey a 1 year key.... for the latest version Promo code ? well use the same here too : C ...

  2. 2.spring 学习

    1.spring简单工程搭建 http://www.cnblogs.com/yun965861480/p/6278193.html 2.spring数据源 http://www.cnblogs.com ...

  3. tomcat用户配置,内存配置,pid配置

    一:tomcat用户配置 1.打开 webapps\manager\WEB-INF\web.xml 可以看到tomcat所有的角色名,后面我们就是需要配置这些角色 2.给用户添加角色 打开 conf/ ...

  4. 【Genymotion】add a new virtual device 失败

    Genymotion 新增虚拟设备(模拟器)时,由于网络原因,总是下载失败,如图: 下载失败提示“Unable to create virtual device: Connection timeout ...

  5. 对抗网络之目标检测应用:A-Fast-RCNN

    对抗网络之目标检测应用:A-Fast-RCNN 论文:A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection ...

  6. magento导航栏中如何加入home主页

    magento在导航栏中加入home主页是很简单的,几个步骤即可在magento导航栏中加入home主页! 下面简单介绍下如何在magento导航栏中加入home主页: 首先我们打开对应应用的模板文件 ...

  7. No.01——配置编程环境

    ======由于很喜欢Android编程,所以买来了安卓权威指南来学习.为了应用费曼技巧——把知识输出出去以检验和巩固,在此写下学习笔记======= 1. 配置编程环境 Java的JDK(Java ...

  8. C# 解析excel时,字段内有内容,却读取不到的解决方法

    C# 解析excel时,字段内有内容,却读取不到的解决方法:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ...

  9. OVSSL企业证书认证

    最近,在做http->https的转化,虽然我没有操作证书的安装过程,但是在这个过程中学习到不少知识呢. 因为我没有操作,所以操作上我就不知道了.下面是这个过程中要注意的一些事项: 1.公司名称 ...

  10. Spring DI

    一.   Spring DI 依赖注入 利用spring IOC实例化了对象,而DI将实例化的对象注入到需要对象的地方,完成初始化任务. 对象由spring创建,之后再由spring给属性赋值 spr ...