到目前为止,我已经能够准确地检测出瞳孔和眼角。
您可以在这里回答自己的问题,看到我上传的一些快照:

Performing stable eye corner detection

到目前为止,这是我所做的。
我通过查看TLCP,TRCP和BLCP来校准用户的视线
在哪里

CP = calibration point; a screen point used for calibration
B = bottom
T = top
L= left
R = right
gaze_width = TRCP.x - TLCP.x

gaze_height = BLCP.y- TLCP.y

我通过查看这些CP获得的相应凝视点称为GP

凝视点GP的计算:

我从当前瞳孔中心的位置减去TLGP的纵坐标值,因为凝视点必须落在假设的矩形中,
我希望您了解它,它真的非常简单。

我已经使用基本的缩放系统将从瞳孔中心位置计算出的凝视点线性映射到屏幕点,其中缩放比例的计算方法如下:
scaleX = screen_width/gaze_width
scaleY = screen_height/gaze_height

对于任何注视点P(x,y),我将相应的屏幕点Q(m,n)计算为:
m = scaleX*x
n = scaleY*y

但是问题是,即使在几乎完美的瞳孔检测之后(几乎是因为在光线不足的情况下,它会产生误报。但是我打算将其置于限制下,因为我无法对其进行操作,我没有足够的时间),我m的注视宽度和注视高度仍然变差。

这是一个测试运行日志:
DO_CAL= True

Gaze Parameters:

TLGP = (38, 26) | TRGP = (20, 22) | BLGP = (39, 33)
screen height = 768 screen width = 1366

gaze height = 7 gaze width = 18

scales: X = 75.8888888889 | Y = 109.714285714
Thing on = True

Gaze point = (5, 3)
Screen point: (987, 329)

Gaze point = (5, 3)
Screen point: (987, 329)

Gaze point = (7, 5)
Screen point: (835, 549)

Thing on = False

TLGP = (37, 24) | TRGP = (22, 22) | BLGP = (35, 29)
screen height = 768 screen width = 1366

gaze height = 5 gaze width = 15
scales: X = 91.0666666667 | Y = 153.6
Thing on = True

Gaze point = (12, 3)
Screen point: (1093, 461)

Gaze point = (12, 3)
Screen point: (1093, 461)

ESC pressed

只需查看凝视点及其对应的凝视检测到的屏幕点(在其下方)即可。
x,y坐标值的巨大差异让我感到烦恼。
星期一是最后的演讲。

在采用这种方法之后,我在其中提出了另一种理论:

按照第一种方法进行校准。我将检测凝视的运动及其方向。假设给定瞳孔中心位置的任意两个点P和Q,其中P是第一个凝视点,Q是第二个凝视点,然后我们计算直线PQ的方向和长度。

假设此线段的长度为L。然后将L缩放到屏幕
比例,比如说L是屏幕比例尺上的D,并且根据凝视运动的方向,我们
将屏幕上的光标从其最后一个静止点(例如R,D距离)移动到新点S,该新点将作为长度为D的线段的终点和起点S进行计算。如图所示。因此,基本上,我不将任何凝视数据映射到屏幕点,而是基本上跟踪凝视,并将其转换为“推”以应用于屏幕上的光标。
但是我还没有实现它。因为它实际上没有将视线映射到屏幕坐标,因此可能是错误的。这种理论的动机来自于sourceforge上的eViacam项目-它们基本上跟踪您的脸部,并相应地移动鼠标。在校准中,它们只是计算您的脸部沿轴移动了多少。

底线:因此,如果您有任何想法如何从经过完美处理的眼睛图像中检测出用户的目光-,其中检测到瞳孔中心和眼角,请告诉!我只有大约一天的时间,我知道它已经晚了,但是我只需要任何可以帮助我的神奇主意。

最佳答案

这不是答案,但是无法发表评论。我会在您回答后将其删除。
您确定您具有所有必需的参数吗?
考虑下图:

如果您的相机检测到{K,J,Q}的角和瞳孔,如何与另一个三元组{F,E,O}区分开?请注意,这些度量是相同的,但是用黑色箭头表示的凝视方向是完全不同的。
注意:两条黑线和两条红线是从单个摄像机点绘制的,并位于可见区域之外。

关于image-processing - 根据眼睛图像进行注视估计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10365087/

10-12 21:21