关于图像相似度,主要包括颜色,亮度,纹理等的相似度,比较直观的相似度匹配是直方图匹配.直方图匹配算法简单,但受亮度,噪声等影响较大.另一种方法是提取图像特征,基于特征进行相似度计算,常见的有提取图像的sift特征,再计算两幅图像的sift特征相似度.对于不同的图像类型,也可以采用不同的特征,例如对于人脸如下,可以采用人脸识别网络提取人脸特性向量.本文介绍利用LightCNN提取人脸特征向量,并进行图像聚类的方法.

首先提取图像特征向量,由于是对人脸图像进行聚类,因此采用LightCNN提取图像的特征向量,github代码和模型下载:https://github.com/AlfredXiangWu/LightCNN.

下载代码和模型后,运行,extract_features.py提取图像的特征向量,LightCNN提取特征向量为256维.

将所有图片的特征向量保存在一个矩阵中,特征矩阵.例如有10张图像,则特征矩阵为10×25610×25610\times256的矩阵.

之后采用kmeans对特征向量进行聚类:

feature_matrix = np.asarray(cPickle.load(open('features.pkl','rb')),'rb')))num_clusters = 6
km_cluster = KMeans(n_clusters=num_clusters, max_iter=300, tol=1e-10,n_init=40, \init='k-means++',algorithm='full', n_jobs=-1)
result = km_cluster.fit(feature_matrix)

feature_matrix为特征矩阵,将图像聚类为num_clusters 类,result为聚类结果,包含聚类类别,聚类中心等.

关于图像聚类结果显示,由于每张图像大小不同,而图像的特征向量为256维,不能直接显示.因此采用pca对特征向量进行降为.具体为将256维特征向量降为2维,即坐标点x,y,这样便可以在二维空间将聚类结果可视化.

pca = PCA(n_components=2)             #输出两维
newData = pca.fit_transform(feature_matrix )   #载入N维

最后每张图像的坐标点按照聚类类别标记为不同的颜色,从而可视化:

x1 = []
y1 = []
x2 = []
y2 = []
x3 = []
y3 = []
x4 = []
y4 = []
x5 = []
y5 = []labels=result.labels_
for i in xrange(len(feature_matrix)):if labels[i] == 0:x1.append(newData[i][0])y1.append(newData[i][1])elif labels[i] == 1:x2.append(newData[i][0])y2.append(newData[i][1])elif labels[i] == 2:x3.append(newData[i][0])y3.append(newData[i][1])elif labels[i] == 3:x4.append(newData[i][0])y4.append(newData[i][1])elif labels[i] == 4:x5.append(newData[i][0])y5.append(newData[i][1])
# 四种颜色 红 绿 蓝 黑
plt.plot(x1, y1, 'or')
plt.plot(x2, y2, 'og')
plt.plot(x3, y3, 'ob')
plt.plot(x4, y4, 'ok')
plt.plot(x5, y5, 'om')plt.show()

聚类效果:

图像相似度计算-kmeans聚类相关推荐

  1. 图像相似度计算之直方图方法OpenCV实现

    操作步骤: 1.      载入图像(灰度图或者彩色图),并使其大小一致: 2.      若为彩色图,增进行颜色空间变换,从RGB转换到HSV,若为灰度图则无需变换: 3.      若为灰度图,直 ...

  2. python 复杂数据相似度计算_Opencv python图像处理-图像相似度计算

    一.相关概念 1. 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定 ...

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

    感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个"指纹"(fingerprint)字符串,然后比较不同图像的指纹.结果越接近,就说明 ...

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

    计算图像相似度--<Python也可以>之一 声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意, ...

  5. 计算图像相似度——《Python也可以》之一(转)

    声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意,不得用于商业用途. 关于<Python也可以> ...

  6. 基于 K-means 聚类算法实现图像区域分割matlab代码

    1 简介 对图像进行颜色区域分割.将图像转换到CIE L*a*b颜色空间,用K均值聚类分析算法对描述颜色的a*和b*通道进行聚类分析;通过提取各个颜色区域独立成为单色的新图像,对图像进行分割处理.实验 ...

  7. 如何计算两幅图像的相似度,计算两张图片相似度

    怎么对比两张图片的相似度 1.首先打开微信,选择底部"发现".如图所示.2.然后在点击进入"小程序".如图所示.3.然后输入"腾讯AI体验中心&quo ...

  8. 基于python的K-means聚类提取图片主色

    基于python+opencv的彩色图片主色提取--利用K-means聚类算法 一.K-means聚类算法 1.K-means算法原理 2. K-means聚类算法流程 3.sklearn库中skle ...

  9. 基于经典的机器学习k-means聚类算法实现对三通道图片的压缩操作

    https://www.toutiao.com/a6573221465104056846/ 压缩图片的原理 k-means算法实现图像的压缩是k-means聚类算法的一个经典的应用,它把一个彩色图压缩 ...

最新文章

  1. java 复制 粘贴_在java中如何实现复制,粘贴,剪切
  2. 怎么在html中写当前时间,html页面怎么获取当前时间
  3. Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法
  4. 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
  5. 首次公开!菜鸟弹性调度系统的架构设计
  6. 大牛书单 | 春节特辑
  7. php 做积分策略,Heartbeat的切换策略-积分统计方法
  8. if函数python_pythonif函数
  9. 交叉编译iperf源代码
  10. 导出csv文件,导出axlsx文件。gem 'Axlsx-Rails' (470);导入csv文件。
  11. 图像语义分割之特征整合和结构预测
  12. zbrush史上最全笔刷下载43G(1200个)
  13. 这可能不只是一篇面经(BAT面试)
  14. Python调用OpenCV接口实现网络摄像头录像和抓拍图片
  15. 正向代理与反向代理详解
  16. ActiveReportsJS3.0 详解 ActiveReportsJS3.X
  17. vs 2015 update 3各版本下载地址
  18. 画论21 刘道醇《五代名画补遗》
  19. samba共享使用端口
  20. hp 打印机更改 wifi direct 的密码

热门文章

  1. 编程语言中,还有一种语言,那就是用中文来编程
  2. [BPM 架构]顶级免费和开源BPM软件
  3. 2015十大CMS系统介绍
  4. 深入理解C语言中两级指针(char **pptr)的参数的用法
  5. android 百度地图大头针,百度地图的集成 ---自定义大头针和弹窗
  6. unique中译_UNIQUE是什么意思_ UNIQUE的翻译_音标_读音_用法_例句_爱词霸在线词典...
  7. linux 字体 命令,Linux下的字体
  8. 跨平台API对接(Java)
  9. 设备跟服务器对接需要什么文档,『OneNET设备云平台』云平台对接服务_智能设备...
  10. Web_Dashboard开篇:如何在网页中制作炫酷的看板