Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2285603
  • 博文数量: 266
  • 博客积分: 5485
  • 博客等级: 大校
  • 技术积分: 3695
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-20 11:05
个人简介

多读书,多做事,广交朋友,趣味丛生

文章分类

全部博文(266)

分类: IT业界

2010-04-24 20:26:21

目录

摘要 I
ABSTRACT II
第一章 绪论 1
1.1课题研究的目的与意义 1
1.2国内外的研究现状 2
1.2.1人脸检测与识别的研究现状 3
1.2.2图片检索技术的研究现状 4
1.3课题总体要求和规划、论文结构 6
第二章 BMP文件的读取与显示 8
2.1 BMP文件的结构 8
2.1.1 DIB位图与DDB位图 8
2.1.2 位图的结构 9
2.1.3 图片数据的存储 10
2.2 BMP文件的读取与显示 11
2.2.1 BMP文件的读取 11
2.2.2 BMP文件的显示 11
2.3 本章小结 12
第三章 人脸检测与特征提取的方法及软件实现 13
3.1人脸检测方法 13
3.1.1 二值化 14
3.1.2 噪声的消除 15
3.1.3 填孔与重构 15
3.1.4 人脸候选区筛选与人脸区域的确定 16
3.2 人脸检测的软件实现 16
3.2.1二值化的实现 16
3.2.2 消除噪声的实现 17
3.2.3 填孔处理和图像重构的实现 18
3.2.4 人脸区域定位的实现 18
3.3 本章小结 20
第四章 图片检索的方法及软件实现 21
4.1 人脸特征的提取 22
4.1.1 图像特征 22
4.1.2 特征提取的方法 23
4.1.3 特征脸 23
4.2 特征脸的构造与计算 24
4.2.1 K-L变换 24
4.2.2 特征脸的计算 25
4.2.3 在特征脸空间进行人脸的匹配 26
4.3 确定相似性度量的方法 26
4.3.1 两种度量方法的比较选择 26
4.3.2 欧式距离法的运用 27
4.4 图片检索的软件实现 27
4.4.1 提取特征脸 27
4.4.2 实现图片检索 31
4.5 本章小结 34
第五章 总结 35
致谢 36
参考文献 37

摘要

本文对基于人脸识别的图片检索系统进行了研究和实现,通过给定的BMP文件图片找到文件夹中与该图片中的人脸相似的图片。包括了人脸检测和图片检索两个过程。
人脸区域的检测采用基于特征的方法。首先进行二值处理,运用开闭运算消除衣服噪声对图像产生的影响,再进行填孔处理,筛选人脸候选区,使用边缘检测画出人脸区域,由此实现了确定图片中人脸区域位置的功能。
检索图片前,进行特征提取,采用基于统计的特征脸方法。检索过程通过计算欧式距离实现。特征提取过程中,对图片库进行处理,提取特征脸向量后,生成特征库。然后计算预处理后的待检索图片与特征库的欧式距离,由小到大排序,选择前三的图片,再看欧式距离是否在一个范围内,如果是的话就继续输出在此范围内的图片。由此实现了检索出含有相似人脸图片的功能。实验结果表明,该算法适合灰度图片的检索。
软件在MATLAB环境中设计与实现。

关键词:人脸检测, 图片检索,数字图像处理

ABSTRACT

In this paper, we researched and achieved in picture searching based on face recognition. We try to find out the pictures which and the given BMP picture are alike in faces. It includes face detection and picture searching.
On the face detection, we adopt the method based on characters. Firstly, convert image to binary image and eliminate the influence of clothes on image by the open-and-close operation, then, fill holes, filter the area which are likely to be faces and draw the figure using edge detection. This achieves in making sure where the face is.
Before searching pictures, we take out the character by EigenFace which is based on statistical method. The process of searching comes true by calculating the distance. When getting the character, we deal with the pictures in the database and extract the vectors of character to make a library with all the character. Then we calculate the distance between the given picture which is pretreatment and the character in the library, and make the distance be sort ascending and choose the first three pictures. Then, we see that whether the distance is in a certain range. If yes, then we continue in this output within the scope pictures. This achieves searching pictures containing similar facial images. The result shows that the arithmetic is suit grey pictures.
The environment of software is MATLAB.

KEY WORDS: face detection, picture searching, image processing

第一章 绪论

