登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 电子信息类 > 通信工程 > 正文

基于OpenCV的人脸油脂检测算法研究毕业论文

 2020-02-17 10:02  

摘 要

随着人民生活水平的逐渐提高,人们对生活质量的追求不再局限于衣食住行。在这种大环境下,人们逐渐开始更加注重自己的外表和形体,对于追求自身美的热情十分高涨。于是不难发现各色美容仪器和化妆产品开始呈现快速增长的趋势。而通过查阅发现目前人们对于人脸油脂的检测与识别的研究方面仍然处于几乎空白的状态,如果医院或美容院等机构能通过某些算法实现对客户面部油脂的检测,那将为对客户进行人性化定制式美容医疗提供巨大便利。

本课题从人脸检测与油脂检测的研究现状切入,从理论上分析了人脸检测与油脂检测的实现原理。针对这些原理制定相应的计划,并通过查阅相关的资料编写一套相对简单易读的算法实现对人脸油脂的检测与识别功能。此次毕业设计将主要分为两大主要模块:第一模块是人脸检测算法的实现。第二模块则是人脸油脂检测算法的实现。

关键词 Python;OpenCV;人脸检测;油脂检测;

Abstract

With the gradual improvement of people's living standards, people's pursuit of quality of life is no longer limited to eating and wearing warm. In this environment, people gradually began to pay more attention to their appearance and form, especially the younger generation, and their enthusiasm for pursuing their own beauty is very high. It is not difficult to find that various beauty equipment and cosmetic products are beginning to show a rapid growth trend. However, through investigation, it is found that the research on the detection and recognition of human face oil is still in a blank state. If the hospital or beauty salon can realize the detection and recognition of the customer's facial oil through some algorithms, it will be right. Customers provide great convenience for humanized customized beauty care.

This topic cuts into the research status of face detection and grease identification, and theoretically analyzes the realization principle of face detection and grease identification. Develop corresponding plans for these principles, and write a set of relatively simple and easy-to-read algorithms to achieve the detection and recognition of human face fats by consulting relevant data. The graduation design will be divided into two main modules: The first module is the implementation of the face detection algorithm. The second module is the implementation of the face grease recognition algorithm.

Key words: Python;OpenCV; Face detection; grease detection;

目 录

摘 要 I

Abstract II

第1章 绪论 1

1.1 课题研究背景 1

1.2 人脸和油脂检测的研究现状及意义 1

第2章 OpenCV概述 3

2.1 OpenCV特性 3

2.2 OpenCV主要功能 3

2.2.1 数据获取 3

2.2.2 预处理 4

2.2.3 特征提取 4

2.2.4 分类判别 4

第3章 人脸检测算法的研究 5

3.1 人脸检测研究背景 5

3.2 人脸检测的难点 5

3.3 人脸检测评价标准 6

3.4 人脸检测算法的选择 6

第4章 油脂检测算法的研究 8

4.1 图像的预处理 8

4.1.1 图像的灰度化 8

4.1.2 HSV颜色空间 9

4.1.3 图像的二值化 10

4.2 人脸油脂的提取 13

4.2.1 全局阈值操作:threshold()函数 13

4.2.2 自适应阈值操作:adaptiveThreshold()函数 14

第5章 人脸油脂检测算法的实现 15

5.1 人脸检测算法的实现 15

5.2 油脂检测算法的实现 16

第6章 总结 23

参考文献 24

致 谢 25

附录A 26

第1章 绪论

本次毕业设计的课题是基于OpenCV的人脸油脂检测算法研究,这里将利用OpenCV开源的特性设计一套算法实现人脸油脂检测的功能。这套算法在医疗和美容领域拥有极为广阔的应用前景。

1.1 课题研究背景

目前油脂检测技术在国内外都主要处于食品测定方面,对于生物体脂的测定方面几乎处于空白。由于人的面部是油脂分泌的旺盛区域,在这种情况下稍加变通,可以将油脂检测技术应用在人的面部,来测定一个人脸部油脂的分泌情况。

由于每个人的体质不同,油脂分泌的多少也有所不同。在将这项技术应用到医疗美容领域后,如果能检测出不同的人面部油脂分泌的实际情况,那么医生就可以针对每个独立个体制定出相对人性化的医疗美容方案。比如面部油脂分泌较多的人可能存在内分泌失调或饮食结构不合理的情况,这时候找到导致油脂分泌旺盛的因素,对症下药则是十分理想的。

