第 1 章 绪论
1.1 背景与意义
1.1.1 研究意义与典型应用
我们在平时日常生活过程中,与大自然的信息传递方式有很多。根据以往的一些数据列表,得出我们从中获取信息的方式进行类比,其中视觉占比 60 左右,听觉占比 20 左右,其它的例如味觉的信息、触觉的信息等一共加起来才占比 20左右。从这些比例中我们不难得知,视觉几乎就是我们生活中占比非常高的一种取得信息的方法,通过肉眼补抓方法,收集数据进行的分析归类。人的脸部之中就包含非常巨大的基础资料。
1.1 背景与意义
1.1.1 研究意义与典型应用
我们在平时日常生活过程中,与大自然的信息传递方式有很多。根据以往的一些数据列表,得出我们从中获取信息的方式进行类比,其中视觉占比 60 左右,听觉占比 20 左右,其它的例如味觉的信息、触觉的信息等一共加起来才占比 20左右。从这些比例中我们不难得知,视觉几乎就是我们生活中占比非常高的一种取得信息的方法,通过肉眼补抓方法,收集数据进行的分析归类。人的脸部之中就包含非常巨大的基础资料。
五官之间的位置、形状大小、神态与肌肉的动作,都成为人脸上的主要辨识特征。伴随生活质量的提升,经济基础的发展,以往的应用已经很难满足我们的需求了。人脸检测 (Face Detection)在人脸识别的处理方法中,占据了举足轻重的地位,在当今现代化的生活过程中,对人脸识别进行研究,主要通过接受到指定信息时检查是否存在此人信息,接受信息之后,获取一些我们需要获取的参数。人脸跟踪[1](Face Tracking)讲的是在序列图像中,找到对应人脸比对帧数来判断之间的关系,通过关系中的帧定位出一些人脸五官之中的运动变化影响。人脸识别 (Face Recognition)把人脸跟着与人脸进行一些基础检测后,再把人的脸部特征进行一系列的分析,从分析数据中获取人脸特征。人脸自然结构目标也是通过了大自然之间的天然组合,表情、纹理、形状、尺寸自然衰老这样的过程中,无法用统一规范的规定来进行约束,导致想要得到实验室的搭建将是非常困难的,每次实验的过程中,实验成像不一致,外景的掺插,都是人脸检测算法中难以攻克的难题。在此同时,图像序列中场景运动的快速分割、用户人脸中的脸部、人脸半遮与全遮挡这样的处理方法都会在一定程度上影响识别。科技不断的提升发展,在市面上所有的系统中,都需要正面不动的对准数码设备的中心位置。但是现实生活中人一直就在在一个运动环境中,比如在一些信息交换中,光因为有些特别的限制产生了一些要求。未来将要突破在功能方面的一些要紧的问题,通过构造打建一系列的人脸识别应用,把一些较为复杂的事物进行一个简单化的处理。在人脸识别这一方向进行不断延伸,进行本质上的图片。与此同时,计算机硬件在此领域内也会被有所带动,这样一来这样的课题更让各国研究者青睐。
...........................
1.2 国内外研究动态
1.2.1 人脸识别国内外发展状况
技术上把人脸识别分为:人脸检测、人脸识别查询、人脸识别身份查询,现阶段我们对这样的研究投入非常多的精力,缩小了生物特征识别技术与国外在技术上的差距[2]。就在十九世纪末,Galton 提出很多学术文章都是关于人脸识别的。到了一九九零年之后的很多年后,才被大众认可,引发研究科研单位以及各类高校对人脸识别的研究着重加强。
人脸识别从诞生到后期的发展由 3 个阶段来组成,根据不同时期不同阶段主要有。
第 2 章 相关知识与技术简介
2.1 主要技术概况
2.1.1 OpenCV 简介
Intel 在 1999 年时建立了 OpenCV,如今 Willow Garage 提供技术支持。OpenCV是一个(开源)的跨平台计算机视觉库,可在 Linux、Windows 以及 Mac OS 的操作系统上。低量级别高效还是在 C 函数和不少 C++ 类组成,在基础之上 Python、Ruby、MATLAB 等做为语言基础,做到了图像处理与计算机视觉方面上很多相同的算法,不用特别依靠外面的数据库,支持外部数据库。OpenCV 为 Intel 提供透明的接口。有特别的优化处理器 APP 库,OpenCV 在启动过程中会自动加载一些数据库。OpenCV 有下列一些特点:
1) 开源并且免费 2) 代码优化能力强、运行计算速度快 3) 方便灵活的用户接口 4) Windows Linux Mas OS 跨平台 5) 图像和矩阵运算能力强大 6) 结构统一和功能众多
...........................
1.2 国内外研究动态
1.2.1 人脸识别国内外发展状况
技术上把人脸识别分为:人脸检测、人脸识别查询、人脸识别身份查询,现阶段我们对这样的研究投入非常多的精力,缩小了生物特征识别技术与国外在技术上的差距[2]。就在十九世纪末,Galton 提出很多学术文章都是关于人脸识别的。到了一九九零年之后的很多年后,才被大众认可,引发研究科研单位以及各类高校对人脸识别的研究着重加强。
人脸识别从诞生到后期的发展由 3 个阶段来组成,根据不同时期不同阶段主要有。
1) 光靠机械识别的阶段:早期,人脸识别只是在能够得到一个正脸图像基础上操作的,以 Bertillon、Allen、Parke 为代表,主要研究人脸识别面部特征[6]。在 Ber-tillon 的系统中,用一个简单的语句对比数据库中的某一张已有的图像,创建一个根据指纹的强大数据库。为了提高脸部识别率,Allen 还特地进行设计描写也让人感到非常真实。Parke 就利用了计算机实现将这想法进行了实现,借此产生了灰度很高的人脸识别图片。识别过程全部都是人工操作的,毫无一点自动化的识别功能。
2) 通过机器与人类的交互识别阶段:主要采用技术方案是,基于人脸几何结构特征[7](Geometric feature based),计算出眼、鼻、嘴三者脸部主要部件的大小与位置,通过五官总体几何分布比,用参数来识别人脸。但,忽略一些微小的特征,一个初步的筛选工作。Goldstion、Harmon 和 Lesk等人用特征几何参数来表示人脸数据。采用二十一维特征矢量体现出了面部人脸特征,基于这些数据设计实验数据。Kaya 和 Kobayashi 则采用的方法则是统计识别[8],用欧氏距离计算五官之间的距离,五官的薄厚。T.Kanad 搭建一个关于高速导引半识别实验数据系统,打破以往的识别系统,利用模式分类的方法进行比照。他的系统实现能够快速操作,就是这个系统把人脸识别变成应用。虽然有很多好的地方,但是还是需要人来操作,最后用人眼去进行分别。
3) 通过机器自己识别的阶段:二十世纪末九十年代初,非常迅速发展的人脸识别技术,在合理的范围内进行图像采集、小部分的正脸数据、用户配合等等方面的操作,同时很多公司产生了,让人脸识别的商业化开启了新的旅程。技术上分析 3D 化人脸图像线性子空间分析判定、统计表模型为主的技术。一般的人脸识别技术在姿态多样化、遮挡物等多因变化的环境限制下,识别率非常低,已经无法满足需求。现想要创建一个人脸识别系统还是有着非常多的困难。在不理想的姿态与光照、用户人为性、大规模人脸数据库问题没解决之前,人脸识别方法还需要更深的研究。
................................
................................
2.1 主要技术概况
2.1.1 OpenCV 简介
Intel 在 1999 年时建立了 OpenCV,如今 Willow Garage 提供技术支持。OpenCV是一个(开源)的跨平台计算机视觉库,可在 Linux、Windows 以及 Mac OS 的操作系统上。低量级别高效还是在 C 函数和不少 C++ 类组成,在基础之上 Python、Ruby、MATLAB 等做为语言基础,做到了图像处理与计算机视觉方面上很多相同的算法,不用特别依靠外面的数据库,支持外部数据库。OpenCV 为 Intel 提供透明的接口。有特别的优化处理器 APP 库,OpenCV 在启动过程中会自动加载一些数据库。OpenCV 有下列一些特点:
1) 开源并且免费 2) 代码优化能力强、运行计算速度快 3) 方便灵活的用户接口 4) Windows Linux Mas OS 跨平台 5) 图像和矩阵运算能力强大 6) 结构统一和功能众多
由 Intel 开发的 OpenCV 是的免费的开源数据库,由 C 与 C++语言共同完成,由于它事先封装好了图形图像处理进行计算,例如机器学习、灰度化、直方图、均衡化、贝叶斯理论等,收到各类开发者的喜爱。OpenCV 诞生于 Intel 研究中心,使得 CPU 处理密集化,在视觉领域中,我们已经可以从之前得出的研究成果上继续进一步的研究,已经不用从底部函数开始做起,所以就是因为这样才使得OpenCV 诞生。
OpenCV 是一个开源的可以跨平台运行的计算机视觉库,可以跨平台。整体语言 C 函数和 C++语言组成。整体设计理念是用最快的速度进行编译,因为用了 C 语言进行编写,就是突出多核处理器运算速度快的这一特点。它的出现使得研究人员通过此框架更容易做建成于假设之上。
..............................
2.2 OpenCV 的主要模块及数据类型
OpenCV 模块众多。要用到 OpenCV 来进行编程,学习和熟知其中的模块是相当有必要的。
1) OpenCV 核心库的模块(core)齐了奠定基础的作用,其中定义多维阵列 Mat 和可被外部模块调用的基本的函数,在 OpenCV 起到了一个基石的作用。 2) 图像处理的模块包含线性与非线性进行图像滤波,几何变换、直方图和颜色空间转换等。 3) 视频分析的模块运动轨迹、运动背景消除与跟踪算法然后计算后进行合并。 4) 特征检测的模块、描述出符合的符匹配器。 5) 目标检测的模块包含人脸轮廓器官等地方的检测。 6) GUI 的模块包含 UI、动体抓捕、图片解码等接口。 7) GPU 的模块有许多包括 GPU 加速算法。 8) Calib3d 模块单体和立体相机的标定、双目立体匹配算法等等的实现。
便捷编程的同时,供应了基础的类算法,包括有以下几点:
1) 点坐标,就是来体现出二维坐标轴上的点。 2) 矩形框,就是来体现出图像文件的容量。 3) 捆绑数据的容器。 4) 多信道矩行阵。 5) 不确定的数列、数组。 6) 用来终止迭代算法的条件。 7) 图像成像结构等。
本文运用了最基础的数据类型方式,进行各种派生。就是多通道矩阵,是其中最常使用的矩阵结构。矩阵结构间构成简单的来说,由宽度、高度、类型、行数据长度及一个定向的数据的指针完成,实际上就是一个变量。创建矩阵的函数为,其中参数主要用来表示为矩阵元素类型。
...........................
OpenCV 是一个开源的可以跨平台运行的计算机视觉库,可以跨平台。整体语言 C 函数和 C++语言组成。整体设计理念是用最快的速度进行编译,因为用了 C 语言进行编写,就是突出多核处理器运算速度快的这一特点。它的出现使得研究人员通过此框架更容易做建成于假设之上。
..............................
2.2 OpenCV 的主要模块及数据类型
OpenCV 模块众多。要用到 OpenCV 来进行编程,学习和熟知其中的模块是相当有必要的。
1) OpenCV 核心库的模块(core)齐了奠定基础的作用,其中定义多维阵列 Mat 和可被外部模块调用的基本的函数,在 OpenCV 起到了一个基石的作用。 2) 图像处理的模块包含线性与非线性进行图像滤波,几何变换、直方图和颜色空间转换等。 3) 视频分析的模块运动轨迹、运动背景消除与跟踪算法然后计算后进行合并。 4) 特征检测的模块、描述出符合的符匹配器。 5) 目标检测的模块包含人脸轮廓器官等地方的检测。 6) GUI 的模块包含 UI、动体抓捕、图片解码等接口。 7) GPU 的模块有许多包括 GPU 加速算法。 8) Calib3d 模块单体和立体相机的标定、双目立体匹配算法等等的实现。
便捷编程的同时,供应了基础的类算法,包括有以下几点:
1) 点坐标,就是来体现出二维坐标轴上的点。 2) 矩形框,就是来体现出图像文件的容量。 3) 捆绑数据的容器。 4) 多信道矩行阵。 5) 不确定的数列、数组。 6) 用来终止迭代算法的条件。 7) 图像成像结构等。
本文运用了最基础的数据类型方式,进行各种派生。就是多通道矩阵,是其中最常使用的矩阵结构。矩阵结构间构成简单的来说,由宽度、高度、类型、行数据长度及一个定向的数据的指针完成,实际上就是一个变量。创建矩阵的函数为,其中参数主要用来表示为矩阵元素类型。
...........................
3.1 基于 PCA 的人脸识别方法 ............................. 19
3.1.1 K-L 变换 ................................... 19
3.1.2 PCA 的基础 ............................. 21
第 4 章 基于 OPENCV 搭建人脸识别实验平台 ..................... 42
4.1 人脸识别实验平台的功能 .................. 42
4.2 整体设计 ................................ 45
4.3 不同功能层次的设计 ........................... 47
第 5 章总结与展望 ............................ 58
第 4 章 基于 OpenCV 搭建人脸识别实验平台
4.1 人脸识别实验平台的功能
为了达到提高本文对于识别方面的研究效率并且可以更好的把研究的工作更加精确的分化分工,这样就更迫切要有一个规范的平台从而配合我们的研究工作。所以采用软件控制这方面的方法来进行实现算法。实验的同时又考虑到不同的人脸识别平台统一来进行搭建。
人脸识别是一个非常常见的生物特征识别方面的项目,主要还是通过了处理后的内容例如:指纹、虹膜等其他生物特征方式,主要有训练与识别这 2 个阶段。在第一个阶段中,想要训练实验样本主要还是把原本的分类类别的样本,经过同类样本间进行共同性质与不同样本之前的划分,这样一来就得到对样本进行生物特征提取的目的。然而在识别这一阶段的时候,就是要把我们不知道的类别的样本利用特征空间的原理对应开始以映射,找到样本本体的特征区别,找到的同时并且可以进行匹配对比,从原样本中识别出这个不为知道的类别样本的类型。当然作为一个普通的人脸识别实验平台上来说,不光需要完成以上面描述的这些,必须还要能够对数据量较大的人脸图像样本进行识别对比,最终可以统计出识别效果来进行测试评估,实现算法的有效性、可用性和普及性等等。最后得出本文实验平台。如下图 4.1 人脸识别实验流程所示。
............................
第5章 总结与展望
本文借助 OpenCV 组成一个试验的操作室基于人脸识别的分别几个不同的算法,基于 PCA 的人脸识别算法,这几种操作的普通算法,想通过一个算法针对使用不同的方法来对比这样三个使用这样的三种方法,把对比的人脸放入 FERET 中,与 AT&T 中的人脸图像数库对比操作,分析组合之后为了完成最后的实验目标。
本文借助 OpenCV 组成一个试验的操作室基于人脸识别的分别几个不同的算法,基于 PCA 的人脸识别算法,这几种操作的普通算法,想通过一个算法针对使用不同的方法来对比这样三个使用这样的三种方法,把对比的人脸放入 FERET 中,与 AT&T 中的人脸图像数库对比操作,分析组合之后为了完成最后的实验目标。
首先对人脸识别技术的研究意义与应用介绍,介绍人脸识别技术与其他的生物特征识别技术,之间的优势劣势。介绍了 OpenCV,一些特定算法和 OpenCV 的特点,对 Visual Studio 2012 进行介绍,操作在 Visual Studio 2012 下对 OpenCV进行配置给出了详细的步骤。介绍了人脸识别技术中的几种指标包括有数据存储量和未来可扩展性。
对人脸识别的中用到的几个算法介绍:基于 PCA 的人脸识别算法、基于 Fisher线性判别的人脸识别算法以及基于 LBP 特征的人脸识别算法以及 LBP 增强后的一方改进来进行叙述。基于 PCA 的人脸识别算法,详细介绍 PCA 算法的基本原理和实现过程。基于 Fisher 线性判别的人脸识别算法,解决的问题。典型分类技术方法来做,实现得出最佳的鉴别平面的结果。基于 LBP 特征的人脸识别算法,LBP 这个算法中,完成重新绘制。在图像进行规整描述,再按照一定的思路进行重新绘制。最后通过不同的中检索、识别、分析重置以及分析方面有更多应用。
把市面上比较有优势的几种方法进行分析,根据人脸识别实验平台要求,人脸实验图像的批量导入、特征提取、识别和识别算法评价计算等。根据用户的定制,把 OVPE CV 里面的一些函数进行导入,根据不同的层进行一些调用。仅对如果使用这些功能进行叙述。为了完成文中的功能,使用 OpenCV 库、类成员函数。通过这些库类最终完成人脸识别实验平台功能的过程以及效果。实现的人脸识别实验平台上进行比较,利用 2 个 FERET 和 AT&T 人脸数据库进行实验。通过自建的人脸识别实验平台,可以得出不同的识别过程中区分程度、是否正确的概率、错误返回率、反应时速以及计算时间等指标,完成实现人脸识别实验平台的真实性、有效性。
参考文献(略)
对人脸识别的中用到的几个算法介绍:基于 PCA 的人脸识别算法、基于 Fisher线性判别的人脸识别算法以及基于 LBP 特征的人脸识别算法以及 LBP 增强后的一方改进来进行叙述。基于 PCA 的人脸识别算法,详细介绍 PCA 算法的基本原理和实现过程。基于 Fisher 线性判别的人脸识别算法,解决的问题。典型分类技术方法来做,实现得出最佳的鉴别平面的结果。基于 LBP 特征的人脸识别算法,LBP 这个算法中,完成重新绘制。在图像进行规整描述,再按照一定的思路进行重新绘制。最后通过不同的中检索、识别、分析重置以及分析方面有更多应用。
把市面上比较有优势的几种方法进行分析,根据人脸识别实验平台要求,人脸实验图像的批量导入、特征提取、识别和识别算法评价计算等。根据用户的定制,把 OVPE CV 里面的一些函数进行导入,根据不同的层进行一些调用。仅对如果使用这些功能进行叙述。为了完成文中的功能,使用 OpenCV 库、类成员函数。通过这些库类最终完成人脸识别实验平台功能的过程以及效果。实现的人脸识别实验平台上进行比较,利用 2 个 FERET 和 AT&T 人脸数据库进行实验。通过自建的人脸识别实验平台,可以得出不同的识别过程中区分程度、是否正确的概率、错误返回率、反应时速以及计算时间等指标,完成实现人脸识别实验平台的真实性、有效性。
参考文献(略)