大学毕业设计(论文)题目:弦箭算法的C语言实现学生姓名学号所在单位指导教师王洪群完成日期2008.06内容摘要:静态复杂背景灰度图像的人脸快速精确定位问题,是近年来迫切需要解决和完善的问题。王洪群等教师提出了一种椭圆弦箭算法,利用图像中的边缘曲线快速确定人脸位置区域,缩小人脸检测算法的搜索空间,以提高人脸检测算法的速度与效率。本文主要通过对椭圆特性的分析,说明弦箭算法的原理,并在MicrosoftVisualC++6.0环境下利用C语言进行编程实现。索引关键词人脸检测边缘弦箭算法Abstract:Locatinghumanfaceinasingleandgraylevelimagewithclutteredbackgroundremainsadifficultproblemandneedstobecompletedorperfectedinrecentyear.AnovelellipsearrowmethodusingedgeinformationoftheimagetolocationtheareaoffacefasthasputforwardbyMr.wangandothers.Themethodcontractthespaceofthemanhuntofthefacedetection,raisethespeedandtheefficiencyofthefacedetection.Thearticleintroducethetheoriesoftheellipsearrowmethodthroughtheanalysistotheovalcharacteristic,andprogrammethemethodmakinguseofthelanguageofCundertheMicrosoftVisualC++6.0environments.Keywords:FaceDetectionEdgeEllipseTheellipsearrowmethod目录第一章绪论..............................................................................................................................-2-1、1引言...........................................................................................................................-2-1、2弦箭算法地提出......................................................................................................-2-1、3弦箭算法的应用......................................................................................................-4-1、4本文研究的主要内容和成果..................................................................................-4-第二章弦箭算法的原理..........................................................................................................-5-2、1椭圆特性分析..........................................................................................................-6-2、2弦箭累加算法的原理..............................................................................................-7-第三章弦箭算法的编程实现................................................................................................-10-3、1BMP图像文件格式.................................................................................................-10-3、2本文编程环境........................................................................................................-12-3、3弦箭累加的编程实现............................................................................................-13-第四章实验检测与分析........................................................................................................-25-4、1图像测试集............................................................................................................-25-4、3评估准则................................................................................................................-25-4、4不同参数下的实验结果........................................................................................-26-4、5算法中间结果示例................................................................................................-28-4、6算法最终人脸区域估计结果示例........................................................................-28-4、7对算法及实验结果的分析总结.............................................................................-30-后记...........................................................................................................................................32致谢...............................................................................................................................................32参考文献.......................................................................................................................................32弦箭算法的C语言实现第一章绪论1、1引言人脸识别技术起源于上个世纪六十年代,发展到现在已经有了四十多年的历史,是当前模式识别和人工智能等领域的一个重要的研究课题。人脸识别作为一种重要的个人身份鉴别方法,其研究前景十分广阔,无论是在商业还是法律仲裁领域等都拥有巨大的应用空间。例如静态领域中的医学、档案管理、刑侦破案、证件验证、入口控制;动态领域中的人群监控、视频会议、人机交互系统等。人脸识别(FaceRecognition)是指对一个输入的图像或视频图形,判断其是否含有人脸图像,如果存在人脸图像,再进一步判断图像中人脸的大小,位置,以及面部各个主要器官的位置。再从这些信息中提取人主要的身份信息,将这些信息与数据库中的信息相比较,从而得到人的一些授权信息。人脸识别技术的主要内容可分为为:输入图像----人脸检测----人脸跟踪-----人脸比对----输出结果。人脸识别首先要对输入的图像进行人脸检测。人脸检测(FaceDetection),是指在既有的图像中判断是否存在人脸并确定人脸的位置、大小等相关信息,进一步提供人脸的主要特征。人脸检测作为人脸信息识别处理中的一项关键技术,其检测效率的高低将直接影响到后续模块的执行效果。1、2弦箭算法地提出人脸检测是一个复杂的具有挑战性的模式检测问题。图像中的人脸往往随光线的改变、位置的移动、倾斜、旋转和缩放等外部变化而变化,而且人脸内部也具有复杂的变化,如表情、长相、胡须、眼睛闭合、眼镜等。人脸的不确定性,对人脸检测算法的稳定性和鲁棒性提出了更高的要求。目前,研究人脸检测的方法有很多,定位算法的精度在不断提高,也更加复杂。各种人脸检测算法中,精度及鲁棒性好的算法,运算量都比较大,直接对图像进行计算,在时间上让人难以忍受。Adaboost学习算法是目前最快的人脸检测算法之一。Boosting是一种分类器融合算法。Adaboost学习算法通过对一些弱的分类器的组合来形成一个强的分类器。在Adaboost算法中,简单的分类算法被称为弱学习算法。Adaboost算法通过一个迭代的训练过程来得到一个强的分类器。在第一次训练出一个弱分类器后,训练样本的权重得到调整,从而使没有被第一次训练出的弱分类器正确分类的样本的权重增加。如此迭代下去,最终得到的分类器是对每次训练得到的弱分类器的一个线性组合。由于Adaboost算法,要通过迭代训练将弱的分类器组合成强的分类器,其运算很耗资源。在实际应用中往往都是结合其他算法来提高运算效率。人脸的边缘图富含大量的人脸特征信息,许多学者利用这些边缘信息来确定人脸的区域。大多数学者使用Hough变换来检测人脸外边缘,但如果用标准的Hough变换检测人脸椭圆边缘需要在一个5维的参数空间做投票累加,这样的计算量是难以忍受和不切实际的。Wang和Tan利用输入图像边缘梯度向量和椭圆模型的边缘梯度方向向量内积的大小来衡量匹配程度;Li和Roeder在预先确定的人脸区域内使用简化的自适应Hough变换,检测垂直的脸颊直线边缘和下颚抛物线边缘;Yuen分成两步检测椭圆:利用椭圆边缘上任意两点的切线的交点和这两点的连线的中点的连线必然经过椭圆中心,首先确定椭圆的中心坐标,再确定剩下的三个参数,虽然比标准Hough变换运算量减少了不少,但运算量仍很大。人脸含有众多的椭圆曲线边缘,如外层、内层头发边缘、嘴眼边缘、耳朵边缘、下颚边缘等,且曲线凹向均指向人脸内部。王洪群等人通过对椭圆曲线的分析,提出的了一种特殊的椭圆弦箭累加算法。该算法避免使用Hough变换等一些耗时的算法,具有大面积快速搜索的能力,确定的搜索范围较小,可以快速确定人脸主要特征(人眼和嘴)所在的大致位置和区域。该算法利用图像的边缘快速确定搜索空间,并在搜索空间内使用虹膜网格采样矩阵