此毕业设计将要设计一个灵活的、人性化的算法,因此将把所设计的算法分为两大模块,即人脸检测和油脂检测。首先进行执行第一个模块即人脸检测,当人脸检测成功时进入到第二个模块也就是油脂检测。若第一模块没有检测到人脸就退出此算法。因为这里不想出现误检测非人脸外其他物体的油脂,比如不小心检测成了脖子等其他部位的油脂情况。因此,这里将分别讨论人脸检测和油脂检测的研究现状和意义。

1.2 人脸和油脂检测的研究现状及意义

人脸检测源于人脸识别的一个子步骤,也是最重要的步骤之一。因此人脸检测的研究几乎与人脸识别的研究同时起步。人脸识别技术最早于1966年由PRI的Bledsoe开始研究,受当时技术所限,这些研究未能实现真正的突破。而后的80年代,随着计算机成本的降低和光学成像技术的发展,人脸识别的研究终于步入了它的初级阶段。1990年,日本成功研制的一款人像识别机可以在1秒钟的时间里从3500个人中识别到指定的目标。1993年,美国陆军研究实验室和美国国防部高级研究项目组建立了Feret人脸数据库,用于评价人脸识别算法的性能。[1]现如今,世界各地都有专门致力于研究人脸识别技术及其应用的研究机构,其中比较著名的有美国麻省理工学院的媒体实验室和人工智能实验室、美国卡耐基梅隆大学的机器人研究所、芬兰赫尔辛基大学的CIS研究所、法国INRIA研究所等。[2]

国内的人脸识别研究开始于20世纪80年代,到90年代中后期国内许多著名院校及研究机构如清华大学、复旦大学、浙江大学、四川大学、中科院等都已加入人脸识别研究的行列。

油脂检测目前在国内外主要处于对于食品方面的检测,主要检测技术有近红外光谱、 电导率与极性物质测定、气相色谱和质谱法等。后来随着技术的不断改进更是出现了快速检测试纸法、核磁共振等方法。这些检测方法的精度很高,不过这些检测方法的局限性就在于他们都极度依赖于相关的电子检测设备,检测成本较高。在医疗美容领域上,能最大可能保持保持精度的同时使检测成本能够降低下来使客户负担的起是一个很重要的条件,在这种情况下荧光法检测油脂就十分合适。

第2章 OpenCV概述

人脸识别和油脂识别的算法归根结底是对图像处理的一种算法,而目前主流的几种图像处理函数库有OpenCV、CxImage、CImg和FreeImage等。这里根据OpenCV的相关特性决定基于OpenCV来完成人脸油脂检测的算法。

OpenCV于1999年由Intel公司建立,是一个基于BSD开源协议发行的跨平台计算机视觉库,提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

2.1 OpenCV特性

首先最重要的一点是OpenCV是Intel开发的开源计算机视觉库,它对商业应用和非商业应用的客户都是完全免费的。这大大增加了OpenCV的普及度,使每个人都有机会使用这个数据库。也因此OpenCV社区的活跃度远高于其他视觉库的社区,这使得OpenCV在使用上遇到困难时可以很轻松的和别人讨论交流,算法的流通也更加顺畅无阻。目前,来自全世界的各大公司,科研机构包括微软、IBM、索尼、西门子、google、intel、斯坦福、MIT、CMU、剑桥等正在共同支持维护着OpenCV开源库的开发。[3]这也体现了OpenCV的包容性。

OpenCV的兼容性十分优秀,它是用C 语言编写,由一系列C函数和少量C 类构成,可以运行在Linux、Windows、Android和Mac OS操作系统上。OpenCV的主要接口是C 语言,但也提供了大量的C语言,Python,Java和MATLAB的接口。

OpenCV的功能十分的强大,支持目前先进的图像处理技术,体系十分完善。同时OpenCV为用户提供了十分详尽的操作手册,它的手册几乎涵盖了近10年内的主流算法。用户所遇到的大部分问题基本都可以靠查阅手册自行解决,这体现了OpenCV上手快,对初学者友好的特点。

2.2 OpenCV主要功能

OpenCV作为一个典型的计算机视觉算法库,包含以下主要功能的API:(1)数据获取;(2)预处理;(3)特征提取;(4)分类判别。

2.2.1 数据获取