1.1课题研究的目的与意义
本文的目的是设计与实现一个基于人脸识别的图片检索系统。该系统实现的是通过给定的BMP文件图片找到文件夹中与该图片中的人脸相似的图片,就是根据人脸的特征来判断是否含有该人的图片,从而达到检索的目的。
本课题涉及到人脸识别与图片检索两项技术。
人脸识别技术是生物识别技术的一个重要方面,采用生物识别技术进行个人身份鉴定,取代传统的使用钥匙、身份证、密码等方法,避免了传统身份识别存在的缺陷,使安全方面得到更大的保障。并且人脸识别技术为新兴的信息安全领域提供了一种更为安全可靠易用的身份鉴别手段,从而提升了整个网络信息系统的安全性能,有效地遏止各类网络违法犯罪活动。同时,人脸识别技术在传统的安防领域可以便捷的与原有技术实现紧密的结合,大大提升原有系统的智能化程度、安全性及易用性,拓展了原有系统的应用领域,从而促进了传统产业的技术升级。
中国作为发展中国家,人脸识别技术潜在市场同样巨大。在国家安全、军事安全、金融、公安、司法、民政、海关、边境、口岸、民航、保险以及社会安防、民用安防等领域,急需人脸识别的相关产品来填补市场空白。
同时人脸识别技术正逐步与图片检索技术结合起来。正被各专业人士研究与发展。计算机图像数码技术与互联网技术飞速发展的结合,使人们越来越多的接触到大量的图像信息。如何从浩瀚的图片数据库中快速、准确地找出自己所需要的图片,已成为一个受到广泛关注的研究课题。并成为数字化图书馆等重大研究项目中的关键技术。
20世纪70年代,基于文本的图片检索技术(TBIR)沿用了传统文本检索技术,利用文本描述的方式表示图像的特征。早期的TBIR手工对图片进行注释,工作量相当大,不可避免地会带来主观性和不精确性,而且标注的准确性差,不能满足用户对图像原始特征信息的检索。90年代后,基于内容的图片检索(CBIR)发展起来,对图像的视觉内容,如图像的颜色、纹理、形状等进行分析和检索图像。其特点是图像本身包含的客观视觉特性,不需要人为干预和解释,能够通过计算机自动实现对图像特征的提取和存储。CBIR的主要特点是他主要只利用了图像本身包含的客观的视觉特征,图像的相似性不需要人来解释,体现在视觉相似性上。这导致了他不需要或者仅需要少量的人工干预,在需要自动化的场合取得了大量的应用。基于内容的检索技术的日益成熟不仅将创造出巨大的社会价值,而且将改变人们的生活方式。因为他与传统数据库技术相结合,可以方便地实现海量多媒体数据的存储和管理,与传统Web搜索引擎技术相结合,他可以用来检索HTML网页中丰富的多媒体信息。在可预见的将来,基于内容的检索技术将会在以下领域中得到广泛应用: 多媒体数据库、知识产权保护、数字图书馆、网络多媒体搜索引擎、交互电视、艺术收藏和博物馆管理、遥感和地球资源管理、远程医疗、天气预报以及军事指挥系统等。
在我们这个网络飞速发展的年代,各种网站的搜索引擎已必不可少, 图片检索系统俨然已经成为重要工具;而在医学CT,X射线检索系统中,它也可以为医生诊断提供重要的参考;同时,我们可以看到,基于人脸识别的图片检索系统在公安系统中的应用,他们根据嫌疑犯面部特征在照片库中进行查找类似人员,使得破案效率又得到了进一步的提高。?
1.2国内外的研究现状
计算机人脸识别是指基于已知的人脸样本库,利用计算机分析图像和模式识别技术从静态或动态场景中,识别或验证一个或多个人脸。通常识别处理后可得到的基本信息包括人脸的位置、尺度和姿态信息。利用特征提取技术还可进一步抽取出更多的生物特征(如:种族、性别、年龄..) 。计算机人脸识别是目前一个非常活跃的研究课题,它可以广泛应用于保安系统、罪犯识别以及身份证明等重要场合。虽然人类对于人脸的识别能力很强,能够记住并辨识上千个不同的人脸,可是对于计算机则困难多了,其表现在:人脸表情丰富;人脸随年龄的增长而变化;发型、胡须、眼镜等装饰对人脸造成的影响;人脸所成图像受光照、成像角度以及成像距离等影响。
计算机人脸识别技术是近20年发展起来的,90年代更成为科研热点,仅从1990 年到1999年之间,EI 可检索到的相关文献多达数千篇,关于人脸识别的综述也屡屡可见 。自动人脸识别系统包括两个主要技术环节首先是人脸检测和定位,然后是对人脸进行特征提取和识别(匹配)。
近年来新技术不断发展,美国A4Vision在全球第一个推出3D人脸识别产品。 3D人脸识别技术的算法比2D(二维)的算法有更高的精确度,误否定率比平面人脸识别低100倍,应用更加广泛。
目前基于内容的图片检索技术主要集中在颜色、纹理、形状等低层物理特征提取的基础上.基于高层语义的检索正有待研究。颜色具有大小、方向、位置不变性,可以用直方图、颜色距、颜色集、主色调等表征,颜色是描述图像最有效的特征之一。另外,对于图形来说,形状是它惟一重要的特征。图像中某目标的边缘称为轮廓,而基于形状或轮廓的检索是图像内容检索的一个重要方面,它能从用户勾勒的图像的形状或轮廓入手,在图像库中检索出形状相似的图像。
1.2.1人脸检测与识别的研究现状
人脸检测是模式识别与计算机视觉领域内一项受到普遍重视、研究十分活跃的课题,在基于内容的检索、数字视频处理、视觉监测等方面有着重要的应用价值。人脸是复杂的模式,受到多种因素的影响。找到一种有效的方法提取人脸的共性特征来描述人脸模式,即人脸的建模,是人脸检测的关键。国内外相关文献中提出了许多方法,概括而言,目前的技术可分为基于器官的方法和基于模板的方法。具体的人脸检测方法很多,下面我总结了其中重要的几种。
1) 模板匹配
分为两种方法:固定模板和变形模板。固定模板的方法是首先设计得到一个或几个参考模板,然后计算测试样本与参考模板之间的某种度量,以是否大于阈值来判断测试样本是否人脸。这种方法比较简单,在早期的系统中采用得比较多。但由于人脸特征的变化很大,很难得到有效的模板来表示人脸的共性,这种方法目前已不多见,有的系统将其作为粗检测或预处理的手段。变形模板方法在原理上与固定模板相同,但其中包含一些非固定的元素。一种方法是手工构造参数化的曲线和曲面以表征人脸中的某些非固定特征,如眼睛、鼻子和嘴唇等。另一种方法是系统自动产生自适应的曲线和曲面,以构成变形人脸模板。检测方法是:将模板与测试图像进行弹性匹配,并加入“惩罚”机制,利用某种能量函数表示匹配程度。
2) 基于器官特征的方法
这种方法首先提取人脸器官图像特征,然后根据人脸中各器官的几何关系来确认人脸的存在。人脸的几何关系由一个树型结构表示,并计算出概率属性,作为判断是否为人脸的条件。这是一种自底向上的方法,另外还有自顶向下的方法,即根据一个人脸模型(一般是正面人脸模型)先在一个比较大的范围内寻找人脸候选区,由粗到精地在一个最佳范围内定位人脸候选区,然后检测各种人脸器官特征。Carlos H. Morimoto和 Myron Flickner 在一个鲁棒性强的瞳孔定位技术的基础上,结合人脸结构信息,实现了多人脸的检测。
3) 神经网络
从本质上讲,神经网络也是一种基于样本的学习方法。将神经网络用于人脸检测,取得了很大的进展。
MIT的学者首先对人脸样本集和非人脸样本集聚类,以测试样本与人脸样本集和非人脸样本集的子类之间的距离作为识别特征向量,利用多层感知器(MLP)网络作为分类器。CMU的研究人员直接以图像作为神经网络的输入,设计了一个具有独特结构的适用于人脸特征的神经网络分类器,并且通过前馈神经网络对检测结果优化。他们工作的共同之处是都采用了自调整(bootstrap)的学习原理,对分类器一边训练,一边测试,并把在测试过程中的错误分类结果作为反例样本加入学习过程,从而减少了样本集的规模,并逐步的提高了神经网络的分类性能。
人脸识别的研究始于60 年代末, 最早的研究见于文献[2], Bledsoe 以人脸特征点的间距、比率等参数为特征, 建成了一个半自动的人脸识别系统。 而且早期人脸识别研究主要有两大方向: 一是提取人脸几何特征的方法 , 包括人脸部件归一化的点间距离和比率以及人脸的一些特征点, 如眼角、嘴角、鼻尖等部位所构成的二维拓扑结构; 二是模板匹配的方法, 主要是利用计算模板和图像灰度的自相关性来实现识别功能。 Berto 在1993 年对这两类方法作了较全面的介绍和比较后认为, 模板匹配的方法优于几何特征的方法 . 目前的研究也主要有两个方向: 其一是基于整体的研究方法, 它考虑了模式的整体属性, 包括特征脸(Eigenface) 方法、SVD 分解的方法 、人脸等密度线分析匹配方法 、弹性图匹配(elastic graph matching) 方法 、隐马尔可夫模型(Hidden Markov Model) 方法 以及神经网络的方法等;其二是基于特征分析的方法, 也就是将人脸基准点的相对比率和其它描述人脸脸部特征的形状参数或类别参数等一起构成识别特征向量。 这种基于整体脸的识别不仅保留了人脸部件之间的拓扑关系, 而且也保留了各部件本身的信息, 而基于部件的识别则是通过提取出局部轮廓信息及灰度信息来设计具体识别算法. 文献[3]认为基于整个人脸的分析要优于基于部件的分析, 理由是前者保留了更多信息, 但是这种说法值得商榷, 因为基于人脸部件的识别要比基于整体的方法来得直观, 它提取并利用了最有用的特征, 如关键点的位置以及部件的形状分析等, 而对基于整个人脸的识别而言, 由于把整个人脸图像作为模式, 那么光照、视角以及人脸尺寸会对人脸识别有很大的影响, 因此如何能够有效地去掉这些干扰非常关键. 虽然如此, 但对基于部件分析的人脸识别方法而言也有困难, 其难点在于如何建立好的模型来表达识别部件. 近年来的一个趋势是将人脸的整体识别和特征分析的方法结合起来, 如Kin2 Man L am 提出的基于分析和整体的方法 ,Andreas L an it is 提出的利用可变形模型(Flexible Models) 来对人脸进行解释和编码的方法 。
1.2.2图片检索技术的研究现状
1. 图片检索的关键技术
1)基于手工标注的检索
对图像的内容(如物体、背景、构成、颜色等)进行人工描述并分类,将其标注为一系列关键字,并对关键字建立索引,当用户输入关键字后,系统可以根据数据库中的倒排文件将关键字映射为M站或网页的地址。但是,由人工完整地标注所有图像,劳动强度太大,限制处理图像的数量。由于图像所包含的信息量竞大,不同用户对于同一张图像的看法不尽相同,这就导致对图像的标注没有一个统一标准。
2)基于图像外部信息进行检索
即根据图像的文件钇或目录名、路径名、页面标题、ALT标签以及图像周围的文本信息等外部信启、进行检索,这是目前图像搜索引擎采用最多的方法。
3)基于内容的图片检索
目前基于内容的图片检索技术主要集中在颜色、纹理、形状等低层物理特征提取的基础上.基于高层语义的检索正有待研究。颜色具有大小、方向、位置不变性,可以用直方图、颜色距、颜色集、主色调等表征,颜色是描述图像最有效的特征之一。纹理是指图片像素灰度集或颜色的某种规律性的变化,即图片中局部不规则而整体有规律的特性称之为纹理,纹理是从像素分布的方ruJ性和位置等得到的有意义的统汁数据。纹理特征主要包括粗糙度、方向性、线性、对比度以及规则性,如人体肌肤的纹理、毛发、天空、水、织物、树木的纹理等。形状包括面积、连通性、环行性、偏心率、主轴方向等特征。很多情况下同一物体可能有各种不同的颜色,但其形状总是相似的,如汽车。另外,对于图形来说,形状是它惟一重要的特征..图片中某目标的边缘称为轮廓,而基于形状或轮廓的检索是图片内容检索的一个重要方面,它能从用户勾勒的图片的形状或轮廓入手,在图片库中检索出形状相似的图片。
4)反馈与学习技术
相关反馈是在信息检索系统中的一种用户指导性学习的技术,用以优化系统的检索能力 。对于检索的结果,系统根据用户反馈给系统的指导信息(哪些符合用户需求,哪些不符合),对检索参数进行整理,从而优化检索结果并提供给用户新的检索结果。
2. 基于内容的图片检索技术
基于语义的图片检索已经不能满足现今的复杂检索,于是基于内容的图片检索发展起来,它是图片检索技术的一个重要内容。
基于内容的图片检索技术是一种综合集成技术,它通过分析图片的内容,如颜色、纹理等,建立特征索引,并存储在特征库中。用户在查询时,只要把自己对图片的模糊印象描述出来,就可以在大容量图片库中找到想要的图片。
基于内容的图片检索技术与其它相关学科的主要区别是:首先,它是一种信息检索技术,应能从大型分布式数据库中以用户可以接受的响应时间及尽量与领域无关的方式(在需要时也可以是与领域相关的)检索到想要的图片信息。它可以不去理解图片中的对象,更关注的是信息的快速查询和发现。举个例子来说,用户想买一辆红色汽车,那么他选定了红色和汽车轮廓,数据库系统就能返回所有红色汽车的图片,从而帮助用户快速找到目标。
其次,作为一种多媒体技术,它具有很强的交互性,即用户可以参与检索过程。最后,它引入了特征库和知识辅助的概念。用特征库保存描述图片内容的特征,知识辅助有利于查询优化和快速匹配。
从图片检索的应用角度出发,除了采用传统的结构化查询方法以外,还可以采用可视的示例查询方式。具体可以分为以下几种:
1)准确实例检索和查询
准确实例检索和查询(Retrieval And Query By Exact Example)针对用户给出的确切查询实例,如用户拿到某地区的照片或图样,需查询有关该地区的其它信息,这种查询称作完全的实例查询。由于用户可以给出要求查询的原图片,检索可以针对图片的任何特征进行,因此,相对来说比较容易。
2)模糊实例查询
在基于内容的查询中,大部分查询实际上都是模糊实例查询(Retrieval And Query By Fuzzy Example)。因为在很多情况下,用户无法给出一个完全的例子,往往只能给出(或者说从一部分示例中选择出)一个想要检索的图片的例子,然后系统依照这个例子查找与它相似的图片,并将相似结果返回给用户,用户可以在这些相似的结果中决定或再次选择更接近用户查询的图片,从而进行下一次相似性计算,以达到模糊检索的目的。目前,大部分QBE(Query By Example)所用的实际上都是这种模糊查询。
3)描绘示例检索和查询
描绘示例检索和查询(Retrieval And Query By Describable Example)是针对用户给出的所需图片的粗略结构化描述进行处理。如用户提供一个(可能是画的)需查找图片的”形状”的粗略轮廓,在这种情况下,一般没有一个完全的实例,因此,只有用一些局部特征,这时需要抽取这些局部特征,如形状或每个形状所定义在图片中空间定位的相关结构。对于形状的每个部分,必须在库中找到相应的形状,并返回相应的图片集。不论哪种查询方法,都需要针对图片的具体特征进行匹配检索。在实际应用中,用户一般对颜色、纹理、形状以及目标的空间关系等特征比较敏感。
1.3课题总体要求和规划、论文结构
本课题的主要工作包括BMP文件的读取与显示、图片中的人脸检测与识别、含有相同人脸的图片的检索。
在课题中使用了MATLAB语言,熟悉掌握了语言中关于数字图像处理部分的运用。图像的读入、显示、预处理等工作都采用直接调用MATLAB自带的系统函数,实现简单。

