引言

众所周知,PCA(Principal Component Analysis) (也叫作 Karhunen-Loeve 变换)在模式识别和计算机视觉领域是一个经典的特征提取和数据降维的工具。而2DPCA(二维主成分分析法)方法是在 PCA 的基础之上发展起来的一种新型的主成分分析方法. 相对于传统的PCA方法,2DPCA是基于二维图像矩阵的,而非一维图像向量。这种处理方法不需要事先把图像转成一维的向量,相当于去除了图像的行向量或列向量的相关性。

2DPCA 的优点

在 2DPCA 中,图像的协方差矩阵可以通过使用原始图像矩阵直接构造出来。与 PCA 构造的协方差矩阵相比,使用 2DPCA 的协方差矩阵要小很多。其主要优点有:

  1. 直接地计算训练样本的写法差矩阵;
  2. 计算特征值特征向量所需要的时间比较少。

2DPCA 的数学基础

2DPCA 是 Yang 和Zhang 等人提出来的一种直接图像投影技术,本质上是一种主成分的方法,同时也是一种非监督的学习方法。
设 Ai,i=1,2,⋯,NA_i,i=1,2,\cdots,N 是 NN 个样本图像,Aj∈Rm×nA_j\in R^{m\times n}。 首先计算协方差矩阵,也就是总体散布矩阵 GtG_t :

Gt=1N∑j=1N(Ai−A^)T(Aj−A^),

G_t=\frac{1}{N}\sum_{j=1}{N}(A_i-\hat{A})^T(A_j-\hat{A}),
其中 A^=1N∑Nj=1Ai\hat{A}=\frac{1}{N}\sum_{j=1}^NA_i 是全体样本的均值.
计算 GtG_t 的特征值和特征向量,取特征值累计贡献率 α=0.9∼0.99\alpha=0.9\sim0.99 所对应的特征向量组成投影矩阵 U=[u1,u2,⋯,uk]∈Rn×kU=[u_1,u_2,\cdots,u_k]\in R^{n\times k}. 则, Fj=Aj⋅U∈Rm×kF_j=A_j\cdot U\in R^{m\times k} 就是 AjA_j 的特征。可知,原来二维的图像的大小为 m×nm\times n 现在降维 m×km\times k, kk 是根据 α\alpha 来确定的。也就是,实行特征提取后只是压缩了图像矩阵列向量的位数,行向量维数不变。

2D2DPCA

由于只在列方向降低了维数,降维的效果不理想。为了更好的降维,D.Q. Zhang 和 Z.H. Zhou 提出了双向的二维主成分分析方法(2D2DPCA),也就是在行和列两个方向都进行2DPCA处理。
对所有的训练样本进行上诉的 2DPCA 处理之后得到新的训练样本 Fj,j=1,2,⋯,NF_j,j=1,2,\cdots,N,其中 Yj∈Rm×kY_j\in R^{m\times k}。在新样本上构造协方差矩阵 G∗tG_t^*:

G∗t=1N∑i=1N(Fi−F^)(Fi−F^)T

G_t^*=\frac{1}{N}\sum_{i=1}^N(F_i-\hat{F})(F_i-\hat{F})^T
同理,求 G∗tG_t^* 的特征值与特征向量,取特征值累计贡献率为 α\alpha 的特征向量,得到行方向的投影矩阵 V=[v1,v2,⋯,vd]V=[v_1,v_2,\cdots,v_d]。 FiF_i 的投影为 VT⋅Fi∈Rd×kV^T\cdot F_i \in R^{d\times k}.
至此,两个投影方向的最优投影矩阵 UU 和 VV 都求得了,对于图像 Aj∈Rm×nA_j\in R^{m\times n} 最终的降维矩阵为 Yj=VT⋅Aj⋅U∈d×kY_j =V^T\cdot A_j \cdot U \in ^{d\times k}。其重构图像为 Aapproxj=V⋅Yj⋅UTA_j^{approx} = V\cdot Y_j \cdot U^T.

Python 实现

2DPCA 的实现

def TwoDPCA(imgs,p):
'''
imgs 是三维的图像矩阵,第一维是图像的个数
'''a,b,c = imgs.shapeaverage = 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-averageG_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]breakreturn u

2D2DPCA 的实现

