论文及代码地址

原始论文 Accurate eye centre localisation by means of gradients

原始代码 eyelike

代码分析(很久之前写的,排版有点乱,有时间再更新)

Main函数中

face_cascade用于实现人脸捕获

之后是窗口命名。

通过CvCapture将摄像头捕获到的图像传入frame,然后对frame进行分析

进入detectAndDisplay

frame是总的图像.

Faces是在frame基础上得到的人脸区域,vector<Rect>型

通过split函数将frame通道分开,并且取R通道作为灰度图。

face_cascade.detectMultiScale用于检测在此灰度图上面的人脸区域。

对每一个人脸区域均做如下处理:

首先在原图中用矩形标出人脸位置

然后进入findEyes函数 faceROI是灰度图的人脸区域部分,即ROI。

接下来标出眼球所处的区域(此部分为估计区域),以人脸区域为准,按比例估计眼镜区域

cv::Point leftPupil =findEyeCenter(faceROI,leftEyeRegion,"Left Eye");

此语句用于查找眼球的中心,即瞳孔附近。

首先将估计的眼球区域拿出来作为图像命名为eyeROIUnscaled,再改变大小换成较为方形的。

宽度为50,称此图为eyeROI

标记处face上面eye的矩形图

rectangle(face,eye,1234);通过注释此行可以知道原先估计出来的眼睛区域较大,一般都会将眉毛包括进去。

cv::Mat gradientX =computeMatXGradient(eyeROI);

cv::Mat gradientY =computeMatXGradient(eyeROI.t()).t();

cv::Mat mags =matrixMagnitude(gradientX, gradientY);

通过这三个函数来将eyeROI的梯度计算出来,不过这时候的eyeROI已经是变形后的了

double gradientThresh =computeDynamicThreshold(mags, kGradientThreshold);

计算出动态阈值来去除掉较小的部分,以max为基准。

详细来说,将小的部分置为0,大的部分将gradientX和gradientY归一3,而mags不变

之后以5*5的高斯滤波器滤波。

根据eyeROI灰度图的灰度值来为计算出将来要用到的每一个点的附加权重值,命名为weight

然后通过遍历gradientX和gradientY(此时已经成单位值)来寻找可能的中心点。

首先排除gradientX=0以及gradientY=0的点,接下来测试其它点testPossibleCentersFormula

对于每一个不被排除的点(x,y)都进行如下操作:

求出可能点中心点到(x,y)的距离向量,单位化,但mag保持原值。因为这一过程主要测试找到两个向量方向相同的点,所以不必约束其向量大小,重点在单位化后的内积大小。找到最大的意味着找到了方向相同的一系列点。此次最大的内积结果记为dotProduct。将内积结果加上权重后记录于Or中。Or是outSum的指针。

numGradient记录rows*cols。

将outSum变换数据类型成为out。

找出out中最大值以及它的位置分别记为maxVal和maxP

此时设置另外一个阈值,即floodThresh=maxVal * kPostProcessThreshold;

此语句舍弃了97%的点。那些被舍弃的点置0,其他保存

经过floodKillEdges。又去除了一些点。

这时取最大值就认为是eyecenter.

在这里也就是可以总结说:只计算了一次,便将中心点通过两次取最大值得到了。

程序的后半部分便是标记出原图的眼球中心。然后将结果图显示出来。