本课题的模块图如图1.1所示:

图1.1 设计模块图
做所有工作前首先要采集大量图片作为图片数据库,并且用画图工具将JPG格式的图片转化为BMP格式。
第二章,BMP文件的读取与显示。介绍了BMP格式文件的结构,软件的读取与显示的实现。
第三章,人脸检测与特征提取的方法与软件实现。人脸检测是人脸识别的一个重要步骤,准确地检测出人脸区域才能使得后面的特征提取顺利进行。特征提取为图片检索打好基础,图片数据库的训练就是库中图片人脸特征的提取,以便之后的特征比对。
第四章,图片检索的方法与软件实现。这部分的重点是欧式距离的计算,运用第三章中提取的图片的特征向量与经过K-L变换的需要检索的图片的特征向量进行欧式距离的计算,再把所得结果进行排序,输出相似度前三位的图片。
第五章,总结。对本论文的提出的一些理论观点作出总结,并对实现过程中出现的问题作出分析与解决。

第二章 BMP文件的读取与显示

2.1 BMP文件的结构
2.1.1 DIB位图与DDB位图
1.DDB(设备相关位图)
DDB依赖于具体设备:DDB的颜色模式必需与输出设备相一致。例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的。在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中。
DIB的设备无关性主要体现在以下两个方面:DIB的颜色模式与设备无关。例如,一个256色的DIB即可以在真彩色显示模式下使用,也可以在16色模式下使用。256色以下(包括256色)的DIB拥有自己的颜色表,像素的颜色独立于系统调色板。由于DIB不依赖于具体设备,因此可以用来永久性地保存图象。DIB一般是以*.BMP文件的形式保存在磁盘中的,有时也会保存在*.DIB文件中。运行在不同输出设备下的应用程序可以通过DIB来交换图象
创建MFC的CBitmap类封装了DDB。该类提供了几个函数用来创建DDB:BOOL LoadBitmap( LPCTSTR lpszResourceName );
BOOL LoadBitmap( UINT nIDResource );
该函数从资源中载入一幅位图,若载入成功则返回TRUE。资源位图实际上是一个DIB,该函数在载入时把它转换成了DDB。
BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits );
该函数用来创建一幅空白的DDB。参数nWidth和nHeight以像素为单位说明了位图的宽度和高度。nPlanes是DDB的色平面数,nBitcount是每个色平面的颜色位数。一般来说,nPlanes为1,而nBitcount代表DDB中每个像素值所占的位数,但在创建16色DDB时,nPlanes为4,而nBitcount为1。参数lpBits指向存储像素阵列的数组,该数组应该逐行存储位图的每个像素值。注意,数组中每行像素的数目必需是偶数个字节,如果是奇数,则应该用0补足。若创建成功函数返回TRUE。
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );该函数创建一个与指定设备上下文兼容的DDB。参数pDC指向一个设备上下文,nWidth和nHeight是DDB的尺寸。若创建成功函数返回TRUE
2.DIB(设备无关位图)
至于DIB,MFC未提供现成的类来封装DIB。要想使用DIB,首先应该了解DIB的结构。这个你可以到任何一本图像处理资料中找到详细说明。
DIB的颜色信息储存在自己的颜色表中,程序一般要根据颜色表为DIB创建逻辑调色板。在输出一幅DIB之前,程序应该将其逻辑调色板选入到相关的设备上下文中并实现到系统调色板中,然后再调用相关的GDI函数(如::SetDIBitsToDevice或::StretchDIBits)输出DIB。在输出过程中,GDI函数会把DIB转换成DDB,这项工作主要包括以下两步:
将DIB的颜色格式转换成与输出设备相同的颜色格式。例如,在真彩色的显示模式下要显示一个256色的DIB,则应该将其转换成24位的颜色格式。
将DIB像素的逻辑颜色索引转换成系统调色板索引。
2.1.2 位图的结构
由于DIB不依赖于具体设备,因此可以用来永久性地保存图象。DIB一般是以*.BMP文件的形式保存在磁盘中的,有时也会保存在*.DIB文件中。运行在不同输出设备下的应用程序可以通过DIB来交换图象。
 在内存中,一个完整的DIB由两部分组成:一个BITMAPINFO结构和一个存储像素阵列的数组。BITMAPINFO描述了位图的大小,颜色模式和调色板等各种属性,其定义为
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1]; //颜色表
} BITMAPINFO;
RGBQUAD结构用来描述颜色,其定义为
typedef struct tagRGBQUAD {
BYTE rgbBlue; //蓝色的强度
BYTE rgbGreen; //绿色的强度
BYTE rgbRed; //红色的强度
BYTE rgbReserved; //保留字节,为0
} RGBQUAD;
注意,RGBQUAD结构中的颜色顺序是BGR,而不是平常的RGB。
BITMAPINFOHEADER结构包含了DIB的各种信息,其定义为
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //该结构的大小
LONG biWidth; //位图的宽度(以像素为单位)
LONG biHeight; //位图的高度(以像素为单位)
WORD biPlanes; //必须为1
WORD biBitCount //每个像素的位数(1、4、8、16、24或32)
DWORD biCompression; //压缩方式,一般为0或BI_RGB (未压缩)
DWORD biSizeImage; //以字节为单位的图象大小(仅用于压缩位图)
LONG biXPelsPerMeter; //以目标设备每米的像素数来说明位图的水平分辨率
LONG biYPelsPerMeter; //以目标设备每米的像素数来说明位图的垂直分辨率
DWORD biClrUsed; /*颜色表的颜色数,若为0则位图使用由biBitCount指定的最大颜色数*/
DWORD biClrImportant; //重要颜色的数目,若该值为0则所有颜色都重要
} BITMAPINFOHEADER;
  与DDB不同,DIB的字节数组是从图象的最下面一行开始的逐行向上存储的,也即等于把图象倒过来然后在逐行扫描。另外,字节数组中每个扫描行的字节数必需是4的倍数,如果不足要用0补齐。
