基于OpenCV的人眼瞳孔定位算法_李红匣
基于机器视觉的瞳孔跟踪与人脸识别方法研究
基于机器视觉的瞳孔跟踪与人脸识别方法研究摘要:随着计算机视觉技术的快速发展,瞳孔跟踪和人脸识别成为该领域的热门研究方向。
本文旨在探讨基于机器视觉技术的瞳孔跟踪与人脸识别方法,并展示其在实践中的应用潜力。
首先,介绍了瞳孔跟踪的重要性和意义,然后深入研究了目前常用的瞳孔跟踪算法。
接下来,介绍了人脸识别的基本原理和应用场景,并讨论了目前主流的人脸识别方法。
最后,结合实验结果,分析了瞳孔跟踪与人脸识别方法的优缺点,并展望了未来的研究方向。
1. 简介瞳孔跟踪是一项基于机器视觉和图像处理技术的重要研究课题。
通过对瞳孔的准确追踪,可以获取关于人眼运动、注视点和注意力分配等方面的有价值信息。
人脸识别作为一种生物识别技术,通过对人脸特征的提取和匹配,实现识别和辨认的目的。
瞳孔跟踪和人脸识别技术都具有广泛的应用前景,因此在学术界和工业界都受到了广泛的关注。
2. 瞳孔跟踪方法瞳孔跟踪方法可分为基于特征点检测和基于图像处理的方法。
前者通过检测瞳孔区域周围的特征点,如边缘、角点等,进行跟踪。
后者则利用图像处理算法,如模板匹配、卡尔曼滤波等,对瞳孔进行追踪。
常见的瞳孔跟踪算法包括Hough变换法、基于形状模型的跟踪方法等。
这些方法各有优缺点,选择适合具体应用场景的方法是关键。
3. 人脸识别方法人脸识别方法主要包括基于统计学的方法、基于特征脸的方法和基于深度学习的方法。
基于统计学的方法利用统计模型来描述人脸的特征,如主成分分析(PCA)法、线性判别分析(LDA)法等。
基于特征脸的方法则通过提取人脸图像的特征向量,然后利用分类器进行匹配。
基于深度学习的方法则使用深度神经网络进行特征提取和匹配,如卷积神经网络(CNN)等。
这些方法在不同的数据集和场景下表现出各自的优势。
4. 实践应用瞳孔跟踪和人脸识别方法在许多实际应用中都具有重要意义。
瞳孔跟踪可以用于人眼追踪技术,实现自动对焦、眼球运动研究和交互界面等领域。
人脸识别广泛应用于人脸支付、身份验证和安防监控等领域。
基于人眼瞳孔定位的单目测距系统研究及实现
基于人眼瞳孔定位的单目测距系统研究及实现人眼定位作为当前热门和重要的研究方向,其发展迅速,已经广泛应用于实践当中,例如视频监控,疲劳驾驶检测等领域。
本文针对人们长时间接触手机等移动终端设备而引起的对眼睛的伤害,将人眼定位技术运用于移动设备当中,提出一种通过瞳孔定位来监测距离的系统,该系统能测量人眼与设备屏幕之间的距离,达到保护眼睛的作用。
主要的工作如下:1)提出了基于棋盘的摄像机标定方法,并在移动平台上利用OpenCV(Open Source Computer Vision Library)工具实现了标定过程,得到标定结果,避免了利用Matlab工具箱进行标定的繁琐过程。
2)设计了基于自适应增强(Adaptive Boosting,AdaBoost)的人脸检测和均值漂移(Mean Shift)的人脸跟踪,并在移动设备上实现了相应的系统;将基于Mean Shift模板匹配的尺度自适应的目标跟踪算法应用到的人脸跟踪当中,有效的排除了在我们使用移动设备时人眼与屏幕距离和角度变化的影响,提高了距离监测的准确度。
3)在人脸区域图像上,利用基于先验知识的三庭五眼的方法粗略地分割人眼;提出了基于梯度积分投影的精确定位人眼的方法,并利用图像边缘边缘检测结合最小二乘法拟合的方法准确定位了瞳孔中心;实验结果表明该方法瞳孔定位速度快和准确度高,满足系统的要求。
4)利用小孔成像的原理,提出了利用单目成像进行测距的原理,结合上述得到的摄像头参数矩阵,人眼瞳孔像素信息和实际瞳距计算人眼与屏幕的距离,达到距离监测的目的。
从最后系统测得的结果表明,该方法能够有效的监测人眼与屏幕的距离,具有广泛的实用价值。
基于OPENCV具有眨眼侦测功能的人脸检测系统
基于OPENCV具有眨眼侦测功能的人脸检测系统【摘要】随着社会智能化程度的提高,视频图像凭借其直观优势将逐渐取代文字的地位。
本文在基于OPENCV的基础上,提出一个具有眨眼侦测功能的人脸检测系统,其中利用相对比较成熟的开源计算机视觉库opencv开源函式库对摄像头实时输入的图像进行采集,对采集图像做前期处理;Adaboost算法由于它特殊的算法模式,可以进行快速的目标检测,因此采用Adaboost算法做人眼定位检测,本文提出的眨眼侦测功能可以为系统提供防伪功能,为人脸识别技术提供一道安全的屏障,实验结果表明,本系统实验了人脸检测,人眼定位,眨眼侦测等功能,检测效率高,效果好。
【关键词】人脸侦测;眨眼侦测;Adaboost算法;开源函式库OPENCVAbstract:The face detection system is more and more widely used in public because of its feature of high integration,high performance,high speed,low cast and stability.This paper presents how we compromise Face detection module with the blink detection function based on the OPENCV source.the camera is necessary which can be invoke by the OPENCV2.0.Each frame of camera will be send to the face module to test the possibility existence of a human face.After the detection of human face,the system will go further to detect the existence of the eye and locate the accurate position within the the algorithm of Adaboost.KeyWords:face detection;blink detection;Adaboost algorithm;OPENCV1.引言生物特征识别技术辨识的是人身的固有特征,不需要身外的其他标识物,而人脸识别作为生物特征识别中的重要的手段,显示出重要的学术价值[1]。
基于图像处理的人眼瞳孔识别系统设计与开发
基于图像处理的人眼瞳孔识别系统设计与开发人眼瞳孔识别系统是一种基于图像处理的高精度生物识别技术,可以通过分析和识别人眼瞳孔的特征来进行身份认证和安全管理。
在本文中,将详细介绍基于图像处理的人眼瞳孔识别系统的设计与开发。
首先,该系统的设计可分为以下几个关键步骤:图像采集、预处理、特征提取和识别。
在图像采集阶段,可以采用高分辨率的摄像头来捕获人眼图像。
为了保证准确性,应尽量避免光线强烈干扰和眼部遮挡情况。
接下来,对采集到的图像进行预处理,包括去噪、灰度化和图像增强等操作,以提高后续处理的效果。
然后,通过使用特定的算法和技术对图像进行特征提取。
常用的特征包括瞳孔位置、尺寸、形状和纹理等。
最后,将提取到的特征与已知的眼部特征进行比对和识别,从而完成对人眼瞳孔的识别。
基于图像处理的人眼瞳孔识别系统开发的关键技术包括:图像采集与处理、特征提取、特征匹配和识别算法。
在图像采集与处理方面,可以利用OpenCV等开源图像库进行实时图像捕获和处理,确保采集到的图像质量较高。
特征提取阶段可以使用常见的方法,如SIFT、SURF、HOG等,以获取稳健的特征描述子。
图像匹配方面,可以采用支持向量机(SVM)或神经网络等机器学习算法来训练分类器,实现人眼瞳孔的识别。
此外,为了提高系统的准确率和鲁棒性,可以结合其他生物特征识别技术,如人脸识别、虹膜识别等,进行多模态融合。
人眼瞳孔识别系统在安全管理和身份认证领域具有广泛应用。
在安全管理方面,可以用于智能门禁系统、安保监控系统等场景,通过对进入人员的瞳孔特征进行识别,确保只有授权人员才能进入特定区域。
在身份认证方面,可以应用于电子支付、智能手机解锁等场景,提高身份认证的准确性和安全性。
此外,该识别系统还可以用于社会福利领域,如老年人健康管理、疾病诊断等,通过对人眼瞳孔特征的监测和分析,提供个性化的健康服务和医疗支持。
当然,人眼瞳孔识别系统在设计与开发中也存在一些挑战和局限性。
首先,图像质量对系统的准确度和鲁棒性有重要影响,光线条件的不确定性和眼部遮挡等因素可能会导致识别结果的不准确。
基于opencv的人眼检测系统
2019年第18期信息与电脑China Computer & Communication人工智能与识别技术基于OPENCV的人眼检测系统周建敏(燕京理工学院,河北 三河 065201)摘 要:在对司机们的疲劳状态进行监控的系统中,为了能够实现监控的实时性,需要对整个眼部区域实施跟踪,且定位眼睛的大概位置,由此便提出了一种检测方式,即基于OPENCV的人眼检测。
系统在Visual Studio开发平台上,利用开源的OPENCV图像处理函数库,对摄像头实时输入的图像进行采集处理,用HAAR特征的ADABOOST分类器算法进行分割定位,再经过多次OPENCV样本训练和检测提高成功率。
实验结果显示:此次设计能够成功捕捉人眼的位置,只要五官清晰可见,即使是图片也可以识别出来;当被部分遮挡时,若提前已经检测出轮廓,将不会改变实验结果。
关键词:OPENCV;人眼检测;HAAR分类器中图分类号:TP391.41 文献标识码:A 文章编号:1003-9767(2019)18-143-02Human Eye Detection System Based on OPENCVZhou Jianmin(Yanjing Institute of Technology, Sanhe Hebei 065201, China)Abstract: In the system of monitoring drivers'fatigue state, in order to achieve real-time monitoring, it is necessary to track the whole eye area and locate the approximate position of eyes. Therefore, a detection method based on OPENCV is proposed. On the Visual Studio development platform, the system uses OPENCV image processing function library of open source to collect and process the real-time input image of camera, uses ADABOOST classifier algorithm of HAAR feature to segment and locate, and then improves the success rate through training and testing OPENCV samples for many times. The experimental results show that the design can successfully capture the position of the human eye, as long as the five features are clearly visible, even the picture can be recognized; when partially occluded, if the contour has been detected in advance, the experimental results will not change.Key words: OPENCV; human eye detection; HAAR classifier0 引言人脸识别是一项复杂的技术,它包含了许多烦琐的环节,尤其在构建人脸识别系统框架时。
一种基于关键点匹配的视线估计方法[发明专利]
专利名称:一种基于关键点匹配的视线估计方法专利类型:发明专利
发明人:李宏亮,颜海强,尹康,袁欢,梁小娟,邓志康申请号:CN201811011543.8
申请日:20180831
公开号:CN109344714A
公开日:
20190215
专利内容由知识产权出版社提供
摘要:本发明公开了一种基于关键点匹配的视线估计方法,属于计算机视觉领域的视线估计。
本发明通过深度网络初步定位瞳孔关键点之后,采用SGBM模板匹配方法去进一步修正瞳孔中心位置。
相比于现有的视线估计方法能够更精确的定位瞳孔中心位置,尤其是对于头部或眼球偏置较大的情况。
本发明的实施,能够有效的提升视线估计的精度,相比于瞳孔角膜反射方法,只采用了单个网络摄像头,大大降低了设备成本。
相比于现有基于单图像处理的方法,不需要限制头部的姿态,算法的鲁棒性大大增加。
通过于3D人脸模型的匹配,避免的目前已有数据库无法表示所有姿态的局限性,从而增加了该方法的实用性。
申请人:电子科技大学
地址:611731 四川省成都市高新区(西区)西源大道2006号
国籍:CN
代理机构:电子科技大学专利中心
代理人:周刘英
更多信息请下载全文后查看。
瞳孔面积计算 python opencv
瞳孔面积计算python opencv摘要:1.引言2.瞳孔面积计算方法3.Python OpenCV 库的介绍4.使用Python OpenCV 进行瞳孔面积计算的步骤5.总结正文:1.引言瞳孔是眼睛的重要组成部分,其功能是控制光线进入眼睛的数量,以保证视觉清晰。
在医学和生物学研究中,瞳孔面积的测量是一个非常重要的指标。
近年来,随着计算机视觉技术的发展,利用计算机技术对瞳孔面积进行自动测量已经成为可能。
其中,Python OpenCV 库在这方面具有很大的优势。
本文将介绍如何使用Python OpenCV 库计算瞳孔面积。
2.瞳孔面积计算方法瞳孔面积的计算方法有很多种,其中比较常见的方法是基于图像处理。
首先需要对眼睛的图像进行预处理,包括去噪、灰度化、二值化、形态学处理等操作。
接下来,通过轮廓提取和轮廓面积计算的方法,可以得到瞳孔的边界和面积。
3.Python OpenCV 库的介绍Python OpenCV 库是OpenCV(Open Source Computer Vision Library)的Python 接口,是一个非常强大的图像处理库。
它包含了丰富的图像处理函数,可以实现各种图像处理任务,如图像读取、显示、保存、转换、滤波、边缘检测、特征提取等。
此外,Python OpenCV 库还支持多语言编程,具有很好的跨平台性能。
4.使用Python OpenCV 进行瞳孔面积计算的步骤下面是使用Python OpenCV 进行瞳孔面积计算的具体步骤:(1) 导入所需库:```pythonimport cv2import numpy as np```(2) 读取图像并进行预处理:```python# 读取图像img = cv2.imread("eye.jpg")# 转换为灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 去噪blurred = cv2.GaussianBlur(gray, (5, 5), 0)# 阈值处理_, thresh = cv2.threshold(blurred, 127, 255, cv2.THRESH_BINARY) ```(3) 提取瞳孔轮廓并计算面积:```python# 寻找轮廓contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 获取最大轮廓(瞳孔)max_area = -1max_contour = Nonefor contour in contours:area = cv2.contourArea(contour)if area > max_area:max_area = areamax_contour = contour# 计算瞳孔面积pupil_area = max_area```(4) 显示和保存结果:```python# 在原始图像上标注瞳孔cv2.drawContours(img, [max_contour], -1, (0, 255, 0), 2)# 显示图像cv2.imshow("Pupil Area", img)cv2.waitKey(0)cv2.destroyAllWindows()# 保存图像cv2.imwrite("pupil_area.jpg", img)```5.总结本文介绍了如何使用Python OpenCV 库计算瞳孔面积的方法。
瞳孔面积计算 python opencv
瞳孔面积计算 python opencv瞳孔面积是指人眼中瞳孔的大小,它是反映眼睛瞳孔收缩和扩张的重要指标。
在计算瞳孔面积时,可以使用Python中的OpenCV库来进行图像处理和分析。
本文将介绍如何使用Python和OpenCV 来计算瞳孔面积。
我们需要导入OpenCV库,并读取一张眼睛的图像。
可以使用以下代码实现:```pythonimport cv2# 读取眼睛图像eye_image = cv2.imread('eye.jpg')```接下来,我们需要对图像进行预处理。
首先,我们将把图像转换为灰度图像,这可以提高后续处理的效果。
然后,我们可以使用图像的阈值处理来分割瞳孔区域。
可以使用以下代码实现:```python# 转换为灰度图像gray_image = cv2.cvtColor(eye_image, cv2.COLOR_BGR2GRAY)# 阈值处理_, threshold_image = cv2.threshold(gray_image, 30, 255, cv2.THRESH_BINARY)```在得到瞳孔区域的二值图像后,我们可以使用形态学操作来去除噪点,并对图像进行闭运算以填充瞳孔区域的空洞。
可以使用以下代码实现:```python# 形态学操作kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))opened_image = cv2.morphologyEx(threshold_image, cv2.MORPH_OPEN, kernel)# 闭运算closed_image = cv2.morphologyEx(opened_image, cv2.MORPH_CLOSE, kernel)```接下来,我们可以使用轮廓检测来提取瞳孔的边界。
可以使用以下代码实现:```python# 轮廓检测contours, _ = cv2.findContours(closed_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 提取最大轮廓max_contour = max(contours, key=cv2.contourArea)# 计算瞳孔面积pupil_area = cv2.contourArea(max_contour)```我们可以输出计算得到的瞳孔面积。
瞳孔面积计算 python opencv
瞳孔面积计算 python opencv(最新版)目录1.瞳孔面积计算概述2.Python OpenCV 简介3.瞳孔检测方法4.瞳孔面积计算方法5.应用实例与结果展示正文一、瞳孔面积计算概述瞳孔面积计算是指通过图像处理方法,对眼球中的瞳孔区域进行定位和计算其面积。
在众多应用场景中,如人脸识别、虹膜识别等,瞳孔面积计算是一个关键步骤。
本文将以 Python 语言和 OpenCV 库为例,介绍如何实现瞳孔面积计算。
二、Python OpenCV 简介OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了丰富的图像处理、视频分析和特征提取等功能。
Python 作为一门广泛应用于数据科学和人工智能领域的编程语言,与OpenCV 的结合使得计算机视觉任务的开发变得更加简单高效。
三、瞳孔检测方法在计算瞳孔面积之前,首先需要对瞳孔进行检测。
瞳孔检测方法有很多种,常见的有以下几种:1.基于皮肤色彩模型的方法:通过分析人脸皮肤的色彩特征,找到瞳孔所在的区域。
2.基于特征点匹配的方法:在两幅图像中找到瞳孔的特征点,并通过匹配算法确定瞳孔的位置。
3.基于深度学习的方法:利用卷积神经网络(CNN)等深度学习模型对图像进行端到端的分析,识别出瞳孔区域。
四、瞳孔面积计算方法在完成瞳孔检测后,可以通过以下方法计算瞳孔面积:1.轮廓提取:首先对瞳孔区域进行二值化处理,然后将二值化后的图像进行轮廓提取,得到瞳孔的边界。
2.面积计算:根据轮廓提取的结果,计算出瞳孔区域的面积。
可以利用 OpenCV 库中的 contourArea 函数求解。
五、应用实例与结果展示以下是一个简单的 Python 代码示例,演示如何使用 OpenCV 实现瞳孔面积计算:```pythonimport cv2# 读取图像img = cv2.imread("eye.jpg")gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 瞳孔检测pupil = detect_pupil(gray)# 计算瞳孔面积pupil_area = calculate_pupil_area(pupil)print("瞳孔面积:", pupil_area)# 显示结果cv2.imshow("Result", img)cv2.circle(img, (pupil[0], pupil[1]), pupil_area, (0, 0, 255), 2)cv2.waitKey(0)cv2.destroyAllWindows()```在实际应用中,瞳孔面积计算方法可能需要根据具体的场景和需求进行调整。
【CN209486619U】一种基于图像处理技术的瞳孔追踪和眼球控制系统【专利】
(19)中华人民共和国国家知识产权局(12)实用新型专利(10)授权公告号 (45)授权公告日 (21)申请号 201920624792.8(22)申请日 2019.05.05(73)专利权人 南京邮电大学地址 210023 江苏省南京市栖霞区文苑路9号(72)发明人 盛啸 冯丽娜 黄远彬 戴海鸿 (74)专利代理机构 南京正联知识产权代理有限公司 32243代理人 王素琴(51)Int.Cl.G06F 3/01(2006.01)(54)实用新型名称一种基于图像处理技术的瞳孔追踪和眼球控制系统(57)摘要本实用新型公开了一种基于图像处理技术的瞳孔追踪和眼球控制系统,所述系统包括图像采集模块、核心处理器、无线通信模块以及应用终端,所述图像采集模块连接所述核心处理器,通过所述图像采集模块采集眼球及瞳孔的图像数据,并传递至所述核心处理器,所述核心处理器中含有指定的图像处理算法,利用所述图像处理算法对所述图像数据进行识别,所述核心处理器通过所述识别的结果反馈发出对应所述识别的所述结果的控制指令;所述控制指令通过所述无线通信模块发送至所述应用终端,所述应用终端响应于所述控制指令实现智能操作控制;本实用新型整体结构轻巧便捷、易操作、便于携带且能够随时随地使用。
权利要求书1页 说明书4页 附图1页CN 209486619 U 2019.10.11C N 209486619U1.一种基于图像处理技术的瞳孔追踪和眼球控制系统,其特征在于,所述系统包括图像采集模块、核心处理器、无线通信模块以及应用终端所述图像采集模块连接所述核心处理器,通过所述图像采集模块采集眼球及瞳孔的图像数据,并传递至所述核心处理器,所述核心处理器中含有指定的图像处理算法,利用所述图像处理算法对所述图像数据进行识别,所述核心处理器通过所述识别的结果反馈发出对应所述识别的所述结果的控制指令;所述控制指令通过所述无线通信模块发送至所述应用终端,所述应用终端响应于所述控制指令实现智能操作控制。
基于Camshift算法的虹膜实时跟踪
基于Camshift算法的虹膜实时跟踪李振龙;李翔;秦佳丽【摘要】针对人眼虹膜跟踪中存在的眨眼和眼睑遮挡问题,提出了基于Camshift 算法的虹膜跟踪方法.首先使用Adaboost学习算法进行人眼初步定位,然后加入三庭五眼的比例模型精确定位人眼;在人眼定位的基础上使用一个圆形滑动窗遍历人眼灰度图像,其中平均灰度最小的圆形窗可初步定为虹膜区域;将以上步骤检测出的虹膜作为Camshift算法初始模板,建立虹膜的颜色概率图,利用虹膜的颜色特征完成跟踪.实验证明本算法的虹膜跟踪准确率达到84%;并能解决眨眼和眼睑遮挡问题,保证了跟踪过程的鲁棒性.【期刊名称】《科学技术与工程》【年(卷),期】2014(014)013【总页数】6页(P225-230)【关键词】虹膜跟踪;人眼识别;Adaboost算法;Camshift算法【作者】李振龙;李翔;秦佳丽【作者单位】北京工业大学电子信息与控制工程学院,北京100124;北京工业大学电子信息与控制工程学院,北京100124;北京工业大学电子信息与控制工程学院,北京100124【正文语种】中文【中图分类】TP391.413虹膜跟踪是人眼跟踪一部分,是分析眼睛运动和行为的重要方法之一;其主要运用于人机交互领域,如:虚拟现实、帮助残障人士、辅助驾驶、认知性障碍诊断等。
虹膜跟踪主要分为接触式和非接触式两大类,前者通过物理仪器来捕捉眼部运动,虽然保证了较高的精确度,但是检测成本和跟踪环境都要求较高;非接触式虹膜跟踪主要是通过图像处理的方法实现眼部特征提取,这种方法成本和对测试环境要求较低,是当前虹膜跟踪的主流方法。
近几年出现的非接触式虹膜检测一般有如下问题:①易受外界环境如光线、易受背景影响等;②跟踪过程自适应性较差如眨眼和眼睑遮挡导致的跟踪目标丢失;③对设备成本要求较高如高精度的摄像头或者外入光源设备。
非接触式虹膜跟踪的研究从很早就开始了,已经有了比较成形的想法,但是在算法的普遍性上还存在着不足需进一步的研究。
人眼检测及瞳孔定位
人眼检测及瞳孔定位余龙华;王宏;钟洪声【摘要】提出一种自动定位瞳孔的方法.该方法利用人眼在人脸的位置分布设置人眼的搜索区域,通过Adaboost (The Adaptive Boosting Algorithm)算法搜索先前设置好的区域,可以得到人眼所在粗略位置,利用图像二值化和Canny算法提取图像轮廓,通过对提取的轮廓进行椭圆拟合即可得到人的眼球中心坐标,即瞳孔的位置.实验结果表明该方法能准确定位瞳孔,对光照、姿态具有一定的鲁棒性.%A new approach is presented to locate the position of pupil automatically. It sets the eyes searching area via the distribution of eyes in the face. Through Adaboost algorithm, the cursory position of human eyes can be got by searching the region-of-interest. Using image binarization and Canny algorithm, it can extract the contour of image. It can obtain the center coordinates of human eyes by ellipse fitting, which is the position of pupil. The experimental results demonstrate that the proposed method can locate pupil in different illumination and gesture with high rate.【期刊名称】《计算机工程与应用》【年(卷),期】2013(049)003【总页数】4页(P186-189)【关键词】图像二值化;人眼检测;椭圆拟合;瞳孔定位【作者】余龙华;王宏;钟洪声【作者单位】电子科技大学电子工程学院集成电路与系统系,成都611731;电子科技大学电子工程学院集成电路与系统系,成都611731;电子科技大学电子工程学院集成电路与系统系,成都611731【正文语种】中文【中图分类】TP391.4在人脸识别系统中,精确定位瞳孔,对提高人脸识别系统的性能具有重要的意义,这是因为在人脸的识别过程中,无论是利用人脸的全局特征还是局部特征,人脸角度的变化对识别性能会有显著的影响。
Pythonopencv实现人眼人脸识别以及实时打码处理
Pythonopencv实现⼈眼⼈脸识别以及实时打码处理利⽤Python+opencv实现从摄像头捕获图像,识别其中的⼈眼/⼈脸,并打上马赛克。
系统环境:Windows 7 + Python 3.6.3 + opencv 3.4.2⼀、系统、资源准备要想达成该⽬标,需要满⾜⼀下⼏个条件:找⼀台带有摄像头的电脑,⼀般笔记本即可;需配有Python3,并安装NumPy包、opencv;需要有已经训练好的分类器,⽤于识别视频中的⼈脸、⼈眼等,如⽆分类器,可以点击这⾥下载:haarcascades分类器⼆、动⼿做1、导⼊相关包、设置视频格式、调⽤摄像头、指定分类器import numpy as npimport cv2fourcc = cv2.VideoWriter_fourcc("D", "I", "B", " ")out = cv2.VideoWriter('frame_mosic.MP4',fourcc, 20.0, (640,480))dWindow("CaptureFace")#调⽤摄像头cap=cv2.VideoCapture(0)#⼈眼识别器分类器classfier=cv2.CascadeClassifier("../haarcascades/haarcascade_eye_tree_eyeglasses.xml")2、逐帧调⽤图像,并实时处理从摄像头读取⼀帧图像后,先转化为灰度图像,然后利⽤指定的分类器识别出我们需要的内容,接着对该部分内容利⽤⾼斯噪声进⾏覆盖,以达成马赛克的⽬的。
代码如下:while cap.isOpened():read,frame=cap.read()if not read:break#灰度转换grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#⼈脸检测Rects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))if len(Rects) > 0:for Rect in Rects:x, y, w, h = Rect# 打码:使⽤⾼斯噪声替换识别出来的⼈眼所对应的像素值frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))cv2.imshow("CaptureFace",frame)if cv2.waitKey(5)&0xFF==ord('q'):break# 保存视频out.write(frame)#释放相关资源cap.release()out.release()cv2.destroyAllWindows()3、观察效果代码调⽤摄像头并在窗⼝进⾏了显⽰,可以实时观察到图像处理的效果,如图:并将结果保存为视频,⽅便随时查看:完整代码如下:# -*- coding: utf-8 -*-import numpy as npimport cv2fourcc = cv2.VideoWriter_fourcc("D", "I", "B", " ")out = cv2.VideoWriter('frame_mosic.MP4',fourcc, 20.0, (640,480))dWindow("CaptureFace")#调⽤摄像头cap=cv2.VideoCapture(0)#⼈眼识别器分类器classfier=cv2.CascadeClassifier("../haarcascades/haarcascade_eye_tree_eyeglasses.xml")while cap.isOpened():read,frame=cap.read()if not read:break#灰度转换grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#⼈脸检测Rects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))if len(Rects) > 0:for Rect in Rects:x, y, w, h = Rect# 打码:使⽤⾼斯噪声替换识别出来的⼈眼所对应的像素值frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))cv2.imshow("CaptureFace",frame)if cv2.waitKey(5)&0xFF==ord('q'):break# 保存视频out.write(frame)#释放相关资源cap.release()out.release()cv2.destroyAllWindows()利⽤opencv提供Python接⼝,可以很⽅便的进⾏图像、视频处理⽅⾯的学习研究,实在是很⽅便。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0引言近年来,人脸检测在信息安全、出入口访问控制、图像与视频检索和智能人机接口等方面的广泛运用,已成为机器视觉和模式识别等领域的热门课题[1]。
而人的眼睛,比鼻子、嘴等其他人体器官能够提供更多更重要的信息,如表情、疲劳状态、心理活动等,所以瞳孔定位在疲劳检测、表情识别、身份认证等方面有重要的意义。
1人脸检测本文主要采用Adaboost算法对人脸进行检测。
Ad-aboost算法是一种迭代算法,其主要原理为:首先,通过对训练集的训练,可以得到若干个弱分类器;然后,将弱分类器集合起来构造成一个强分类器,并且该强分类器具有较强的分类能力;最后,通过将若干个强分类器级联得到级联分类器[2]。
Adaboost算法能够实现快速人脸定位,整个过程主要包括3个部分:图像预处理、载入分类器和人脸检测,如图1所示。
2基于灰度投影的人眼定位目前,人眼定位有很多方法,主要分为基于模板的方法、基于表观的方法和基于特征的方法[2]。
其中,王文成等人[2]提出了利用区域投影的方法定位人眼区域,该方法通过对人脸图像计算水平积分投影,然后再利用人眼在面部的特殊位置得到人眼区域。
此方法较为理想化,首先利用人眼的特殊位置缩小眼睛的范围,再计算积分投影等到人眼的大致区域;然后利用边缘检测、膨胀处理等方法获得了人眼较为精确的范围。
人眼定位综合了图像增强、水平积分投影及区域特征等算法。
图2所示为系统设计中人眼定位的流程图。
基于OpenCV的人眼瞳孔定位算法TheHumanEyePupilLocalizationAlgorithmBasedonOpenCV李红匣(五邑大学,广东江门529020)LiHong-xia(WuyiUniversity,GuangdongJiangmen529020)摘要:近年来,人脸检测技术在机器视觉、模式识别、人工智能等领域得到了广泛的应用。
而包含着丰富的内容和信息的人眼,作为人体生物特征的一个重要部分,关于人眼检测与定位的技术更是广泛应用在生物识别、医疗辅助、人机交互等领域。
该文利用水平积分投影和区域特征的算法,快速定位人眼区域,然后利用区域投影的方法实现了瞳孔定位。
关键词:人脸检测;水平积分投影;区域投影中图分类号:TP391.41文献标识码:A文章编号:1003-0107(2012)11-0014-04Abstract:Inrecentyears,facedetectiontechnologyhasbeenwidelyappliedinthefieldofmachinevi-sion,patternrecognition,artificialintelligence.Andtheeyes,asanimportantpartofhuman,containalotofcontentandinformation.Thedetectionandlocationofthehumaneyesaremorewidelyusedinthefieldofbiometrics,medicalassistance,andhuman-computerinteraction.Inthispaper,thealgorithmsofhori-zontalintegralprojectionandregionalcharacteristics,quicklylocatetheeyeregions.Andthealgorithmofregionprojectionisusedtolocatethepositionofpupils.Keywords:humanfacedetection;horizontalintegralprojection;regionprojectionCLCnumber:TP391.41Documentcode:AArticleID:1003-0107(2012)11-0014-04作者简介:李红匣(1986-),女,硕士研究生,主要研究方向为人脸检测。
图1人脸检测人脸检测142.1图像预处理2.1.1缩小定位范围在定位好的人脸图像中,我们用一个矩形框将检测到的人脸标记出来,并将这个矩形记为R;为了进一步缩小搜索范围,根据人脸的面部特征,将从距矩形R顶部1/8处到距矩形R底部1/2处为止的部分作为新的矩形,记为R',如图3所示。
这种情况都包含了人眼区域,并将所得到的人眼区域取出,从而得到图像,如图4(a)所示。
该项处理确定了人眼的搜索区域,而且对后续处理的好处有两个:一个是缩小了图像的尺寸,使搜索的范围减小,从而减少了处理的时间;另一个是除去了图像中会对人眼检测造成影响的一些因素,如光照等。
2.1.2图像增强图像增强主要包括空域增强和频域增强,本文使用的是空域增强。
图4(a)所示为经过2.1.1节步骤处理后所得到的图像,记为原始图像。
首先,对原始图像(如图4(a)所示)进行均值滤波。
均值滤波器是常用的线性滤波器之一,对噪声有较好的抑制作用。
均值滤波的主要思想是:先计算图像中某一点及其周围8个像素点的像素值的均值,再用得到的均值代替目标点的像素值[3];然后,对图像进行直方图均衡化,图4(c)所示是处理后的结果。
2.1.3图像水平灰度投影图像预处理后,可以通过计算图像的水平积分投影进一步缩小人眼的范围。
如图5所示,图像的水平灰度投影呈现出一定的规律:图5中出现的两个波谷自上而下分别对应眉毛区域和眼睛区域。
具体的判定过程为:首先计算水平积分投影;设定波谷幅度的最小阈值;在水平灰度投影图像中,从图像的底部向图像的顶部搜索,当波谷幅值大于设定的最小阈值、且为第一个波谷,则将此波谷的坐标作为眼睛的中心坐标;以此坐标为中心,分别向图像底部和顶部扩展一定的范围[4],将包括眼睛的最小部分取出,如图6所示。
图2人眼定位流程图3缩小定位范围(a)原始图像(b)均值滤波(c)直方均衡化图4152.2人眼定位2.2.1边缘检测针对图6所示的人眼区域,本文采用Sobel算子对图像进行边缘检测。
2.2.2膨胀处理首先对边缘图像进行阈值分割,然后再进行膨胀处理[4]。
由于圆形模板的对称性,所以本文采用了圆形结构元素。
2.2.3区域连通性分析本文采用了区域增长法对图像进行连通性分析。
区域增长法是一种利用同一物体区域内的像素具有相似性的性质来聚集像素点的方法,由初始区域开始,如小邻域(或像素点),将与其相邻的、且具有相同性质的像素(或区域)合并到当前的区域中;利用这种方式逐步增长区域,直至没有可以合并的像素点(或小区域)为止[5]。
当区域像素点的个数大于某一定值时,该区域可以被认为是人眼区域,由此可以进行人眼定位,如图6所示。
3瞳孔定位3.1区域投影本文利用一种基于RPF[6]的方法,对瞳孔区域进行粗定位。
算法的主要思想是:将眼睛窗口在水平和垂直方向上进行平均分割,假设垂直分割和水平分割的个数分别为m、n,分割后水平方向的区域宽为w,垂直方向的高为h,则第i区域的垂直投影与第j区域的水平投影函数分别为:(Rv)i=iwΣPv(x),1≤i≤m(Rh)j=iwΣPh(y),1≤j≤n式中,Pv(x)和Ph(y)分别表示在第x列方向的垂直投影和在第y行方向的水平投影[7]。
垂直投影灰度最小值区域与水平投影灰度最小值区域的交集即是眼睛中心所在的区域。
然后,将眼睛中心区域与8邻域合并,这样就将瞳孔尽可能地包含在此区域中,再针对该区域进行处理,从而实现瞳孔定位。
3.2瞳孔中心定位对于获得的包含瞳孔的区域如图7所示,由于瞳孔比周围的眼白的灰度值低,可以利用此灰度特性精确得到眼睛的中心坐标。
具体操作过程如下:(1)确定滤波窗口函数,进行线性滤波;(2)利用Otsu方法进行区域分割,实现二值化;(3)从图片的中心点开始进行边界跟踪,获得瞳孔范围;(4)采用重心法计算瞳孔中心点的坐标[8]。
4实验结果及分析针对上述算法,分别对两幅人脸图像进行了实验,实验结果如图8所示。
由图8可知,左边图像定位的效果较好,而右边图像定位的人眼区域不是很好。
分析其原因,主要是因为该图像中人眼有一定角度的倾斜,在由计算得到的水平积分投影中定位的波谷产生了偏差,导致定位的人眼区域的效果不是很好。
5结论本文以OpenCV图像处理库为核心,在MicrosoftVi-sualStudio2005的环境下,设计实现了一个人眼瞳孔定位系统,具有较好的移植性和实用性。
但是该算法较为复杂,对该算法继续进行优化以适应实际应用是以后主要研究的方向。
参考文献:[1]HJELMASE.Facedetection:Asurvey[J].ComputerVisionandImageUnderstanding,2001,83(3):236-274.[2]王文成,常发亮.一种基于区域投影的人眼精确定位方法[J].光电子·激光,2011,22(4):618-622.[3]赵黎.基于OpenCV的人脸检测系统设计与实现[J].科技信息(科学教研),2008,(18).图5图像水平灰度投影图6人眼区域x=(i-1)w+1y=(j-1)h+1图8实验结果图7瞳孔定位结果图16星系统的市场竞争力。
研究GMR-1标准,为我国开发研制具有自主知识产权的地球同步卫星移动通信系统,具有一定的参照作用和积累了经验。
参考文献:[1]GEO-MobileRadioInterfaceSpecifications:Part1:Generalspecifications;sub-part3:GeneralSystemDescription;GMR-101.202[S].[2]3GPPTS29.007V4.14.0[S].[3]GEO-MobileRadioInterfaceSpecifications;Part4:Radiointerfaceprotocolspecifications;Sub-part8:MobileRadioInterfaceLayer3Specifications;GMR-104.008[S].[4]GEO-MobileRadioInterfaceSpecification:Part3networkspecifications;sub-part18:terminal-to-terminalcall(TtT);GMR-103.296[S].[5]GEO-MobileRadioInterfaceSpecification:Part3networkspecifications;sub-part19:OptimalRoutingtechnicalreal-ization;GMR-103.297[S].[6]GEO-MobileRadioInterfaceSpecification:Part3networkspecifications;sub-part20:TechnicalrealizationofHigh-PenetrationAlerting;GMR-103.298[S].[7]GEO-MobileRadioInterfaceSpecification:Part3:Net-workspecifications;Sub-part21:PositionReportingser-vices;GMR-103.299[S].[8]GEO-MobileRadioInterfaceSpecifications;Part5:Radiointerfacephysicallayerspecifications;Sub-part1:Physi-calLayerontheRadioPath:GeneralDescription;GMR-105.001[S].[9]GEO-MobileRadioInterfaceSpecifications;Part5:Radiointerfacephysicallayerspecifications;Sub-part3:ChannelCoding;GMR-105.003[S].[10]3GPPTS05.03V8.9.0.[11]GEO-MobileRadioInterfaceSpecifications;Part5:Radiointerfacephysicallayerspecifications;Sub-part4:Modu-lation;GMR-105.004[S].[12]3GPPTS05.04V8.4.0.[13]GEO-MobileRadioInterfaceSpecification;part4:Radiointerfaceprotocolspecifications;sub-part6:Mobileearthstation-GatewayStationInterfaceDataLinkLayerspeci-fication;GMR-104.006[S].[14]3GPPTS04.08V7.21.0.Mobileradiointerfacelayer3specification[S].[4]符志鹏,汪丰,马小强.基于灰度投影及区域特征的人眼定位算法[J].电脑知识与技术,2008,(34).[5]庞希愚.视频运动对象提取和跟踪方法的研究[D].山东:山东大学硕士学位论文,2007.[6]薛雪,刘泽平,丁艳.基于区域增长的图像跟踪算法的研究[J].光学技术,2005,31(1):152-154.[7]ZHOUZH,GENGX.Projectionfunctionsforeyedetection[J].Pat-ternRecognition,2004,37(5).[8]李忠科.虹膜识别系统的若干算法研究[D].长沙:长沙理工大学硕士学位论文,2011.上接10页17。