对于计算机视觉领域的数据获取,其所获取的数据指的是图片和视频。其中图片的格式包括BMP这种非压缩格式和JPEG,PNG这种可压缩格式,对于压缩格式的图片,OpenCV内部包含了对目标图片的解压缩函数。对于视频而言,常见的格式诸如AVI,RMVB等有着各自的视频解压处理算法。不过OpenCV提供的仅仅是一个读写视频的API接口,其内部仍然要调用类似xvid这样的视频编解码器。如果想利用OpenCV进行视频读写的操作则需要安装相应的视频解码器。[5]当视频被解码后变为一帧一帧的图片才能继续被OpenCV处理。

2.2.2 预处理

预处理指的是对图像进行初步的处理使其特征显现出来。预处理一般包括降噪,亮度归一化,光照归一化,模糊化,锐化,膨胀,腐蚀,开操作,闭操作等。针对以上这些处理方式OpenCV都提供了相应的API函数。

2.2.3 特征提取

特征,可以理解为对不同类型的事物进行区分的描述方法。特征提取就是将用来区分不同事物的特性进行单独的识别。在OpenCV里面提供了一些特征描述的API,比如进行人脸检测的haar特征的API,行人检测的hog特征的API。[6]当某些群体的特征不在OpenCV的库里时就需要用户自己进行编写了。

2.2.4 分类判别

当特征被提取出来后如果想将不同类型的事物进行区分就要进行分类判别,这种进行分类判别的算法被称为分类器。目前在分类器部分,OpenCV提供了SVM,CART,boost,bayes,bdt,ANN这几种主流的算法。当需要使用时只需调用相应的接口即可。

第3章 人脸检测算法的研究

3.1 人脸检测研究背景

出于安防监控、人机交互等目的的需求,近几年来,人脸检测技术得到迅速的发展。人脸检测最早源于人脸识别,是人脸识别中的一个步骤。人脸检测指的是对于所给的图像,采用一定的算法对其中的内容进行搜索来确定其中是否存在人脸,如果是则将人脸的位置、大小用一定的方法标记出来。

早期,人脸检测是作为服务于人脸识别技术而存在的研究课题。后来随着识别精度的逐渐提高,人脸检测技术开始逐渐被单独拿出来应用于相关领域,产生了自己的商业价值。大到国家军事方面,安全系统的验证等,小到智能手机中相机的人脸美化等。自此,人脸检测也脱离了人脸识别开始逐渐被当成一个独立的课题深入研究。

脱离商用的人脸检测技术在学术方面也有相当高的研究价值:人脸是一类结构复杂,细节繁多的目标。此类目标的不确定性在于五官分布与比例、肤色、表情的多变,同时胡须、眼镜、耳环等面部附属物的有无及位置也会给人脸检测带来干扰。人脸作为一个三维物体还会受到光照产生的阴影的影响,如果能找到一种算法突破这些挑战,这将为解决其他存在类似干扰项的检测算法提供重要的启示。

3.2 人脸检测的难点

人脸检测主要分布为动态人脸检测和静态人脸检测。动态人脸检测是指在一定的检测范围内,所要检测的动态人脸不需要静态停驻,不论面部在监测区域内的坐标位置如何移动,还是面部的肌肉在进行运动变换不同的表情,系统都会进行连续的检测。而静态人脸检测是在特定的区域内进行检测,对检测角度、距离和位置有比较高的要求,通常静态人脸检测是对单帧的图片进行检测。动态人脸检测相比静态人脸检测难度更高,但动态人脸检测主要应用于公共场合用于安全防范的摄像头系统,因此这里不做研究。这里算法中所检测的人脸是单张的图片,应用静态人脸检测算法即可。

人脸检测是一个复杂的模式检测问题,其主要难点在于两方面,一方面是由于人脸本身的变化所导致的:(1)人脸的细节相当多且复杂,每个人的外貌不同如脸型、肤色等,表情也可以不同如眼睛、嘴的开闭等;(2)人脸遮罩物的有无如眼镜、发卡、帽子等的有无。另一方面则是由于外在环境所导致的:(1)由于摄像头抓取角度的不同导致人脸的多姿态如水平和垂直方向的旋转;(2)光照的影响所引起的人像的差异化,如图像的亮度、对比度、阴影等的不同;(3)图像成像条件的不同,如摄像设备的焦距、成像距离、图像获取的途径等。这些差异都为解决人脸检测问题造成了挑战。

3.3 人脸检测评价标准

人脸检测算法多种多样,评价不同检测算法的优劣从以下四个评价标准入手:检测率,误检率,检测速度,鲁棒性。

(1)检测率:检测率,也即对人脸的召回率。指的是检测出的人脸的数目占实际总人脸数目的比例。比如测试集中包含100张真实的人脸,检测器检测出了90张人脸,那么检测率就是90%。

(2)误检率:误检率就是检测器检测出的人脸中出现错误的数目占检测器总共检测出的人脸的数目的比例。比如检测器总共检测出100张人脸,其中检测正确的有90张,其他10张检测的并不是人脸,那么误检率就是10%。

(3)检测速度:顾名思义就是算法检测单位数量个任务量时所执行的时间。算法执行的时间越短,检测速度越快。

(4)鲁棒性:鲁棒是英文单词robust的音译,意为强健的,坚固的。这里指的是在不同的条件下,检测算法的适配能力。比如基于肤色模型的方法无法检测灰度图像,一些检测算法无法检测出相对大角度旋转的人脸,还有一些检测算法受背景环境的制约比较严重。[8]这里普遍认为能普遍应用在不同条件下的能力越强,那么算法的鲁棒性越高。

由于评价一个算法的优劣要从以上四个方面入手,需要参考的条件较多,所以在比较算法孰优孰劣时一味单纯的比较四个评价标准是没有意义的。比如现在有两个人脸检测算法,其中一个算法的检测率性能优于另一个性能,但它的鲁棒性没有另一个算法好,这时候以哪个指标为评价标准比较他们性能优劣就要从实际需求下手了。通常情况下检测率和误检率两项指标是首先要参考的,实践表明检测率和误检率是相互呈正相关变化的。在这两个指标上,我们总希望检测率尽可能高,而误检率尽可能低。如果对检测速度要求不大的情况下则优先挑选检测率高,误检率低的算法。如果实际情况是我们能够在图像采集端尽可能的时图像达到最优的状态,那么对算法的鲁棒性要求也不需太高,也是优先挑选检测率高,误检率低的算法。

3.4 人脸检测算法的选择

由于人脸油脂检测算法才是这篇论文研究的重点,因此这里将不利用大量篇幅介绍人脸检测算法的原理。这次毕业设计的人脸检测算法只是作为整体算法的一个“过滤器”,让正确的人脸图像执行人脸油脂检测算法,因此对人脸检测算法的要求不是很严格。这里拟选用Haar-like特征的Adaboost算法。

Haar-like特征是指对于一副待检测图像,取一个24*24个像素大小的子窗口,计算当前子窗口内的Haar特征向量,特征向量就是当前子窗口的表征,把这个向量送到已经训练好了的分类器中,判定其是否为人脸。若是,则标记一下;若不是,则子窗口滑动到下24*24的位置。重复上述特征计算,一直到整幅图像24*24的子窗口从左到右、从上到下都扫描完了,也就结束了当前层的检测。

上述的Haar-like特征,针对20×20窗口大小的训练数据,可以产生45396个之多的候选特征,但并不是所有特征都对分类有很好的效果。并且,构建一个具有近5万个特征生成的弱分类器组合生成的强分类器也是不现实的,因此,我们需要用到Boosting方法来做特征选取并根据选取的特征生成弱分类器,最终生成强分类器。通过Boosting方法中的Adaboost方法进行训练,可以得到一个由若干个弱分类器组成的强分类器作为最终的分类器。最后用这个最终得到的分类器就可以完成人脸的检测。

第4章 油脂检测算法的研究

4.1 图像的预处理

在图像处理中,大部分图像都会存在各种各样的干扰因素而使我们不能直接从中提取有用信息,这时候必须经过一些处理过程才能将图像输入到处理系统中,这个环节就叫图像的预处理。图像的预处理可以去除图像中的无用信息,将这些无用信息过滤后图像在核心算法中再进行处理就会显得轻盈高效。

4.1.1 图像的灰度化

此次毕业设计的图像处理任务和颜色的关系并不显著,类似这种对颜色信息没有要求的图像处理任务通常都会将图像转化为灰度图像再做进一步的处理。其原因是灰度图像可以降低像素组成的矩阵空间的数据量,降低空间的存储量,加快算法的执行速度。其具体原理如下。

以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图