【发布时间】:2011-04-27 19:23:46
【问题描述】:
我正在寻找一些关于如何解决以下计算机视觉问题的建议。 以下是我正在使用的 4 个眼动追踪数据集样本。我想编写代码拍摄一张这样的图像并计算瞳孔中心的(x,y)位置。我目前正在使用 MATLAB,但我也愿意使用其他软件。
有人可以推荐一种我可以用于此任务的方法吗?以下是我已经尝试过但效果不佳的一些方法。
- 我尝试使用圆形霍夫变换,但这需要我猜测瞳孔的半径,这有点问题。此外,由于变形,瞳孔并不总是完全是一个圆圈,这可能会使这种方法更加困难。
- 我尝试根据像素亮度对图像进行阈值处理,并使用 regionprops MATLAB 函数来寻找一个大约(比如说)200 像素区域且偏心率非常低(即尽可能圆形)的区域。但是,这对阈值非常敏感,并且根据照明条件,眼睛的某些图像会比其他图像更亮。 (请注意,下面的 4 个样本已经进行了均值归一化,但其中一张图像总体上仍然比其他图像更亮,这可能是因为某处有一些非常暗的随机像素)
任何 cmets/建议将不胜感激!
编辑:感谢 Stargazer 的评论。理想情况下,该算法应该能够确定瞳孔不在图像中,就像最后一个样本的情况一样。如果我暂时忘记它,这没什么大不了的。如果它给了我错误的答案,那就更糟了。
【问题讨论】:
-
好吧,至少,如果您找到只适用于前三个的算法,请不要失望。连第四期的学生都找不到了。
-
我当然明白这一点。理想情况下,算法应该在这种情况下确定这一点。
-
您是否考虑过使用 haarcascades (en.wikipedia.org/wiki/Viola-Jones_object_detection_framework) 或本地二进制模式? (en.wikipedia.org/wiki/Local_binary_patterns)。 OpenCV 提供了非常简单的方法来训练这类分类器。
-
在 opencv 中已经有经过训练可以检测眼睛的 haar 级联。在 Unix 系统上,当您安装 opencv 时,它们会保存到:/usr/local/share/opencv/haarcascades 然后您将这些级联与 opencv Alex 中的查找对象功能一起使用
-
这应该可以为您解决问题! stackoverflow.com/a/11316882/1458387
标签: algorithm matlab opencv computer-vision eye-tracking