本文在前人已有研究的基础上,利用MATLAB和C#编程语言,实现一个能检测人脸并通过人脸图像来估计年龄的系统。MATLAB主要用来实现算法以及封装代码,C#语言主要用来设计界面,展示最终的测试结果。
第一章是绪论,主要介绍了本论文的研究背景和意义,以及国内外的研究成果和存在的不足。同时也总结了本系统的整体框架。
第二章介绍了实现这个系统所用的工具和其对应的版本,以及这些工具的一些简单操作函数的介绍。
第三章介绍了人脸图像处理。首先介绍了本文选用的人脸数据库,然后简单介绍了图像的预处理方法和特征提取原理。
第四章着重介绍了年龄估计的方法。首先简单介绍了支持向量机的原理,再介绍基于此原理的年龄估计方法。
第五章为年龄估计系统的介绍。主要是使用系统进行年龄估计的流程,以及对估计结果的分析。
第六章为全文的总结。简要概括了本文所做的工作和存在的不足,并且对下一步工作做出展望。
第二章 系统相关工具简介
2。1系统开发环境
系统使用的开发工具有:Matlab 2012 64bit,Visual Studio 2010 64bit,libsvm-3。21。
2。2MATLAB简介
MATLAB是一款被设计用于算法开发,数值计算和数据分析的商业数学软件。介于Matlab强大的数字图像处理功能和接近数学表达式的自然化语言等特点,我选择它作为主要编程工具。MATLAB能处理多种图像格式,如bmp、jpg、tif、索引图像、灰度图像、彩色图像和二进制图像等。同时,Matlab还提供了很多适用于不同科研领域的应用工具箱(toolbox),如图像处理工具箱,财政金融工具箱,统计工具箱等。在本系统中,我主要应用了libsvm工具箱,该工具箱主要用来实现支持向量机算法。
2。3MATLAB处理图像基本操作
MATLAB软件封装了很多用于图像处理的函数,且函数的作用能通过函数名直观的表现出来,这里我对处理图像时常用的基本操作函数做些简单的介绍。读取图像通过imread()函数实现,显示图像通过imshow()函数,输出图像通过imwrite()函数。imresize(),imcrop(),imrotate()分别用来实现图像的缩放,裁剪,旋转功能。
由于MATLAB支持不同类型的图像处理,所以要想在不同的图像类型之间进行运算,就涉及到图像类型的转换。在MATLAB中,数值一般都是采用double型进行存储和运算,所以经常会用到double()函数将数据转换为双精度类型。
不同的图像之间有时候也需要进行类型的相互转换,例如mat2gray()是将矩阵转换为灰度图的函数,rgb2gray()是将RGB彩色图转换为灰度图的函数。
2。4Visual Studio 2010简介
Visual Studio是微软公司推出的一个开发软件,是如今使用最为广泛的Windows平台应用程序开发环境,支持多种语言的开发,并具友好的图形界面。本文中,主要利用其进行界面设计。
2。5C#和MATLAB的混合编程
本系统采用C#编程语言做界面,并在界面上调用摄像头,采集照片,而模型的训练和年龄估计则是用MATLAB程序来实现的。因此,这就涉及到C#和MATLAB程序的混合编程。用C#调用MATLAB程序的方法有很多种[8],本文中采用的方法是将MATLAB程序生成的。m文件编译成dll文件,然后在C#中直接添加引用即可。
在MATLAB中编写好程序后,会生成一个。m文件,在命令行输入deploypool命令后,会弹出一个对话框,如图2-1:
图2-1: deploytool命令对话框
其中,Name为文件名,Location为存储位置,Type选择。NET Assembly类型。
完成后,会生成。prj文件,然后在右侧状态栏中进行prj文件的配置,即添加相应的类和文件。上述工作完成后会生成一个文件夹,文件夹包含distrib和src两个文件夹,而src文件夹中的dll文件就是我们需要的文件。