DIB可以存储在*.BMP或*.DIB文件中。DIB文件是以BITMAPFILEHEADER结构开头的,该结构的定义为
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //文件类型,必须为“BM”
DWORD bfSize; //文件的大小
WORD bfReserved1; //为0
WORD bfReserved2; //为0
DWORD bfOffBits; //存储的像素阵列相对于文件头的偏移量
} BITMAPFILEHEADER;
  紧随该结构的是一个BITMAPINFOHEADER结构,然后是RGBQUAD结构组成的颜色表(如果有的话),文件最后存储的是DIB的像素阵列。
2.1.3 图片数据的存储
Matlab 中图片的数据是以矩阵的形式存储的。我在程序中使用的bmp图片读入后的大小为192×128×3。

2.2 BMP文件的读取与显示
2.2.1 BMP文件的读取
读取图片信息之前要选择需要检索的图片,用函数[file_name file_path] = uigetfile (‘*.bmp’)实现。文件名和文件路径分别由参数file_name和file_path返回。
打开文件对话框如图2.2所示:

从workspace中我们可以看到file_name为‘04.bmp’,file_path为‘D:\MatLab7\新建文件夹\work\实验素材\’。
MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息。读取图像信息:[A,M]=imread([file_path ,file¬¬_name]),将图像数据放入矩阵A中,颜色数据放入矩阵M中。如要简单改变图像颜色,可以改变M矩阵的行列数据。
由于我在程序中使用的是灰度图像,所以M矩阵为空。矩阵A就为192×128×3的大小。
2.2.2 BMP文件的显示
MATLAB在窗口中显示图像用函数imshow(),使用该函数前必须先有读取数据函数imread(),将数据存储在矩阵中。
如:x=imread(‘D:\MatLab7\新建文件夹\work\实验素材\04.bmp’);
imshow(x);
这两句语句就可以显示上述文件夹下的文件,如图2.3所示:

2.3 本章小结
本章所涉及的内容虽然不是本次设计的重要部分,但是对BMP文件的操作是所有内容的一个基础,读取图像的数据,存储在矩阵中,以便特征提取,检测图片等重要内容的进行。在图片检索工作完成后,需要显示和待检索图片相似度前三的图片,运用到本节所说的图片显示工作。

第三章 人脸检测与特征提取的方法及软件实现

人脸检测(Face Detection)是模式识别与计算机视觉领域内一项受到普遍重视、研究十分活跃的课题,在基于内容的检索、数字视频处理、视觉监测等方面有着重要的应用价值。人脸检测是指在输入图像中确定所有人脸(如果存在)的位置、大小的过程。
3.1人脸检测方法
目前的人脸检测算法主要依靠人类对人脸认识的规则性表述或是利用人脸样本的统计特性来处理,其本质是寻找人脸区域区别于其他非人脸区域的特征,符合这个特征的区域就是人脸区域。
人脸检测算法的分类原则很多,不同的分类原则会产生不同的分类结果。这里,我们采取的是从方法论的角度来对人脸检测算法分类。大致有基于知识的方法、基于特征的方法、基于模板匹配的方法和基于统计的方法。
本文选择了基于特征的方法,它的设计与实现灵活多变,值得我们去深入学习研究。
此类方法首先采用各种数字图像处理方法对输入图像进行处理,根据处理结果提取出某些特征,然后将这些特征与人脸所具有的共性特征进行比较,借此来判断某一区域是否为人脸。例如,采用数字图像处理的边缘提取方法在输入图像中寻找边界,然后试探哪些边界像正而人脸的左右边界和发髻线那样构成人脸轮廓,还可以利用从图像中提取出来的色彩和纹理信息与人脸的色彩和纹理模型进行比较,得出可能的人脸区域。这种基于特征的算法的主要问题是由于图像不可避免的存在噪声,很可能将这些特征破坏,还有各种光线、遮挡物等的影响,使得人脸的特征边界被弱化,阴影可能引起很强的边缘,而这些边缘可能使得算法难以使用。
人脸检测框图如图3.1所示:

3.1.1 二值化
在对图像进行二值化处理前,我们先简单介绍一下二值图像及二值化图像的原因。
1.二值图像的定义
二值图像指图像中的每个像素只取两个离散的值之一,即非此即他。用数学公式表示为:

(3.1)

(2.3)式中, 表示一幅数字图像,x, y表示该图像中某像素的坐标值,而0和1表示该像素的像素取值。这里,0和1仅仅是一个抽象表示,并非实际像素值,它可以代表白色和黑色,也可以代表红色和蓝色。目前使用的最多的是黑白二值图像,但并不说明所有的二值图像就是黑白二值图像 。
在机器视觉、模式识别研究的早期,由于内存和计算能力非常有限,而且十分昂贵,二值图像得到了广泛地应用。现在,随着计算机计算能力的不断增强和计算成本的不断下降,人们普遍开始研究基于灰度图像、彩色图像和深度图像的视觉系统。尽管如此,二值图像还是十分有用的,其原因如下:(1)计算二值图像特性的算法非常简单,容易理解和实现,并且计算速度很快;(2)二值图像所需的内存少,对计算设备要求低。例如,工作在256个灰度级的视觉系统所需内存是工作在相同大小的二值图像视觉系统所需内存的八倍。如若利用游程长度编码等技术,还可使所需内存进一步减少。由于二值图像中的许多运算是逻辑运算而不是算术运算,所以所需的处理时间很短;(3)许多二值图像处理技术也可以用于灰度图像的处理。在灰度或彩色图像中,表示一个目标或物体的一种简易方法就是使用物体模板(mask),物体模板就是一幅二值图像,其中1表示目标上的点,0表示其它点。将物体从背景中分离出来后,为了进行决策,还需要求取物体的几何和拓扑特性,这些特性可以从它的二值图像中计算出来,这样就简化计算过程,降低了计算复杂度。
二值图像可以通过取适当的阈值获得。本文也正是使用阈值化方法将图像进行了二值化处理,处理的目的是为了便于后续中求取目标的几何和拓扑特性等。在这里,该阈值是通过上一小节所提出的自适应方法获得的。实验中,阈值的具体数值因每幅图像的复杂度而不同,其大概范围为[0.45, 0.55]。
二值化处理过程可具体表述为:设经过相似度计算后的图像为 ,其每个像素的取值范围为[0,1]。再设自适应阈值为T,则经过阈值运算后, 转换为二值图像 ,即

(3.2)

其中“1”表示可能的肤色区域,”0”表示其它区域。在图像中,可能的肤
色区域显示为白色,其它区域显示为黑色。
3.1.2 噪声的消除
二值化转换后不可避免出现了噪声,有背景的噪声影响,以及人的衣服等引起的噪声点,这里使用开闭运算的方法消除噪声。
先腐蚀后膨胀称为开(open),即OPEN(X)=D(E(X)),先膨胀后腐蚀称为闭(close),即CLOSE(X)=E(D(X))。开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点),而总的位置和形状不变,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
膨胀与腐蚀是数学形态中的最基本的操作。
设A和B是整数空间Z中的集合,其中A为原始图像,而B为结构元素。
则B对A的膨胀运算——记为 ——定义为:

(3.3)

其中, 表示空集, 为集合B的反射集:

(3.4)

由(3.3)式可见,B对A的膨胀实质上就是一个由所有平移量z组成的集合,这些平移量z满足:当B的反射集平移了z之后,与集合A的交集不为空。经过膨胀之后,图像将比原图像所占像素更多。膨胀运算满足交换率 。
腐蚀后的结果图像相较原图像有所收缩,腐蚀结果式原图像的一个子集。
3.1.3 填孔与重构
利用重构进行开运算,可准确恢复腐蚀后的对象形状。
开启和闭合式形态学中的另外两个重要操作,它们是由基本运算——膨胀和腐蚀组合而成的复合运算。开启操作通常可以起到平滑图像轮廓的作用,去掉轮廓上突出的毛刺,截断狭窄的山谷。而闭合操作虽然也对图像轮廓有平滑作用,但是结果相反,它能去除区域中的小孔,填平狭窄的断裂、细长的沟壑以及轮廓的缺口。
3.1.4 人脸候选区筛选与人脸区域的确定
人脸候选区筛选时,由于头部与其他部分,例如衣服等的连接,对筛选造成了困难,故应先利用闭运算操作,断开连接,再进行处理。
候选区筛选的准则:
(1)若目标高宽比小于0.8而大于2.0,则认为不是人脸区域,删除此区域。
(2)区域面积过大或过小,认为不是人脸区,删除此区域。
其中条件1限定了要检测的人脸区域的比例大小,排除了一些颜色类似皮肤但长宽不符合要求的区域。(如颜色与皮肤接近的衣物)
条件2排除一些不规则但色调和皮肤接近的物体,同时也可排除人体其他的非脸部区域,如四肢等。
最后利用边缘检测,检测出人脸;利用得到的边缘,对原图像进行处理,就可以在原图中画出人脸区域的框图。
3.2 人脸检测的软件实现
在实现的过程中,我用下面的语句读入图片:
x=imread(‘D:\MatLab7\新建文件夹\work\实验素材\01.bmp’);
将图片的数据存入矩阵x
在MATLAB语言中,实现图像的各种处理是一件简单轻松的工作,它自带的函数功能强大,下面介绍人脸检测的MATLAB实现。
3.2.1二值化的实现
MATLAB语言中使用系统自带函数实现简单的图像二值化
f=im2bw(x);
这里没有使用阈值来处理图像,因为我在设计中所使用的图像是一个比较小的bmp灰度图像,系统自动进行二值化的效果比较好。如果是一般的彩色图像就要先进行色彩空间的转换,一般将RGB空间转换为YCbCr空间,将彩色图像转化为灰度图像,根据灰度值对应属于皮肤区域的可能性,通过设定门限,就可以转换为二值图像,1,0分别表示皮肤和非皮肤区域。
图片二值化的结果如图3.2所示:

