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.
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.
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).
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.
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.
Tags und Links algorithm opencv matlab computer-vision eye-tracking