前言:人脸识别是一个很经典的课题,围绕它可以做成很多实际应用,比如教室人脸考勤,人脸门禁系统,无人超市购物系统,刷脸支付系统等等。可是,为什么这一切是靠什么进行匹配人脸的呢,怎么那么神奇呢。人脸识别的主流方法有PCA,KPCA,bp神经网络,卷积神经网络cnn,向量机SVM,LDA,ICA,稀疏矩阵等等方法。该文主要讲解PCA算法,讲PCA具体是怎么降维的,何为降维,怎么就降维了,以及何为人脸特征向量等。本人尽自己所能,讲到通俗易懂,平易近人,以简单的矩阵做枚举,讲的不好的地方多多包涵。
1、假设简单矩阵为人脸图像的矩阵
假定张三,李四,王五3人的归一化同样大小以后的灰度图像分别为A,B,C,为减少记忆量,其对应矩阵同名为A,B,C。
假设A如下:
2 | 1 | 3 |
4 | 2 | 1 |
1 | 2 | 0 |
用矩阵表示,就是
A=
2 1 3
4 2 1
1 2 0
假设B如下:
0 | 1 | 2 |
2 | 2 | 3 |
3 | 8 | 1 |
用矩阵表示,就是
B=
0 1 2
2 2 3
3 8 1
假设C如下:
4 | 0 | 3 |
1 | 1 | 0 |
3 | 4 | 5 |
用矩阵表示,就是
C=
4 0 3
1 1 0
3 4 5
1、对矩阵进行列向处理
对矩阵A, B,C进行按列排序转换,设I是m行n列的矩阵,matlab使用方式是:I1 = I(:)表示矩阵I生成m*n行1列的矩阵。
A= A(:)
同理,取列后的矩阵为:
同理,取列后的矩阵C为:
1、对矩阵进行行向处理
对取列后的矩阵A、B、C再进行转置,即将矩阵逆时针旋转90°,再上下镜像翻转180°,线性代数表示式是:(A)T , (B)T , (C)T, matlab公式为:A = A';
对A进行转置,转置后的矩阵A为:
同理,转置后的矩阵B为:
同理,转置后的矩阵C为:
至此,完成了以下工作:
也就是原来3行3列的矩阵A,B,C变成了现在的1行9列,如下图所示:
张三A | 2 | 4 | 1 | 1 | 2 | 2 | 3 | 1 | 0 |
李四B | 0 | 2 | 1 | 1 | 2 | 2 | 2 | 3 | 0 |
王五C | 4 | 1 | 3 | 0 | 1 | 4 | 3 | 0 | 5 |
1、取均值
对以上3个行向量取平均值,matlab调用格式为:mA=mean(samples),如下图:
1、求偏差矩阵,即每个向量跟均值作差
张三李四王五的ABC向量分别减去平均向量mA,即samples-mA,对应像素相减,结果为下图所示:
因工作原因,MATLAB主成分PCA人脸识别深度解析(二)待续。。。抽丝剥茧深度解剖PCA主成分人脸识别系统算法,有需要可私心本人,会抽时间进行撰写。
创作不易,多多点赞,好评,转发。。。