Blickschätzung aus einem Bild eines Auges

Ich konnte Pupille und Augenwinkel bisher genau erkennen. Sie können ein paar Schnappschüsse sehen, die ich in meiner Antwort auf meine eigene Frage hochgeladen habe:

Durchführen einer stabilen Augenwinkelerkennung

Folgendes habe ich bisher getan. Ich kalibrierte den Blick des Benutzers, indem ich TLCP, TRCP und BLCP betrachtete

<code>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
</code>

Und die entsprechenden Blickpunkte, die ich beim Betrachten dieser CPs erhalte, werden als GPs bezeichnet

Berechnung eines Blickpunktes GP:

Ich subtrahiere die Ordinatenwerte des TLGP von der Position des aktuellen Schülerzentrums, da der Blickpunkt in das hypothetische Rechteck fallen muss, von dem ich hoffe, dass Sie es verstehen, es ist wirklich sehr einfach.

Ich habe die Blickpunkte, die vom Standort des Pupillenzentrums aus berechnet wurden, mit einem einfachen Skalierungssystem linear auf Rasterpunkte abgebildet, wobei die Skalierungen wie folgt berechnet werden:

<code>scaleX = screen_width/gaze_width
scaleY = screen_height/gaze_height
</code>

Und für jeden Blickpunkt P (x, y) berechne ich den entsprechenden Rasterpunkt Q (m, n) als:

<code>m = scaleX*x
n = scaleY*y
</code>

Aber das Problem ist, dass selbst nach fast perfekter Pupillendetektion (fast, weil es bei schlechten Lichtverhältnissen zu Fehlalarmen kommt. Aber ich habe die Absicht, dies einzuschränken, weil ich nicht daran arbeiten kann, ich habe nicht genug Zeit). Ich bekomme immer noch schlechte Blickweite und Blickhöhe.

Hier ist ein Testlaufprotokoll:

<code>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
</code>

Betrachten Sie einfach die Blickpunkte und die entsprechenden vom Blick erkannten Bildschirmpunkte (darunter). Die enormen Unterschiede in den x, y-Ordinaten nerven mich. Montag ist die Abschlusspräsentation.

Nach diesem Ansatz habe ich einen anderen theoretisiert, in dem:

Die Kalibrierung erfolgt wie bei der ersten Methode. Ich würde die Bewegung des Blicks und seine Richtung erkennen. Nehmen wir an, wir berechnen die Richtung und Länge der Linie PQ, wenn zwei beliebige Punkte der Position des Pupillenzentrums P und Q gegeben sind, wobei P der erste Blickpunkt und Q der zweite ist.

Nehmen wir an, dass die Länge dieses Liniensegments L ist. Dann skalieren wir L auf Bildschirmproportionen, sagen L ist D in der Bildschirmskala, und bewegen den Cursor unter Berücksichtigung der Blickrichtung vom letzten Ruhepunkt auf dem Bildschirm. Sagen Sie R, D Abstand zu einem neuen Punkt S, der als Endpunkt des Liniensegments mit der Länge D und dem Startpunkt S berechnet wird. Die bildliche Darstellung ist in der Abbildung dargestellt. Im Grunde genommen ordne ich also keine Blickdaten dem Bildschirmpunkt zu, sondern verfolge den Blick und wandle ihn in einen "Druck" um, der auf den Cursor auf dem Bildschirm angewendet wird. Aber ich habe es noch nicht implementiert. Weil es den Blick nicht auf Bildschirmkoordinaten abbildet und daher möglicherweise fehlerhaft ist. Die Motive für diese Theorie stammen aus dem eViacam-Projekt auf sourceforge - sie verfolgen im Grunde Ihr Gesicht und bewegen die Maus entsprechend. Bei der Kalibrierung berechnen sie nur, wie viel sich Ihr Gesicht entlang der Achsen bewegt.

Endeffekt: Wenn jemand von Ihnen eine Idee hat, wie er den Blick eines Benutzers anhand eines perfekt verarbeiteten Augenbilds erkennen kann -eine mit einer erkannten Pupillenmitte und Augenwinkeln, bitte erzähl es mir! Ich habe gerade einen Tag und ich weiß, dass es spät ist, aber ich brauche nur eine magische Idee, die mir helfen kann.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage