关于在视频中找到学生

时间:2012-05-11 06:15:19

标签: c matlab opencv eye-tracking iris-recognition

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

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

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

Sample image

4 个答案:

答案 0 :(得分:8)

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

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

enter image description here

然后您可以使用OpenCV来达到阈值。

enter image description here

然后使用Erode功能。

enter image description here

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

enter image description here

消除孔并反转图像。

enter image description here

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

enter image description here

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

enter image description here

答案 1 :(得分:2)

如果您仍在处理此问题,请查看我的OptimEyes项目:https://github.com/LukeAllen/optimeyes

它使用Python和OpenCV,并且可以很好地处理来自640x480网络摄像头的图像。你可以看一下"理论论文"并在该页面上演示视频。 (今年早些时候这是斯坦福大学的一个班级项目;它不是很精致,但我们试图对代码进行评论。)

答案 2 :(得分: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

答案 3 :(得分:0)

在Anirudth建议的第一个答案中...... 只需在阈值处理功能后应用HoughCirles功能(第2步) 然后你可以直接在瞳孔周围绘制圆圈,并使用半径(r)和眼睛中心(x,y),你可以很容易地找到眼睛的中心..