其中,xi∈样本训练集X=(x1,x2,…,xN)。
第二步,求出散布矩阵S,如式(2)所示
根据PCA的基本原理,必须求出散布矩阵的特征值λi和对应的特征向量ei。其中,ei便是主分量,且其对应的特征值的大小代表它包含信息的多少。所以需要将特征值从大到小依次排列λ1,λ2,…。如图2所示,左边是由λ1对应的特征向量重建的人脸图像,基本能分辨出人脸的轮廓,右边是由λ100对应的特征向量重建的图像,看起来更像是噪声,如果将其应用到系统中,对识别是不利的。
假设取出p个值,λ1,λ2,…,λp可以确定出脸空间E=(e1,e2,…,eP),在此脸空间上,训练样本X中,每个元素投影到该空间的点可以由式(3)得到
由上式得到的是将原向量经过PCA降维后的p维向量,下一步便是将其输入KNN分类器进行分类。
1.3 KNN分类器的构建
KNN的实现分训练和识别两步。训练时,把每类样本降维后的结果作为KNN的输入。K近邻算法将一个测试点x分类为与它最接近的K个近邻中出现最多的那个类别,从测试样本点开始生长,不断扩大区域,直到包含进K个训练样本点为止,并且把测试样本点的类别归为这最近K个训练样本点中出现频率最大的类别。如图3所示,圆圈表示待识别数据所处的位置,选择K值为3时,选中实线圆中的3个数据,识别结果为三角形代表的类;选择K值为5时,选中虚线圆中的5个数据,识别结果为正方形代表的类。所以选取恰当的K值对分类的结果有很大影响。如果K值选取过大时,可能能较正确地分类,但是同时牺牲了性能,提高了计算复杂度。如果K值选取过小,则大大降低了计算复杂度,但是可能会影响分类的准确性。
2 系统硬件设计
系统设计时选用TMS320C6713,这是TI公司生产的C6000系列的浮点处理器,其采用了VLIW体系结构,指令运行的等效周期数较低,运行速度较快。图像的采集采用了PAL制式输出的普通摄像头加上TI公司生产的图像编码芯片TVP5147,该芯片支持多种制式,多种接口输入,并可以输出YUV格式的视频数据,同时提供行同步信号和垂直同步信号等。数据暂存使用CPLD和SRAM实现。设计系统构成,如图4所示。
2.1 TVP5147芯片
系统上电时,TMS320C6713首先对TVP5147初始化,其通过I2C总线实现,DSP自带I2C总线控制器。芯片I2C地址是由芯片引脚I2CA的电平控制的,如该引脚接高电平,则I2C写地址为0xB8,否则为OxBB。