3.2.2 消除噪声的实现
由于衣服等噪声的存在,会影响人脸检测的效果,所以这里运用开闭运算实现噪声的消除。
se=strel(’square’,3); %生成方形结构元素
f=imopen(f,se); %开启操作
f=imclose(f,se); %闭合操作
figure(2),imshow(f);
消除噪声后的图片如图3.3所示:

结果显示,噪声并没有完全消除,还需要进一步改进算法。
3.2.3 填孔处理和图像重构的实现
MATLAB语言中的填孔处理值需要一句简单的语句实现,它将一些不必要的小孔填充掉,使得图像更加简单,易于处理。
重构实现了腐蚀后的对象恢复。
f=imfill(f,’holes’); % 填孔处理
figure(3),imshow(f);
fe=imerode(f,ones(8,7)); %腐蚀操作
fo=imopen(f,ones(8,7)); %开启操作
f=imreconstruct(fe,f); %重构图像
figure(4),imshow(f);

填孔处理与重构后的图片如图3.4和图3.5所示:

由显示可知,重构后的图片消除了衣服等影响,为人脸区域的检测打好了坚实的基础。
3.2.4 人脸区域定位的实现
1.筛选人脸区域前先利用闭运算操作,断开连接
se1=strel(’square’,8);
f=imerode(f,se1);
f=imdilate(f,se1); %用生成的结构元素对图像进行膨胀
figure(6),imshow(f);
2.人脸区域的筛选
[L,num]=bwlabeln(f,4);
for i=1:num;
[r,c]=find(L==i);
r_temp=max(r)-min(r);
c_temp=max(c)-min(c);
temp=size(r);
sum=sum+temp(1);
area_sq=r_temp*c_temp;
area=size(find(L==i),1);
ratio=area/area_sq;
if (r_temp/c_temp<0.8)|(r_temp/c_temp>2)|temp(1)>2000|temp(1)<200 |ratio<0.6
%脸部区域<200的去掉,一般为手或其他干扰.
%利用脸部宽长比的大概上下限来确定一个模板范围.
%矩形面积s=目标区长度*宽度,目标区面积为ss,若ss/s<0.6,认为不是
%人脸区,删除之.
for j=1:temp(1);
L(r(j),c(j))=0;
end
else
continue;
end
end
3.边缘检测出人脸
L=bwperim(L,8); %边缘检测,检测出人脸的边缘区域
L=uint8(L);
z=find(L(:)>0);
L(z)=255;
figure(7),imshow(L);

结果图如图3.7所示:

3.3 本章小结
这章实现了人脸区域检测的基本功能,利用二值化的图片进行腐蚀、膨胀、重构、人脸区域筛选等操作,最后能够标记出人脸的大概区域。下一章的特征提取需要在此基础进行,人脸区域标记准确,才能提取有用的特征。

第四章 图片检索的方法及软件实现

本论文写的基于人脸识别的图片检索是一种基于内容的图片检索。
所谓基于内容图片的检索是指由图像分析软件对输入的图片先进行图像分析,根据图像中物体或区域的颜色(color)、形状(shape)或纹理(texture)等特征以及这些特征的组合,自动抽取特征,在将输入图片存入图片库的同时将其相应的特征向量也存入与图片库相连的特征库。在进行检索图像时,对每一幅给定的查询图,进行图像分析,并提取图像特征向量。将该图像的特征向量和特征库中的特征向量进行匹配,根据匹配的结果到图像库中搜索就可以提取出所需要的检索图。
基于内容的图片检索是一个逐步求精的过程,大致可以经过以下几个步骤: (1).特征提取对图像数据进行自动或半自动的特征提取,提取用户感兴趣的、适合检索要求的特征。特征提取可以是全局性的,如整幅图像,也可能是针对某个目标,如图像中的子区域等。(2).图像匹配在选取了特征之后,需要选择或寻找适当的判别准则,从而判断出待识别的图像的特征与数据库中的哪些图像的特征最接近。常用的度量准则是距离度量法。(3).结果输出,将满足一定相似性条件的一组候选结果按相似度大小排列后返回给用户。
图片检索的流程如图4.1所示:

