5

我现在正在做一个眼动追踪项目。在这个项目中,我在网络摄像头视频中跟踪眼睛(分辨率为 640X480)。

我可以在每一帧中定位和跟踪眼睛,但我需要定位瞳孔。我阅读了很多论文,其中大部分参考了 Alan Yuille 的可变形模板方法来提取和跟踪眼睛特征。任何人都可以用任何语言(matlab/OpenCV)帮助我编写此方法的代码吗?

我尝试过使用不同的阈值,但由于眼部区域的分辨率较低,因此效果不佳。我将非常感谢有关在视频中寻找瞳孔甚至虹膜的任何帮助。

示例图像

4

4 回答 4

8

您需要做的是将网络摄像头转换为近红外摄像头。网上有很多教程。试试这个

从 NIR 摄像头拍摄的图像看起来像这样 -

在此处输入图像描述

然后您可以使用 OpenCV 来设置阈值。

在此处输入图像描述

然后使用 Erode 函数。

在此处输入图像描述

在此之后用一些颜色填充图像,以角作为种子点。

在此处输入图像描述

消除孔洞并反转图像。

在此处输入图像描述

使用距离变换到最近的非零值。

在此处输入图像描述

找到最大值的坐标并画一个圆。

在此处输入图像描述

于 2012-07-03T18:22:56.710 回答
2

如果您仍在为此工作,请查看我的 OptimEyes 项目:https ://github.com/LukeAllen/optimeyes

它使用 Python 和 OpenCV,并且可以很好地处理来自 640x480 网络摄像头的图像。您也可以在该页面上查看“理论论文”和演示视频。(这是今年早些时候斯坦福大学的一个课堂项目;它不是很完善,但我们尝试对代码进行一些注释。)

于 2014-07-01T01:06:49.413 回答
1

根据跟踪瞳孔的应用程序,我会为眼睛找到一个边界框,然后在该框内找到最暗的像素。

一些伪代码:

box left_location = findlefteye()
box right_location = findrighteye()
image_matrix left = image[left_location]
image_matrix right = image[right_location]
image_matrix average = left + right
pixel min = min(average)
pixel left_pupil = left_location.corner + min
pixel right_pupil = right_location.corner + min
于 2012-05-11T06:55:53.580 回答
0

在 Anirudth 建议的第一个答案中......
只需在阈值函数(第二步)之后应用 HoughCirles 函数。
然后您可以直接在瞳孔周围绘制圆圈,并使用半径(r)和眼睛中心(x,y)您可以轻松找到眼睛中心。

于 2015-03-03T20:26:36.947 回答