我正在开展眼动追踪项目。在这个项目中,我正在通过网络摄像头视频跟踪眼睛(分辨率为640X480)。
我可以在每一帧中找到并跟踪眼睛,但我需要找到瞳孔。我阅读了很多论文,其中大部分都是用Alan Yuille的可变形模板方法来提取和跟踪眼睛特征。任何人都可以帮助我使用任何语言的代码(matlab / OpenCV)吗?
我尝试过不同的阈值,但由于眼部区域的分辨率较低,因此效果不佳。我非常感谢在视频中找到瞳孔甚至虹膜的任何帮助。
答案 0 :(得分:8)
您需要做的是将网络摄像头转换为近红外摄像头。网上有很多教程。 Try this
从NIR相机拍摄的图像看起来像这样 -
然后您可以使用OpenCV来达到阈值。
然后使用Erode功能。
在此之后,用一些颜色填充图像,将角落作为种子点。
消除孔并反转图像。
使用距离变换到最接近的非零值。
找到最大值的坐标并画一个圆圈。
答案 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),你可以很容易地找到眼睛的中心..