先通过级联分类器定位人眼的位置,在通过卷积运算函数进一步处理得到瞳孔位置,效果图如下:

级联分类器

在目前所有的大多数方法中,OpenCV自带的级联分类器是效率、准确率、实现方法简单这三个方面兼顾综合评分最高的方法。
具体的代码和实现可以参考这个博客: Opencv——级联分类器(AdaBoost)
简而言之就是由于找眼睛这个工作太具有普遍意义,已经有前辈给我们准备好了现成的库函数,直接用就行。

效果图如下所示:

需要注意的是这种方法虽然能够准确定位到人眼位置,主要是依据人眼的整体轮廓——上下眼皮形状和眼球的黑色,我指出这一点的原因是为了区别瞳孔定位,为了进一步的找到人眼中心眼球还需要接下来的处理。

图像的锐化和特征提取

在这一块儿方法比较多,目的也十分简单,我们要得到人眼的瞳孔位置就需要有个思路,再通过代码实现,至于代码不会的地方去查阅其他代码即可。

  1. 确定主要特征——通过颜色梯度确定眼球轮廓

    我在刚学的时候总是以为黑色是图片的特征,所以我只需要找到图像里面最黑的部分就可以了。但是通过尝试后发现,一顿瞎操作啥用都没有。我发现单纯的找二值化后的数值根本没有用,或者说不具备普遍意义。
    还是得多看论文,再学习过一些资料后我发现,这段图片中(人的眼球)关键特征不是单纯的颜色,而是颜色的变化。我看过一个前辈的博客中说到,图像的颜色变化如同波澜起伏的地势,这种突兀的变化无疑是平地里的大峡谷!
    接下来我就只需要去确定这个特征即可,至于结果如何就需要一步步来了。

  2. 提高准确度——去除干扰

    我发现单纯的通过这种颜色的变化很难适用于大多数情况,我如何让这种颜色的变化不受外部环境的干扰呢?
    其实很容易找到,主要的干扰只有两个

    光线的变化导致的干扰 (类似于“红眼现象”)

    眼睛的半闭状态(怕侵权,用了个小柴狗头像)

我举的例子比较极端化,但是很明显,人眼的特征消失了,我无法按照刚刚的思路解决问题了,如何改进这一现象呢?

最早的相机里面也出现过“红眼现象”,对于反光很好解决,一般来说来说,他们借助算法拟合周围像素点的颜色值来填补中间的反光,至于拟合方式就不在这里赘述了。
因为我们是定位,能够找到就可以了,所以——我们通过判断颜色梯度的变化过程能够发现瞳孔位置的特殊现象,无论反光多么严重,高亮总是出现在瞳孔最突出的位置,而且在V色域中特征很明细显,梯度变化是一个对称的过程。我尝试着用平滑+锐化处理后发现效果还是挺好的。
眼睛的半闭状态需要合适的处理眉毛这一块,因为眼睛已经稍微闭合,我们只需要找到眉毛位置,再沿着眉毛寻找下面紧挨着的眼睛即可,毕竟瞳孔和眼白还是很好区分的。

  1. 代码实现

主要的思路如上所示,因为这是本科毕业后实习项目,存档思路如上,代码部分还是比较简单的,而且传统方法处理图像比较依赖环境和光线,便不再去复现上述代码,如有需要还请评论区沟通。

