在这一块儿方法比较多,目的也十分简单,我们要得到人眼的瞳孔位置就需要有个思路,再通过代码实现,至于代码不会的地方去查阅其他代码即可。
-
确定主要特征
——通过颜色梯度确定眼球轮廓
我在刚学的时候总是以为黑色是图片的特征,所以我只需要找到图像里面最黑的部分就可以了。但是通过尝试后发现,一顿瞎操作啥用都没有。我发现单纯的找二值化后的数值根本没有用,或者说不具备普遍意义。
还是得多看论文,再学习过一些资料后我发现,这段图片中(人的眼球)关键特征不是单纯的颜色,而是
颜色的变化
。我看过一个前辈的博客中说到,图像的颜色变化如同波澜起伏的地势,这种突兀的变化无疑是平地里的大峡谷!
接下来我就只需要去确定这个特征即可,至于结果如何就需要一步步来了。
-
提高准确度
——去除干扰
我发现单纯的通过这种颜色的变化很难适用于大多数情况,我如何让这种颜色的变化不受外部环境的干扰呢?
其实很容易找到,主要的干扰只有两个
光线的变化导致的干扰 (类似于“红眼现象”)
眼睛的半闭状态(怕侵权,用了个小柴狗头像)
我举的例子比较极端化,但是很明显,人眼的特征消失了,我无法按照刚刚的思路解决问题了,如何改进这一现象呢?
最早的相机里面也出现过“红眼现象”,对于反光很好解决,一般来说来说,他们借助算法拟合周围像素点的颜色值来填补中间的反光,至于拟合方式就不在这里赘述了。
因为我们是定位,能够找到就可以了,所以——我们通过判断颜色梯度的变化过程能够发现瞳孔位置的特殊现象,无论反光多么严重,高亮总是出现在瞳孔最突出的位置,而且在V色域中特征很明细显,梯度变化是一个对称的过程。我尝试着用
平滑+锐化
处理后发现效果还是挺好的。
眼睛的半闭状态需要合适的处理眉毛这一块,因为眼睛已经稍微闭合,我们只需要找到眉毛位置,再沿着眉毛寻找下面紧挨着的眼睛即可,毕竟瞳孔和眼白还是很好区分的。
主要的思路如上所示,因为这是本科毕业后实习项目,存档思路如上,代码部分还是比较简单的,而且传统方法处理图像比较依赖环境和光线,便不再去复现上述代码,如有需要还请评论区沟通。
Gaze Tracking This is a
Python
(2 and 3) library that provides a webcam-based eye tracking system. It gives you the exact position of the pupils and the gaze direction, in real time. ???? Quick note: ...
1.背景介绍
计算机视觉
是一种利用计算机处理和分析图像和视频的技术。它广泛应用于各个领域,如人脸识别、自动驾驶、物体检测等。OpenCV(Open Source Computer Vision Library)是一个开源的
计算机视觉
库,提供了大量的功能和工具,帮助开发者快速
实现
计算机视觉
任务。本文将介绍如何使用OpenCV进行视觉
定位
和目标识别。
2.核心概念与联系
2.1 视觉
定位
视觉...
本文主要
实现
基于
python
做一个视觉
定位
识别的功能,halcon版本使用的是halcon12.0,调用halcon的dll来
实现
二次开发,下边从头开始设置。
编程
环境
:
python
3.8
pyqt5.15
halcon12.0
IDE: VisualStudio Code
区域性锁定目标实时动态跟踪(适用 警方追捕,无人机锁定拍摄等)特性:1.BOOSTING:算法原理类似于Harr cascdes(AdaBoost),是一种很老的算法。这个算法速度慢并且不准。2.MIL:比BOOSTING准一点3.KCF:速度比BOOSTING和MIL更快,与BOOSTING和MIL一样不能很好的处理遮挡问题。4.CSRT:比KCF更准一些,但是速度比KCF慢5.MedianFlow:对于快速移动的目标和外形比那花迅速的目标效果不好。
一、霍夫变换
本文主要介绍霍夫变换检测直线和圆的原理。
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的集合图像(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。
1、直线检测
1.1 直线的表示方式
对于平面中的一条直线,在笛卡尔坐标系中,常见的有两点式,点斜式表示方式。然而在Hough变换中,考虑的是另外一种表示方式:使用(r,θr,\thetar,θ)来表示一条直线。其中,r为该直线到原点的距离,来表示一条