下面将说明特征提取、图像匹配与结果输出的具体方法与实现过程。
4.1 人脸特征的提取
4.1.1 图像特征
常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。
1.颜色特征
1) 特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。另外,仅使用颜色特征查询时,如果数据库很大,常会将许多不需要的图像也检索出来。颜色直方图是最常用的表达颜色特征的方法,其优点是不受图像旋转和平移变化的影响,进一步借助归一化还可不受图像尺度变化的影响,基缺点是没有表达出颜色空间分布的信息。
2) 常用的特征提取与匹配方法
①颜色直方图:其优点在于:它能简单描述一幅图像中颜色的全局分布,即不同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。其缺点在于:它无法描述图像中颜色的局部分布及每种色彩所处的空间位置,即无法描述图像中的某一具体的对象或物体。
最常用的颜色空间:RGB颜色空间、HSV颜色空间。
颜色直方图特征匹配方法:直方图相交法、距离法、中心距法、参考颜色表法、累加颜色直方图法。
②颜色集:颜色直方图法是一种全局颜色特征提取与匹配方法,无法区分局部颜色信息。颜色集是对颜色直方图的一种近似首先将图像从 RGB颜色空间转化成视觉均衡的颜色空间(如 HSV 空间),并将颜色空间量化成若干个柄。然后,用色彩自动分割技术将图像分为若干区域,每个区域用量化颜色空间的某个颜色分量来索引,从而将图像表达为一个二进制的颜色索引集。在图像匹配中,比较不同图像颜色集之间的距离和色彩区域的空间关系
2.纹理特征
特点:纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。但是,纹理特征也有其缺点,一个很明显的缺点是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光照、反射情况的影响,从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理。
3.形状特征
特点:各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标来进行检索,但它们也有一些共同的问题,包括:①目前基于形状的检索方法还缺乏比较完善的数学模型;②如果目标有变形时检索结果往往不太可靠;③许多形状特征仅描述了目标局部的性质,要全面描述目标常对计算时间和存储量有较高的要求;④许多形状特征所反映的目标形状信息与人的直观感觉不完全一致,或者说,特征空间的相似性与人视觉系统感受到的相似性有差别。另外,从 2-D 图像中表现的 3-D 物体实际上只是物体在空间某一平面的投影,从 2-D 图像中反映出来的形状常不是 3-D 物体真实的形状,由于视点的变化,可能会产生各种失真。
4.空间关系特征
特点:所谓空间关系,是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系,这些关系也可分为连接/邻接关系、交叠/重叠关系和包含/包容关系等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调的是目标之间的距离大小以及方位。显而易见,由绝对空间位置可推出相对空间位置,但表达相对空间位置信息常比较简单。
4.1.2 特征提取的方法
1.基于表象(全局特征)的方法
全局匹配方法是用整个人脸区域作为输入,作为一个整体与已知人脸数据库进行匹配。如Eigenfaces、Fisherfaces、SVM等。
2.基于结构(局部特征)的方法
基于局部特征的结构匹配方法是根据人脸图中的局部特征(眼睛、鼻子、嘴巴等)在人脸图像中的位置和各自自身的结构确定对人脸图像进行识别。如Hidden Markov Model Based Methods(HMM)等。
本次设计应用于图片检索的是基于表象(全局特征)的方法,我选用的其中的一种——特征脸。
4.1.3 特征脸
人脸图像中包含着大量有意义的人脸局部和全局特征信息,这些特征不仅包含如眼睛、鼻子、头发等仅凭人的直觉就能感受到的特征,还包含其它一些人的直觉没法体会的重要特征。这些特征以一定的形式分布在人脸图像中,从一张人脸图像中抽取相关的信息并尽可能有效的方式表示出来,然后,将以这种方式表示的人脸与以同样方式表示的人脸模型库相比较。
从数学的观点,可以将人脸图像作为高维空间的一个点或一个向量,而且这些高维向量的在空间中的分布没有一定的规律性。如果能将这个高维向量映射到维数较低的向量空间,或者映射到分布规律明显的空间,用映射空间的向量表示人脸图像,则更方便我们进行人脸识别。
人们想到了用主成份分析方法,又称离散K-L变换、Hotelling变换,它是用原始空间中的随机变量X的协方差矩阵的特征向量构成的特征矩阵作为变换矩阵,对原始空间中的向量进行变换,使原始空间中高维、复杂的向量变成变换后的特征空间中的低维、简单的向量。
这种变换是一种基于统计特性的最佳正交变换,变换之后具有如下特性:
(1)变换后的新的分量正交或不相关;
(2)以部分新的分量表示原向量均方误差最小;
(3)变换后的向量更趋确定、能量更趋集中。
在人脸识别中,人们用离散K-L变换对人脸图像的原始空间进行转换,即构造人脸图像数据集的协方差矩阵,对之进行正交变换,求出协方差矩阵的特征向量,再依据特征值的大小对这些特征向量进行排序,每一个向量表示人脸图像中一个不同数量的变量 ,这些特征向量表示特征的一个集合,它们共同表示一个人脸图像。在人脸识别领域,人们能常称这些特征向量为特征脸 。每一个体人脸图像都可以确切地表示为一组特征脸的线性组合。
4.2 特征脸的构造与计算
4.2.1 K¬-L变换
霍特林(Hotelling)变换是一种基于图像统计特性的变换。霍特林变换可直接用于数字图像的变换,它在连续域对应的变换是KL(Karhunen-loeve)变换。
K-L展开是图像压缩的一种最优正交变换。人们将其应用于特征提取,形成了子空间法模式识别的基础。在人脸自动识别领域,文[3]将K-L展开用于人脸图像的最优表示。随后,文[2]提出了“特征脸”方法。
该方法以训练样本集的总体散布矩阵为产生矩阵,即
(4.1)


(4.2)
其中 第i个训练样木的图像矢量,m为训练样本集的平均图像矢量,M为训练样本的总数。
经过K-L变换,可以得到相应的一组特征矢量,称之为“特征脸”;有了这样一个由“特征脸”张成的降维子空间,任何一幅人脸图像都可以向其做投影并获得一组坐标系数,这组系数表明了该图像在子空间中的位置,从而可以作为人脸识别的依据。
4.2.2 特征脸的计算
做如下的假设
人脸图像集:
向量形式:

训练集的平均脸:
(4.3)

人脸图像与平均脸的差:
(4.4)

人脸图像集的协方差矩阵:

(4.5)

用正交变换求出协方差矩阵的特征向量和特征值:
变换后的特征空间为:
由于离散K-L变换使能量相对集中,且与特征向量相对应的特征值具有如下性质:

因此,对于取前m个特征所对应的特征向量,对原始空间中的向量进行变换,变换后的均方误差取最小值。
由于精确地构造图像是不必要的,一个较小的m个特征向量对识别就足够了 ,因此,我们可以取前m个特征向量,构成变换后的特征脸空间。
4.2.3 在特征脸空间进行人脸的匹配
得到特征脸空间后,对人脸图像的检索可以将原始的高维空间向量映射到该特征空间,再进行模式匹配。
一幅人脸图像将它映射到特征脸上可用下式运算求得:

(4.6)
它在特征脸空间中的向量:

(4.7)
4.3 确定相似性度量的方法
在基于人脸的图片检索中,以上进行的工作是只是人脸特征提取与选择,下一步要做一工作是对这些提取后的特征向量进行分类。为此要确定一种相似性度量方法,求出各提取后的特征向量之间的相似度,进而确定待分类识别的人脸是否属于某一已知类别。
在统计模式识别方法中,我们抽取和选择的是能代表这个模式的特征,用这些特征构成的特征向量占有由它们构成的特征空间的一个点。显然,两个模式如果在模式空间相距很近,则它们的各个分量,也就是各个特征也应相差很小,因此,两个模式之间相似性的一种合理的度量就是它们在特征空间的距离,即距离越小,相似性越高。提起距离,我们首先会想到欧氏距离,即用最小欧氏距离法,对特征向量进行分类和识别。 还有一种相似性度量的方法为基于夹角最小的相似性度量方法。
4.3.1 两种度量方法的比较选择
1.夹角最小的相似性度量方法
相似性函数定义为两个向量之间的归一化内积,对于某一待分类人脸图像相应的特征向量与第k类人脸图像的特征向量之间的相似度为:

(4.8)

式(4.8)表示的是向量之间的夹角余弦,值越大,表示两者之间的夹角越小,相似性越大。
2.欧式距离
即两项间的差是每个变量值差的平方和再平方根,目的是计算其间的整体距离,即不相似性。
在二维和三维空间中的欧式距离的就是两点之间的距离。
二维的公式:
(4.9)

三维的公式:
(4.10)

推广到n维的公式:

(4.11)
在这里我选用了欧式距离算法,得到最小距离,选择与待检索图片的距离最小的前三个图片作为输出结果。
4.3.2 欧式距离法的运用
首先计算出的相应的特征脸模式向量的平均值。确定阈值,它表示距离某一人脸类和距离人脸空间的最大允许值。
对于某一待分类人脸图像,则它与第k类的欧氏距离为:

