оценка взгляда по изображению глаза

До сих пор мне удавалось точно определять зрачок и углы глаз. Вы можете увидеть несколько снимков, которые я загрузил в своем ответе на мой собственный вопрос здесь:

Выполнение стабильного обнаружения угла глаза

Вот что я сделал до сих пор. Я откалибровал взгляд пользователя, глядя на 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 )i вычислить соответствующую экранную точку Q (m,n )как:

m = scaleX*x
n = scaleY*y

Но проблема в том, что даже после почти идеального определения зрачка (почти потому, что при плохом освещении оно дает ложные срабатывания. Но я намерен ограничить это, потому что я не могу работать над этим, у меня недостаточно времени ), у меня все еще плохая ширина и высота взгляда.

Вот журнал тестового запуска.:

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.Push method for gaze estimation

Предположим, что длина этого отрезка равна L. Затем мы масштабируем L до экрана пропорции, скажем, L это D в масштабе экрана, а учитывая направление движения взгляда, мы переместите курсор на экране из его последней точки покоя, скажем, на расстоянии R, D, в новую точку S, которая будет вычислена как конечная точка отрезка линии, длина которого равна D, и начальная точка S. Образное представление дано на рисунке. Таким образом, в основном я не сопоставляю данные взгляда с точкой экрана, я в основном отслеживаю взгляд и преобразовываю его в «толчок», который применяется к курсору на экране. Но я еще не реализовал это. Потому что на самом деле он не сопоставляет взгляд с координатами экрана -и, следовательно, может быть ошибочным. Мотивация для этой теории была получена из проекта eViacam на sourceforge -, они в основном отслеживают ваше лицо и соответственно перемещают мышь. При калибровке они просто вычисляют, насколько ваше лицо перемещается по осям.

Итог:Итак, если у кого-то из вас есть какие-либо идеи о том, как определить взгляд пользователя по идеально обработанному изображению глаза-с обнаруженным центром зрачка и углами глаз , пожалуйста, расскажите! У меня есть примерно день, и я знаю, что уже поздно, но мне просто нужна какая-нибудь волшебная идея, которая может мне помочь.

9
задан Community 23 May 2017 в 02:17
поделиться