图像的 2DPCA 与 2D2DPCA 特征提取
来源:互联网 发布:礼券自助提货系统源码 编辑:程序博客网 时间:2024/06/05 00:58
引言
众所周知,PCA(Principal Component Analysis) (也叫作 Karhunen-Loeve 变换)在模式识别和计算机视觉领域是一个经典的特征提取和数据降维的工具。而2DPCA(二维主成分分析法)方法是在 PCA 的基础之上发展起来的一种新型的主成分分析方法. 相对于传统的PCA方法,2DPCA是基于二维图像矩阵的,而非一维图像向量。这种处理方法不需要事先把图像转成一维的向量,相当于去除了图像的行向量或列向量的相关性。
2DPCA 的优点
在 2DPCA 中,图像的协方差矩阵可以通过使用原始图像矩阵直接构造出来。与 PCA 构造的协方差矩阵相比,使用 2DPCA 的协方差矩阵要小很多。其主要优点有:
- 直接地计算训练样本的写法差矩阵;
- 计算特征值特征向量所需要的时间比较少。
2DPCA 的数学基础
2DPCA 是 Yang 和Zhang 等人提出来的一种直接图像投影技术,本质上是一种主成分的方法,同时也是一种非监督的学习方法。
设
其中
计算
2D2DPCA
由于只在列方向降低了维数,降维的效果不理想。为了更好的降维,D.Q. Zhang 和 Z.H. Zhou 提出了双向的二维主成分分析方法(2D2DPCA),也就是在行和列两个方向都进行2DPCA处理。
对所有的训练样本进行上诉的 2DPCA 处理之后得到新的训练样本
同理,求
至此,两个投影方向的最优投影矩阵
Python 实现
2DPCA 的实现
def TwoDPCA(imgs,p):'''imgs 是三维的图像矩阵,第一维是图像的个数''' a,b,c = imgs.shape average = np.zeros((b,c)) for i in range(a): average += imgs[i,:,:]/(a*1.0) G_t = np.zeros((c,c)) for j in range(a): img = imgs[j,:,:] temp = img-average G_t = G_t + np.dot(temp.T,temp)/(a*1.0) w,v = np.linalg.eigh(G_t) w = w[::-1] v = v[::-1] for k in range(c): alpha = sum(w[:k])*1.0/sum(w) if alpha >= p: u = v[:,:k] break return u
2D2DPCA 的实现
def TTwoDPCA(imgs,p): u = TwoDPCA(imgs,p) a1,b1,c1 = imgs.shape img = [] for i in range(a1): temp1 = np.dot(imgs[i,:,:],u) img.append(temp1.T) img = np.array(img) uu = TwoDPCA(img,p) return u,uu
参考文献
[1] Jian Y, David Z, Frangi A F, et al. Two-dimensional PCA: a new approach to appearance-based face representation and recognition.[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2004, 26(1):131-137.
[2] 陆丽. 基于人脸图像的性别识别与年龄估计研究[D]. 上海交通大学, 2010.
- 图像的 2DPCA 与 2D2DPCA 特征提取
- 图像特征提取2
- 2DPCA以及增强的双向2DPCA详解
- 图像特征提取2: Haar特征
- 图像特征提取2: Haar特征
- 图像特征提取2—HOG特征
- 图像特征的提取与表达
- 图像的特征提取
- 图像的特征提取
- 图像特征的提取
- 图像的特征提取
- 人脸2DPCA算法
- 图像特征提取:图像的矩特征
- 图像特征提取与匹配
- 图像特征提取与描述
- 图像处理与特征提取
- 图像显著性区域提取[2]-特征提取
- 图像特征提取的总结
- 通过ModelAndView返回页面,但是空白页面
- C# 序列化和反序列化
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- LeetCode之双指针(2)
- SimpleConfig结果显示导致app崩溃
- 图像的 2DPCA 与 2D2DPCA 特征提取
- QTcpSocket 及 TCP粘包分析
- 使用UncaughtExceptionHandler重启线程
- 再次复习java正则表达式
- Baidu地图的相关开发经验
- Python中的下划线(译文)
- Java停止线程
- 【poj2001】Shortest Prefixes 字典树
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT