人脸识别和车牌识别科研与训练报告.docx
《人脸识别和车牌识别科研与训练报告.docx》由会员分享,可在线阅读,更多相关《人脸识别和车牌识别科研与训练报告.docx(13页珍藏版)》请在冰豆网上搜索。
![人脸识别和车牌识别科研与训练报告.docx](https://file1.bdocx.com/fileroot1/2023-1/31/e0d58995-3a2b-4714-a7a8-6e83ee516315/e0d58995-3a2b-4714-a7a8-6e83ee5163151.gif)
人脸识别和车牌识别科研与训练报告
生物医学工程科研训练小组报告
项目:
智能识别门禁系统
项目负责人:
指导老师:
一、项目内容
本项目是通过摄像头在一定距离内,捕捉到车牌和人脸的图像,通过图像处理技术(车牌的定位识别,人脸的定位,提取特征,模式识别),把车牌和人脸的信息提取出来,与数据库中存储的信息对比,来控制门的开关。
为防止人脸识别出错,同时安装有指纹识别装置。
二、目的意义
本项目是通过摄像头在一定距离内,捕捉到车牌和人脸的图像,通过图像处理技术(车牌的定位识别,人脸的定位,提取特征,模式识别),把车牌和人脸的信息提取出来,与数据库中存储的信息对比,来控制门的开关。
为防止人脸识别出错,同时安装有指纹识别装置。
三、国内外的发展现状
车牌识别
从20世纪90年代初(1988年),国外的研究人员就已经开始了对(车牌识别系统)LPR系统[1]的研究,其主要途径就是对车牌的图像进行分析,自动提取车牌信息,确定汽车牌号。
在车牌识别过程中,虽然运用了很多的技术方法,但由于外界环境光线变化、光路中有灰尘、季节环境变化及车牌本身比较模糊等条件的影响,使得LPR系统一直得不到很好的应用,而且很多的方法都需要大量的数值计算,没有考虑到实时处理的要求。
为了解决图像恶化的问题,目前国内外的研究机构或公司企业采取的办法是采用主动红外照明摄像或使用特殊的传感器来提高图像的质量,继而提高识别率,这样做的同时也造成了系统的投资成本过大,应用领域变小,不适合普通的推广。
但是上述系统都不适合我国的车牌识别,主要原因有:
①我国的车牌缺乏统一的标准,使车牌识别过程中字符分割的难度加大,我国车辆根据不同车型和用途规定了多种牌照,颜色大小均有可能不同,仅车牌底色和字符颜色就有多种,从而增加了识别难度;
②由于环境或人为因素造成的牌照污染严重的汽车,发达国家不允许上路,而我国认可上路行驶;
③我国汽车牌照中的汉字识别较英语字母和数字困难,增加了车辆识别的难度;
④我国车牌的规范悬挂位置不统一。
国内在90年代也开始了车牌识别的研究。
中国科学院自动化所的刘智勇等发表文章,他们在一个样本数为3180的样本集中,车牌定位准确率为99.42%,切分准确率为94.52%,从当时来看这是一个非常高的指标;北航的胡爱民等也利用模板匹配技术开发了一种车牌识别系统,其识别正确率报道为97%以上,应用环境为收费站;华南理工大学的骆雪超,刘佳雄等提出了一种基于车牌特征信息的二值化方法,该系统对效果好的车牌识别率达到96%。
浙江大学的张引对车牌识别系统中的二值算法进行了深入的研究,且发表了多篇文章;华侨大学的黄志斌对张引等的算法又进行了改进,主要是速度上的改进;上海交大萝芸也对车牌识别系统中的二值化算法提出了不同意见。
浙江大学的章东平等对车牌识别系统中车辆牌照的字符切分算法进行了深入研究,并提出了几个经验系数。
另外还有大量的学者对车牌识别系统进行了研究,并应用了大量的算法。
目前比较成熟的产品有中科院自动化研究所汉王公司的“汉王眼”,亚洲视觉科技有限公司、深圳吉通电子有限公司、中国信息产业部下属的中智交通电子有限公司等也有自己的产品。
人脸识别研究现状
1.香港研发最精确面部识别软件
近日,香港中文大学的计算机科学家们研发出世界上最精确的面部识别软件,在测试中这种程序达到了近乎完美的精确度,可能为公共安全技术领域带来颠覆性的革新。
这种创纪录的软件由香港中文大学汤晓鸥教授及其团队研发,在测试中达到99.15%的识别准确率,胜过目前所有的同类软件,甚至高出人类自身97.53%的识别准确率。
2.英国警方测试世界最快人脸识别技术。
英国现有超过六百万个闭路电视摄像头同时运转,这使英国成了最受“关注”的国家。
这些摄像头是用来维护正义的“眼睛”。
该软件的特别之处在于它能够通过监控探头同时追踪成千上万张面孔,并实时与数据库中9万张照片进行比对,而这些动作在几秒钟内就能完成。
四、研究技术路线
车牌检测
车牌识别系统的相关算法由三部分组成:
车牌定位、字符分割、字符识别
(一)常用的车牌定位算法:
1、基于车牌颜色特征的车牌定位算法
2、基于车牌区域频谱特征的车牌定位算法
3、基于分类器的车牌定位算法
4、基于车牌边缘特征的车牌定位算法
5、基于改进IsotropicSobel边缘检测算子的车牌定位算法
几种边缘检测算子
A、Roberts边缘检测算子
Roberts算子是一种利用局部差分算子来求取边缘的算子。
它通过一对在垂直方向上做差分的算子来计算该方向上相邻像素的梯度梯度值
B、Prewitt边缘检测算子
Prewitt算子是通过卷积的计算方式求取图像边缘的一种边缘检测算子
C、Sobel边缘检测算子
Sobel算子是根据邻域像素与当前像素的距离有不同的权值,强调中心像素的对边邻域像素对其的影响,而消弱4个对角近邻像素的作用。
(二)车牌字符分割
字符分割就是通过对车牌图像的预处理、几何校正等把字符从车牌图像中分割出来,分成一个个独立的字符,其输入是车牌定位后得到的车牌图像,输出是经过预处理、几何校正等后得到的一组单个的字符图像,并得到各个字符的点阵数据。
1、基于投影的车牌分割算法
基于投影的车牌分割算法,首先是对车牌区域进行投影,然后利用投影后的波峰、波谷的特性进行分割车牌字符。
这种算法设计简单,执行快,便于设计和操作。
该算法的缺点是,由于利用车牌的波峰、波谷信息,这就使得算法对车牌的质量要求较高,不能很好的解决字符黏贴和汉字不连通的问题。
2、基于模板匹配的字符分割算法
基于模板匹配的字符分割算法的原理是,首先设计出一个字符间隔宽度的模板和一个字符宽度的模板,然后让已设计的模板在定位出的车牌区域中移动,求取字符间隔宽度模板内的像素值之和与字符宽度模板内的像素值之和的比值,通过比值与所设定的极小值的比较来确定分割点的位置。
模板匹配算法的优点是可以较好的解决字符粘连和汉字的不连通问题,执行速度也很快,受车牌图像的背景干扰小。
缺点是,这种算法逻辑设计相对复杂,循环扫描执行功能较多,执行受到车牌左右边框影响较大,对左右边界的分割有待改进,并且不适合两行字符的车牌,具有局限性。
(三)字符识别
1、基于模板匹配的字符识别算法
匹配就是将不同传感器或同一传感器在不同时间、不同成像条件下对同一景象获取的两幅或者多幅图像在空间上对准,或者根据已有模式在另一幅图像中寻找相应的模式。
在遥感图像的处理时需要把不同波段传感器对同一事物的多光谱图像按照像点对应套准,然后根据像点的性质进行分类。
2、基于特征统计匹配算法
基于特征统计匹配算法主要原理是先提取输入模式的车牌字符统计特征,再按照一定的规则与所确定的决策函数进行分类判断。
字符的统计特征包括像素块数、字符的轮廓数、轮廓的形状等。
3、基于分类器的字符识别
基于分类器的字符识别,是目前应用较广的一种车牌识别方式。
其主要的思路是通过对样本数据的学习,达到自动将数据分类到已知类型。
分类器其实是一种数学模型,目前有很多类型的分类器,包括Bayes分类器、决策树模型、BP神经网络分类器等。
人脸识别
要实现一个自动的人脸识别系统主要完成以下的4个功能
1、人脸检测与分割。
【从任意的场景中检测人脸的存在并进行定位,提取出一个人脸。
】
2、人脸的规范化。
【校正人拦在尺度、光照和旋转等方面的变化。
】
3、人脸的表征。
【采取某种方法表示出数据中的已知人脸和检测出的人脸,通常的方法有集合特征、代数特征、特征脸、固定特征模板】
4、人脸识别。
【根据人脸的表征方法,选择适当的匹配策略将得到的人脸与数据库中的已知人脸相比较】
(1)人脸定位
常用人脸定位的方法有三种:
基于模板匹配的算法、基于神经网络的算法、基于肤色的算法。
首先,利用图像的运动信息提取人脸范围,删除掉非人脸的活动区域,通过此步骤,可以很大程度上缩小搜索区域,因此充分提高了运算速度。
其次,将BP神经网络的肤色分割算法利用在提取的人脸搜索区域,由此可以提取出肤色区域,然后对肤色区域进行合并和分割,该步骤使用区域增长算法进行实现,便得到人脸识别候选区域。
最后,利用人脸的基本信息对人脸候选区域进行验证,得到人脸定位的信息。
1.1运动区域提取
本算法将采用帧间差分算法进行视频图像运动区域的提取。
帧间差分算法可以将图像中运动的目标提取出来,即将动态图像和静态图像(背景图像)进行分割,该算法不仅简单,而且效率高。
1.2肤色分割
对视频流中的连续两帧图像进行对比,根据分析可知,每帧图像是由背景图像和前景图像组成的,背景图像即静态图像,前景图像即动态图像。
背景图像区域的像素点灰度值变化较小,前景图像区域的像素点灰度值变化较大,运动目标当前和原来所在的区域都包括在内。
肤色是人脸特征中一个非常重要的特征,目前广泛利用的人脸识别定位方法就是利用肤色对人脸进行识别定位,利用肤色检测方法不仅效率高,而且稳定性好,实现起来较为容易,运算速度也快,有利于实时性的特性。
1.3候选人脸验证
本步骤主要是将不可能为人脸的区域过滤掉。
该验证方法分为3个步骤:
(1)如果目标区域面积太小,则认为不是人脸区域,比如小于整幅图像面积的1/2000。
(2)根据目标区域的邻接矩阵的长和宽的比例来排除。
如果长/宽大于设定的阀值,则该区域不是人脸区域,删除该区域。
(3)由于人脸区域的形状类似椭圆,因此可以利用扫描的方式来确认。
根据椭圆的特征,如果满足区域的宽度逐渐增加然后减少的特征,从上往下依次扫描目标区域进行,则为人脸区域。
如果不满足该规律,则该区域不是人脸区域。
(二)人脸识别的基本算法
基于子空间的方法:
PCA/LDA/PPCA/ICA
主要有主成分分析方法(PCA),线性判别分析方法(LDA),概率主成分分析方法(PPCA,ProbabilisticPrincipalComponentAnalysis)和独立成分分析方法(ICA,IndependentComponentAnalysis),这类方法首先对训练图像进行代数变换,求得一个由基图像张成的子空间,然后计算每个图像在该子空间中的投影系数,作为图像的特征。
主要思想是把高维空间中松散分布的人脸图像,通过线性变换或非线性变换后降维压缩到一个低维子空间中,更有利于分类,以PCA方为例,它本质上是一种重构的方法,通过K一变换使得重构的误差最小,该方法通过求解训练样本散布矩阵的特征值问题,求解出m维向量远远小于样本空间维数n的正交基来表示训练样本张成的子空间。
假设有N个训练样本X1,X2···XN.每个人脸图像通过按行排列拉伸成一个一维的向量那么总协方差就可以表示为中心化后的图像之间的相关性的和。
2.基于局部特征的方法:
EGM/LFA
这类方法和前面介绍的各类方法相比较可知不再将人脸作为一个整体模式,而是提取人脸图像中的网络点和一些关键的特征点的信息来进行人脸的分类研究.如弹性图匹配方法(EGM,Elasticgraphmatching)和局部特征分析(LFA,LocalFeatureAnalysis),所提取的是图像的局部特征.该类方法不是处理人脸图像的所有像素点信息,而是对所选择出的像素点进行处理,忽略其它像素的信息,对提取的关键点进行局部特征的研究处理,采用相应的分类器进行人脸图像的分类,从而实现人脸识别。
3.基于模型的方法:
HMM/3DMorphableModel/AAM
该类方法首先建立一个通用的人脸模型,然后通过确定模型中的参数来表征出一张特定的脸,而基于这些特定的人脸模型参数,便可设计模式分类器。
目前,常用的人脸模型有隐马尔科夫模型(HMM,HiddenMarkovModel)。
三维可变形模型和主动表象模型,隐马尔科夫模型在语音处理领域得到广泛应用并取得了很大的成功,而在人脸识别中也有一些应用。
三维可变形人脸需要先进行建立三维人脸模型,检测到人脸图象后自动在人脸上标记出我们需要的特征点,例如外眼点、内眼点、眉间点、鼻下点、领下点、嘴角点,等等
五、项目进展:
制定完选题后,我们小组首先从车牌识别开始着手做。
我们查阅了大量的文献最终决定参考华南理工大学硕士学术论文《车牌识别系统的相关算法及实现》中的方法步骤。
车牌识别分为三个部分,车牌定位,字符分割,字符识别。
对于车牌定位我们根据论文中的步骤
进行小组分工:
姓名
分工
文俊杰,黄俊棋
灰度化,边缘检测,二值化
李清清
滤波去噪
周杰
车牌候选区域搜索
张丽群
伪车牌去除
阶段性工作汇报:
1、车牌的灰度化,边缘检测,二值化得到如下结果。
2、滤波去噪,图片在收集过程中不可避免的会出现各种噪声,找了常用的高斯滤波,中值滤波,维纳滤波。
这几种滤波在不同的情况下各有自己的优势。
3、伪车牌去除选择图像的开闭运算:
腐蚀是一种消除边界点,使边界向内部收缩的过程。
可以用来消除小且无意义的物体。
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。
可以用来填补物体中的空洞。
先腐蚀后膨胀的过程称为开运算。
用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
先膨胀后腐蚀的过程称为闭运算。
用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
把每个人的任务整理组合以后,对于车牌图像进行了完整地处理。
车牌定位基本可以实现。
但是在车牌候选区域搜索没有成功做完,我们在车牌提取中,很多论文都提到运用行扫描的方法。
我们尝试寻找了一下,在XX上找到了运用像素进行行扫描把车牌提取出来,这个代码只局限于蓝色底的车牌。
但是在一幅图片中出现两副车牌的话就会选择颜色更深的车牌来识别。
因为这个代码的原理是找到像素蓝色像素最高的点之后进行行扫描提出车牌的高度,然后用相同的方法确定车牌的宽度就完成了车牌的提取。
这个算法很简单速度很快,但是,对于在环境变换比较复杂的实际操作过程中这种算法限制比较多,结果不是很准确。
对于字符分割这一步用MATLAB我们没有查到有效的东西。
在向老师咨询以后,说可以在VS2008平台下用OPENCV里面的函数。
我们就开始安装OPENCV并查阅大量的资料找寻基于OPENCV的车牌识别代码。
基于OPENCV的字符分割原理:
对读入图像进行灰度化,边缘检测,最后进行二值化。
得到二值化图像之后就进行车牌定位的搜索,采用基于水平投影和垂直投影的方法,利用行扫描和列扫描确定出车牌的上下边界和左右边界,
具体过程如下
首先去除车牌区域图像中字符的上下边框以外的区域。
对车牌区域图像进行逐行扫描,并且统计每行中像素值为255的像素点的个数,将统计出的结果保存至一维数组
Row[ height ]中,其中,R ow[ i ](0 £ i < height)存储第 i - 1行像素点为1的点的个数,height为车牌区域图像的高度,将 Row[ height ]的均值作为阈值averageR。
从车牌区域图像的下边框开始向上扫描,第一个大于averageR的元素所对应的行即为车牌字符的下边框,同理,从车牌图像的上边框开始向下扫描,第一个大于averageR的元素所对应行即为车牌字符的下边框。
定位到车牌字符的上下边框后,就可以去除车牌字符的上下边框。
然后,去除车牌区域图像中字符区域左右边框以外的区域。
对已经去除上下边框的车牌图像进行从左到右逐列的扫描,并统计每列中像素为1的像素点的个数,将结果保存到一维数组 column[ width ]中,其中, column[ width ](0 £ i < width)存储第i - 1列像素点为1的点的个数,width为车牌区域图像的宽度,将车牌 column[ width ]的均值作为阈值,从车牌区域图像的左边开始向右扫描,第一个大于averageC 元素所对应的列即为车牌的左边框,同理,从车牌图像的右边开始向左扫描,第一个大于averageC 的元素所对应的列即为车牌区域的右边框.
定位出车牌区域后,同样利用投影法,结合扫描和灰度跳变点数的匹配度,来分割出每一个字符。
人脸识别:
学习PCA的人脸特征提取之后,也开始着手人脸识别这一块,做出MATLAB人脸识别的交互式平台,寻找查询修改了MATLAB的人脸识别程序,目前可以在特定的图像库里实现人脸的识别。
PCA,即Principal Component Analysis,主成分分析方法,是一种标准人脸识别方法.基本原理是:
利用K-L变换抽取人脸的主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,通过与各个人脸图像比较进行识别,比较训练图集中每幅图与测试图片的欧式距离,取欧式距离最小的训练图像作为测试图像的匹配。
这种方法使得压缩前后的均方误差最小,且变换后的低维空间有很好的分辨能力。
PCA识别步骤:
1、读取训练集图像数据
读取测试集目录下指定个数的图像,然后将其保存在一个二维数组中。
如果图像个数为m,图像长宽为i、j,则我们创建一个二维数组A[m][i*j=n]用来保存图像数据。
数组的每一行表示一个图像的所有像素信息,每一列表示一个随机变量,也即不同图像同一位置的像素信息,降维也即用更少的列来代表图像。
2每列减去均值
将步骤一的每列减去该列的均值,这样每列的数据均值为0。
在利用matlab的函数princomp执行PCA的过程中,princomp会首先将每一列减去该列均值,不用我们自己执行。
3计算协方差矩阵
协方差矩阵表示不同随机变量之间的相互关系,图像中也即求任意两个像素之间的关系。
如果两个随机变量的协方差为正或为负,表明两个变量之间具有相关性,如果为零表示两个变量不相关。
通过计算协方差矩阵,我们就可以获得不同像素之间的关系。
针对人脸识别,计算的协方差矩阵大小为n*n,其中n表示图像的像素点个数。
4计算协方差矩阵的特征值和特征向量
由于协方差矩阵是实对称阵,所以可以求得其所有的特征值和特征向量,其共有n个特征值和特征向量。
5选择主成分
所谓主成分即是具有最大特征值的特征向量,所以我们需要将特征向量按照特征值由大到小排序,然后根据精度要求选择不同数量的特征向量,例如我们选择了前p个特征向量,通常p远小于n(在我们的人脸识别实验中,为了达到95%的精度,p只有72,而n为120*140=17040)。
6将训练集进行降维
此步骤将原始的训练集进行降维变换,原始的图像数据是m*n的矩阵,只包含主成分的特征向量构成一个n*p的矩阵(每一列都是一个特征向量)。
将两个矩阵相乘,我们即可获得降维之后的图像矩阵m*p,这个矩阵远小于原始的图像数据。
7将测试集进行降维
同步骤6相似,读取所有的测试集图像,然后对其也进行降维操作。
如果测试集有M幅图像,则降维后的矩阵为M*p。
结果如下:
完整代码见附件
(2)
但是代码的识别仅限于特定的人脸库,改变人脸库后不能成功运行,对于这一点还有待解决。