眼球中心定位跟踪算法—eyelike 代码解析相关推荐

  1. 眼球中心定位跟踪算法—eyelike

    项目介绍 人眼中心定位是一个用于眼部追踪的算法,它来源于github中eyelike项目,C++语言实现,依赖OpenCV库. 关于代码的编译,作者提供了CMakeLists.txt文件,同时支持Wi ...

  2. dst matlab,DSTcode DST跟踪算法MATLAB代码,复杂环境中仿多目标 实现的单 Other systems 其他 272万源代码下载- www.pudn.com...

    文件名称: DSTcode下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 82 KB 上传时间: 2017-03-17 下载次数: 0 提 供 者: Mar ...

  3. YOLO-V5 算法和代码解析系列 —— 学习路线规划综述

    目录标题 为什么学习 YOLO-V5 ? 博客文章列表 面向对象 开源项目学习方法 预备知识 项目目录结构 为什么学习 YOLO-V5 ? 算法性能:与YOLO系列(V1,V2,V3,V4)相比,YO ...

  4. PPQ库中KLD算法实现代码解析

    PPQ量化工具库KLD算法解析 前言 PPQ算法实现 NVIDIA的PPT中KLD算法流程 KLD算法PPQ实现版本 PPQ与NVIDIA的区别: 前言 这是对PPQ库中KLD算法实现代码解析,关于P ...

  5. Staple目标跟踪算法C++代码测试

    一.介绍 Staple综合了局部特征HOG和全局特征颜色直方图用于目标跟踪的算法. 首先作者发现颜色分布不足以将目标和背景区分开来.局部特征这样的模板在应对剧烈形变的时候效果往往很差. 作者针对这两个 ...

  6. GraphSAGE算法 和 代码解析

    聚合邻居 GraphSAGE研究了聚合邻居操作所需的性质,并且提出了几种新的聚合操作(aggregator),需满足如下条件: (1)聚合操作必须要对聚合节点的数量做到自适应.不管节点的邻居数量怎么变 ...

  7. tdoa/aoa定位的扩展卡尔曼滤波定位算法matlab源码,TDOA/AOA定位的扩展卡尔曼滤波定位跟踪算法Matlab源码...

    TDOA/AOA定位是无线定位领域里使用得最多的一种定位体制,扩展卡尔曼滤波器是最经典的非线性滤波算法,可用于目标的定位和动态轨迹跟踪,GreenSim团队实现了该算法,本源码由GreenSim团队原 ...

  8. KNN 分类算法原理代码解析

    作者 | Charmve 来源 | 迈微AI研习社 k-最近邻算法是基于实例的学习方法中最基本的,先介绍基x`于实例学习的相关概念. 基于实例的学习 已知一系列的训练样例,很多学习方法为目标函数建立起 ...

  9. 对抗样本生成算法复现代码解析:FGSM和DeepFool

    参考链接: https://www.jianshu.com/p/72c072551e10 论文地址: FGSM:地址 DeepFool:地址 导入包 import numpy as np import ...

最新文章

  1. matlab导出jar包错误Error: An error occurred while shelling out to javac(erro code = 1)解决办法...
  2. codeforces Gym 100338E Numbers (贪心,实现)
  3. OpenCV imgproc直方图的实例(附完整代码)
  4. springboot快速集成swagger
  5. python的argsort函数_python——argsort函数
  6. 《团队激励与沟通》第 5 讲——沟通的技巧 重点部分总结
  7. sqlserver 2008阻止保存要求重新创建表的更改
  8. 关于swf转fla 软件的间题
  9. intel服务器最新主板芯片组,英特尔服务器主板芯片组驱动程序
  10. 高等数学张宇18讲 第七讲 一元函数积分学的概念与计算
  11. 室外宽温1口千兆光纤收发器工业导轨式发送机接收机单模单纤单电口
  12. 数字人实业应用场景,远远不止屏幕互动
  13. 计算机找不到ie浏览器,IE浏览器不见了怎么办?找回IE浏览器的方法
  14. cp -r命令 linux什么意思,linux命令 $- 是什么意思
  15. lokohelp康复机器人_Lokohelp康复机器人在脑卒中偏瘫患者下肢运动功能恢复中的应用...
  16. [luogu]P1852跳跳棋
  17. 内存盘 固态硬盘 机械硬盘 速度测试
  18. HTML5 —新增标签
  19. python计算长方体体积最简单代码_C语言编程简单的小程序,计算长方体体积!...
  20. robot-upstart开机自启动

热门文章

  1. 系统日志函数syslog和syslog配置
  2. 前端导出后端文件的方法
  3. web大学生个人网站作业模板——上海旅游景点介绍网页代码 家乡旅游网页制作模板 大学生静态HTML网页源码...
  4. 地标海之珠夜色素材高清图片
  5. PyCharm关闭更新提示
  6. blackduck issue fix
  7. 《招标投标法》和《招标投标实施条例》有什么关系?
  8. react组件中箭头函数的使用
  9. Idea中诡异的错误——文件为灰色并显示一个橙色时钟图标
  10. HAL库学习之串口通信