windows或者Ubuntu环境下用python实现瞳孔定位相关推荐

  1. 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入

    成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入 目录 解决问题 解决思路 解决方法 解决问题 .pyx格式文件,在window ...

  2. 在没有网的windows环境下安装Python模块

    在安装python环境以及python的一些模块时,可能需要在没有网的windows环境下安装Python模块. python模块下载地址,几乎所有的模块都有:https://www.lfd.uci. ...

  3. 分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view

    分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view ...

  4. ubuntu安装python环境_AirSim 无人驾驶教程(1)Airsim 在Ubuntu环境下的安装

    AirSim 无人驾驶教程(1)Airsim 在Ubuntu环境下的安装 说实话我自己内心是不看好无人驾驶的短期普及的,但是通过对无人驾驶的研究可以实现对一些科学知识的掌握和探索.通过无人驾驶的仿真环 ...

  5. windows环境下利用python进行CGI配置

    windows环境下利用python进行CGI配置(win10,visual stdio 2017中的python3.6) 写在前面,初学python,看到python的CGI编程这一章的时候尝试在教 ...

  6. Ubuntu环境下制作Windows U盘启动工具

    Ubuntu环境下制作Windows U盘启动工具 第一次写这个,着实不会,权当自个儿记录一下吧.这两天准备学习语言,把elementaryOS改装Ubuntu ,装的时候迷糊眼一顿next,结果把原 ...

  7. Windows环境下用python嵌入式环境跑程序可太方便了

    Windows环境下用python嵌入式环境跑程序可太方便了 1. 嵌入式包默认的文件夹设置 2. 建立python环境文件夹 3. 添加python索引包路径 4. 安装pip和requiremen ...

  8. linux中python安装_linux环境下的python安装过程图解(含setuptools)

    这里我不想采用诸如ubuntu下的apt-get install方式进行python的安装,而是在linux下采用源码包的方式进行python的安装. 一.下载python源码包 打开ubuntu下的 ...

  9. 如何在UBUNTU环境下使用GAPPProxy

    如何在UBUNTU环境下使用GAPPProxy 目前天朝对于网络这个大通道管理的很严谨,于是我们这些把网站流浪在海外的人们吃尽了苦头,尤其是YOUTUB完全不能访问最郁闷,在WINDOWS下大家可能用 ...

最新文章

  1. Raising Modulo Numbers
  2. 一文整理IEEE问题汇总【IEEE PDF Checker】(更新中)
  3. 如何全面的把握一个系统的异常处理
  4. ConstantSourceNode
  5. Seven Kinds of Testers - 七种类型的测试
  6. 用ASP设计购物推车
  7. 网络断网远程计算机会自动修复么,网络断网不怕,教你自己动手修复
  8. 电脑键盘部分按键失灵_笔记本键盘失灵怎么办,电脑键盘失灵-中关村在线
  9. 一年级有计算机教学吗,一年级信息技术教学计划范文
  10. 洛谷:P2142 高精度减法
  11. WIN7 安装使用远程服务器管理工具-如DHCP、AD域、HyperV、远程桌面
  12. Win7系统没有音量图标,系统图标为灰色打不开的解决方法
  13. unity之二维数组实现正六边形地图
  14. 分类算法SVM(支持向量机)
  15. Autosar代码包初识 3 - 创建RH850的GreenHills工程编译Autosar Demo工程
  16. 爬取热门微博数据2018.3.27更新
  17. Go语言函数作为 值 赋值给一个变量 和 函数作为参数传入另一个函数的写法你不想了解咩
  18. 疑似1.59亿LinkedIn领英客户数据库正在以99美元的价格被售卖
  19. excel表格中,公式生成的数据如何复制到另一个工作簿中?
  20. 10-245 A4-6查找订单表中特定顾客编号的相关信息

热门文章

  1. 关于Angular2.0 in-memory-web-api的GET http://localhost:3000/traceur 404 (Not Found)等错误的解决方法之一
  2. HBuilderX Wap2App(H5)打包APP去除顶部导航栏
  3. 一句话概括Kubernetes架构
  4. 晚上的静坐突然的一些感慨-2015年12月2日
  5. 利用ipconfig /renew重新获取IP地址,IPCONFIG/FLUSHDNS刷新缓存
  6. 微信小程序button的外观属性
  7. 彻底搞清楚Handler,再也不怕面试官
  8. 内存dump与休眠文件
  9. 昨日关注:Channel9 Wiki: Online Tutorials about Enterprise Library
  10. 去ioe mysql_去IOE过程中MySQL的业务背景