计算图像相似度——《Python也可以》之一
声明:本文最初发表于赖勇浩(恋花蝶)的博客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也可以》之一的更多相关文章
- MatLab计算图像圆度
本文所述方法可以检测同一图像中的多个圆形(准确的说,应该是闭合图像). 在Matlab2010a中可以实现. 附录效果图: %颗粒圆度 clear;close all; %% %读取源图像 I = i ...
- 图像相似度算法的C#实现及测评
近日逛博客的时候偶然发现了一个有关图片相似度的Python算法实现.想着很有意思便搬到C#上来了,给大家看看. 闲言碎语 才疏学浅,只把计算图像相似度的一个基本算法的基本实现方式给罗列了出来,以至于在 ...
- OpenCV进行图像相似度对比的几种办法
转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/43853435, 来自:shiter编写程序的艺术 对计算图像相似度的方法,本文做 ...
- 图像相似度计算之哈希值方法OpenCV实现
http://blog.csdn.net/fengbingchun/article/details/42153261 图像相似度计算之哈希值方法OpenCV实现 2014-12-25 21:27 29 ...
- Python OpenCV 图像相识度对比
强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...
- python计算余弦复杂度
import numpy as np from sklearn.metrics.pairwise import cosine_similarity a = np.array([1, 2, 3, 4]) ...
- 深入学习OpenCV中图像灰度化原理,图像相似度的算法
最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...
- 转-------CNN图像相似度匹配 2-channel network
基于2-channel network的图片相似度判别 原文地址:http://blog.csdn.net/hjimce/article/details/50098483 作者:hjimce 一.相 ...
- 我用JAVA做了个简易图像相似度计算器
简单说两句: 笔主利用这个七夕前后两天的寂寞时光,用JAVA磨了一个简单的图像相似度计算小程序,就在刚才终于纠结完毕,输出了1.0版本,小小的满足了一下可怜的虚荣心..→_→ 使用最简单最基础的感知哈 ...
随机推荐
- 快播CEO王欣:流量跌到零也要转型
曾因免费与快捷而独霸视频播放器行业的快播科技,或许将迎来壮士断腕的艰难时刻. 4月16日晚,快播于新浪微博上先后发布<公告>和<致快播用户书:我们涅槃在即>,表示快播将启动商业 ...
- 《JAVA---day03---运算符》
/*[位运算符] 运算符: 运算 范例 说明 <<: 左移 3<<2=12--->3*2*2=12 >>: 右移 3>>2=1---->3/ ...
- PostgreSQL角色和权限理解
1.继承的权限只是继承该组的表的权限,用户对应的管理员权限则不会被继承. 2.inherit权限是说本角色是否继承别人的权限,而不是本权限能否被别的角色继承. postgres=# create ...
- Python 名称空间和作用域
a = 10 # lst = [1,2,3,4] # # # 内置函数 print("你好啊,我叫赛利亚") # def chi(): a = 10 b = 20 # # # # ...
- vue 登录验证引擎
1.router配置: 路由元信息 const router = new VueRouter({ routes: [ { path: '/foo', component: Foo, children: ...
- C语言基础:分支语句和常见运算符 分类: iOS学习 c语言基础 2015-06-10 21:44 13人阅读 评论(0) 收藏
if(判断条件){ 执行语句; }else if(判断条件){ 执行语句; } switch (整型表达式){ case 值1: 执行语句; break; case 值2: 执行语句; break; ...
- 【转载】Java枚举类型的使用
枚举类型概念 package com.lxq.enumm; public class EnumDemoOne { private enum InnerEnum { RED, GREEN, YELLOW ...
- 8.1 服务器开发 API 函数封装,select 优化服务器和客户端
#include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <ne ...
- PLsql登录数据库提示密码即将过期-
小哥询问,PL*SQL用户登录后弹出警告:咋整? ORA-28002:the password will expire within 7 days密码在7天内将到期 do you wish to ch ...
- HDU 1232:畅通工程(并查集模板)
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...