Eyetracking: Finden der Pupille (x, y)

8

Ich bin auf der Suche nach Vorschlägen, wie ich das folgende Problem der Computervision angehen kann. Im Folgenden sind 4 Beispiele eines Eye-Tracking-Datensatzes, mit denen ich arbeite. Ich möchte Code schreiben nimmt ein solches Bild und berechnet die (x, y) Position des Zentrums der Pupille. Ich verwende derzeit MATLAB, aber ich bin auch offen für andere Software.

Kann jemand einen Ansatz empfehlen, den ich für diese Aufgabe verwenden könnte? Hier sind einige Dinge, die ich bereits versucht habe, aber nicht gut funktioniert.

  • Ich habe versucht, Circle Hough Transform zu verwenden, aber das erfordert, dass ich den Radius der Pupille errate, was ein bisschen problematisch ist. Auch aufgrund von Verzerrungen ist die Pupille nicht immer genau ein Kreis, was diesen Ansatz noch schwieriger machen kann.
  • Ich habe versucht, das Bild basierend auf der Pixelhelligkeit zu schwelen und die MATLAB-Funktion der Regionsprops zu verwenden, um nach einem Bereich von etwa 200 Pixelbereichen mit sehr niedriger Exzentrizität (d. h. so kreisförmig wie möglich) zu suchen. Dies ist jedoch sehr empfindlich für den Schwellenwert, und einige Bilder des Auges sind heller als andere basierend auf den Beleuchtungsbedingungen. (Beachten Sie, dass die 4 Samples unten bereits mean-normalisiert sind und immer noch eines der Bilder heller ist als andere, wahrscheinlich wegen eines sehr dunklen Zufallspixels)

Alle Kommentare / Vorschläge wären willkommen!

EDIT: Danke für den Kommentar Stargazer. Der Algorithmus sollte idealerweise in der Lage sein zu bestimmen, dass die Pupille nicht im Bild ist, wie dies für die letzte Probe der Fall ist. Es ist keine große Sache, wenn ich für eine Weile den Überblick verliere. Es ist viel schlimmer, wenn es mir eine falsche Antwort gibt.

    
karpathy 20.10.2010, 01:18
quelle

4 Antworten

4

Ich bin mir nicht sicher, ob Ihnen das weiterhelfen kann, weil Sie ein Dataset verwenden und ich nicht weiß, welche Flexibilität / Notwendigkeit Sie haben, das Aufnahmegerät zu ändern. Nur für den Fall, lass uns gehen.

Morimoto et al. verwenden einen netten Kameratrick. Sie haben eine Kamera mit zwei Gruppen von Infrarot-LEDs erstellt. Der erste Satz wird in die Nähe der Kameraobjektive gelegt. Der zweite ist weit von den Linsen entfernt. Mit unterschiedlichen Frequenzen werden die beiden LED-Sets zu unterschiedlichen Zeitpunkten eingeschaltet.

Retina reflektiert das Licht aus dem Set in der Nähe der Kameraobjektive (das gleiche gilt für das rote Augenproblem in der Fotografie) und erzeugt eine helle Pupille . Die andere Gruppe von LEDs erzeugt eine dunkle Pupille . Vergleichen Sie die Ergebnisse . Der einfache Unterschied zwischen den beiden Bildern ergibt also eine nahezu perfekte Pupille. Schauen Sie sich an, wie Morimoto und andere das Glitzern erforscht (schön, sich der Blickrichtung zu nähern).

    
TH. 22.10.2010 11:32
quelle
3

Verwenden Sie OpenCV integrierte Python. . . Es wird sehr einfach für die Anfänger sein, an OpenCV zu arbeiten.

Vorgehensweise:
* Wenn Sie normale Webcam verwenden
1. Bearbeiten Sie zuerst den Frame mit der VideoCapture-Funktion
2. Konvertieren Sie es in Graustufenbild.
3. Finde Canny Edges mit der Funktion cv2.Canny ()
4. Wenden Sie die HoughCircles-Funktion an. Es findet die Kreise im Bild sowie in der Mitte des Bildes.
5. Verwenden Sie die resultierenden Parameter von HoughCirlces, um den Kreis um die Pupille zu zeichnen. Das ist es.

    
Aditya Byreddy 03.03.2015 20:22
quelle
0

OpenCV mit Python, C, C ++, Java und anderen wäre ein gutes Werkzeug dafür. Es gibt ein Tutorial für Python hier: Ссылка , aber es gibt definitiv andere Tutorials da draußen für die anderen unterstützten Sprachen. OpenCv hat eine Reihe von Haar Cascades direkt aus der Box, eine für die Augenerkennung enthalten. Wenn Sie tatsächlich eine Lösung mit HoughCircleTransform implementieren wollten, hat OpenCv auch dafür die passende Funktion.

    
rodalfus 04.03.2015 03:00
quelle
0
%Vor%     
Mayur Randive 02.09.2015 07:46
quelle