眼动追踪:找到瞳孔(x,y)

kar*_*thy 9 algorithm matlab opencv computer-vision eye-tracking

我正在寻找一些关于如何处理以下计算机视觉问题的建议.以下是我正在使用的4个眼动追踪数据集样本.我想写代码拍摄一个这样的图像并计算瞳孔中心的(x,y)位置.我目前正在使用MATLAB,但我也愿意使用其他软件.

有人可以推荐一种我可以用于此任务的方法吗?这里有一些我已经尝试过的但是效果不太好的东西.

  • 我试图使用圆形霍夫变换,但这需要我猜测瞳孔的半径,这有点问题.此外,由于扭曲,瞳孔并不总是一个圆,这可能使这种方法更难.
  • 我尝试基于像素亮度对图像进行阈值处理,并使用regionprops MATLAB函数来寻找具有极低偏心率(即尽可能圆形)的粗略(例如)200像素区域的区域.然而,这对阈值非常敏感,并且基于照明条件,眼睛的一些图像比其他图像更亮.(注意下面的4个样本已经进行了均值归一化,并且其中一个图像比其他图像更亮,可能是因为某处有一些非常暗的随机像素)

任何意见/建议将不胜感激!

编辑:感谢Stargazer的评论.理想情况下,算法应该能够确定瞳孔不在图像中,就像最后一个样本的情况一样.如果我暂时忘记它,这不是什么大问题.如果它给我错误的答案会更糟糕.

替代文字

TH.*_*TH. 5

我不确定这是否对您有帮助,因为您使用的是数据集,而且我不知道您是否灵活/需要更改捕获设备。以防万一,我们走吧。

森本等。使用一个不错的相机技巧。他们用两套红外灯创造了一个照相机。第一组放在相机镜头附近。第二个镜头则远离镜头。使用不同的频率,两个LED集在不同的时刻被打开。

视网膜将从相机镜头附近的装置反射光(这与摄影中的红眼问题相同),从而产生明亮的瞳孔。另一组LED将产生暗瞳比较结果。因此,两幅图像之间的简单区别就可以给您近乎完美的瞳孔。看一下森本等人的方法。探索闪光(很容易接近视线方向)。


小智 5

使用 OpenCV 集成 Python 。. . 初学者在 OpenCV 上工作将非常容易。

程序:
* 如果您使用的是普通网络摄像头
1. 首先使用 VideoCapture 功能处理帧
2. 将其转换为灰度图像。
3. 使用 cv2.Canny() 函数查找 Canny Edges
4. 应用 HoughCircles 函数。它将找到图像中的圆圈以及图像的中心。
5. 使用 HoughCircirlces 的结果参数在瞳孔周围绘制圆圈。就是这样。