资源描述:
《一个面像识别系统的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第35卷第3期郑州大学学报(理学版)Vol.35No.32003年9月JOURNALOFZHENGZHOUUNIVERSITYSep.2003一个面像识别系统的实现王诗臻(河南财经学院计算机科学系郑州450002)摘要:用VC++这类语言实现面像识别算法,工作量很大,如果用MATLAB实现,虽然在图像处理及模式识别方面较为方便,但运行速度慢.针对这个问题给出一种开发方式,在VC++平台上开发系统主控模块及数据库系统,用MATLAB实现基于DCT变换的面像识别子系统,由MATLAB编译成C++动态库源程序,在VC++下修改并编译成动态库,由主控模块调用动态库实现面相识别.该方法具有可以灵
2、活选择识别算法、识别率高、开发方法容易、开发周期短、可移植性强等优点.关键词:面像识别;MATLAB;MATCOM;VC++;DCT;DLL中图分类号:TP317.4文章编号:1671-6841(2003)03-0052-040引言面像识别系统的用途非常广泛,因而,引起了人们的极大兴趣.国内外学者进行了大量的研究,提出了很[1][2][3][4][5]多种算法,如神经网方法、小波变换方法、隐马尔科夫方法、特征法、DCT变换法、FFT法及混合方法等.其中,DCT变换是一种较为简单的算法,但其识别率并不低.开发面像识别系统,需要选择实现算法的平台.如果使用VC++作为平台,建立数据库系统并
3、不困难,有多种方法可供选择,如MFCODBC,OLEDB,ADO等.对于不同格式图像的处理,如JPG文件的解压,图像特征的提取等,如果用VC++实现则很麻烦.采用MATLAB对图像进行处理,方法十分简单.如果用MATLAB作平台开发面像识别系统,由于MATLAB采用解释方式,循环语句执行速度很慢,也不理想.本文将二者结合起来,用MATLAB函数进行图像处理及模式识别,然后再转换成C++源代码.MATLAB的mcc可以将MAT2LAB代码转换成C++源代码.但是,mcc功能有限,对于一些图像处理的函数无法转换,因此,只有采用MATCOM将MATLAB代码转换成C++源代码.1面像识别系统
4、111系统开发过程用VC++建立数据库应用系统,如人事档案管理系统;用MATLAB编写基于DCT变换的照片训练和识别程序,然后用MATCOM转换成C++的动态库源程序;在VC++下进行修改并编译成动态库,在VC++的数据库应用系统中就可以调用动态库函数对照片进行训练和识别了.面像识别部分主要流程如图1所示.112数据库系统的建立在VC++下利用MFC的记录集类或ADO等方法建立数据库系统.数据库使用SQL、ACCESS或DBF等均可,都有相应的字段可保存照片.考虑到节省存储空间,照片图像,采用JPG格式.在VC++下,显示JPG格[6]式图像要麻烦一些.为了简单起见,使用Richard
5、C.Leinecker编写的ImageObject类库,可以很容易在对话框上显示JPG等格式的图像.收稿日期:20030219作者简介:王诗臻(1949—),男,副教授,主要从事图像处理研究.©1994-2008ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net第3期王诗臻:一个面像识别系统的实现53图1面像识别方法流程2照片处理2.1照片预处理为了对照片进行训练,要将所有的照片放大或缩小到统一的尺寸.为了节省空间,将所有照片缩至100×100像素,用MATLAB的函数很
6、容易实现.还需用后面所述的方式将对照片预处理的MATLAB程序编译成动态库,然后在VC++的函数中调用.如果照片中含有噪声,需要将其滤除.如果照片的光线不足或过强,还需要调整灰度,使其达到最佳效果.2.2照片训练采用DCT变换方法进行训练.每个人用5张100×100像素的照片,读入后分别进行DCT变换,得到100×100系数矩阵.图像的能量主要集中在低频部分,一般情况下,只要取矩阵中系数较大的低频分量作为图[5]像的特征进行训练就可以了.这里使用的JPG图像为有损压缩图像,而且照片又曾被缩小,为了保证识别率,可以多取一些DCT系数进行训练.将训练用的5张照片的DCT系数矩阵相加,求出平
7、均值作为训练数据保存在文件中,供以后识别用.由于照片有彩色和黑白之分,使读入的照片矩阵的维数不同,因而,照片读入后要统一转化为2维矩阵再进行DCT变换.作为识别的特征.如果都是彩色照片,则分别对每一个2维矩阵进行DCT变换即可.训练时,为区分不同的照片,须先建立照片的文件名和人员编号对照表文件.在VC++下,由用户将照片文件名和人员编号输入到数据库中,然后由程序将数据取出,写入到文本文件“trainname.txt”中.训练程序用MATLAB编