1.实验目的
本实验采取PCA算法和FSISHER准确的方法,实现人脸识别的得到,最后结合KNN算法达到准确率的统计,设计一个基于pca+Fisher+knn的人脸识别算法。
2.实验原理
对线性判别函数的一般形式可表示
根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为:
3.2 特征描述
对待测样本进行特征提取,采用的是模板法,首先找到每个手写样本的起始位置,在此附近搜索该样本的宽度和高度;将每个样本的长度和宽度 N等份,构成一个 N×N 的均匀小区域;这 N×N 的小区域就是模板,对于每一小区域内的黑像素个数进行统计, 除以该小区域的面积总数, 即得特征值。这样做的好处是,针对同一形状、不同大小的样品得到的特征值相差不大,有能力对同一形状、不同大小的样本视为同类。 N 值越大,模板也越大,特征越多,区分不同的物体能力越强,但同时计算量增加,运行等候的时间增长,所需样品库也要成倍增加。 N 值过小,不利于不同物体间的区别。因此本设计的N取5,即采用5*5的模板,将手写数字的特征提取出来。具体的函数调用见程序GetFeature.m。
3.3 Fisher分类器的实现
Fisher分类器主要进行两类问题的分类,而问题中要解决0~9中10个数字的分类识别问题,所以要构建10×(10-1)/2=45次分类,Fisher算法描述如下:
上树算法描述中,采用了两类Fisher分类法 ,在实际编程时需要两两分类处理,最后在计算结果对应最大值者位置为对应的类别序号,即为识别结果。
4 试验的结果
这是代表了原始的数据
Pca的方法
主要的代码
LDA的方法
图 代表的是lda后的处理数据
KNN的方法 在matlab2018版本上操作
进行knn的方法
结果
可以看出真实的数据和测试的数据的结果
如果真实和测试重合在一起 证明预测对了
源程序链接为:基于pca+Fisher+knn准则实现人脸识别-matlab-Matlab文档类资源-CSDN下载
如有侵权,请私信作者删除