def TTwoDPCA(imgs,p):u = TwoDPCA(imgs,p)a1,b1,c1 = imgs.shapeimg = []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 特征提取相关推荐

  1. PCA与2DPCA及2D-2DPCA零基础理解(下)

    有小伙伴催了好久的这篇文章,我也是一拖再拖,PCA与2DPCA及2D-2DPCA零基础理解(上)已经发布了两年了,这几天由于疫情的原因,我专门找出时间来写这篇博文.以前感觉:怎样确定哪张人脸是属于哪个 ...

  2. python提取人物特征_基于图像人物面部表情识别的特征提取优化方法与流程

    本发明涉及一种基于图像人物面部表情识别的特征提取优化方法,主要利用基于统计特征提取的二维主成分分析法和改进的粒子群算法优化图像矩阵的解,属于图像处理.模式识别和计算机视觉交叉技术应用领域. 背景技术: ...

  3. PCA与2DPCA及2D-2DPCA零基础理解(上)

    首先要知道为什么PCA是什么,为什么要用PCA.PCA即主成分分析,例如对于一幅图像,要表示它,可以用他的主要部分表示即可,这样可以降低在图像处理中的数据处理难度,例如可以降低数据的存储容量.那么,什 ...

  4. 【图像处理】——Python+opencv实现图像的hu不变矩特征提取(含原理、推导过程、应用、代码等)

    目录 转载本文请注明详细地址 本文介绍了矩和图像矩的含义 本文介绍了不变矩的计算.应用 本文介绍了如何计算图像相似度 一.思维导图 二.普通矩的定义 1.零阶矩 2.二阶矩

  5. 2DPCA的原理推导与实现

    文章首发于我的个人博客 1.前言 在基于PCA的人脸识别算法中,二维人脸图像要先转换为一维向量.这就导致人脸图像向量将达到高维空间,由于其协方差矩阵维度很高而且训练样本很少,因此很难评估协方差矩阵的准 ...

  6. 数字图像处理与Python实现笔记之图像特征提取

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...

  7. 自动化特征提取器:图像特征提取和深度学习

    自动化特征提取器:图像特征提取和深度学习 转载:github 译者:@friedhelm739 视觉和声音是人类固有的感觉输入.我们的大脑是可以迅速进化我们的能力来处理视觉和听觉信号的,一些系统甚至在 ...

  8. 面向机器学习的特征工程 八、自动化特征提取器:图像特征提取和深度学习

    来源:ApacheCN<面向机器学习的特征工程>翻译项目 译者:friedhelm739 校对:(虚位以待) 视觉和声音是人类固有的感觉输入.我们的大脑是可以迅速进化我们的能力来处理视觉和 ...

  9. 特征工程(七):图像特征提取和深度学习

    来源:https://mp.weixin.qq.com/s/pZWKECYyvLlkB-Qt8wi0fw 视觉和声音是人类固有的感觉输入.我们的大脑是可以迅速进化我们的能力来处理视觉和听觉信号的,一些 ...

最新文章

  1. 记一次与iframe之间的抗争
  2. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?
  3. 研发协同平台持续集成Jenkins作业设计演进
  4. linux aemv7,无法在我的Ubuntu machin中安装“xlwings”
  5. 《深入理解JVM.2nd》笔记(一):走进Java
  6. mysql5.5编译安装参数_mysql-5.5源码编译安装(附参数对照表)
  7. RocketMQ消费失败如何处理?如何保证消费消息的幂等性?
  8. sqlalchemy 事务
  9. 第 2 章 Readme
  10. 菜鸟笔记 -- Chapter 6.4.2 详解继承
  11. 升级Xcode8后需要添加的一些权限
  12. 将java项目打包为jar
  13. Unity3D 5.3 新版AssetBundle使用方案及策略
  14. STM32L4系列单片机如何使用RTC唤醒定时器进入Standby低功耗模式并唤醒+整机功耗测试
  15. 关于文章关键字词云的生成
  16. 练习京东顶部导航条、背景、渐变、按钮练习(雪碧图)、渐变
  17. 微云Android2.2apk,微云安卓版V6.2.10
  18. ROS学习之error解决记录
  19. Justinmind破解
  20. 厦门大学马来西亚分校打造更美好的智慧校园

热门文章

  1. Vue v-for 时,单个元素class的控制
  2. mysql sql 除法运算_SQL语句怎么表示除法运算?
  3. c4d软件在哪修改语言,c4d怎么改成中文(C4D怎么选择中文语言)
  4. algodoo是什么意思_洋是什么意思 带洋字的男孩名字 用洋字起名的寓意
  5. Redis知识点整理(详讲)
  6. 抖音电商如何直播带货留人,以及催促成交技巧丨国仁网络
  7. DataNucleus JDO基础入门
  8. 混合动力汽车用导热电池粘合剂市场现状及未来发展趋势
  9. Hoofball(B题)
  10. Centos7安装uwsgi出现关于SSL错误的问题