图像相似度计算-kmeans聚类
关于图像相似度,主要包括颜色,亮度,纹理等的相似度,比较直观的相似度匹配是直方图匹配.直方图匹配算法简单,但受亮度,噪声等影响较大.另一种方法是提取图像特征,基于特征进行相似度计算,常见的有提取图像的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聚类相关推荐
- 图像相似度计算之直方图方法OpenCV实现
操作步骤: 1. 载入图像(灰度图或者彩色图),并使其大小一致: 2. 若为彩色图,增进行颜色空间变换,从RGB转换到HSV,若为灰度图则无需变换: 3. 若为灰度图,直 ...
- python 复杂数据相似度计算_Opencv python图像处理-图像相似度计算
一.相关概念 1. 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定 ...
- 图像相似度计算之哈希值方法OpenCV实现
感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个"指纹"(fingerprint)字符串,然后比较不同图像的指纹.结果越接近,就说明 ...
- 计算图像相似度——《Python也可以》之一
计算图像相似度--<Python也可以>之一 声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意, ...
- 计算图像相似度——《Python也可以》之一(转)
声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday,如蒙转载,敬请确保全文完整,未经同意,不得用于商业用途. 关于<Python也可以> ...
- 基于 K-means 聚类算法实现图像区域分割matlab代码
1 简介 对图像进行颜色区域分割.将图像转换到CIE L*a*b颜色空间,用K均值聚类分析算法对描述颜色的a*和b*通道进行聚类分析;通过提取各个颜色区域独立成为单色的新图像,对图像进行分割处理.实验 ...
- 如何计算两幅图像的相似度,计算两张图片相似度
怎么对比两张图片的相似度 1.首先打开微信,选择底部"发现".如图所示.2.然后在点击进入"小程序".如图所示.3.然后输入"腾讯AI体验中心&quo ...
- 基于python的K-means聚类提取图片主色
基于python+opencv的彩色图片主色提取--利用K-means聚类算法 一.K-means聚类算法 1.K-means算法原理 2. K-means聚类算法流程 3.sklearn库中skle ...
- 基于经典的机器学习k-means聚类算法实现对三通道图片的压缩操作
https://www.toutiao.com/a6573221465104056846/ 压缩图片的原理 k-means算法实现图像的压缩是k-means聚类算法的一个经典的应用,它把一个彩色图压缩 ...
最新文章
- java 复制 粘贴_在java中如何实现复制,粘贴,剪切
- 怎么在html中写当前时间,html页面怎么获取当前时间
- Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法
- 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
- 首次公开!菜鸟弹性调度系统的架构设计
- 大牛书单 | 春节特辑
- php 做积分策略,Heartbeat的切换策略-积分统计方法
- if函数python_pythonif函数
- 交叉编译iperf源代码
- 导出csv文件,导出axlsx文件。gem 'Axlsx-Rails' (470);导入csv文件。
- 图像语义分割之特征整合和结构预测
- zbrush史上最全笔刷下载43G(1200个)
- 这可能不只是一篇面经(BAT面试)
- Python调用OpenCV接口实现网络摄像头录像和抓拍图片
- 正向代理与反向代理详解
- ActiveReportsJS3.0 详解 ActiveReportsJS3.X
- vs 2015 update 3各版本下载地址
- 画论21 刘道醇《五代名画补遗》
- samba共享使用端口
- hp 打印机更改 wifi direct 的密码
热门文章
- 编程语言中,还有一种语言,那就是用中文来编程
- [BPM 架构]顶级免费和开源BPM软件
- 2015十大CMS系统介绍
- 深入理解C语言中两级指针(char **pptr)的参数的用法
- android 百度地图大头针,百度地图的集成 ---自定义大头针和弹窗
- unique中译_UNIQUE是什么意思_ UNIQUE的翻译_音标_读音_用法_例句_爱词霸在线词典...
- linux 字体 命令,Linux下的字体
- 跨平台API对接(Java)
- 设备跟服务器对接需要什么文档,『OneNET设备云平台』云平台对接服务_智能设备...
- Web_Dashboard开篇:如何在网页中制作炫酷的看板