(4.12)
当求得的最小的值小于某一给定的阈值,则这幅人脸图像属于该类,否则不属于该类。
4.4 图片检索的软件实现
4.4.1 提取特征脸
特征脸的提取是对图片库中的图片进行训练的过程。
训练过程如下:
1.构造训练样本集facecol,即从人脸图像目录中读取多个人脸图像到facecol 中;
L=10;
a=30;
b=20;
facecol=zeros(a*b, L);
for i=1:L
facecol(: , i)=getFacePile(getpicture(i));
end
2.计算出所有训练样本的平均脸mx 和各训练样本相对于平均脸的差值图像facex;
mx=mean(facecol’)';
facex=zeros(a*b,L);
for i=1:L
facex(:,i)=facecol(:,i)-mx;
end
3.用特征值分解的方法求差值图像facex 的特征值和特征向量A;
%协方差
Cf=facex*facex’/L;
%特征向量
[V D]=eig(Cf);
%得到核矩阵
A=V’;
4.求训练集中的每个差值图像相对于各特征向量上的投影值facey构成的特征脸向量;
facey=A*facex;
特征脸提取的训练流程图如图4.2所示:

下面给出一些训练过程中得到的矩阵(由于矩阵太大,在这里不一一举出,只列出一部分):
1.训练样本集faceco1 :

2.训练样本平均脸mx:

图 4.4 平均脸矩阵
3.差值图像facex:

图4.5 差值矩阵
4.特征脸向量facey:

图4.6 特征脸矩阵

4.4.2 实现图片检索
最后的一步就是实现图片检索功能,输出与待检测图片相似度前三的图片。
由于运算速度较慢,这里我选用的图片库含有10张照片。

图4.7 图片库

下面将描述MATLAB语言实现的具体过程:
1.读取一幅待识别图像;
f=getFacePile(path);
2.求取该图像相对于平均脸mx的差值图像,再求差值图像在各特征向量上的投影;
f=A*(f-mx);
3.求该投影值f构成的向量与各类的facey构成的向量之间的欧氏距离d;
L=10;
d=zeros(1,L);
for i=1:L
d(i)=norm(f-facey(:,i));
end
4.将欧式距离d排序,输出距离最小的前三幅图片
%排序
[Y I]=sort(d);
%输出原图
imshow(path);
title(‘原图’);
%输出前三张
figure;
imshow(getpicture(I(1)));
title(‘相似度第一’);
figure;
imshow(getpicture(I(2)));
title(‘相似度第二’);
figure;
imshow(getpicture(I(3)));
title(‘相似度第三’);
5.再判断欧式距离是否在一个范围内,如果是的话就继续输出在此范围内的图片。
实现检索功能的流程图如4.8所示:

图4.8 检索流程图
假设我在运行过程中选择的图片为(D:\MatLab7\新建文件夹\work\实验素材\01.bmp)。
下面给出检索运行后得到的一些矩阵数据:
1.数组I:存储排序后的图片序号

图4.9 存储图片排序的数组
2.数组d:存储待检索图片与图片库中图片的欧式距离

图4.10 欧式距离显示
从这组数据中我们可以看到,图片1、2、5是与待检索图片欧式距离最小的,故实验结果将显示这三幅图片。
图片检索的结果如图4.12所示:

图4.11 待检索图片

图4.12 检索结果图
4.5 本章小结
本章是这次设计任务的重要部分,它在前两章的基础上实现了核心内容,通过特征脸的提取与欧式距离的计算,检索出了含有待检索图片人脸的大部分图片,它的准确率较高,但是图片库有一定的限制,我们还知道夹角最小的最近邻法是更优于欧式距离的算法,所以还有待提高算法,提高检索的效率。

第五章 总结

本文围绕人脸检测与图片检索两个关键技术进行研究与讨论。深入了解了国内外的先进技术与与研究现状,分析比较了其中的关键技术与算法的优缺点,并通过判断选择了适合自己课题的关键算法。本文选择了基于特征的人脸检测算法和基于特征脸的图片检索算法。
完成了人脸区域的检测与基于特征脸的图片检索工作:
1.基于特征的人脸区域检测算法,这种基于特征的算法的主要问题是由于图像不可避免的存在噪声,很可能将这些特征破坏,还有各种光线、遮挡物等的影响,使得人脸的特征边界被弱化,阴影可能引起很强的边缘,而这些边缘可能使得算法难以使用。我在设计实现的过程中选择的是灰度图片,没有复杂的背景,人脸无遮挡物,实现的效果比较好。但是对于有复杂背景的彩色图片不能达到很好的效果,所以还有待研究更好的算法,尽量使图片的限制减小。
2.在人脸检测的基础上实现的图片检索功能使用了特征脸的方法。其中涉及到K-L变换与欧式距离的计算,这两个技术广泛应用于数字图像处理的领域。K-L变换消除了数据间的相关性,在信息压缩方面起了重要的作用,这里选择此算法,使得准确性较高。而欧式距离的选择并不能达到最好的效果,夹角最小的最近邻法的算法更优。选择特征脸还有一个局限性是在人脸区域检测效果不佳的时候,效率会下降较多。因为如果检测到的区域里存在较多的非人脸部分,会使得提取的特征中有太多噪声的存在,检索效率因此不能得到保证。
本次的设计虽然实现了基本的功能,但是对图片的局限性是一个较大的不足之处,希望在日后能够继续研究,实现一个更加完整的系统。

致谢

参考文献

[1] 张翠平, 苏光大. 人脸识别技术综述[N].中国图片图形学报,2000年11月886-894
[2] W Bledsoe. Man-machine facial recognition Panoramic Research Inc[J].Palo Alto, CA , 1966, Rep PR I 22
[3] Berto R, Poggio T. Face recognition[EB\OL] .Feature versus templates IEEE Trans on PAM I, 1993, 15 (10) : 1042~ 1052
[4] Ziquan Hong .Algebraic feature extraction of image for recognition[M].Pattern Recognition, 1991, 24 (3) : 211~ 219.
[5] Nakamura O , Mathur S, Minami T. Identification of human faces based on isodensity maps [M], Pattern Recognition, 1991 24 (3) : 263~ 272.
[6] Lades M , Vorbuggen J,Buhmann Jetal. Distortion invariant object recognition in the dynamic link architecture [EB\OL]. IEEE Trans. on Computers, 1991, 42 (3):300~ 311.
[7] Samaria F, Young S. HMM -based architecture for face identification [M]. Image and Vision Computing, 1994, 12 (8).
[8] Lam K M , Yan H. An analytic-to-holistic approach for face recognition based on a single frontal view [EB\OL]. IEEE Trans. On PAM I, 1998, 20 (7).
[9] Lanitis A , Taylor C J , Cootes T F. Automatic interpretation and coding of face images using flexible models [EB\OL]. IEEE trans. On PAM I, 1997, 19 (7)
[10] 姚敏. 数字图像处理[M]. 北京:机械工业出版社,2006.1,284~291.
[11] 姚锡刚 基于肤色的人脸检测和性别识别的研究[D]:[工学硕士学位论文].哈尔滨:哈尔滨工业大学,2006
[12] 刘禾 .数字图像处理及应用[M]. 北京:中国电力出版社, 2006,115~138
[13] 沈庭芝.数字图像处理及模式识别[M]. 北京:北京理工大学出版社, 1998
[14] Pawan Sinha.Face Recognition by Humans: Nineteen Results All Computer Vision Researchers Should Know About [EB/OL].
[15] 基于内容的图像检索(CBIR)[EB/OL].

http://www.adyouth.com/blogtest/article.php?type-blog-itemid-715.html,2007-02

阅读(15700) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~