3D-Bildanalysator zur Blickrichtungsbestimmung
Beschreibung
Ausführungsbeispiele der vorliegenden Erfindung beziehen sich auf einen 3D- Bildanalysator zur Bestimmung einer Blickrichtung (bzw. Richtungsvektor) oder einer Blickgeraden (bestehend aus Ortsvektor und Richtungsvektor) in einem 3 D-Raum ohne, dass eine Kalibration durch den Benutzer, dessen Blickrichtung bestimmt werden soll, er- forderlich ist. Weitere Ausführungsbeispiele beziehen sich auf ein Bildanalysesystem mit einem 3D-Bildanalysator zum Erkennen einer Ausrichtung bzw. Blickrichtung und auf ein entsprechendes Verfahren zum Erkennen der Ausrichtung bzw. Blickrichtung.
Zur automatischen Bestimmung der Blickrichtung eines Menschen gibt es unterschiedliche Kategorien von Systemen. Eine sehr weit verbreitete Kategorie sind videobasierte Systeme, die mit ein oder mehreren Kameras die Augen der Person aufnehmen und diese Videoaufnahmen online oder offline auswerten um daraus die Blickrichtung zu bestimmen.
Systeme zur videobasierten Blickrichtungsbestimmung erfordern in der Regel für jeden Nutzer zu Beginn der Nutzung und in einigen Fällen auch zusätzlich während der Nutzung (z. B. beim Verlassen des Kameraerfassungsbereiches oder bei einer Veränderung der Lage zwischen Benutzer und System) eine Kalibrierprozedur, um die Blickrichtung des Nutzers bestimmen zu können. Des Weiteren erfordern einige dieser Systeme eine sehr spezielle und definierte Anordnung der Kamera(s) und der Beleuchtung zueinander oder eine sehr spezielle Anordnung der Kamera(s) zum Benutzer und Vorwissen über die Position des Benutzers (wie z. B. in der Patentschrift DE 10 2004 046 617 AI) um die Blickrichtungsbestimmung durchführen zu können.
Deshalb besteht der Bedarf nach einem verbesserten Ansatz.
Eine Aufgabe ist es, eine effiziente und zuverlässige Richtungserkennung, z.B. Blickrichtungserkennung zu ermöglichen.
Die Aufgabe wird durch die unabhängigen Ansprüche gelöst. Weiterbildungen sind in den Unteransprüchen definiert.
Ausführungsbeispiele der vorliegenden Erfindung schaffen einen 3D-Bildanalysator zur Bestimmung einer Blickrichtung oder einer Blickgeraden (umfassend z.B. einem Blick-
richtungsvektor und einem Ortsvektor, der z. B. den Pupillenmittelpunkt angibt und an dem der Blickrichtungsvektor ansetzt) oder eines Blickpunktes, wobei der 3D- Bildanalysator ausgebildet ist, um zumindest einen ersten Satz von Bilddaten, der auf Basis eines ersten Bildes bestimmt wird, und einen weiteren Satz von Informationen, die auf Basis des ersten Bildes oder eines weiteren Bildes bestimmt wird, zu empfangen, wobei das erste Bild ein Muster enthält, das sich durch die Abbildung eines dreidimensionalen Objekts (z.B. Muster einer Pupille, einer Iris oder einer Ellipse) aus einer ersten Perspektive in eine erste Bildebene ergibt, und wobei der weitere Satz auch ein Bild mit einem Muster enthält, das sich durch die Abbildung des gleichen dreidimensionalen Objekts aus einer weiteren Perspektive in eine weitere Bildebene ergibt, oder wobei der weitere Satz Informationen enthält, welche eine (Relativ-) Beziehung zwischen mindestens einem Punkt des dreidimensionalen Objekts und der ersten Bildebene beschreiben. Der 3D-Bildanalysator umfasst eine Positionsberechnungseinrichtung und eine Ausrichtungsberechnungseinrich- tung. Die Positionsberechnungseinrichtung ist ausgebildet, um eine Position des Musters in einem dreidimensionalen Raum basierend auf dem ersten Satz, einem weiteren Satz, der auf Basis des weiteren Bildes bestimmt wird, und einer geometrischen Beziehung zwischen den Perspektiven des ersten und des weiteren Bildes zu berechnen oder um die Position des Musters in dem dreidimensionalen Raum basierend auf dem ersten Satz und einer statistisch ermittelten Beziehung zwischen mindestens zwei charakteristischen Merkmalen zueinander in dem ersten Bild zu berechnen oder um die Position des Musters in dem dreidimensionalen Raum basierend auf dem ersten Satz und einer Lagebeziehung zwischen mindestens einem Punkt des dreidimensionalen Objektes und der ersten Bildebene zu berechnen. Die Ausriehtungsbereehnungseinrichtung ist ausgebildet, um zwei mögliche SD- Blickvektoren pro Bild zu berechnen und aus diesen möglichen 3 D-Blickvektoren den 3D- Blickvektor zu ermitteln, gemäß dem das Muster in dem dreidimensionalen Raum ausgerichtet ist, wobei die Berechnung und Ermittlung auf dem ersten Satz, dem weiteren Satz und auf der berechneten Position des Musters basiert.
Der Kern der vorliegenden Erfindung liegt also darin, dass erkannt wurde, dass - ausge- hend von der o.g. Positionsbestimmungseinrichtung bestimmten Position des Musters eine Ausrichtung eines Objektes im Raum, wie z. B. eine Ausrichtung einer Pupille im Raum (also die Blickrichtung), und/oder eine Blickgerade (bestehend aus einem Blickrichtungsvektor und einem Ortsvektor, der z. B. den Pupillenmittelpunkt angibt und an dem der Blickrichtungsvektor ansetzt) basierend auf mindestens einem Satz von Bilddaten, z. B. aus einer ersten Perspektive und Zusatzinformationen bzw. einem weiteren Satz von Bilddaten (aus einer weiteren Perspektive) bestimmt werden kann. Zur Bestimmung der Ausrichtung wird eine Positionsberechnungseinrichtung zu Hilfe genommen, die in einem ersten Schritt die Position des Musters bestimmt. Ausgehend von dieser bestimmten Position
des Musters gibt es nun zwei mögliche 3D-Blickvektorcn, entsprechend welchen das Muster ausgerichtet sein kann. Diese zwei möglichen 3 D-Blickvektoren werden beispielsweise dadurch bestimmt, dass die optische Verzerrung des Musters mit einer Grundform des Musters verglichen wird und hieraus bestimmt wird, welchen Betrag das Muster gegenüber der optischen Ebene des Bildes (vgl. erster Satz von Bilddaten) verkippt ist. Ausgehend von dem Beispiel einer (runden) Pupille, welche in dem Fall von Verkippung sich als Ellipse darstellt, wird klar, dass es zwei mögliche Verkippungswinkel der Pupille gegenüber der optischen Ebene gibt, welche zu der ellipsenförmigen Darstellung der Pupille fuhren. Die A usri chtungsbereehnungseinri chtung ermittelt nun basierend auf dem weiteren Satz von Bildinformationen oder basierend auf Zusatzinformationen, die auch basierend auf dem ersten Satz von Bildinformationen gewonnen werden können, welcher der theoretisch möglichen Verkippungswinkel bzw. 3D-Blickvektoren der Realität, also der tatsächlichen Blickrichtung, entspricht. Also kann (unter Nutzung der 3D-Positionsberechnung und einer virtuellen Projektionsebene) vorteilhafterweise der Blickrichtungsvektor und/oder die Blickgerade (bestehend aus Ortsvektor des gesuchten Muster und Richtungsvektor) ohne vorherige Kenntnis eines Ab- stands zwischen Pupille und Kamera oder ohne genau Positionierung der optischen Achsen der Kameras (z.B. durch den Pupillenmittelpunkt) bestimmt werden.
Entsprechend Ausführungsbeispielen ist es möglich, dass die Bestimmung bzw. Auswahl des zutreffenden 3D-Blickvektors dadurch erfolgt, dass zwei weitere mögliche SD- Blickvektoren für einen weiteren Satz von Bilddateien (aus einer weiteren Perspektive) ermittelt werden, wobei ein 3 D-Blickvektor aus dem ersten Bilddatensatz mit einem SD- Blickvektor aus dem weiteren Bilddatensatz übereinstimmt, der dann der tatsächliche 3D- Blickvektor ist. Alternativ hierzu kann entsprechend weiteren Ausführungsbeispielen auch der erste Bilddatensatz analysiert werden, z. B. hinsichtlich dessen, wie viele Pixel der im ersten Bild abgebildeten Sklera des Auges von den zwei möglichen 3 D-Blickvektoren (beginnend am Pupillenmittelpunkt) überstrichen werden. Hierbei wird dann der SD- Blickvektor ausgewählt, der weniger Pixel der Sklera überstreicht. Anstelle der Analyse der Sklera wäre es auch möglich, dass der 3D-Blickvektor ausgewählt wird, entlang dessen Projektion ins Bild (beginnend am Pupillenmittelpunkt der kleinere Abstand zwischen Pupillenmittelpunkt und Rand der Augenöffnung resultiert.
Entsprechend weiteren Ausführungsbeispielen können auch statistisch ermittelte Bezie- hung, wie z.B. ein Abstand zwischen zwei charakteristischen Gesichtsmerkmalen (z. B. Nase, Auge) zur Berechnung der 3 D-Position eines Punktes des Musters (z. B. Pupillenoder Irismittelpunkt) herangezogen werden. Diese statistischen Beziehungen sind vorab ermittelt und in einem Speicher gespeichert.
Entsprechend weiteren Ausfuhrungsbeispielen ist die Ermittlung der oben beschriebenen 3 D-Position eines Punktes des Musters nicht auf die Nutzung statistische ermittelter Werte beschränkt. Sie kann auch basierend auf den Ergebnissen einer vorgeschalteten Berech- nungseinrichtung erfolgen, welche die 3 D-Positionen charakteristischen Gesichtsmerkmalen (z. B. Nase, Auge) oder einen 3D-Position des oben genannten Musters liefert.
Entsprechend weiteren Ausführungsbeispielen kann die Auswahl des tatsächlichen SD- Blickvektors aus den möglichen 3D-Blickvektoren auch basierend auf der 3D-Position des Musters (z. B. Pupillen- oder Irismittelpunkt) und den oben genannten 3 D-Positionen charakteristischer Gesichtsmerkmale (z. B. Augenecken, Mundecken) erfolgen.
Entsprechend weiteren Ausführungsbeispielen erfolgt die Ausrichtungsberechnung dadurch, dass eine erste virtuelle Projektionsebene, durch Drehung der tatsächlichen ersten Projektionsebene inklusive Optik um den Knotenpunkt der Optik, für das erste Bild berechnet wird, so dass eine erste virtuelle optische Achse, die als Senkrechte zu der ersten virtuellen Projektionsebene definiert ist, sich durch den Mittelpunkt des erkannten Musters erstreckt. Bevorzugt wird entsprechend weiteren Ausführungsbeispielen zur Ausrichtung eine zweite virtuelle Positionsebene, durch Drehung der tatsächlichen zweiten Projektions- ebene inklusive Optik um den Knotenpunkt der Optik, für das weitere Bild berechnet, so dass eine zweite virtuelle optische Achse, die als Senkrechte zu der zweiten virtuellen Projektionsebene definiert ist, sich durch den Mittelpunkt des Kantenmusters erstreckt. Durch die Nutzung der oben beschriebenen virtuellen Projektionsebenen, ist es möglich nachfolgend basierend auf dem ersten und dem weiteren Bildern jeweils zwei mögliche 3D- Blickvektoren zu berechnen von denen jeweils einer (im Idealfall exakt, in der Realität mit geringer Abweichung) dem tatsächlichen 3 D-Blickvektor entspricht.
Entsprechend weiteren Ausführungsbeispielen kann der 3 D-Blickvektor durch einen Satz von Gleichungen beschrieben werden, wobei jede Gleichung eine geometrische Beziehung der jeweiligen Achsen und der jeweiligen virtuellen Projektionsebene gegenüber dem SD- Blickvektor beschreibt. Bezogen auf die erste virtuelle Projektionsebene kann durch eine erste Gleichung auf Basis der Bilddaten des ersten Satzes der 3 D-Blickvektor beschrieben werden, wobei zwei Lösungen der ersten Gleichung möglich sind. Eine zweite Gleichung auf Basis der Bilddaten des zweiten Satzes führt für den 3D-Blickvektor bezogen auf die zweite virtuelle Projektionsebene zu zwei (weiteren) Lösungen. Der tatsächliche SD- Blickvektor kann durch eine gewichtete Mittelung aus je einem Lösungsvektor der erste und einem Lösungsvektor der zweiten Gleichung berechnet werden. Diese beiden Vektoren sind dadurch definiert, dass ihre Differenz kleiner als eine Differenz zwischen anderen
Kombinationen aus den Lösungsvektoren der beiden Gleichungen ist, so dass das System aus Gleichungen, umfassend die erste und die zweite Gleichung eine eindeutige Lösung hat. Der oben genannte Lösungsvektor der ersten Gleichung ist mit einem Toleranzbereich von beispielsweise plus/minus 10 % dem oben genannten Lösungsvektor der zweiten Glci- chung gleich.
Entsprechend weiteren Austührungsbeispielen kann der 3D-Bildanalysator in eine Verarbeitungseinheit implementiert sein, die beispielsweise einen selektiv-adaptiven Datenprozessor umfasst.
Entsprechend weiteren Ausführungsbeispielen kann der 3D-Bildanalysator Teil eines Bildanalysesystems zum Verfolgen einer Pupille sein. Ein derartiges Bildanalysesystem umfasst typischerweise mindestens einen Hough-Pfad für zumindest eine Kamera oder bevorzugt zwei Hough-Pfade für zumindest zwei Kameras. Ferner kann jeder Hough-Pfad einen Pre-Prozessor sowie eine Hough-TransfonTiationseinrichtung umfassen. Zusätzlich zu dieser Hough-Transformationseinrichtung auch noch eine Einrichtung zum Analysieren des erfassten Musters und zum Ausgeben eines Satzes von Bilddaten inkludiert sein.
Entsprechend weiteren Ausführungsbeispielen wird ein Verfahren zur Bestimmung einer Blickrichtung oder Blickgeraden geschaffen. Das Verfahren umfasst die Schritte des Empfangens von zumindest eines ersten Satzes von Bilddaten, der auf Basis eines ersten Bildes bestimmt wird, und eines weiteren Satzes von Informationen, der auf Basis des ersten Bildes oder eines weiteren Bildes bestimmt wird, wobei das erste Bild ein Musters eines dreidimensionalen Objekts aus einer ersten Perspektive in eine erste Bildebene abbildet und wobei der weitere Satz ein weiteres Bild mit einem uster enthält, das sich durch die Abbildung des gleichen dreidimensionalen Objekts aus einer weiteren Perspektive in eine weitere Bildebene ergibt, oder eine Infomiation umfasst, welche eine Beziehung zwischen mindestens einem Punkt des dreidimensionalen Objekts und der ersten Bildebene beschreibt. Das Verfahren umfasst ferner den Schritt des Berechnens einer Position des Mus- ters in einem dreidimensionalen Raum basierend auf dem ersten Satz, einem weiteren Satz, der auf Basis des weiteren Bildes bestimmt wird, und einer geometrischen Beziehung zwischen den Perspektiven des ersten und des weiteren Bildes oder Berechnen der Position des Musters in dem dreidimensionalen Raum basierend au dem ersten Satz und einer statistisch ermittelten Beziehung zwischen mindestens zwei charakteristischen Merkmalen zueinander in dem ersten Bild oder Berechnen der Position des Musters in dem dreidimensionalen Raum basierend auf dem ersten Satz und einer Lagebeziehung zwischen mindestens einem Punkt des dreidimensionalen Objektes und der ersten Bildebene. In einem dritten Schritt wird ein D-Blickvektor berechnet, gemäß dem das Muster in dem dreidimen-
sionalen Raum ausgerichtet ist, wobei die Berechnung basierend auf dem ersten Satz von Bilddaten und dem weiteren Satz von Informationen und auf der berechneten Position des Musters erfolgt. Entsprechend weiteren Ausführungsbeispielen kann dieses Verfahren durch einen Computer ausgeführt werden. Insofern bezieht sich ein weiteres Ausführungsbeispiel auf ein Computer-lesbares digitales Speichermedium mit einem Programmcode zur Durchführung des obigen Verfahrens.
Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend anhand der beiliegenden Zeichnungen erläutert. Es zeigen:
Fig. 1 ein schematisches Blockschaltbild eines 3D-Bildanalysators gemäß einem Ausführungsbeispiel;
Fig. 2a ein schematisches Blockschaltbild eines Ho ugh- Prozessors mit einem Pre-
Prozessor und einer Hough-Transformationseinrichtung gemäß einem Ausfuhrungsbeispiel;
Fig. 2b ein schematisches Blockschaltbild eines Pre-Prozessors gemäß einem Ausfuhrungsbeispiel;
Fig. 2c eine schematische Darstellung von Hough- Kernen zur Detcktion von Gera- den (abschnitten);
Fig. 3a ein schematisches Blockschaltbild einer möglichen Implementierung einer
Hough-Transformationseinrichtung gemäß einem Ausrührungsbeispiel; Fig. 3b einzelne Zelle einer Verzögerungsmatrix entsprechend einem Ausführungsbeispiel;
Fig. 4a-d ein schematisches Blockschaltbild einer weiteren Implementierung einer Hough-Transformationseinrichtung entsprechend einem Ausfuhrungsbeispiel;
Fig. 5a ein schematisches Blockschaltbild einer stereoskopischen Kameraanordnung mit zwei Bildprozessoren und einer Nachverarbeitungseinrichtung, wobei jeder der Bild-Prozessoren einen Hough-Prozessor gemäß Ausführungsbeispielen aufweist;
Fig. 5b eine exemplarische Aufnahme eines Auges zur Illustration einer mit der
Vorrichtung aus Fig. 5a durführbaren Blickwinkcldetektion und zur Erläuterung der Blickwinkeldetektion im monoskopischen Fall;
Fig. 6-7 weitere Darstellungen zur Erläuterung von zusätzlichen Ausführungsbeispielen bzw. Aspekten;
Fig. 8a-c schematische Darstellungen von optischen Systemen mit den dazugehörigen Projektionsebenen; und
Fig. 8d schematische Darstellung einer Ellipse mit den zu ihrer Beschreibung genutzten Parametern Fig. 8e schematische Darstellung der Abbildung eines Kreises im 3D-Raum als
Ellipse auf eine Ebene zur Erläuterung der Berechnung der Ausrichtung des Kreises in 3D- Raum basierend auf den Parametern der Ellipse; und
Fig. 9a-9i weitere Darstellungen zur Erläuterung von Hintergrundwissen für die Hough-Transformationseinrichtung.
Nachfolgend werden Ausführungsbeispiel e der vorliegenden Erfindung anhand der Figuren im Detail erläutert. Es sei darau f hingewiesen, dass gleiche Elemente mit gleichen Be- zugszeichen versehen sind, so dass die Beschreibung derer aufeinander angewendet werden kann bzw. austauschbar ist.
Fig. 1 zeigt einen 3D-Bildanalysator 400 mit einer Positionsberechnungseinrichtung 404 und einer Ausrichtungsberechnungscinriehtung 408. Der 3D-Bildanalysator ist dazu aus- gebildet, um basierend auf mindestens einem Satz von Bilddaten, bevorzugt aber auf Basis von einem ersten Satz und einem zweiten Satz von Bilddaten eine Blickrichtung in einem 3D-Raum (also eine 3 D-Blickrichtung) zu bestimmen. Zusammen mit einem ebenfalls ermittelten Punkt auf der Blickgeraden (z. B. dem Pupillen- oder Irismittelpunkt im SD- Raum) ergibt sich aus diesem Punkt und der oben genannten Blickrichtung die 3D- Blickgerade, die auch als Basis für die Berechnung des 3D-Blickpunktes genutzt werden kann.
Das Grundverfahren bei der Bestimmung umfasst die drei Basisschritte: Empfangen von zumindest dem ersten Satz von Bilddaten, der auf Basis eines ersten Bildes 802a bestimmt wird (vgl. Fig. 8a) und eines weiteren Satzes von Informationen, der auf Basis des ersten Bildes 802a oder eines weiteren Bildes 802b bestimmt wird. Hierbei bildet das erste Bild 802a ein Muster 804a eines dreidimensionalen Objekts 806a (vgl. Fig. 8b) aus einer ersten Perspektive in eine erste Bildebene ab. Der weitere Satz umfasst typischerweise das weitere Bild 802b.
In weiteren Ausfuhrungsbeispielen kann der weiter Satz alternativ (statt konkreter Bildda- ten) auch eine oder mehrere der folgenden Information enthalten, eine Lagebeziehung zwischen einem Punkt P P des dreidimensionalen Objekts 806a und der ersten Bildebene 802a, Lagebeziehungen zwischen mehreren charakteristischen Punkten zueinander im Gesicht oder Auge, Lagebeziehungen von charakteristischen Punkten im Gesicht oder Auge bezogen auf den Sensor, die Lage und Ausrichtung des Gesichtes.
Im nächsten Schritt wird die Position des Musters 806a in dem dreidimensionalen Raum basierend auf dem ersten Satz dem weiteren Satz und einer geometrischen Beziehung zwischen den Perspektiven des ersten und des zweiten Bildes 802a und 802b berechnet. Alternativ kann die Berechnung der Position des Musters 806a in dem dreidimensionalen Raum basierend auf dem ersten Satz und einer statistisch ermittelten Beziehung zwischen mindestens zwei charakteristischen Merkmalen in dem ersten Bild 804a zueinander berechnet werden. Der letzte Schritt dieses Grundverfahrens bezieht sich auf das Berechnen des SD- Blickvektors, gemäß dem das Muster 804a und 804b in dem dreidimensionalen Raum ausgerichtet ist. Die Berechnung erfolgt basierend auf dem ersten Satz und dem zweiten Satz.
Ein ausführliches Berechnungsbeispiel für diese Blickrichtungsberechnung wird nachfolgend anhand der Fig. 8a bis 8c beschrieben.
Berechnung des Pupillenmittelpunktes
Wie bereits beschrieben, entsteht bei der Abbildung der kreisförmigen Pupille 806a durch die Kameraobjektive 808a und 808b auf den Bildsensoren 802a und 802b jeweils eine elliptische Pupillenprojektion (vgl. Fig. 8a). Der Mittelpunkt der Pupille wird auf beiden Sensoren 802a und 802b und somit auch in den entsprechenden Kamerabildern immer als Mittelpunkt EMP K1 und EMP^ der Ellipse abgebildet. Daher kann durch stereoskopische Rückprojektion dieser beiden Ellipsenmittelpunkte EMP KI und E P K2 mit Hilfe des Objektivmodells der 3 D-Pupillenmittelpunkt bestimmt werden. Optionale Voraussetzung dazu ist eine idealerweise zeitsynchrone Bildaufnahme, damit die von beiden Kameras abgebil-
deten Szenen identisch sind und somit der Pupillenmittelpunkt an der gleichen Position erfasst wurde.
Zunächst muss für jede Kamera der Rückprojektionsstrahl RS des Ellipsenmittelpunktes berechnet werden, welcher entlang des Knotenpunktstrahls zwischen dem Objekt und dem objektsei tigen Knotenpunkt (Hl) des optischen System verläuft (Fig. 8a).
RS(t) - RSo + t■ RS-
(AI)
Dieser Rückprojektionsstrahl wird durch Gleichung (AI) definiert. Er besteht aus einem Anfangspunkt RSo und einem normierten Richtungsvektor RS^ , welche sich im genutzten
Objektivmodell (Fig. 8b) durch die Gleichungen (A2) und (A3) aus den beiden Hauptpunkten H\ und H2 des Objektivs sowie dem Ellipsenmittelpunkt EMP in der Sensorebene ergeben. Dazu müssen alle drei Punkte (Hi, H2 und EMP) im Eyetrack erKoordinatensystem vorliegen.
RS0 = H\
" \ H - F I
Die Hauptpunkte lassen sich mit den Gleichungen
H2 = K() + />
direkt aus den Objektiv- und Kameraparametern berechnen (Fig. 8b), Ko der Mittelpunkt der Kamerasensoreben ist und K„ der Normalvektor der Kamerasensorebene. Der SD- Ellipsenmittelpunkt im Kamerakoordinatensystem lässt sich aus den zuvor bestimmten Ellipsenmittelpunktparametern .Y„, und ym , welche in Bildkoordinaten vorliegen, mittels Gleichung
SpxGr
errechnen. Dabei ist Pßiid die Auflösung des Kamerabildes in Pixeln, S0ffset ist die Position auf dem Sensor an der begonnen wird das Bild auszulesen, Sres ist die Auflösung des Sensors und S xGr ist die Pixelgröße des Sensors.
Der gesuchte Pupillenmittelpunkt ist im Idealfall der Schnittpunkt der beiden Rückprojektionsstrahlen RSK1 und RS1^2 . Mit praktisch ermittelten Modellparametern und Ellipsenmittelpunkten ergibt sich allerdings schon durch minimale Messfehler kein Schnittpunkt der Geraden mehr im 3-D-Raum. Zwei Geraden in dieser Konstellation, welche sich weder schneiden noch parallel verlaufen, werden in der Geometrie windschiefe Geraden genannt. Im Falle der Rückprojektion kann angenommen werden, dass die beiden windschiefen Geraden jeweils sehr nahe am Pupillenmittelpunkt vorbei verlaufen. Dabei liegt der Pupillenmittelpunkt an der Stelle ihres geringsten Abstands zueinander auf halber Strecke zwischen den beiden Geraden.
Der kürzeste Abstand zwischen zwei windschiefen Geraden wird von einer senkrecht zu beiden Geraden stehenden Verbindungsstrecke angegeben. Der Richtungsvektor nSt
Der senkrecht auf beiden Rückprojektionsstrahlen stehenden Strecke kann entsprechend Gleichung (A4) als Kreuzprodukt ihrer Richtungsvektoren berechnet werden.
(A4)
Die Lage der kürzesten Verbindungsstrecke zwischen den Rückprojektionsstrahlen wird durch Gleichung (A5) definiert. Durch Einsetzen von RSK'(s) , RSK2(t ) und nSt ergibt sich daraus ein Gleichungssystem, aus welchem s , / und u berechnet werden können.
RSK''(.s) + u nSt RSK2{t)
(A3)
Der gesuchte Pupillenmittelpunkt PMP, welcher auf halber Strecke zwischen den Rückprojektionsstrahlen liegt, ergibt sich folglich aus Gleichung (A6) nach dem Einsetzen der für s und u berechneten Werte.
PM!> = RS
(A6)
Als Indikator für die Genauigkeit des berechneten Pupillenmittelpunktes PMP kann zusätzlich die minimale Distanz CIRS zwischen den Rückprojektionsstrahlen berechnet werden. Je genauer die Modellparameter und Ellipsenmittelpunktc waren, welche für die bisherigen Berechnungen genutzt wurden, desto geringer ist df- . d RS = I "» I (A7)
Der berechnete Pupillenmittelpunkt ist einer der beiden Parameter, welcher die vom Eye- tracker zu ermittelnde Blickgerade des Auges bestimmen. Außerdem wird er zur Berechnung des Blickrichtungsvektors P benötigt, welche nachfolgend beschrieben wird.
Der Vorteil dieser Methode zur Berechnung des Pupillenmittelpunktes besteht darin, dass die Abstände der Kameras zum Auge nicht fest im System abgespeichert sein müssen. Dies ist z. B. bei dem in der Patentschrift DE 10 2004 046 617 AI beschriebenen Verfahren erforderlich.
Berechnung des Blickrichtungsvektors
Der zu bestimmende Blickrichtungsvektor P- entspricht dem Normalvektor der kreisförmigen Pupillenfläche und ist somit durch die Ausrichtung der Pupille im 3-D-Raum festge- legt. Aus den Ellipsenparametern, welche für jede der beiden ellipsenförmigen Projektionen der Pupille auf den Kamerasensoren bestimmt werden können, lassen sich die Lage und Ausrichtung der Pupille ermitteln. Hierbei sind die Längen der beiden Halbachsen sowie die Rotationswinkel der projizierten Ellipsen charakteristisch für die Ausrichtung der Pupille bzw. die Blickrichtung relativ zu den Kamerapositionen.
Ein Ansatz zur Berechnung der Blickrichtung aus den Ellipsenparametern und fest im Eye- tracking-System abgespeicherten Abständen zwischen den Kameras und dem Auge wird z. B. in der Patentschrift DE 10 2004 046 617 AI beschrieben. Wie in Fig. 8c dargestellt, geht dieser Ansatz von einer Parallelprojektion aus, wobei die durch die Sensornormale und den Mittelpunkt der auf den Sensor projizierten Pupille definierte Gerade durch den Pupillenmittelpunkt verläuft. Dazu müssen die Abstände der Kameras zum Auge vorab bekannt und fest im Eyetracking-System abgespeichert sein.
Das bei dem hier vorgestellten Ansatzes verwendete Modell des Kameraobjektivs, welches das Abbildungsverhalten eines realen Objektivs beschreibt, findet hingegen eine perspektivische Projektion des Objekts auf den Bildsensor statt. Dadurch kann die Berechnung des Pupillenmittelpunktes erfolgen und die Abstände der Kameras zum Auge müssen nicht vorab bekannt sein, was eine der wesentlichen Neuerungen gegenüber der oben genannten Patentschrift darstellt. Durch die perspektivische Projektion ergibt sich die Form der auf dem Sensor abgebildeten Pupillenellipse allerdings im Gegensatz zur Parallelprojektion nicht allein durch die Neigung der Pupille gegenüber der Sensorfläche. Die Auslenkung δ des Pupillenmittelpunktes von der optischen Achse des Kameraobjektivs hat, wie in Fig. 8b skizziert, ebenfalls einen Einfluss auf die Form der Pupillenprojektion und somit auf die daraus ermittelten Ellipsenparameter.
Im Gegensatz zur Skizze in Fig. 8b ist der Abstand zwischen Pupille und Kamera mit mehreren hundert Millimetern sehr groß gegenüber dem Pupillenradius, welcher zwischen 2 mm und 8 mm liegt. Daher wird die Abweichung der Pupillenprojektion von einer idealen Ellipsenform, welche bei einer Neigung der Pupille gegenüber der optischen Achse entsteht, sehr gering und kann vernachlässigt werden.
Um den Blickrichtungsvektor Pn berechnen zu können, muss der Einfluss des Winkels δ auf die Ellipsenparameter eliminiert werden, so dass die Form der Pupillenprojektion allein durch die Ausrichtung der Pupille beeinflusst wird. Dies ist immer dann gegeben, wenn der Pupillenmittelpunkt PMP direkt in der optischen Achse des Kamerasystems liegt. Daher kann der Einfluss des Winkels δ beseitigt werden, indem die Pupillenprojektion auf dem Sensor eines virtuellen Kamerasystems vK berechnet wird, dessen optische Achse direkt durch den zuvor berechneten Pupillenmittelpunkt PMP verläuft, wie in Fig. 8c dargestellt.
Die Lage und Ausrichtung eines solchen virtuellen Kamerasystems 804a' (vK in Fig. 8c) lässt sich aus den Parametern des originalen Kamerasystems 804 a (K in Fig. 8b) durch Drehung um dessen objektseitigen Hauptpunkt Hj berechnen. Dieser entspricht dadurch gleichzeitig dem objektseitigen Hauptpunkt vllj des virtuellen Kamerasystems 804a'. Somit sind die Richtungsvektoren der Knotenpunktstrahlen der abgebildeten Objekte vor und hinter dem virtuellen optischen System 808c' identisch zu denen im originalen Kamerasystem. Alle weiteren Berechnungen zur Bestimmung des Blickrichtungsvektors erfolgen im Eyetracker-Koordinatensystem.
Der normierte Normalvektor vK n der virtuellen Kamera vK ergibt sich folgendermaßen:
PMP ~ Hl
νΑ', =
■ MP ■H,
(A8)
Für das weitere Vorgehen ist es erforderlich, die Rolationwinkel um die x- Achse
um die y- Achse ( vK ) und um die z- Achse ( vK ) des Eyetracker-Koordinatensystems zu berechnen um die der Einheitsvektor der z-Richtung des Eyetracker-Koordinatensystems um verschiedene Achsen des Eyetracker-Koordinatensystems gedreht werden muss um den Vektor vKti zu erhalten. Durch Drehung des Einheitsvektor der x-Riehtung sowie des
Einheitsvektors der y-Richtung des Eyetracker-Koordinatensystems um die Winkel vK(j , νΚφ und νΚψ können die Vektoren vKx und vK - berechnet werden, welche die x- und y-
Achse des virtuellen Sensors im Eyetracker-Koordinatensystem angeben.
Um die Lage des virtuellen Kamerasystems 804a' (Fig. 8c) zu erhalten, muss dessen Ortsvektor bzw. Koordinatenursprung VKQ, welcher gleichzeitig der Mittelpunkt des Bildsensors ist, mittels Gleichung (A9) so berechnet werden, dass er im Knotenpunktstrahl des Pupillenmittelpunktes PMP liegt.
(A9)
Die dazu benötigte Distanz d zwischen den Hauptpunkten sowie die Entfernung b zwischen der Hauptebene 2 und der Sensorebene müssen dazu bekannt sein oder z. B. mit einem Versuchsaufbau experimentell ermittelt werden.
Weiterhin ergibt sich die Lage des bildseitigen Hauptpunktes aus Gleichung (A 10). vH2 = vHl - d- vKn
(A10) Zur Berechnung der Pupillenprojektion auf dem virtuellen Sensor 804a' werden zunächst Randpunkte RP " der zuvor ermittelten Ellipse auf dem Sensor in Originallage benötigt.
Diese ergeben sich aus den Randpunkten RP2D der Ellipse im Kamerabild, wobei entsprechend Fig. 8d Ea die kurze Halbachse der Ellipse ist, Eb die lange Halbachse der Ellipse, E und EY die Mittelpunktkoordinaten der Ellipse und Ea der Rotationswinkel der Ellipse. Die Lage eines Punktes RP3D im Eyetracker-Koordinatensystem kann durch die Gleichungen (AI 1) bis (AI 4) aus den Parametern der Ellipse E , des Sensors S und der
Kamera K berechnet werden, wobei ω die Lage eines Randpunktes RP entsprechend Fig. 8d auf dem Ellipsenumfang angibt.
(Al l)
(A I 2)
(A13)
RPSD = Ks + sx - Kx- + tl - Ky-
(A14)
Die Richtung eines Knotenpunktstrahls KS im originalen Kamerasystem, welcher einen Pupillenrandpunkt als Ellipsenrandpunkt RP}D auf dem Sensor abbildet, ist gleich der Richtung des Knotenpunktstrahls vKS im virtuellen Kamerasystem, welcher den gleichen Pupillenrandpunkt als Ellipsenrandpunkt RPiD auf dem virtuellen Sensor abbildet. Die Knotenpunktstrahlen der Ellipsenrandpunkte in Fig. 8b und Fig. 8c veranschaulichen dies. Somit haben die beiden Strahlen KS und vKS den gleichen Richtungsvektor, welcher sich aus Gleichung (AI 5) ergibt. Für den Ortsvektor VKSQ des virtuellen sensorseitigen Knotenpunktstrahls vKS gilt immer VKSQ = vHj.
(AI 5)
Der virtuelle Knotenpunktstrahl und die virtuelle Sensorebene, welche der x-y-Ebene der virtuellen Kamera VÄ.' entspricht, werden in Gleichung (AI 6) gleichgesetzt, wobei sich durch Auflösen nach so und h die Parameter ihres Schnittpunktes ergeben. Mit diesen kann durch Gleichung (A I 7) der Ellipsenrandpunkt in Pixelkoordinaten im Bild der virtuellen Kamera berechnet werden.
v.KS 0 + r, - vKS , = K0 + s2 - K, + t2 - K -
(A16)
(AI 7)
Anschließend können aus mehreren virtuellen Randpunkten vRP2D mittels Ellipsenfitting, z. B. mit dem„Direct least Square fitting of ellipses" Algorithmus nach Fitzgibbon et al., die Parameter der in Fig. 8c dargestellten virtuellen Ellipse vE berechnet werden. Dazu werden mindestens sechs virtuelle Randpunkte vRP2D benötigt, welche durch Einsetzen unterschiedlicher ω in Gleichung (A l l ) mit dem oben beschriebenen Weg berechnet werden können.
Die Form der so ermittelten virtuellen Ellipse vE ist nur noch von der Ausrichtung der Pupille abhängig. Außerdem liegt ihr Mittelpunkt immer im Mittelpunkt des virtuellen Sensors und bildet zusammen mit der Sensornormalen, welche der Kameranormalen vK~ entspricht, eine entlang der optischen Achse verlaufende Gerade durch den Pupillenmittel- punkt PMP■ Somit sind die Voraussetzungen erfüllt, um aufbauend auf dem in der Patentschrift DE 10 2004 046 617 AI vorgestellten Ansatz nachfolgend die Blickrichtung zu berechnen. Dabei ist es mit diesem Ansatz nun auch möglich durch die Nutzung des oben beschriebenen virtuellen Kamerasystems die Blickrichtung zu bestimmen, wenn der Pupillenmittelpunkt außerhalb der optischen Achse des realen Kamerasystems liegt, was in rea- len Anwendungen nahezu immer der Fall ist.
Wie in Fig. 8e dargestellt, wird die zuvor berechnete virtuelle Ellipse vE nun in der virtuellen Hauptebene 1 angenommen. Da der Mittelpunkt von vE im Mittelpunkt des virtuellen Sensors und somit in der optischen Achse liegt, entspricht der 3 -D-Ellipsemittelpunkt vE 'MP dem virtuellen Hauptpunkt 1 . Er ist auch gleichzeitig der Lotfußpunkt des Pupillcn- mittelpunktcs PMP in der virtuellen Hauptebene 1. Nachfolgend werden nur noch das Achsenverhältnis und der Rotationswinkel der Ellipse vE genutzt. Diese Formparameter von vE können dabei auch bezogen auf die Hauptebene 1 unverändert genutzt werden, da die Ausrichtungen der x- und y-Achse der 2-D-Sensorebene, auf welche sie sich beziehen, der Ausrichtung der 3-D-Sensorebene entsprechen und somit auch der Ausrichtung der Haupt- ebene 1.
Jede Abbildung der Pupille 806a in einem Kamerabild kann durch zwei verschiedene Ausrichtungen der Pupille entstehen. Bei der Auswertung der Pupillenform ergeben sich daher, wie Fig. 8e zeigt, aus den Ergebnissen jeder Kamera zwei virtuelle Schnittpunkte vS der zwei möglichen Blickgeraden mit der virtuellen Hauptebene 1 . Entsprechend der geometri-
sehen Verhältnisse in Fig. 8c können die beiden möglichen Blickrichtungen p. , und Ptj , folgendermaßen bestimmt werden.
Der Abstand A zwischen dem bekannten Pupillenmittelpunkt und dem Ellipsenmittelpunkt vE'MPis
(AI 8)
Daraus lässt sich r mit Gleichung AI 9 bestimmen.
(A I 9)
Die beiden Richtungsvektoren r- , sowie r- 2 , welche von v/// aus auf vSj sowie vSj gerichtet sind, werden analog zu den Gleichungen
1 0 0
0 cos(^) - sin(^)
0 η(φ) cos(^) cos(( ) 0 sin(< )
Ma = 0 1 0
- sm(< ) 0 cos(< )
Μψ -- sin(^) cos(^) 0
0 0 1 v' = Me - Mm · Μ„, · v
aus
und vEa berechnet:
M 0=vK„ ' ^φ=νΚφ ' ^ ψ=νΚψ-90°-
(A20)
■Μ, ψ=νΚ ψ+90°-νΕ„ [ι,ο,ο]
Anschließend können die beiden virtuellen Schnittpunkte vSj sowie ν5? und daraus die möglichen Blickrichtungen p. , sowie p. , ermittelt werden. S, H , + /· · ·,;.,
(A22) vS2 = vH, + r - r- .
(A23) vS, - M, P
1 '^ - Ρ,
(A24) v5,
"2 ' ^ - ^,ι
(A25)
Um die tatsächliche Blickrichtung zu bestimmen, werden die möglichen Blickrichtungen der Kamera 1 (P- 1 sowieP^1 ) und der Kamera 2 (Pä*2 sowieP^2 ) benötigt. Von diesen vier Vektoren gibt jeweils einer von jeder Kamera die tatsächliche Blickrichtung an, wobei diese beiden normierten Vektoren im Idealfall identisch sind. Um sie zu identifizieren, werden für alle vier möglichen Kombinationen aus einem Vektor der einen Kamera und einem Vektor der anderen Kamera die Differenzen der jeweils ausgewählten möglichen Blickrichtungsvektoren gebildet. Die Kombination, bei welcher sich die geringste Differenz ergibt, enthält die gesuchten Vektoren. Diese ergeben gemittclt den zu bestimmenden Blickrichtungsvektor Pn . Bei Mittelung muss von einer nahezu zeitgleichen Bildaufnahme ausgegangen werden, damit von beiden Kameras die gleiche Pupillenlagc sowie die gleiche -ausriehtung und somit die gleiche Blickrichtung erfasst wurde.
Als Maß für die Genauigkeit des berechneten Blickrichtungsvektor kann zusätzlich der Winkel w^yj zwischen den beiden gemittelten Vektoren PKl und PK2 , welche die tatsächliche Blickrichtung angeben, berechnet werden. Je geringer w^jist, desto genauer waren die Modellparameter und Ellipsenmittelpunkte, welche für die bisherigen Berechnungen genutzt wurden.
wdiff
(A26)
Die Blickwinkel 6BW und φΒ gegenüber der Normallage der Pupille (PH liegt parallel zur z-Achse des Eyetracker- oordinatensystems) können mit den Gleichungen
<Pmv = aresinf- />/ ) und
berechnet werden.
Falls eine systematische Abweichung der Blickrichtung von der optischen Achse des Auges bzw. von der Pupillennormale berücksichtigt werden soll, können die entsprechenden Winkel zu den ermittelten Blickwinkeln 6BW und φΒψ hinzuaddiert werden. Der neue B 1 i ckrichtungsvektor muss dann mittels Gleichung
/y = Μθ=θην, -Μφ=φΒΐ -Μψ=0 z aus den neuen Blickwinkeln OBW' und φ^^' und z = [0,0,1 ] berechnet werden.
Mit dem Blickrichtungsvektor P- ist (neben dem Pupillemittelpunkt PMP aus Gleichung
A6) auch der zweite Parameter der vom 3D-Bildanalysator zu bestimmenden Blickgeraden (LoS) bekannt. Diese ergibt sich entsprechend folgender Gleichung
LoS [f) = PMP + t - P .
Die Implementierung des oben vorgestellten Verfahrens ist plattformunabhängig, so dass das oben vorgestellte Verfahren auf verschiedenen Hardwareplattformen, wie z.B. einem PC ausgeführt werden kann.
Fig. 2a zeigt einen Hough-Prozessor 100 mit einem Prc-Prozessor 102 und einer Hough- Transformationscinrichtung 104. Der Pre-Prozessor 102 stellt die erste Signalverarbeitungsstufe dar und ist informatorisch an die Hough-Transformationseinrichtung 104 ge- koppelt. Die Hough-Transformationseinrichtung 104 weist einen Verzögerungsfilter 106 auf, der mindestens ein, bevorzugt aber eine Vielzahl von Verzögerungselementen 108a, 108b, 108c, 1 10a, 110b und 1 10c umfassen kann. Die Verzögerungselemente 108a bis 108c und 1 10a bis 1 10c des Verzögerungsfilters 106 sind typischerweise als Matrix, also in Spalten 108 und 1 10 und Zeilen a bis c angeordnet und signaltechnisch miteinander ge- koppelt. Entsprechend dem Ausführungsbeispiel aus Fig. 2a weist zumindest eines der Verzögerungsglieder 108a bis 108c bzw. 110a bis 110c eine einstellbare Verzögerungszeit auf, hier symbolisiert anhand des„+/-"-Symbols. Zur Ansteuerung der Verzögerungselemente 108a bis 108c und 1 10a bis 1 10c bzw. zur Steuerung derselben kann eine separate Ansteuerlogik bzw. ein AnSteuerregister (nicht dargestellt) vorgesehen sein. Diese Steuer- logik steuert die Verzögerungszeit der einzelnen Verzögerungselemente 108a bis 108c bzw. 110a bis 110c über optionale schaltbare Elemente 109a bis 109c bzw. 1 1 la bis 1 1 1c, die beispielsweise einen Multiplexer und einen Bypass umfassen können. Die Hough- Trans format ionsci nri chtung 104 kann ein zusätzliches Konfigurationsregister ( nicht dargestellt) zur initialen Konfiguration der einzelnen Verzögerungselemente 108a bis 108c und 1 10a bis 1 10c umfassen.
Der Pre-Prozessor 102 hat die Aufgabe, die einzelnen Samplcs 1 12a, 1 12b und 1 12c so aufzubereiten, dass diese durch die Hough-Transformationseinrichtung 104 effizient verarbeitet werden können. Hierzu empfängt der Pre-Prozessor 102 die Bikklatei bzw. die meh- reren Samplcs 1 12a, 1 12b und 1 12c und führt eine Vorverarbeitung, z.B. in Form einer Drehung und/oder in Form einer Spiegelung durch, um die mehreren Versionen (vgl. 1 12a und 1 12a') an die Hough-Transforaiationseinrichtung 104 auszugeben. Die Ausgabe kann seriell erfolgen, wenn die Hough-Transformationseinrichtung 104 einen Hough-Kern 106 aufweist, oder auch parallel, wenn mehrerer Hough-Kerne vorgesehen sind. D.h. also, dass je nach Umsetzung die n Versionen des Bildes entweder vollständig parallel, semi -parallel (also nur zum Teil parallel) oder seriell ausgegeben und bearbeitet werden. Die Vorverarbeitung im Pre-Prozessor 102, die dem Zweck dient, mit einem Suchmuster bzw. einer
1 Iough-Kemkon figuration mehrere ähnliche Muster (steigende und fallende Gerade) zu detektieren, wird nachfolgend anhand des ersten Samples 112a erläutert.
Dieses Sample kann beispielsweise gedreht, z.B. um 90° gedreht, werden, um die gedrehte Version 1 12a' zu erhalten. Dieser Vorgang des Drehens ist mit dem Bezugszeichen 1 14 versehen. Hierbei kann die Drehung entweder um 90°, aber auch um 180° oder 270° bzw. allgemein um 360 n erfolgen, wobei angemerkt sei, dass je nach nachgelagert er Hough- Transformation (vgl. Hough-Transformationseinrichtung 104) sehr effizient sein kann, nur eine 90°-Umdrehung durchzuführen. Auf diese Unteraspekte wird Bezug nehmend auf Fig. 2b und 2c eingegangen. Ferner kann das Bild 112a auch gespiegelt werden, um die gespiegelte Version 112a" zu erhalten. Der Vorgang des Spiegeins ist mit dem Bezugszeichen 116 versehen. Das Spiegeln 116 entspricht einem rückwärtigen Auslesen des Speichers. Sowohl ausgehend von der gespiegelten Version 112a" als auch von der gedrehten Version 1 12a' kann eine vierte Version durch eine gedrehte und gespiegelte Version 112a' " erhalten werden, indem entweder der Vorgang 1 14 oder 1 16 durchgeführt wird. Auf Basis der Spiegelung 116 können dann zwei ähnliche Muster (z.B. nach rechts geöffneter Halbkreis und nach links geöffneter Halbkreis) mit derselben H ough- Kernkon fi gurat i on , wie nachfolgenden beschrieben, detektiert werden. Die Hough-Transformationseinrichtung 104 ist dazu ausgebildet, um in der durch den Pre- Prozessor 102 zur Verfügung gestellten Version 1 12a bzw. 1 12a' (oder 1 12a" bzw. 112a' ") ein vorbestimmtes gesuchtes Muster, wie z.B. eine Ellipse oder ein Segment einer Ellipse, einen Kreis oder Segment eines Kreises, oder eine Gerade bzw. ein Grabcnseg- ment zu detektieren. Hierzu ist die Filteranordnung entsprechend dem gesuchten vorbc- stimmten Muster konfiguriert. Abhängig von der jeweiligen Konfiguration werden manche der Verzögerungselemente 108a bis 108c bzw. 1 10a bis 1 10c aktiviert oder gebypassed. Infolgedessen werden bei Anlegen eines Bildstreifens des zu untersuchenden Bildes 1 12a bzw. 1 12a' an die Transformationscinrichtung 1 4 durch die Verzögerungselemente 108a bis 108c einige Pixel selektiv verzögert, was einer Zwischenspeichcrung entspricht, und andere direkt zur nächsten Spalte 1 10 weitergeleitet. Durch diesen Vorgang werden dann gekrümmte oder schräge Geometrien„geradegebogen". Abhängig von der eingelesenen Bilddatei 1 12a bzw. 1 12a', bzw., um genau zu sein, abhängig von der von der Bildstruktur der angelegten Zeile des Bildes 1 12a bzw. 1 12a' kommt es zu hohen Spaltensummen in einer der Spalten 108 oder 1 10, während die Spaltensummen in anderen Spalten niedriger sind. Die Spaltensumme wird über den Spaltensummenausgang 108x bzw. I l Ox ausgegeben, wobei hier optional ein Additionselement (nicht dargestellt) zur Bildung der Spaltensumme je Spalte 108 oder 1 10 vorgesehen sein kann. Bei einem Maximum einer der Spaltensummen kann auf das Vorhandensein einer gesuchten Bildstruktur oder eines Segments
der gesuchten Bildstruktur oder zumindest auf das zugehörige Maß der Übereinstimmung mit der gesuchten Struktur geschlossen werden. Das heißt also, dass je Verarbeitungsschritt der Bildstreifen um ein Pixel bzw. um eine Spalte 108 oder 1 10 weitergeschoben wird, so dass bei jedem Verarbeitungsschritt anhand eines Ausgangshistogramms erkenn- bar ist, ob eine der gesuchten Strukturen detektiert ist oder nicht, oder ob die Wahrscheinlichkeit des Vorhandenseins der gesuchten Struktur entsprechend hoch ist. In anderen Worten ausgedrückt heißt das, dass das Überschreiten eines Schwellenwerts der jeweiligen Spaltensumme der Spalte 108 oder 1 10 die Detektion eines Segments der gesuchten Bildstruktur anzeigen, wobei jede Spalte 108 oder 1 10 einem gesuchten Muster bzw. einer Ausprägung eines gesuchten Musters (z.B. Winkel einer Geraden oder Radius eines Kreises) zugeordnet ist. Es sei an dieser Stelle angemerkt, dass für die jeweilige Struktur nicht nur das jeweilige Verzögerungselement 1 10a, 1 10b und 110c der jeweiligen Zeile 110 maßgeblich ist, sondern insbesondere die vorherigen Verzögerungselemente 108a, 108b und 108c in Kombination mit den nachfolgenden Verzögerungselementen 110a, 110b und 110c. Entsprechend dem Stand der Technik sind derartige Strukturen bzw. Aktivierungen von Verzögerungselementen bzw. Bypass von vorneherein vorgegeben.
Über die variablen Verzögerungselemente 108a bis 108c bzw. 1 10a bis 110c (Verzögerungselemente) kann die gesuchte Ausprägung (also z.B. der Radius oder der Anstieg) im laufenden Betrieb angepasst werden. Da die einzelnen Spalten 108 und 110 miteinander gekoppelt sind, erfolgt bei Anpassen der Verzögerungszeit eines der Verzögerungselemente 108a bis 108c bzw. 110a bis 1 10c eine Veränderung der gesamten Filtercharakteristik des Filters 106. Durch die flexible Anpassung der Filtercharakteristik des Filters 106 der Hough-Transformationscinrichtung 104 ist es möglich, den Trans fo m at i o nsk ern 106 wäh- rend der Laufzeit anzupassen, so dass beispielsweise dynamische Bildinhalte, wie z.B. für kleine und große Pupillen, mit demselben Hough-Kern 106 erfasst und getrackt werden können. Auf die genaue Implementierung, wie die Verzögerungszeit angepasst werden kann, wird in Fig. 3c eingegangen. Um nun dem Hough-Prozessor 100 bzw. der Transformationseinrichtung 104 mehr Flexibilität zu ermöglichen, sind bevorzugt alle Verzöge- rungselemente 108a, 108b, 108c, 1 10a, 1 10b und/oder 1 10c (oder zumindest eine der genannten) mit einer variablen oder diskret schaltbaren Verzögerungszeit ausgeführt, so dass während des Betriebes aktiv zwischen unterschiedlichen zu detektierenden Mustern bzw. zwischen unterschiedlichen Ausprägungen der zu detektierenden Muster hin- und hergeschaltet werden kann.
Entsprechend weiteren Ausführungsbeispielen ist die Größe des dargestellten Hough- Kerns 104 konfigurierbar (entweder im Betrieb oder vorab), so dass also zusätzliche Hough-Zellen aktiviert oder deaktiviert werden können.
Entsprechend weiteren Ausführungsbeispielen kann die Transformationseinrichtung 104 mit Mitteln zur Einstellung derselben bzw., um genau zu sein, zur Einstellung der einzelnen Verzögerungselemente 108a bis 108c und 1 10a bis 110c, wie z.B. mit einem Control- ler (nicht dargestellt) verbunden sein. Der Controller ist beispielsweise in einer nachgeschalteten Verarbeitungseinrichtung angeordnet und dazu ausgebildet, um die Verzögerungscharakteristik des Filters 106 anzupassen, wenn kein Muster erkannt werden kann oder wenn die Erkennung nicht ausreichend gut ist (geringe Übereinstimmung des Bildinhaltes mit den gesuchten Mustern es Vorhandenseins des gesuchten Musters). Auf diesem Controller wird Bezug nehmend auf Fig. 5 a eingegangen.
Das oben genannte Ausführungsbeispiel hat den Vorteil, dass dieses einfach und flexibel zu realisieren ist und insbesondere auch auf einem FPGA implementiert werden kann. Hintergrund hierzu ist, dass die oben beschriebene parallele Hough-Transformation ohne Re- gressionen auskommt und sozusagen vollständig parallelisiert ist. Deshalb beziehen sich weitere Ausführungsbeispiele auf FPGAs, die zumindest die Hough- Transformationseinrichtung 104 und/oder den Pre-Prozessor 102 aufweisen. Bei einer Implementierung der oben beschriebenen Vorrichtung auf einem FPGA, z.B. einen XILINX Spartan 3A DSP, konnte eine sehr hohe Frame-Rate, von beispielsweise 60 FPS bei einer Auflösung von 640x480, unter Nutzung von einer Taktfrequenz bei 96 MHz erzielt werden, da durch die oben beschriebene Struktur 104 mit der Vielzahl der Spalten 108 und 110 eine parallele Verarbeitung bzw. eine sogenannte parallele Hough-Transformation möglich ist. An dieser Stelle sei darauf hingewiesen, dass bei obigen und nachfolgende Ausluhrungs- beispielen mit "Blickrichtung" bzw. "Blickvektor" in erster Linie die optische Achse des
Auges gemeint ist. Diese optische Achse des Auges ist von der Sehachse des Auges zu unterscheiden, wobei die optische Achse des Auges aber als Schätzung für die Sehachse dienen kann, da diese Achsen typischerweise voneinander abhängig sind. So kann bei- spielsweise durch das Einbeziehen von Korrekturwinkeln aus der optischen Achse des Auges eine Richtung bzw. ein Richtungsvektor berechnet werden, der noch eine deutlich bessere Schätzung der Ausrichtung der tatsächlichen Sehachse des Auges ist.
Fig. 2a und 2b zeigen den Pre-Prozessor 102, der zur Vorverarbeitung des Videodaten- Stroms 1 12 mit den Frames 1 12a, 1 12b und 1 12c dient. Der Pre-Prozessor 102 ist dazu ausgebildet, die Samples 1 12 als binäre Kantenbilder oder auch als Gradientenbilder zu empfangen und auf Basis dieser die Rotation 1 14 bzw. die Spiegelung 1 16 durchzuführen, um die vier Versionen 1 12a, 1 12a', 1 12a" und 1 12a' " zu erhalten. Hintergrund hierzu ist,
dass typischerweise die parallele Hough-Transformation, wie sie durch die Hough- Transformationseinrichtung ausgeführt wird, auf zwei oder vier jeweils vorverarbeiteten, z.B. um 90° versetzten, Versionen eines Bildes 1 12a aufbaut. Wie in Fig. 2b dargestellt ist, erfolgt zuerst eine 90°-Drehung (1 12a zu 1 12a'), bevor die zwei Versionen 1 12a und 1 12a' horizontal gespiegelt werden (vgl. 1 12a zu 1 12a" und 1 12a' zu 1 12a' "). Um die Spiegelung 1 1 6 und/oder die Rotation 1 14 durchzuführen, weist der Pre-Prozessor in entsprechenden Ausführungsbeispielen einen internen oder externen Speicher auf, der dazu dient, die empfangenen Bilddateien 1 12 vorzuhalten. Die Verarbeitung Drehen 1 14 und/oder Spiegeln 1 16 des Pre-Prozessors 102 hängt von der nachgelagerten Hough-Transformationseinrichtung, der Anzahl der parallelen Hough- Kerne (Parallelisierungsgrad) und der Konfiguration derselben ab, wie insbesondere Bezug nehmend auf Fig. 2c beschrieben wird. Insofern kann der Pre-Prozessor 102 dazu ausgebildet sein, um den vorverarbeiteten Videostrom je nach Parallelisierungsgrad der nachge- lagerten Hough-Transformationseinrichtung 104 entsprechend einer der drei folgenden Konstellationen über den Ausgang 126 auszugeben:
100% Parallelisierung: Simultane Ausgabe von vier Videodatenströmen, nämlich einer nicht-rotierten und nicht-gespiegelten Version 1 12a, einer um 90° rotierten Version 1 12a', und jeweils eine gespiegelte Version 1 12a" und 1 12a' ".
50% Parallelisierung: Ausgabe von zwei Videodatenströmen, nämlich nicht-rotiert 1 12a und um 90% gespiegelt 1 12a' in einem ersten Schritt und Ausgabe der jeweils gespiegelten Varianten 1 12a" und 1 12a' " in einem zweiten Schritt.
25% Parallelisierung: jeweils Ausgabe eines Videodatenstroms, nämlich nicht-rotiert 1 12a, um 90° rotiert 1 12a", gespiegelt 1 12a" und gespiegelt und rotiert 1 12a' " sequenziell.
Alternativ zu obiger Variante wäre es auch denkbar, dass basierend auf der ersten Version drei weitere Versionen allein durch Drehung, also beispielsweise durch Drehung um 90°, 180° und 270°, erstellt werden, auf Basis derer die Hough-Transformation erfolgt.
Entsprechend weiteren Ausführungsbeispielen kann der Pre-Prozessor 102 dazu ausgebildet sein, auch weitere Bildverarbeitungsschritte, wie z.B. ein Up-Sampling, durchzuführen. Zusätzlich wäre es auch möglich, dass der Pre-Prozessor das Gradientenbild erzeugt. Für den Fall, dass die Gradientenbilderzeugung Teil der Bildvorverarbeitung wird, könnte das Grauwertbild (Ausgangsbild) im FPGA rotiert werden.
Fig. 2c zeigt zwei Hough-Kemkonfigurationcn 128 und 130, z.B. für zwei parallele 31x31 Hough-Kerne, so konfiguriert, um eine Gerade bzw. einen geraden Abschnitt zu erkennen. Des Weiteren ist ein Einheitskreis 132 aufgetragen, um zu illustrieren, in welchen Winkelbereichen die Detektion möglich ist. Es sei an dieser Stelle angemerkt, dass die Hough- Kernkonfiguration 128 und 130 jeweils so zu sehen sind, dass die weißen Punkte die Verzögerungselemente illustrieren. Die Hough-Kernkonfiguration 128 entspricht einem sogenannte Typ 1 Hough-Kern, während die H o u gh- ern kon fi gurat i on 130 einem sogenannten Typ 2 Hough-Kern entspricht. Wie an dem Vergleich der zwei Hough- Kernkonfigurationen 128 und 130 zu erkennen ist, stellt der eine die Inverse des anderen dar. Mit der ersten Hough-Kernkonfiguration 128 kann eine Gerade in dem Bereich 1 zwischen 3π/4 und π/2 detektiert werden, während eine Gerade in dem Bereich 3π/2 und 5π/4 (Bereich 2) mittels der Hough-Kernkonfiguration 130 detektierbar ist. Um in den weiteren Bereichen eine Detektion zu ermöglichen, wird, wie oben beschrieben, die Hough- Kernkonfiguration 128 und 130 auf die rotierte Version des jeweiligen Bildes angewendet. Folglich kann dann mittels der Hough-Kernkonfiguration 128 der Bereich lr zwischen π/4 und null und mittels der Hough-Kernkonfiguration 130 der Bereich 2r zwischen π und 3π/4 erfasst werden.
Alternativ kann bei Einsatz nur eines Hough-Kerns (z.B. eines Typ 1 Hough-Kerns) eine Rotation des Bildes einmal um 90°, einmal um 180° und einmal um 270° sinnvoll sein, um die oben beschrieben Varianten der Geradenausrichtung zu erfassen. Andererseits kann durch die Flexibilität bei der Konfiguration des Hough-Kerns auch nur ein Hough-Kern- Typ eingesetzt werden, der während des laufenden Betriebs so umkonfiguriert wird bzw. bei dem die einzelne Verzögerungselemente zu- oder abgeschaltet werden können, dass der Hough-Kern dem invertierten Typ entspricht. In anderen Worten ausgedrückt heißt das also, dass bei Einsatz des Pre-Prozessors 102 (im 50% Parallelisierungs-Betrieb) und der konfigurierbaren Hough-Transformationseinrichtung 104 mit nur einem Hough-Kern und mit nur einer Bildrotation die vollständige Funktionalität abbildbar ist, die sonst nur mittels zwei parallelen Hough-Kern abgedeckt werden kann. Insofern wird klar, dass die jeweilige Hough-Kernkonfiguration bzw. die Wahl des I lough- Kern-Typs abhängig von dem Pre- Processing, welches durch den Pre-Prozessor 102 durchgeführt wird, ist.
Fig. 3a zeigt einen Hough-Kern 104 mit m Spalten 108, 1 10, 138, 140, 141 und 143 und n Zeilen a, b, c, d, e und f, so dass m x n Zellen gebildet werden. Die Spalte 108, 1 10, 138, 140, 141 und 143 des Filters steht für eine bestimmte Ausprägung der gesuchten Struktur, z.B. für eine bestimmte Krümmung oder einen bestimmten geraden Anstieg.
Jede Zelle umfasst ein hinsichtlich Verzögerungszeit einstellbares V erzögerun gsel em en t , wobei in diesem Ausfuhrungsbeispiel der Einstellmechanismus dadurch realisiert ist, dass jeweils ein schaltbares Verzögerungselement mit einem Bypass vorgesehen ist. Nachfolgend wird anhand von Fig. 3b der Aufbau aller Zelle stellvertretend erläutert. Die Zelle (108a) aus Fig. 3b umfasst das Verzögerungselement 142, einen fernbedienbaren Schalter 144, wie z.B. einen Multiplexer. und einen Bypass 146. Mittels des fernbedienbaren Schalters 144 kann entweder das Zeilensignal über das V crzögerungselement 142 geleitet werden oder unverzögert zu dem Knotenpunkt 148 geführt werden. Der Knotenpunkt 148 ist einerseits mit dem Summenelement 150 für die Spalte (z.B. 108) verbunden, wobei andc- rerseits über diesen Knotenpunkt 148 auch die nächste Zelle (z.B. 1 10a) angebunden ist.
Der Multiplexer 144 wird über ein sogenanntes Konfigurationsregister 160 konfiguriert (vgl. Fig. 3a). Es sei an dieser Stelle angemerkt, dass das hier dargestellte Bezugszeichen 160 sich nur auf einen Teil des Konfigurationsregisters 160 bezieht, welcher direkt mit dem Multiplexer 144 gekoppelt ist. Das Element des Konfigurationsregisters 160 ist dazu ausgebildet, den Multiplexer 144 zu steuern und erhält dazu über einen ersten Informationseingang 160a eine Konfigurationsinformation, die beispielsweise aus einer Konfigurationsmatrize stammt, welche im FPGA-internen BRAM 163 abgelegt ist. Diese Konfigurationsinformation kann ein spaltenweiser Bitstring sein und bezieht sich auf die Konfigura- tion mehrerer der (auch während der Transformation) konfigurierbaren Verzögerungs- Zellen (142+144). Deshalb kann die Konfigurationsinformation ferner über den Ausgang 160b weitergeleitet werden. Da die Umkonfiguration nicht zu jedem Zeitpunkt des Betriebes möglich ist, erhält das Konfigurationsregister 160 bzw. die Zelle des Konfigurationsregisters 160 ein sogenanntes Enablersignal über einen weiteren Signaleingang 160c, mittels welchem die Umkonfiguration veranlasst wird. Hintergrund hierzu ist, dass die Rekonfiguration des Hough- Kerns eine gewisse Zeit benötigt, die von der Anzahl der Verzögerungs- elemente bzw. insbesondere von der Größe einer Spalte abhängig ist. Dabei ist für jedes Spaltcnelement ein Taktzyklus zugeordnet und es kommt zu einer Latenz von wenigen Taktzyklen durch den BRAM 163 bzw. die Konfigurationslogik 160. Die Gesamtlatenz zur Rekonfiguration ist für videobasierte Bildverarbeitungen typischerweise vernachlässigbar. Es sei davon ausgegangen, dass in dem vorliegenden Ausführungsbeispiel die mit einem CMOS-Sensor aufgezeichneten Videodatenströme ein horizontales und vertikales Blanking aufweisen, wobei das horizontale Blanking bzw. die horizontale Blanking-Zeit zur Rekonfiguration genutzt werden kann. Durch diesen Zusammenhang gibt die Größe der in dem FPGA implementierten Hough-Kem- Struktur die maximal mögliche Größe für Hough-Kernkonfigurationen vor. Werden beispielsweise kleinere Konfigurationen genutzt, sind diese vertikal zentriert und in horizontaler Richtung an Spalte 1 der Hough-Kem-
Struktur ausgerichtet. Nicht genutzte Elemente der Hough-Kem-Struktur werden allesamt mit aktivierten Verzögerungselementen besetzt.
Die Auswertung der so mit den einzelnen Verzögerungszellen (142+144) bearbeitenden Datenströme erfolgt spaltenweise. Hierzu wird spaltenweise aulsummiert, um ein lokales Summenmaximum zu detektieren, welches eine erkannte gesuchte Struktur anzeigt. Die Summcnbildung je Spalte 108, 1 10, 138, 140, 141 und 143 dient dazu, einen Wert, der repräsentativ für das Maß für die Übereinstimmung mit der gesuchten Struktur für eine der jeweiligen Spalte zugeordnete Ausprägung der Struktur zu ermitteln. . Zur Ermittlung der lokalen Maxima der Spaltensummen sind je Spalte 108, 1 10, 138. 140, 141 oder 143 sogenannte Vergleicher 108v, HOv, 138v, 140v, 141v bzw. 143v vorgesehen, die mit den jeweiligen Summengliedern 150 verbunden sind. Optional können zwischen den einzelnen Vergleichern 108v, HOv, 138v, 140v, 141v, 143v der unterschiedlichen Spalte 108, 110, 138. 140, 141 oder 143 auch noch weitere Verzögerungsglieder 153 vorgesehen sein, die zum Vergleich der Spaltensummen von nebeneinanderliegenden Spalten dienen. Im Detail wird bei Durchlauf des Filters immer die Spalte 108, 110, 138 oder 140 mit dem größten Maß der Übereinstimmung für eine Ausprägung des gesuchten Musters aus dem Filter herausgereicht. Bei Detektieren eines lokalen Maximums einer Spaltensumme (Vergleich vorherige, nachfolgende Spalte) kann auf das Vorliegen einer gesuchten Struktur geschlos- sen werden. Das Ergebnis des Vergleichs ist also einen Spaltennummer (ggf. inkl. Spaltensumme = Maß für Übereinstimmung), in welcher das lokale Maximum erkannt wurde bzw. die Ausprägung der gesuchten Struktur steht, z.B. Spalte 138. In bevorzugter Weise um- fasst das Ergebnis einen sogenannten mehrdimensionalen Hough-Raum, der alle relevanten Parameter der gesuchten Struktur, wie z.B. Art des Musters (z.B. Gerade oder Halbkreis), Maß der Ü berei nstimmung des Musters, Ausprägung der Struktur (Stärke der Krümmung bei Kurvensegmenten bzw. Anstieg und Länge bei Geradensegmenten) und die Lage bzw. Orientierung des gesuchten Musters umfasst. Anders ausgedrückt heißt das, dass für jeden Punkt in dem Hough-Raum die Grauwerte der korrespondierenden Strukturen im Bildbereich aufaddiert werden. Infolgedessen bilden sich Maxima aus, mittels welchen die ge- suchte Struktur im Hough-Raum einfach lokalisiert und in den Bildbereich zurückgeführt werden kann.
Die Hough-Kern-Zelle aus Fig. 3b kann ein optionales Pipeline-Verzögerungselement 162 (Pipeline-Delay) aufweisen, das beispielsweise am Ausgang der Zelle angeordnet ist und dazu ausgebildet ist, sowohl das mittels des Verzögerungselements 142 verzögerte Signal und das mittels des Bypasses 146 nicht verzögerte Signal zu verzögern.
Wie Bezug nehmend auf Fig. 1 angedeutet, kann eine derartige Zelle auch ein Verzögerungselement mit einer Variabilität aufweisen bzw. eine Vielzahl von miteinander geschalteten und gebypassten Verzögerungselementen umfassen, so dass die Verzögerungszeit in mehreren Stufen einstellbar ist. Insofern wären weitere Implementierungen über die in Fig. 3b dargestellte Implementierung der I lough-Kern-Zelle alternativ denkbar.
Nachfolgend wird Bezug nehmend Fig. 5a eine Anwendung der oben beschriebenen Vorrichtung erläutert in einem Bild verarbei t ungs-S ys tem 1000. Fig. 5a zeigt einen FPGA implementierten Bildprozessor 10a mit einem Pre- Prozessor 102 und einer Hough- Transformationseinrichtung 104. Vor dem Pre-Prozessor 102 kann ferner eine Eingangsstufe 12 in den Bildprozessor 10a implementiert sein, die dazu ausgebildet ist, um Bilddaten oder Bildsample von einer Kamera 14a zu empfangen. Hierzu kann die Eingangsstufe 12 beispielsweise eine Bildübernahmeschnittstelle 12a, einen Segmentations- und Kantendetektor 12b und Mittel zur Kamerasteuerung 12c umfassen. Die Mittel zur Kamerasteue- rung 12c sind mit der Bildschnittstelle 12a und der Kamera 14 verbunden und dienen dazu Faktoren wie Verstärkung und/oder Belichtung zu steuern.
Der Bildprozessor 10a umfasst des Weiteren einen sogenannten Hough-Feature-Extraktor 16, der dazu ausgebildet ist, den mehrdimensionalen Hough-Raum, der durch die Hough- Transformationseinrichtung 104 ausgegeben wird und alle relevanten Informationen für die Mustererkennung umfasst, zu analysieren und auf Basis des Analyseergebnisses eine Zusammenstellung aller Hough-Features auszugeben. Im Detail erfolgt hier eine Glättung der Hough-Feature-Räume, d.h. also eine räumliche Glättung mittels eines lokalen Filters bzw. eine Ausdünnung des Hough-Raums (Unterdrückung nicht relevanter Informationen für die M ust erer ken n u n g) . Diese Ausdünnung erfolgt unter Berücksichtigung der Art des Musters und der Ausprägung der Struktur, so dass Nicht-Maxima im Hough- Wahrscheinlichkeitsraum ausgeblendet werden. Ferner können für die Ausdünnung auch Schwellwertc definiert sein, so dass beispielsweise minimal oder maximal zulässige Ausprägungen einer Struktur, wie z.B. eine minimale oder maximale Krümmung oder ein kleinster oder größter Anstieg, im Vorfeld bestimmt werden kann. Mittels dieser schwellenbasierten Unterdrückung kann auch eine Rauschunterdrückung im Hough- Wahrscheinlichkeitsraum erfolgen.
Die analytische Rücktransformation der Parameter aller verbleibenden Punkte in dem Ori- ginalbildbereich ergibt z.B. folgende Hough-Features: Für die gebogene Struktur können Lage (x- und y-Koordinate), Auftrittswahrscheinlichkeit, Radius und Winkel, der angibt, in welche Richtung der Bogen geöffnet ist, weitergeleitet werden. Für eine Gerade können Parameter wie Lage (x- und y-Koordinate), Auftrittswahrscheinlichkeit, Winkel der die
Steigung der Gerade angibt, und Länge des repräsentativen geraden Abschnitts ermittelt werden. Dieser ausgedünnte Hough-Raum wird durch den Hough-Feature-Extraktor 16 bzw. allgemein durch den Bildprozessor 10a zur Weiterverarbeitung an eine Nachverarbeitungseinrichtung 18 ausgegeben.
Ein weiteres Ausführungsbeispiel umfasst des Einsatz eines 3 D-Bildanalysators 400 (Fig. 5a) innerhalb eines Bildverarbeitungssystems zusammen mit einem vorgeschalteten Bildprozessor 1 0a (Fig. 5a) bzw. vorgeschalteten Hough-Prozessor, wobei der Hough- Prozessors und insbesondere die Komponenten der Nachverarbeitungseinrichtung 18 für die Detektion von als Ellipse abgebildeten Pupillen oder Iris angepasst sind.
Die Nachverarbeitungseinrichtung des Hough-Prozessors kann beispielsweise als eingebetteter Prozessor realisiert sein und je nach Anwendung unterschiedliche Untereinheiten aufweisen, die nachfolgend exemplarisch erläutert werden. Die Nachverarbeitungseinrich- tung 18 (Fig. 5a) kann einen Hough-Feature-nach-Geometrieumwandler 202 umfassen. Dieser Geometrieumwandler 202 ist dazu ausgebildet, ein oder mehrere vordefinierte gesuchte Muster, die durch den Hough-Feature-Extraktor ausgegeben werden, zu analysieren und die Geometrie beschreibende Parameter je Sample auszugeben. So kann der Geometrieumwandler 202 beispielsweise ausgebildet sein, auf Basis der detektierten Hough- Features Geometrieparameter, wie z.B. erster Durchmesser, zweiter Durchmesser, Kippung und Position des Mittelpunkts bei einer Ellipse (Pupille) oder eines Kreises, auszugeben. Entsprechend einem bevorzugten Ausführungsbeispiel dient der Geometrieumwandler 202 dazu, um eine Pupille anhand von 3 bis 4 Hough-Features (z.B. Krümmungen) zu de- tektieren und auszuwählen. Dabei fließen Kriterien, wie das Maß der Ubereinstimmung mit der gesuchten Struktur bzw. der Hough-Features, die Krümmung der Hough-Features bzw. das vorbestimmte zu detektierende Muster, die Lage und Orientierung der Hough- Features ein. Die ausgewählten I lough-Feature-Kombinationen werden sortiert, wobei in der ersten Linie die Sortierung entsprechend der Anzahl der erhaltenen Hough-Features und in zweiter Linie nach dem Maß der Übereinstimmung mit der gesuchten Struktur er- folgt. Nach dem Sortieren wird die an der ersten Stelle stehende Hough-Feature- Kombination ausgewählt und daraus die Ellipse gefittet, welche am ehesten die Pupille im Kamerabild repräsentiert.
Des Weiteren umfasst die Nachverarbeitungseinrichtung 18 (Fig. 5a) einen optionalen Controller 204, der dazu ausgebildet ist, ein Steuersignal zurück an den Bildprozessor 10a (vgl. Steuerkanal 206) bzw., um genau zu sein, zurück an die Hough- Transformationseinrichtung 104 auszugeben, auf Basis dessen die Filtercharakteristik des Filters 106 anpassbar ist. Zur dynamischen Anpassung des Filterkerns 106 ist der Control-
ler 204 typischerweise mit dem G eo m et r i eum w and 1 er 202 verbunden, um die Geometrieparameter der erkannten Geometrie zu analysieren und um den Hough-Kern in definierten Grenzen derart nachzuführen, dass eine genauere Erkennung der Geometrie möglich ist. Dieser Vorgang ist ein sukzessiver Vorgang, der beispielsweise mit der letzten Hough- Kernkonfiguration (Größe des zuletzt genutzten Hough-Kems) beginnt und nachgeführt wird, sobald die Erkennung 202 unzureichende Ergebnisse liefert. Am oben diskutierten Beispiel der Pupillen bzw. Ellipsendetektion kann also der Controller 204 die Ellipsengröße anpassen, die z.B. von dem Abstand zwischen dem aufzunehmenden Objekt und der Kamera 14a abhängig ist, wenn die zugehörige Person sich der Kamera 14a nährt. Die Steuerung der Filtercharakteristik erfolgt hierbei auf Basis der letzten Einstellungen und auf Basis der Geometrieparameter der Ellipse.
Entsprechend weiteren Ausführungsbeispielen kann die Nachverarbeitungseinrichtung 18 einen Selektiv-adaptiven Datenprozessor 300 aufweisen. Der Datenprozessor hat den Zweck Ausreißer und Aussetzer innerhalb der Datenreihe nachzubearbeiten, um so beispielsweise eine Glättung der Datenreihe durzuführen. Deshalb ist der Selektiv-adaptive Datenprozessor 300 ausgebildet, um mehrere Sätze von Werten, die durch den Geomet- rieumwandler 202 ausgegeben werden, zu empfangen, wobei jeder Satz einem jeweiligen Sample zugewiesen ist. Der Filterprozessor des Datenprozessors 300 führt auf Basis der mehreren Sätze eine Selektion von Werten in der Art durch, dass die Datenwerte unplausible Sätze (z. B. Ausreißer oder Aussetzer) durch intern ermittelte Datenwerte (Ersatzwerte) ersetzt werden und die Datenwerte der übrigen Sätze unverändert weiterverwendet werden. Im Detail werden die Datenwerte plausibler Sätze (die keine Ausreißer oder Aussetzer enthalten) wcitcrgcleitet und die Datenwerte unplausibler Sätze (die Ausreißer oder Aussetzer enthalten) durch Datenwerte eines plausiblen Satzes, z. B. den vorherigen Datenwert oder eine Mittelung aus mehreren vorherigen Datenwerten, ersetzt. Die sich ergebende Datenreihe aus weitergeleiteten Werten und ggf. Ersatzwerten wird dabei fortlaufend geglättet. D.h. also, dass eine adaptive zeitliche Glättung der Datenreihe (z. B. einer ermittelten Ellipsenmittelpunktskoordinate), z. B. nach dem Prinzip der exponentiellen Glättung, erfolgt, wobei Aussetzer oder Ausreißer (z. B. infolge Falschdetektion bei der Pupillendetektion) in der zu glättenden Datenreihe nicht zu Schwankungen der geglätteten Daten führen. Im Detail kann der Datenprozessor über den Datenwert eines neu eingegangenen Satzes glätten, wenn er nicht in eine der folgenden Kriterien fällt: - Entsprechend dem dazu gehörigen Maß der Übereinstimmung, die durch einen der Zusatzwertes des Satzes quantifiziert ist, mit der gesuchten Struktur handelt es sich um einen Aussetzer in der Datenreihe.
Entsprechend der zugehörigen Größenparameter oder Geometrieparameter handelt es sich um einen Aussetzer, wenn z. B. die Größe des aktuellen Objekts zu stark von der Größe des vorherigen Objekts abweicht. - Entsprechend eines Vergleichs des aktuellen Datenwertes mit Schwell werten, die basierend auf den vorhergehenden Datenwerten ermittelt wurden, handelt es sich um einen Ausreißer, wenn der aktuelle Datenwert (z. B. der aktuelle Positionswert) nicht zwischen den Schwcllwcrten liegt. Ein anschauliches Beispiel dafür ist, wenn z. B. die aktuelle Positionskoordinate (Datenwert des Satzes) eines Objektes zu stark von der zuvor vom selektiv adaptiven Datenprozessor ermittelten Positionskoordinate abweicht.
Ist eines dieser Kriterien erfüllt, wird weiterhin der vorherige Wert ausgegeben oder zumindest zur Glättung des aktuellen Werts herangezogen. Um eine möglichst geringe Verzögerung bei der Glättung zu erhalten, werden optional die aktuellen Werte stärker ge- wichtet als vergangene Werte. So kann bei Anwendung einer exponentiellen Glättung der aktuelle Wert anhand folgender Formel bestimmt werden:
Aktuell geglätteter Wert = aktueller Wert x Glättungskoeffizient + letzter geglätteter Wert x (1 - Glättungskoeffizient)
Der Glättungskoeffizient wird in definierten Grenzen dynamisch an den Trend der zu glättenden Daten angepasst, z.B. Verringerung bei eher konstanten Werteverläufen oder Erhöhung bei aufsteigenden oder abfallenden Werteverläufen. Wenn langfristig ein größerer Sprung bei den zu glättenden Geometrieparametern (Ellipsenparametern) vorkommt, pas- sen sich der Datenprozessor und somit auch der geglättete Werteverlauf an den neuen Wert an. Grundsätzlich kann der Selektiv-adaptive Datenprozessor 300 auch mittels Parameter, z.B. bei der Initialisierung kon iguriert werden, wobei über diese Parameter das Glättungs- verhalten, z. B. maximale Dauer eines Aussetzers oder maximaler Glättungsfaktor. festgelegt werden.
So kann der Selektiv-adaptive Datenprozessor 300 oder allgemein die Nachverarbeitungsvorrichtung 18 plausible, die Position und Geometrie eines zu erkennenden Musters beschreibende Werte mit hoher Genauigkeit ausgeben. Hierzu weist die Nachverarbeitungsvorrichtung eine Schnittstelle 18a auf, über die optional auch Steuerbefehle von extern empfangen werden können. Sollen mehrere Datenreihen geglättet werden, ist es sowohl denkbar, für jede Datenreihe einen separaten selektiv-adaptiven Datenprozessor zu benutzen oder den selektiv-adaptiven Datenprozessor so anzupassen, dass je Satz Datenwerte unterschiedlicher Datenreihen verarbeitete werden können.
Nachfolgend werden die oben anhand von einem konkreten Ausführangsbeispiel erläuterten Eigenschaften des selektiv-adaptiven Datenprozessor 300 allgemein beschrieben:
Der Datenprozessor 300 kann z. B. zwei oder mehr Eingänge sowie einen Ausgang auf- weisen. Einer der Eingänge (empfängt den Datenwert und) ist für die Datenreihe die verarbeitet werden soll. Der Ausgang ist eine geglättete Reihe basierend auf selektierten Daten. Zur Selektion werden die weiteren Eingänge (die Zusatzwerte zur genaueren Beurteilung des Datenwertes empfangen) herangezogen und/oder die Datenreihe selbst. Bei der Verarbeitung innerhalb des Datenprozessor 300 erfolgt eine Veränderung der Datenreihe, wobei zwischen der Behandlung von Ausreißern und der Behandlung von Aussetzern innerhalb der Datenreihe unterschieden wird.
Ausreißer: Bei der Selektion werden Ausreißer (innerhalb der zu verarbeitenden Datenreihe) aussortiert und durch andere (intern ermittelte) Werte ersetzt.
Aussetzer: Zur Beurteilung der Güte der zu verarbeitenden Datenreihe werden ein oder mehrere weitere Eingangssignale (Zusatzwerte) herangezogen. Die Beurteilung erfolgt anhand eines oder mehrerer Schwellwerte, wodurch die Daten in„hohe" und„geringe" Güte unterteilt werden. Daten geringer Güte werden als Aussetzer bewertet und durch an- dere (intern ermittelte) Werte ersetzt.
Im nächsten Schritt erfolgt beispielsweise eine Glättung der Datenreihe (z.B. exponentielle Glättung einer Zeitreihe). Zur Glättung wird die von Aussetzern und Ausreißern bereinigte Datenreihe herangezogen. Die Glättung kann durch einen variablen (adaptiven) Koeffi- zienten erfolgen. Der Glättungskoeffizient wird an die Differenz des Pegels der zu verarbeitenden Daten angepasst.
Entsprechend weiteren Ausführungsbeispielen ist es auch möglich, dass die Nachverarbeitungsvorrichtung 18 einen Bildanalysator, wie z.B. einen 3D-Bildanalysator 400 umfasst. Im Falle eines 3D-Bildanalysators 400 kann mit der Nachverarbeitungsvorrichtung 18 auch eine weitere Bilderfassungseinrichtung, bestehend aus Bildprozessor 10b und Kamera 14b, vorgesehen sein. Also bilden die zwei Kameras 14a und 14b sowie die Bildprozessoren 10a und 10b eine stereoskopische Kameraanordnung, wobei vorzugsweise der Bildprozessor 10b identisch mit dem Bildprozessor 10a ist.
Der 3D-Bildanalysator 400 ist entsprechend einem Basisausführungsbeispiel dazu ausgebildet, um zumindest einen ersten Satz von Bilddaten, der auf Basis eines ersten Bildes (vgl. Kamera 14a) bestimmt wird, und einen zweiten Satz von Bilddaten, der auf Basis
eines zweiten Bildes (vgl. Kamera 14b) bestimmt wird, zu empfangen, wobei das erste und das zweite Bild ein Muster aus unterschiedlichen Perspektiven abbilden, und um auf Basis dessen einen Blickwinkel bzw. einen 3 D-Blickvektor zu berechnen. Hierzu umfasst der 3D-Bildanalysator 400 eine Positionsbercchnungseinrichtung 404 und eine Ausrichtungs- berechnungseinrichtung 408. Die Positionsberechnungseinrichtung 404 ist dazu ausgebildet, um eine Position des Musters in einem dreidimensionalen Raum zu berechnen, basierend auf dem ersten Satz, dem zweiten Satz und einer geometrischen Beziehung zwischen den Perspektiven bzw. der ersten und der zweiten Kamera 14a und 14b. Der Ausrichtungsberechner 408 ist dazu ausgebildet, um einen 3D-Blickvektor, z.B. eine Blickrichtung, zu berechnen, gemäß dem das erkannte Muster in dem dreidimensionalen Raum ausgerichtet ist, wobei die Berechnung auf dem ersten Satz, dem zweiten Satz und der berechneten Position (vgl. Positionsberechner 404) basiert.
Andere Ausführungsbeispiele können auch mit den Bilddaten einer Kamera und einem weiteren Satz an Informationen arbeiten (z. B. relative oder absolute Positionen charakteristischer Punkte im Gesicht oder Auge), der zur Berechnung der Position des Musters (z. B. Pupillen- oder Irismittelpunkt) und zur Auswahl des tatsächlichen Blickrichtungsvektors dient. Hierzu kann beispielsweise ein sogenanntes 3D-Kamerasystemmodell hinzugezogen werden, das beispielsweise in einer Konfigurationsdatei alle Modellparameter, wie Lageparameter, optische Parameter (vgl. Kamera 14a und 14b) gespeichert hat.
Nachfolgend wird nun ausgehend von dem Beispiel der Pupillenerkennung die Gcsamt- funktional ität des 3D-Bildanalysators 400 im Detail beschrieben. Das in dem 3D- Bildanalysator 400 gespeicherte oder eingelesene Modell umfasst Daten hinsichtlich der Kameraeinheit, d.h. hinsichtlich des Kamerasensors (z.B. Pixelgröße, Sensorgröße und Auflösung) und verwendeter Objektive (z.B. Brennweite und Objektivverzeichnung), Daten bzw. Charakteristiken des zu erkennenden Objekts (z.B. Charakteristika eines Auges) und Daten hinsichtlich weitere relevanter Objekte (z.B. eines Displays im Falle der Nutzung des Systems 1000 als Eingabegerät).
Der D-Positionsberechner 404 berechnet die Augenposition bzw. den Pupillenmittelpunkt auf Basis der zwei oder auch mehreren Kamerabilder (vgl. 14a und 14b) durch Triangula- tion. Hierzu bekommt er 2D-Koordinaten eines Punktes in den zwei Kamerabildem (vgl. 14 a und 14b) über die Prozesskette aus Bildprozessoren 10a und 10b, Geom etri cum Wandler 202 und Selektiv- adaptiver Datenprozessor 300 zur Verfügung gestellt. Aus den über- gebenen 2D-Koordinaten werden mithilfe des 3 D - am cram o d e 11 s insbesondere unter Be-
rücksichtigung der optischen Parameter für beide Kameras 14a und 14b die Lichtstrahlen berechnet, die den 3 D-Punkt als 2 D- Punkt auf dem Sensor abgebildet haben. Der Punkt der zwei Geraden mit dem geringsten Abstand zueinander (im Idealfall der Schnittpunkt der Geraden) wird als Position des gesuchten 3 D- unktes angenommen. Diese 3D-Position wird zusammen mit einem Fehlermaß, das die Genauigkeit der übergebenen 2D- Koordinaten in der Verbindung mit den Modellparametem beschreibt, entweder über die Schnittstelle 18a als Ergebnis ausgegeben oder an den Blickrichtungsberechner 408 übergeben. Auf Basis der Position im 3D-Raum kann der Blickwinkelberechner 408 die Blickrichtung aus zwei ellipsenförmigen Projektionen der Pupille auf die Kamerasensoren ohne Kalibrierung und ohne Kenntnis über den Abstand zwischen den Augen und Kamerasystem bestimmen. Hierzu nutzt der Blickrichtungsberechner 408 neben den 3 D-Lageparameter der Bildsensoren die Ellipsenparameter, die mittels des Geometrieanalysators 202 ermittelt worden sind und die mittels des Positionsberechners 404 bestimmte Position. Aus der SD- Position des Pupillenmittelpunkts und der Lage der Bildsensoren werden durch Drehung der realen Kameraeinheiten virtuelle Kameraeinheiten berechnet, deren optische Achse durch den 3D-Pupillenmittelpunkt verläuft. Anschließend werden jeweils aus den Projektionen der Pupille auf den realen Sensoren Projektionen der Pupille auf die virtuellen Senso- ren berechnet, so dass zwei virtuelle Ellipsen entstehen. Aus den Parametern der virtuellen Ellipsen auf den beiden virtuellen Bildsensoren können je Bildsensor zwei Blickpunkte des Auges auf einer beliebigen zur jeweiligen virtuellen Sensorebene parallelen Ebene berechnet werden. Mit den vier Blickpunkten und den 3 D - P up i 11 en m i tt el pu nk t en lassen sich vier Blickrichtungsvektoren berechnen, also jeweils zwei Vektoren pro Kamera. Von diesen vier möglichen Blickrichtungsvektoren ist immer genau einer der einen Kamera mit einem der anderen Kamera annähernd identisch. Die beiden identischen Vektoren geben die gesuchte Blickrichtung des Auges (gaze direction) an, die dann vom Blickrichtungsberechner 404 über die Schnittstelle 18a ausgegeben wird. Ein besonderer Vorteil in dieser D-Berechnung liegt darin, dass eine berührungslose und vollständige kalibrierungsfreie Ermittlung der 3 D- Augenposition der 3 D-Blickrichtung und der Pupillengröße unabhängig von der Kenntnis über die Lage des Auges zu der Kamera möglich ist. Eine analytische Bestimmung der 3 D-Augenposition und SD- Blickrichtung unter Einbeziehung eines 3 D-Raummodells ermöglicht eine beliebige Kame- raanzahl (größer 1) und beliebige Kameraposition im 3 D-Raum. Die kurze Latenzzeit mit der gleichzeitig hohen Frame-Rate ermöglicht eine Echtzeitfähigkeit des beschriebenen Systems 1000. Ferner können, optionaler, aber nicht notwendiger Weise, auch die sogenannten Zeitregime fest sein, so dass die Zeitdifferenzen zwischen aufeinanderfolgenden
Ergebnissen konstant sind. Dies ist z. B. in sicherheitskritischen Anwendungen vorteilhaft bei denen die Ergebnisse innerhalb festgelegten Zeitabständen vorliegen müssen und kann z. B. durch den Einsatz von FPGAs zur Berechnung erreicht werden. Entsprechend einer alternativen Variante ist es auch möglich mit nur einer Kamera ebenfalls eine Blickrichtungsbestimmung durchzuführen. Dazu ist es einerseits erforderlich, den 3 D-Pupillenmittelpunkt basierend auf den Bilddaten einer Kamera und ggf. einem Satz zusätzlicher Informationen zu berechnen und andererseits muss aus den zwei möglichen Blickrichtungsvektoren, welche pro Kamera berechnet werden können der tatsächliche Blickrichtungsvektor ausgewählt werden, wie später anhand von Fig. 5b erläutert wird.
Zur Ermittlung des 3D-Pupillenmittelpunktes gibt es mehrere Möglichkeiten. Eine davon basiert auf der Auswertung von Relationen zwischen charakteristischen Punkten im ersten Kamerabild. Dabei wird ausgehend von dem Pupillenmittelpunkt im ersten Kamerabild unter Berücksichtigung des optischen Systems der Kamera, wie oben beschrieben, eine Gerade berechnet, die durch den 3 D-Pupillenmittelpunkt führt, wobei aber noch nicht bekannt ist, wo auf dieser Geraden sich der gesuchte Pupillenmittelpunkt befindet. Dazu wird der Abstand zwischen Kamera bzw. genauer Hauptpunkt 1 der Kamera (Hi in Fig. 8a) benötigt. Diese Information lässt sich schätzen, wenn mindestens zwei charakteristische Merkmale im ersten Kamerabild (z. B. die Pupillenmittelpunkte) ermittelte werden und deren Abstände zueinander als statistisch ermittelter Wert, z. B. über eine große Personengruppe, bekannt ist. Dann kann der Abstand zwischen Kamera und 3 D-Pupillenmittelpunkt geschätzt werden, indem der ermittelte Abstand (z. B. in Pixeln) zwischen den charakteristischen Merkmalen ins Verhältnis gesetzt wird zu dem als statistische Größe bekannten Abstand (z. B. in Pixeln) der Merkmale in einem bekannten Abstand zur Kamera.
Eine weitere Variante um den 3 D-Pupillenmittelpunktes zu erhalten ist, das dessen Position oder dessen Abstand zur Kamera dem 3 D-Bildanal ysator innerhalb des zweiten Satzes an Informationen geliefert wird (z. B. von einem vorgelagerten Modul zur 3D- Gesichtsdetektion, bei dem die Positionen charakteristischer Punkte des Gesichts oder der Augenpartie im 3 - Raum ermittelt werden).
Um den tatsächlichen Blickrichtungsvektor zu ermitteln, wurden in der bisherigen Beschreibung zum ..3 D- B i klanal ysator", welche das Verfahren zum kalibrationsfreien Eye- tracking umfasst, bisher mindestens 2 Kamerabilder aus unterschiedlichen Perspektiven vorausgesetzt. Bei der Berechnung der Blickrichtung gibt es eine Stelle, an der pro Kamerabild genau 2 mögliche Blickrichtungsvektoren ermittelt werden, wobei jeweils der zweite Vektor einer Spiegelung des ersten Vektors an der Verbindungslinie zwischen virtuellem Kamerasensormittelpunkt und 3 D-Pupillenmittelpunkt entspricht. Von den beiden Vekto-
ren, die sich aus dem anderen Kamerabild ergeben, stimmt genau ein Vektor nahezu mit einem aus dem ersten Kamerabild berechneten Vektor überein. Diese übereinstimmenden Vektoren geben die zu ermittelnde Blickrichtung an. Um das kalibrationsfreie Eyetraeking auch mit einer Kamera durchführen zu können, muss von den beiden möglichen Blickrichtungsvektoren, im Folgenden als„vi" und„v2" bezeichnet, die aus dem Kamerabild ermittelt werden, der tatsächliche Blickrichtungsvektor (im Folgenden als„vb" bezeichnet) ausgewählt werden. Dieser Vorgang wird beispielhaft anhand von Fig. 5b erläutert. Fig. 5b zeigt eine Abbildung des sichtbarer Teils des Augapfels (grün umrandet) mit der Pupille und den beiden ins Bild projizierten möglichen Blickrichtungen vi und v2.
Zur Auswahl der Blickrichtung„vb" gibt es mehrere Möglichkeiten, die einzeln oder auch in Kombination genutzt werden können, um den tatsächlichen Blickrichtungsvektor auszuwählen. Typischerweise erfolgt die Auswahl des korrekten 3D-Blickvektors aus zwei möglichen 3 D-Blickvektoren, wobei beispielsweise entsprechend einem Ausführungsbeispiel nur ein einziges Kamerabild (+ Zusatzinformationen) genutzt wird. Einige dieser Möglichkeiten (die Auflistung ist nicht abschließend) werden nachfolgend erläutert, wobei davon ausgegangen wird, dass vi und v2 (vgl. Fig. 5a) zum Zeitpunkt dieser Auswahl bereits ermittelt worden sind:
Entsprechend einer ersten Möglichkeit kann eine Auswertung basierend auf der Sklera (die weiße Lederhaut um die Iris) im Kamerabild erfolgen. Es werden 2 Strahlen (beginnen beim Pupillenmittelpunkt und sind unendlich lang) definiert, einer in Richtung von vi und einer in Richtung von v2. Die beiden Strahlen werden in das Kamerabild des Auges projiziert und verlaufen dort jeweils vom Pupillenmittelpunkt zum Bildrand. Der Strahl, der weniger zur Sklera gehörende Pixel überstreicht, gehört zum tatsächlichen Blickrichtungsvektor vb. Die Pixel der Sklera unterscheiden sich durch ihren Grauwert von denen der an sie grenzenden Iris und von denen der Augenlieder. Diese Methode stößt an ihre Grenzen, wenn das zum aufgenommenen Auge gehörende Gesicht zu weit von der Kamera abgewendet ist (also der Winkel zwischen optischer Achse der Kamer und dem senkrecht auf der Gesichtsebene stehenden Vektor zu groß wird). Entsprechend einer zweiten Möglichkeit kann eine Auswertung der Lage des Pupillenmittelpunktes innerhalb der Augenöffnung erfolgen. Die Lage des Pupillenmittelpunktes innerhalb des sichtbaren Teils des Augapfels bzw. innerhalb der Augenöffnung kann zur Auswahl des tatsächlichen Blickrichtungsvektors genutzt werden. Eine Möglichkeit dazu
ist, 2 Strahlen (beginnen beim Pupillenmittelpunkt und sind unendlich lang) zu definieren, einer in Richtung von vi und einer in Richtung von v2. Die beiden Strahlen werden in das Kamerabild des Auges projiziert und verlaufen dort jeweils vom Pupillenmittelpunkt zum Bildrand. Entlang beider Strahlen im Kamerabild wird jeweils die Distanz zwischen Pupil- lenmittelpunkt und dem Rand der Augenöffnung (in Fig.5b grün eingezeichnet) ermittelt. Der Strahl, für den sich die kürzere Distanz ergibt, gehört zum tatsächlichen Blickrichtungsvektor. Diese Methode stößt an ihre Grenzen, wenn das zum au fgenommenen Auge gehörende Gesicht zu weit von der Kamera abgewendet ist (also der Winkel zwischen optischer Achse der Kamer und dem senkrecht auf der Gesichtsebenc stehenden Vektor zu groß wird).
Entsprechend einer dritten Möglichkeit kann eine Auswertung der Lage des Pupillenmittelpunktes zu einem Referenzpupillenmittelpunkt erfolgen. Die Lage des im Kamerabild ermittelten Pupillenmittelpunktes innerhalb des sichtbaren Teils des Augapfels bzw. inner- halb der Augenöffnung kann zusammen mit einem Referenzpupillenmittelpunkt zur Auswahl des tatsächlichen Blickrichtungsvektors genutzt werden. Eine Möglichkeit dazu ist, 2 Strahlen (beginnen beim Pupillenmittelpunkt und sind unendlich lang) zu definieren, einer in Richtung von vi und einer in Richtung von v2. Die beiden Strahlen werden in das Kamerabild des Auges projiziert und verlaufen dort jeweils vom Pupillenmittelpunkt zum Bildrand. Der Referenzpupillenmittelpunkt innerhalb der Augenöffnung entspricht dem Pupillenmittelpunkt, in dem Moment in dem das Auge direkt in Richtung der zur Bildaufnahme eingesetzten Kamera schaut (genauer ausgedrückt in Richtung des ersten Hauptpunktes der Kamera). Derjenige in das Kamerabild projizierte Strahl, welcher im Bild den größeren Abstand zum Referenzpupillenmittelpunkt hat, gehört zum tatsächlichen Bliek- richtungsvektor. Zur Ermittlung des Referenzpupillenmittelpunktes gibt es mehrere Möglichkeiten, von denen einige im Folgenden beschrieben werden:
Möglichkeit 1 (spezieller Anwendungsfall): Der Referenzpupillenmittelpunkt ergibt sich aus dem ermittelten Pupillenmittelpunkt, in dem Fall, in dem das Auge direkt in Richtung des Kamerasensormittelpunktes schaut. Dies ist gegeben, wenn die Pupillenkontur auf der virtuellen Sensorebene (siehe Beschreibung zur Blickrichtungsberechnung) einen Kreis beschreibt.
Möglichkeit 2 (allgemeiner Anwendungsfall): Als grobe Schätzung der Position des Refe- renzpupillenmittelpunktes kann der Schwerpunkt der Fläche der Augenöffnung genutzt werden. Diese Methode der Schätzung stößt an ihre Grenzen, wenn die Ebene, in der das Gesicht liegt, nicht parallel zur Sensorebene der Kamera liegt. Diese Einschränkung kann kompensiert werden, wenn die Neigung der Gesichtsebene zur Kamerasensorebene be-
kannt ist (z. B. durch eine vorher ausgeführte Bestimmung der Kopfposition und - ausrichtung) und diese zur Korrektur der Position des geschätzten Referenzpupillenmittelpunktes genutzt wird. Diese Methode erfordert außerdem, dass der Abstand zwischen SD- Pupillenmittelpunkt und optischer Achse des virtuellen Sensors sehr viel geringer ist, als der Abstand zwischen 3 D-Pupillenmittelpunkt und Kamera.
Möglichkeit 3 (allgemeiner Anwendungsfall): Wenn die 3D-Position des Augenmittelpunktes zur Verfügung steht, kann eine Gerade /.wischen 3 D- Augenmittelpunkt und virtuellem Sensormittclpunkt bestimmt werden und der Schnittpunkt dieser Geraden mit der Oberfläche des Augapfels. Der Referenzpupillenmittelpunkt ergibt sich aus der ins Kamerabild umgerechneten Position dieses Schnittpunktes.
Entsprechend weiteren Ausführungsbeispielen kann im Hinblick auf den Einsatz des Hough-Prozessors anstelle des FPGAs 10a und 10b ein ASIC (anwendungsspezifischer Chip) eingesetzt werden, der sich besonders bei hohen Stückzahlen mit sehr geringen Stückkosten realisieren lässt. In Summe lässt sich jedoch feststellen, dass unabhängig von Implementierung des Hough-Prozessors 10a und 10b ein geringer Energieverbrauch durch die sehr effiziente Verarbeitung und den damit verbundenen geringen Systemtaktbedarf erzielt werden kann.
Trotz dieser Merkmale bleibt der hier eingesetzte Hough-Prozessor bzw. das auf dem Hough-Prozessor ausgeführte Verfahren sehr robust und störunanfällig. Es sei an dieser Stelle angemerkt, dass der in Fig. 2a erläuterte Hough-Prozessor 100 in unterschiedlichen Kombinationen mit unterschiedlich insbesondere in Hinblick auf Fig. 5 vorgestellten Merkmalen eingesetzt werden kann.
Anwendungen des Hough-Prozessors gemäß Fig. 2a sind z.B. Sekundenschlafwarner bzw. Müdigkeitsdetektoren als Fahrassistenzsysteme im automobilen Bereich (bzw. allgemein bei sicherheitsrelevanten Menschmaschineschnittstellen). Hierbei kann durch Auswertung der Augen (z.B. Verdeckung der Pupille als Maß für den Öffnungsgrad) und unter Berücksichtigung der Blickpunkte und des Fokus ein bestimmtes Müdigkeitsmuster detektiert werden. Weiter kann der Hough-Prozessor bei Eingabegeräten bzw. Eingabeschnittstellen für technische Geräte zum Einsatz kommen; hier werden dann Augenposition und Blickrichtung als Inputparameter genutzt. Konkrete Anwendungen wären hierbei die Analyse oder Unterstützung des Nutzers beim Anschauen von Bildschirminhalten, z.B. beim Hervorheben von bestimmten fokussierten Bereichen. Derartige Anwendungen sind im Bereich des assisted living, bei Computerspielen, bei Optimierung von 3 D- Visualisierung
durch Einbeziehung der Blickrichtung, bei Markt- und Medienforschung oder bei ophthalmologischen Diagnostiken und Therapien besonders interessant.
Wie oben bereits angedeutet, ist die Implementierung des oben vorgestellten Verfahrens plattformunabhängig, so dass das oben vorgestellte Verfahren auch auf anderen Hardwareplattformen, wie z.B. einem PC ausgeführt werden kann. Also bezieht sich ein weiteres Ausführungsbeispiel auf ein Verfahren für die H o ugh- Vcrarbci tung mit den Schritten Verarbeiten einer Mehrzahl von Samples, die jeweils ein Bild aufweisen, unter Verwendung eines Pre-Prozessors, wobei das Bild des jeweiligen Samples gedreht und/oder gespiegelt wird, so dass eine Mehrzahl von Versionen des Bildes des jeweiligen Samples für jedes Sample ausgegeben wird und des Erfassens vorbestimmten Musters in der Mehrzahl von Sampeln auf Basis der Mehrzahl von Versionen unter Verwendung einer Hough- Transformationseinrichtung, die einen Verzögerungsfilter mit einer Filtercharakteristik aufweist, dessen Filtercharakteristik abhängig von dem ausgewählten vorbestimmten Mus- tersatz eingestellt wird.
Auch wenn der obigen Ausführungen im Zusammenhang mit der anpassbaren Charakteristik immer von einer Filtercharakteristik gesprochen wurde, sei an dieser Stelle angemerkt, dass entsprechend weiteren Ausführungsbeispielen die anpassbare Charakteristik sich auch auf die Nachverarbeitungsscharakteristik (Biegungs- oder Verzerrungscharakteristik) bei einer schnellen 2D Korrelation beziehen kann. Diese Implementierung wird anhand von Fig. 4a bis Fig. 4d erläutert.
Fig. 4a zeigt eine Verarbeitungskette 1000 einer schnellen 2D Korrelation. Die Vcrarbci - tungskette der 2D Korrelation umfasst zumindest die Funktionsblöcke 1 105 zur 2D- Biegung und 1 1 10 zur Verschmelzung. Das Vorgehen bei der 2D-Biegung ist in Fig. 4b illustriert. Fig. 4b ziert exemplarische Zusammenstellung an Templates. Wie auf Basis dieser Verarbeitungskette 1000 ein Hough-Feature extrahiert werden kann, wird anhand von Fig. 4c zusammen mit Fig. 4d deutlich. Fig. 4c zeigt die pixelweise Korrelation mit n Templates veranschaulicht (in diesem Falle beispielsweise für Geraden unterschiedlicher Steigung) zur Erkennung der Ellipse 1 1 15, während Fig. 4d das Ergebnis der pixelweisen Korrelation zeigt, wobei typischerweise über die n Ergebnisbilder noch eine Maximumsuche erfolgt. Jedes Ergebnisbild enthält pro Pixel ein Houghfeature. Nachfolgend wird diese I lough- Verarbeitung im Gesamtkontext erläutert.
Im Gegensatz zur Umsetzung mit einem Verzögerungsfilter mit anpassbarer Charakteristik (Implementierung optimiert für parallele FPGA Strukturen) würde bei der hier dargestellten Hough- erarbeitung, welche insbesondere für eine PC -basierte Umsetzung prädesti-
nicrt ist, ein Teil der Verarbeitung durch eine andere Vorgehensweise ausgetauscht werden.
Bisher war es so, dass quasi jede Spalte des Verzögerungsfilters für eine gesuchte Struktur steht (z. B. Geradenabschnitte unterschiedlicher Steigung). Beim durchlaufen des Filters ist die Spaltennummer mit dem höchsten Summenwert maßgeblich. Dabei steht die Spaltennummer für eine Ausprägung der gesuchten Struktur und der Summen wert gibt ein Maß für die Ubereinstimmung mit der gesuchten Struktur an. Bei der PC-basierten Umsetzung wird der Verzögerungsfilter durch schnelle 2D Korrelation ersetzt. Der bisherige Verzögerungsfilter ist je nach Größe in der Lage n Ausprägungen eines bestimmten Musters abzubilden. Diese n Ausprägungen werden als Template im Speicher hinterlegt. Anschließend wird das vorverarbeitete Bild (z. B. binäres Kantenbild oder Gradientenbild) pixelweise durchlaufen. An jeder Pixelposition werden jeweils alle abgelegten Templates mit dem darunterliegenden Bildinhalt (entsprechend einer Nachverarbeitungscharakteristik) abgeglichen (es wird sozusagen die Umgebung der Pixelposition (in Größe des Templates) ausgewertet). Dieses Vorgehen wird in der digitalen Bildverarbeitung auch als Korrelation bezeichnet. Man erhält also für jedes Template einen Korrelationswert - also ein Maß für die Ubereinstimmung - mit dem darunterliegenden Bildinhalt. Diese entsprechen sozusagen den Spaltensummen aus dem bisherigen Verzögerungsfilter. Nun entscheidet man sich (pro Pixel) für das Template mit dem höchsten Korrelationswert und merkt sich dessen Templatenummer (die Templatenummer beschreibt die Ausprägung der gesuchten Struktur, z. B. Steigung des Geradenabschnitts). Man erhält also pro Pixel einen Korrelationswert und eine Templatenummer. Dadurch lässt sich ein Houghfeature, wie es bereits erläutert, vollständig beschreiben.
Es sei noch angemerkt, dass die Korrelation der einzelnen Templates mit dem Bildinhalt sowohl im Orts- als auch im Frequenzbereich durchgeführt werden kann. Das heißt, dass das Eingangsbild zunächst jeweils mit allen n Templates korreliert wird. Man erhält n Ergebnisbilder. Legt man diese Ergebnisbilder übereinander (wie einen Quader) würde man pro Pixel nach dem höchsten Korrelationswert suchen (über alle Ebenen). Dabei stehen dann einzelne Ebenen innerhalb des Quaders für einzelne Templates. Als Ergebnis erhält man wieder ein einzelnes Bild, das dann pro Pixel ein Korrelationsmaß und eine Templa- tenummer enthält - also pro Pixel ein Houghfeature.
Auch wenn obige Aspekte immer im Zusammenhang mit der„Pupillenerkennung" erläutert wurden, sind die oben beschriebenen Aspekte auch für weitere Anwendungen nutzbar.
Hier ist beispielsweise die Anwendungen„Sekundenschlafwarnung" zu nennen, auf die nachfolgend näher eingegangen wird.
Der Sekundenschlafwarner ist ein System, dass zumindest aus einer Bilderfassungseinrich- tung, einer Beleuchtungseinheit, einer Verarbeitungseinheit und einer akustischen und/oder optischen Signalisierungseinrichtung besteht. Durch Auswertung eines vom Nutzer aufgezeichneten Bildes ist das Gerät in der Lage eintretenden Sekundenschlaf oder Müdigkeit oder Abgclcnktheit des Nutzers zu erkennen und den Nutzer zu warnen. Das System kann z. B. in der Form ausgestaltet sein, dass man einen CMOS Bildsensor nutzt und die Szene im Infraroten Bereich ausleuchtet. Das hat den Vorteil, dass das Gerät unabhängig vom Umgebungslicht arbeitet und insbesondere den Nutzer nicht blendet. Als Verarbeitungseinheit wird ein eingebettetes Prozessorsystem genutzt, dass einen Softwarecode auf einem darunterliegenden Betriebssystem ausführt. Die Signalisierungseinrichtung kann z. B. aus einem Multifrequenzbuzzer und einer RGB-LED bestehen.
Die Auswertung des aufgezeichneten Bildes kann in der Form erfolgen, dass in einer ersten Verarbeitungsstufe eine Gesichts- und eine Augendetektion und Augenanalyse mit einem Klassifikator durchgeführt werden. Diese Verarbeitungsstufe liefert erste Anhaltspunkte für die Ausrichtung des Gesichtes, die Augenpositionen und den Lidschlussgrad.
Aufbauend darauf kann im darauffolgenden Schritt eine modellbasierte Augen feinanalyse durchgeführt werden. Ein dazu genutztes Augenmodell kann z. B. bestehen aus: einer Pupillen- und/oder Irisposition, einer Pupillen- und/oder Irisgröße, einer Beschreibung der Augenlider und der Augeneckpunkte. Dabei ist es ausreichend, wenn zu jedem Zeitpunkt einige dieser Bestandteile gefunden und ausgewertet werden. Die einzelnen Bestandteile können auch über mehrere Bilder hinweg getraekt werden, sodass sie nicht in jedem Bild vollständig neu gesucht werden müssen. Hough-Features können genutzt werden um die Gesichtsdetektion oder die Augendetektion oder die Augenanalyse oder die Augen feinanal ysc durchzuführen. Ein 2D-Bildanalysator kann zur Gesichtsdetektion oder zur Augendetektion oder zur Augenanalyse genutzt werden. Zur Glättung der bei der Gesichtsdetektion oder Augendetektion oder Augenanalyse oder Augenfeinanalyse ermittelten Ergebniswerte oder Zwischenergebnisse bzw. Werte- Verläufe kann der beschriebene Adapti v-selekti ve Datenprozessor genutzt werden.
Eine zeitliche Auswertung des Lidschlussgrades und/oder der Ergebnisse der Augenfeinanalyse kann zur Ermittlung des Sekundenschlafs oder der Müdigkeit oder Abgelenkt-
heit des Nutzers genutzt werden. Zusätzlich kann auch die im Zusammenhang mit dem 3D- Bildanalysator beschriebene kalibrationsfreie Blickrichtungsbestimmung genutzt werden um bessere Ergebnisse bei der Ermittlung des Sekundenschlafs oder der Müdigkeit oder Abgelenktheit des Nutzers zu erhalten. Zur Stabilisierung dieser Ergebnisse kann außer- dem der selektiv- adaptive Datenprozessor genutzt werden.
Entsprechend einem Ausführungsbeispiel kann der Hough-Prozessor in der Bildeingangsstufe eine Einrichtung zur Kamerasteuerung umfassen. Entsprechend einem Ausführungsbeispiel kann ausgehend von einer bestimmten Blickrichtung ein sogenannter Blickpunkt (Schnittpunkt der Blickgeraden mit einer weiteren Ebene), z.B. zur Steuerung eines PCs, bestimmt werden.
Wie oben bereits angedeutet, ist die Implementierung des oben vorgestellten Verfahrens plattformunabhängig, so dass das oben vorgestellte Verfahren auch auf anderen Hardwareplattformen, wie z.B. einem PC ausgeführt werden kann
Obwohl manche Aspekte im Zusammenhang mit einer Vorrichtung beschrieben wurden, versteht es sich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfah- rens darstellen, so dass ein Block oder ein Bauelement einer Vorrichtung auch als ein entsprechender Verfahrensschritt oder ein Merkmal eines Verfahrensschritts zu verstehen ist. Analog dazu stellen Aspekte, die im Zusammenhang mit einem oder als ein Verfahrensschritt beschrieben wurden, auch eine Beschreibung eines entsprechenden Blocks oder Details oder Merkmals einer entsprechenden Vorrichtung dar. Einige oder alle Verfahrens- schritte können durch einen Apparat (unter Verwendung eines Hardwareapparats), wie z.B. eines Mikroprozessors, eines programmierbaren Computer oder einer elektronischen Schaltung ausgeführt werden. Bei einigen Ausführungsbeispielen können einige oder mehrere der wichtigen Verfahrensschritte durch einen solchen Apparat ausgeführt werden. Je nach bestimmten Implementierungsanforderungen können Ausführungsbeispiele der Erfindung in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Floppy-Disk, einer DVD, einer Blu-ray Di sc, einer CD, eines ROM, eines PROM, eines EPROM, eines KEP ROM oder eines FLASH-Speichers, einer Festplatte oder eines anderen magnetischen oder optischen Speichers durchgerührt werden, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem derart zusammenwirken können oder zusammenwirken, dass das jeweilige Verfahren durchgeführt wird. Deshalb kann das digitale Speichermedium computerlesbar sein.
Manche Ausführungsbeispiele gemäß der Erfindung umfassen also einen Datenträger, der elektronisch lesbare Steuersignale aufweist, die in der Lage sind, mit einem programmierbaren Computersystem derart zusammenzuwirken, dass eines der hierin beschriebenen Verfahren durchgeführt wird.
Allgemein können Ausführungsbeispiele der vorliegenden Erfindung als Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode dahin gehend wirksam ist, eines der Verfahren durchzuführen, wenn das Computerpro- grammprodukt auf einem Computer abläuft.
Der Programmcode kann beispielsweise auch auf einem maschinenlesbaren Träger gespeichert sein. Andere Ausführungsbeispiele umfassen das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren, wobei das Computerprogramm auf einem maschinenlesbaren Träger gespeichert ist.
Mit anderen Worten ist ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens somit ein Computerprogramm, das einen Programmcode zum Durchführen eines der hierin beschriebenen Verfahren aufweist, wenn das Computerprogramm auf einem Computer abläuft.
Ein weiteres Ausführungsbeispiel der erfindungsgemäßen Verfahren ist somit ein Daten - träger (oder ein digitales Speichermedium oder ein computerlesbares Medium), auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren aufgezeichnet ist.
Ein weiteres Ausführungsbeispiel des erfindungsgemäßen Verfahrens ist somit ein Daten- ström oder eine Sequenz von Signalen, der bzw. die das Computerprogramrn zum Durchführen eines der hierin beschriebenen Verfahren darstellt bzw. darstellen. Der Datenstrom oder die Sequenz von Signalen kann bzw. können beispielsweise dahin gehend konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, transferiert zu werden.
Ein weiteres Ausführungsbeispiel umfasst eine Verarbeitungseinrichtung, beispielsweise einen Computer oder ein programmierbares Logikbauelement, die dahin gehend konfiguriert oder angepasst ist, eines der hierin beschriebenen Verfahren durchzuführen.
Ein weiteres Ausführungsbeispiel umfasst einen Computer, auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren installiert ist. Ein weiteres Ausführungsbeispiel gemäß der Erfindung umfasst eine Vorrichtung oder ein System, die bzw. das ausgelegt ist, um ein C om p u t erp ro gr am m zur Durchführung zumindest eines der hierin beschriebenen Verfahren zu einem Empfänger zu übertragen. Die Übertragung kann beispielsweise elektronisch oder optisch erfolgen. Der Empfänger kann beispielsweise ein Computer, ein Mobilgerät, ein Speichergerät oder eine ähnliche Vor- richtung sein. Die Vorrichtung oder das System kann beispielsweise einen Datei-Server zur Übertragung des Computerprogramms zu dem Empfänger umfassen.
Bei manchen Ausführungsbeispielen kann ein programmierbares Logikbauelement (beispielsweise ein feldprogrammierbares Gatterarray, ein FPGA) dazu verwendet werden, manche oder alle Funktionalitäten der hierin beschriebenen Verfahren durchzuführen. Bei manchen Ausführungsbeispielen kann ein feldprogrammierbares Gatterarray mit einem Mikroprozessor zusammenwirken, um eines der hierin beschriebenen Verfahren durchzuführen. Allgemein werden die Verfahren bei einigen Ausführangsbeispielen seitens einer beliebigen Hardwarevorrichtung durchgeführt. Diese kann eine universell einsetzbare Hardware wie ein Computerprozessor (CPU) sein oder für das Verfahren spezifische Hardware, wie beispielsweise ein ASIC.
Nachfolgend werden die oben beschriebenen Erfindungen bzw. die Aspekte der Erfindungen aus zwei weiteren Blickwinkeln mit anderen Worten beschrieben:
Integrated Eyetracker
Der„Integrated Eyetracker" umfasst eine Zusammenstellung an FPGA-optimierten Algorithmen, die dazu geeignet sind ( Ellipsen-)Merkmale (Hough-Features) mittels einer paral- lelen Hough-Transformation aus einem Kamera-Livebild zu extrahieren und daraus eine Blickrichtung zu berechnen. Durch Auswertung der extrahierten Merkmale kann die Pupillenellipse bestimmt werden. Bei Einsatz mehrerer Kameras mit zueinander bekannter Lage und Ausrichtung können die 3D Position des Pupillenmittelpunktes sowie die 3D Blickrichtung und der Pupillendurchmesser ermittelt werden. Zur Berechnung werden die Lage und Form der Ellipsen in den Kamerabildern herangezogen. Es ist keine Kalibration des Systems für den jeweiligen Nutzer erforderlich und keine Kenntnis über den Abstand zwischen den Kameras und dem analysierten Auge.
Die genutzten Bildverarbeitungsalgorithmen sind insbesondere dadurch gekennzeichnet, dass Sie für die Verarbeitung auf einem FPGA (field programmable gate array) optimiert sind. Die Algorithmen ermöglichen eine sehr schnelle Bildverarbeitung mit konstanter
Bildwiederholrate, minimalen Latenzzeiten und minimalem Ressourcenverbrauch im FPGA. Damit sind diese Module prädestiniert für zeit-/latenz -/sicherheitskritische Anwendungen (z. B. Fahrerassistenzsysteme), medizinische Diagnosesysteme (z. B. Perimeter) sowie Anwendungen wie Human machine interfaces (z. B. für mobile devices), die ein geringes Bauvolumen erfordern.
Problemstellung
Robuste Detcktion von 3 D-Augenpositionen und 3 D-Blickrichtungen im 3 D-Raum in mehreren (Live-) Kamerabildern sowie Detcktion der Pupillengrößen
- Sehr kurze Reaktionszeit (bzw. Verarbeitungszeit)
Kleine Bauform
autonome Funktionsweise (Unabhängigkeit vom PC) durch integrierte Lösung
Stand der Technik
Eyetracker- S ysteme
o Steffen Markert: Blickrichtungserfassung des menschlichen Auges in Echtzeit (Diplomarbeit und Patent DE 10 2004 046 617 AI)
o Andrew T. Duchowski: Eye Tracking Methodology: Theory and Practice Parallele-Hough Transformation
o Johannes Katzmann: Eine Echtzeit- Implementierung für die Ellipsen-
Hough-Transformation (Diplomarbeit und Patent DE 10 2005 047 160 B4) o Christian Holland-Neil: Implementierung eines Pupillen-
Detektionsalgorithmus basierend auf der Hough-Transformation für Kreise (Diplomarbeit und Patent DE 10 2005 047 160 B4)
Nachteile des aktuellen Standes der Technik
Eyetracker-Systeme
o Nachteile:
■ Eyetracking-Systeme erfordern im Allgemeinen eine (aufwändige) Kalibrierung vor der Nutzung
■ Das System nach Markert (Patent DE 10 2004 046 61 7 A I ) ist kalib- rationsfrei. funktioniert aber nur unter ganz bestimmten Voraussetzungen:
1. Abstand zwischen Kameras und Pupillenmittelpunkt müssen bekannt und im System hinterlegt sein
2. Das Verfahren funktioniert nur für den Fall, dass der 3D Pupillenmittelpunkt in den optischen Achsen der Kameras liegt
■ Die gesamte Verarbeitung ist für PC Hardware optimiert und somit auch deren Nachteilen unterworfen (kein festes Zeitregime bei der Verarbeitung möglich)
■ leistungsstarke Systeme werden benötigt, da die Algorithmen einen sehr hohen Ressourcenverbrauch aufweisen
■ lange Verarbeitungsdauer und damit lange Verzögerungszeit bis Ergebnis vorliegt (z. T. abhängig von der auszuwertenden Bildgröße)
Parallele-I lough Transformation
o Nachteile:
■ Es können nur binäre Kantenbilder transformiert werden
■ Transformation liefert nur ein binäres Ergebnis bezogen auf eine Biklkoordinate (Position der Struktur wurde gefunden, aber nicht: Trefferwahrscheinlichkeit und weitere Strukturmerkmalc)
■ Keine flexible Anpassung des Transformationskernes während der Laufzeit und damit nur unzureichende Eignung für dynamische Bildinhalte (z.B. kleine und große Pupillen)
■ Keine Rekonfiguration des Transformationskernes auf andere Strukturen während der Laufzeit möglich und damit begrenzte Eignung für Objekt erkennung
Umsetzung
Das Gesamtsystem ermittelt aus zwei oder mehr Kamerabildern in denen dasselbe Auge abgebildet ist jeweils eine Liste von mehrdimensionalen Hough-Merkmalen und berechnet jeweils auf deren Basis die Lage und Form der Pupillenellipse. Aus den Parametern dieser beiden Ellipsen sowie allein aus der Lage und Ausrichtung der Kameras zueinander können die 3D Position des Pupillenmittelpunktes sowie die 3D Blickrichtung und der Pupillendurchmesser vollständig kalibrationsfrei ermittelt werden. Als Hardwareplattform wir eine Kombination aus mindestens zwei Bildsensoren, FPGA und/oder nachgeschaltetem Mikroprozessorsystem (ohne dass ein PC zwingend benötigt wird).
„Hough preprocessing",„Parallel hough transform",„Hough feature extractor",„Hough feature to ellipse Converter"...Coresize control", ..Temporal smart smoothing filter",„3D eamera System model", ..3D position calculation" und„3D gaze direction calculation" betreffen einzelne Funktionsmodule des Integrated Eyetrackers. Sie ordnen sich in die Bild- verarbeitungskette des Integrated Eyetrackers wie fol t ein:
Fig. 6 zeigt ein Blockschaltbild der einzelnen Funktionsmodule im Integrated Eyetracker.
Das Blockschaltbild zeigt die einzelnen Verarbeitungsstufen des Integrated Eyetrackers. Im Folgenden wird eine detaillierte Beschreibung der Module gegeben.
• „Hough preprocessing"
o Funktion
■ Aufbereitung eines Videodatenstromes für das Modul„Parallel Hough Transform"'. insbesondere durch Bildrotation und Up- sampling des zu transformierenden Bildes je nach Parallelisierungs- grad des Moduls„Parallel Hough Transform" o Input
■ Binäres Kantenbild oder Gradientenbild
o Output
8 Je nach Paral 1 el isierungsgrad des nachfolgenden Moduls ein oder mehrere Videodatenströme mit aufbereiteten Pixeldaten aus dem In- put
o Detaillierte Beschreibung
■ Prinzip bedingt kann die parallele Hough-Transformation aus vier um jeweils 90° versetzten Hauptrichtungcn auf den Bildinhalt angewendet werden
■ Dazu erfolgt im Preprocessing eine Bildrotation um 90°
■ Die beiden verbleibenden Richtungen werden dadurch abgedeckt, dass jeweils das rotierte und nicht rotierte Bild horizontal gespiegelt werden (durch umgekehrtes Auslesen der im Speicher abgelegten Bildmatrix)
■ Je nach Parallelisierungsgrad des Moduls ergeben sich die folgenden drei Konstellationen für den Output:
• 100% Parallelisierung: simultane Ausgabe von vier Videodatenströmen: um 90° rotiert, nicht rotiert sowie jeweils gespiegelt
» 50% Parallelisierung: Ausgabe von zwei Videodatenströmen: um 90° rotiert und nicht rotiert, die Ausgabe der jeweils gespiegelten Varianten erfolgt sequentiell
• 25% Parallelisierung: Ausgabe eines Videodatenstromes: um 90° rotiert und nicht rotiert und jeweils deren gespiegelte Varianten werden sequentiell ausgegeben rallel hough transform"
o Funktion
■ Parallele Erkennung einfacher Muster (Geraden mit unterschiedlichen Größen und Anstiegen und Krümmungen mit verschiedenen Radien und Orientierungen) und deren Auftrittswahrscheinlichkeit in einem binären Kanten- oder Gradientenbild
o Input
■ Für die parallele Hough Transformation aufbereitetes Kanten bzw.
Gradientenbild (Output des„Hough preprocessing" Moduls) o Output
■ Mehrdimensionaler Houghraum, der alle relevanten Parameter der gesuchten Struktur enthält
o Detaillierte Beschreibung
■ Verarbeitung des Input durch ein komplexes delaybasiertes lokales Filter, das eine definierte„Durchlaufrichtung" für Pixeldaten hat und durch folgende Eigenschaften geprägt ist:
• Filterkern mit variabler Größe bestehend aus Delayelernen- ten
• Zur adaptiven Anpassung des Filters an die gesuchten Muster können Delayelemente während der Laufzeit zu- und abgeschaltet werden
• Jede Spalte des Filters steht für eine bestimmte Ausprägung der gesuchten Struktur (Krümmung oder Geradenanstieg)
• Summenbildung über die Filterspalten liefert Auftrittswahr- scheinlichkeilen für die Ausprägung der Struktur, die durch die jeweilige Spalte repräsentiert wird
• Beim Durchlaufen des Filters wird immer die Spalte mit der größten Auftrittswahrscheinlichkeit für eine Ausprägung des gesuchten Musters aus dem Filter herausgereicht
B Für jedes Bildpixel liefert das Filter einen Punkt im Houghraum der die folgenden Informationen enthält:
• Art des Musters (z.B. Gerade oder Halbkreis)
• Auftrittswahrscheinlichkeit für das Muster
• Ausprägung der Struktur (Stärke der Krümmung bzw. bei Geraden: Anstieg und Länge)
• Lage bzw. Orientierung der Struktur im Bild
■ Als Transformationsergebnis entsteht ein mehrdimensionales Bild, das im folgenden als Houghraum bezeichnet wird
„Houghfeature extractor"
o Funktion
■ Extraktion von Features aus dem Houghraum, die relevante Informationen für die Mustererkennung enthalten
o Input
■ Mehrdimensionaler Houghraum (Output des ..Parallel hough trans- form" Moduls)
o Output
■ Liste von Hough-Features die relevante Informationen für die Mus- tererkennung enthalten
o Detaillierte Beschreibung
■ Glättung der Hough-Feature-Räume (Räumliche Korrektur mittels lokaler Filterung)
■ „Ausdünnen" des Houghraumes (Unterdrückung nicht relevanter Informationen für die Mustererkennung) durch eine abgewandelte „non-maximum-suppression":
• Ausblenden von für die Weiterverarbeitung nicht relevanten Punkten („Nicht-Maxima" im Hough- Wahrscheinlichkeitsraum) unter Berücksichtigung der Art des Musters und der Ausprägung der Struktur
• Weitere Ausdünnung der Houghraumpunkte mit Hilfe geeigneter Schwellen:
o Rauschunterdrückung durch Schwellwert im Hough-
Wahrscheinlichkeitsraum
o Angabe eines Intervalls für minimal und maximal zulässige Ausprägung der Struktur (z.B. minimale/maximale Krümmung bei gebogenen Strukturen oder kleinster/größter Anstieg bei Geraden)
Analytische Rücktransformation der Parameter aller verbleibenden Punkte in den Originalbildbereich ergibt folgende Hough-Features:
• Gebogene Strukturen mit den Parametern:
o Lage (x- und y-Bildkoordinate)
o Auftrittswahrscheinlichkeit des Hough-Features o Radius des Bogens
o Winkel, der angibt, in welche Richtung der Bogen geöffnet ist
• Geraden mit den Parametern:
o Lage (x- und y-Bildkoordinate)
o Auftrittswahrscheinlichkeit des Hough-Features o Winkel, der die Steigung der Geraden angibt o Länge des repräsentierten Geradenabschnittes
„Hough feature to ellipse Converter"
o Funktion
■ Auswahl der 3 bis 4 Hough-Features (Krümmungen), die im Kamerabild am wahrscheinlichsten den Pupillenrand (Ellipse) beschreiben, und Verrechnung zu einer Ellipse
o Input
■ Liste aller in einem Kamerabild detektierten Hough-Features
(Krümmungen)
o Output
■ Parameter der Ellipse, die am wahrscheinlichsten die Pupille repräsentiert
o Detaillierte Beschreibung
■ Aus der Liste aller Hough-Features (Krümmungen) werden Kombinationen aus 3 bis 4 Hough-Features gebildet, die auf Grund ihrer Parameter die horizontalen und vertikalen Extrempunkte eine Ellipse beschreiben könnten
■ Dabei fließen folgende Kriterien in die Auswahl der Hough-Features ein:
• Scores (Wahrscheinlichkeiten) der Hough-Features
• Krümmung der Hough-Features
• Lage und Orientierung der Hough-Features zueinander Die ausgewählten Hough-Feature Kombinationen werden sortiert:
• Primär nach der Anzahl der enthaltenen Hough-Features
• Sekundär nach der kombinierten Wahrscheinlichkeit der enthaltenen Hough-Features
Nach dem Sortieren wird die an erster Stelle stehende Hough- Feature Kombination ausgewählt und daraus die Ellipse gefittet, welche am wahrscheinlichsten die Pupille im Kamerabild repräsentiert
,Coresize control"
o Funktion
■ Dynamische Anpassung des Filterkernes (Hough-Core) der Parallelen Hough-Transformation an die aktuelle Ellipsengröße o Input
■ Zuletzt genutzte Hough-Core Größe
■ Parameter der Ellipse, welche die Pupille im entsprechenden Kamerabild repräsentiert
o Output
■ Aktualisierte Hough-Core Größe
o Detaillierte Beschreibung
■ In Abhängigkeit der Größe (Länge der Halbachsen) der vom „Hough feature to ellipse Converter" berechneten Ellipse, wird die Hough-Core Größe in definierten Grenzen nachgeführt um die Genauigkeit der Hough-Transformationsergebnisse bei der Detektion der Ellipsenextrempunkte zu erhöhen
.Temporal smart smoothing filier"
o Funktion
■ Adaptive zeitliche Glättung einer Datenreihe (z. B. einer ermittelten Ellipsenmittelpunktkoordinate) nach dem Prinzip der exponentiellen Glättung, wobei Aussetzer oder extreme Ausreißer in der zu glättenden Datenreihe NICHT zu Schwankungen der geglätteten Daten führen
o Input
■ Zu jedem Aufrufzeitpunkt des Moduls jeweils ein Wert der Datenreihe und die dazugehörigen Gütekriterien (z. B. Auftrittswahrscheinlichkeit einer gelitteten Ellipse)
o Output
■ Geglätteter Datenwert (z. B. Ellipsenmittelpunktkoordinate) o Detaillierte Beschreibung
■ Über einen Satz von Filterparametern kann beim Initialisieren des Filters dessen Verhalten festgelegt werden
■ Der aktuelle Input-Wert wird für die Glättung verwendet, wenn er nicht in eine der folgenden Kategorien fällt:
· Entsprechend der dazugehörigen Auftrittswahrscheinlichkeit handelt es sich um einen Aussetzer in der Datenreihe
• Entsprechend der dazugehörigen Ellipscnparameter handelt es sich um einen Ausreißer
o Wenn die Größe der aktuellen Ellipse sich zu stark von der Größe der vorhergehenden Ellipse unterscheidet
o Bei einer zu großen Differenz der aktuellen Position zur letzten Position der Ellipse
* Ist eines dieser Kriterien erfüllt, wird weiterhin der zuvor ermittelte geglättete Wert ausgegeben, andernfalls wird der aktuelle Wert zur
Glättung herangezogen
■ Um eine möglichst geringe Verzögerung bei der Glättung zu erhalten werden aktuelle Werte stärker gewichtet als vergangene:
• aktueller geglättete Wert = aktueller Wert * Glättungskoeffi- zient + letzter geglätteter Wert * (1 - Glättungskoeffizient)
• der Glättungskoeffizient wird in definierten Grenzen dynamisch an den Trend der zu glättenden Daten angepasst: o Verringerung bei eher konstantem Werteverlauf der Datenreihe
o Erhöhung bei aufsteigendem oder abfallendem Werteverlauf der Datenreihe
■ Wenn langfristig ein größerer Sprung bei den zu glättenden Ellipsenparametern vorkommt, passt sich das Filter und somit auch der geglättete Werteverlauf an den neuen Wert an camera System model"
o Funktion
■ Modellierung des D-Raumes in dem sich mehrere Kameras, der Nutzer (bzw. dessen Augen) und ggf. ein Bildschirm befinden o Input
■ Konfigurationsdatei, welche die Modellparameter (Lageparameter, optische Parameter, u. a.) aller Elemente des Modells beinhaltet o Output
■ Stellt ein Zahlengerüst und Funktionen für Berechnungen innerhalb dieses Modells zur Verfügung
o Detaillierte Beschreibung
■ Modellierung der räumlichen Lage (Position und Drehwinkel) aller Elemente des Modells sowie deren geometrische (z. B. Pixelgröße,
Sensorgröße, Auflösung) und optische (z. B. Brennweite, Objektivverzeichnung) Eigenschaften
Das Modell umfasst zum jetzigen Zeitpunkt folgende Elemente:
• Kameraeinheiten, bestehend aus:
o Kamerasensoren
o Objektiven
• Augen
• Display
Es werden neben den Eigenschaften aller Elemente des Modells insbesondere die nachfolgend beschriebenen Funktionen„3D position calculation" (zur Berechnung der Augenposition) und„3D gaze di- rection calculation" (zur Berechnung der Blickrichtung) zur Verfügung gestellt
Mit Hilfe dieses Modells kann u. a. die 3D-Blickgerade (bestehend aus Pupillenmittelpunkt und Blickrichtungsvektor (entsprechend der Biologie und Physiologie des menschlichen Auges korrigiert)) berechnet werden
Optional kann auch der Blickpunkt eines Betrachters auf einem anderen Objekt im 3D-Modell (z. B. auf einem Display) berechnet werden sowie der fokussierte Bereich des Betrachters
„3D position calculation"
o Funktion
■ Berechnung der räumlichen Position (3 D-Koordinaten) eines Punktes, der von zwei oder mehr Kameras erfasst wird (z. B. Pupillenmittelpunkt) durch Triangulation
o Input
■ 2 D- oordinaten eines Punktes in zwei Kamcrabildern
o Output
■ 3 D-Koordinaten des Punktes
■ Fehlermaß: beschreibt die Genauigkeit der übergebenen 2D- Koordinaten in Verbindung mit den Modcllparametern o Detaillierte Beschreibung
■ Aus den übergebenen 2D-Koordinaten werden mit Hil e des„3D camera syst cm model" (insbesondere unter Berücksichtigung der optischen Parameter) für beide Kameras die Lichtstrahlen berechnet, die den 3 D-Punkt als 2D-Punkte auf den Sensoren abgebildet haben
■ Diese Lichtstrahlen werden als Geraden im 3 D- Raum des Modells beschrieben
■ Der Punkt von dem beide Geraden den geringsten Abstand haben (im Idealfall der Schnittpunkt der Geraden) wird als Position des gesuchten 3 D-Punktes angenommen
gaze direction calculation"
Funktion
■ Bestimmung der Blickrichtung aus zwei ellipsenförmigen Projektionen der Pupille auf die Kamerasensoren ohne Kalibration und ohne Kenntnis über den Abstand zwischen Auge und Kamerasystem
Input
■ 3 D-Lageparameter der Bildsensoren
■ Ellipsenparameter der auf die beiden Bildsensoren projizierten Pupille
■ 3 D-Positionen der Ellipscnmittelpunkte auf den beiden Bildsensoren
■ 3 D-Position des Pupillenmittelpunktes
Output
■ 3D-Blickrichtung in Vektor- und Winkeldarstellung
Detaillierte Beschreibung
B Aus der 3 D-Position des Pupillenmittelpunktes und der Lage der Bildsensoren, werden durch Drehung der realen Kameraeinheiten virtuelle Kameraeinheiten berechnet, deren optische Achse durch den 3 D-Pupillenmittelpunkt verläuft
B Anschließend werden jeweils aus den Projektionen der Pupille auf die realen Sensoren Projektionen der Pupille auf die virtuellen Sensoren berechnet, es entstehen sozusagen zwei virtuelle Ellipsen
■ Aus den Parametern der virtuellen Ellipsen können für beide Sensoren jeweils zwei Blickpunkte des Auges auf einer beliebigen zur jeweiligen virtuellen Sensorebene parallelen Ebene berechnet werden
■ Mit den vier Blickpunkten und dem 3 D-Pupillenmittelpunkt lassen sich vier Blickrichtungsvektoren berechnen (jeweils zwei Vektoren aus den Ergebnissen jeder Kamera)
■ Von diesen vier Blickrichtungsvektoren, ist immer genau einer der einen Kamera mit einem der anderen Kamera (annähernd) identisch
■ Die beiden identischen Vektoren geben die gesuchte Blickrichtung des Auges (gaze direction) an, die dann vom Modul„3D gaze direction calculation" als Ergebnis geliefert wird rteile
Berührungslose und vollständig kalibrationsfreie Ermittlung der SD-
Augenpositionen, 3 D-Blickrichtung und Pupillengröße unabhängig von der Kenntnis über die Lage des Auges zu den Kameras
Analytische Bestimmung der 3D Augenposition und 3D Blickrichtung (unter Einbeziehung eines 3 D- Raum Modells) ermöglicht eine beliebige Kameraanzahl (>2) und beliebige Kamerapositionen im 3 D-Raum
Vermessung der auf die Kamera projizierten Pupille und damit genaue Bestimmung der Pupillengröße
- Hohe Frameraten (z.B. 60 FPS @ 640x480 auf einem XILINX Spartan 3 A DSP @
96 MHz) und kurze Latenzzeiten durch vollständig parallele Verarbeitung ohne Rekursionen in der Verarbeitungskette
Einsatz von FPGA-Hardware und Algorithmen, die für die parallelen FPGA- Strukturen entwickelt wurden
Einsatz der Hough-Transformation (in der beschriebenen angepassten Form für FPGA-Hardware) zur robusten Merkmalsextraktion zur Objekterkennung (hier: Merkmale der Pupillenellipse)
Algorithmen zur Nachverarbeitung der Houghtranslbrmationsergebnisse sind optimiert auf parallele Verarbeitung in FPGAs
Festes Zeitregime (konstante Zeitdifferenz zwischen aufeinanderfolgenden Ergebnissen)
Minimaler Bauraum, da vollständig auf Chip integriert
geringer Energieverbrauch
Möglichkeit zur direkten Portierung der Verarbeitung vom FPGA auf einen ASIC - sehr kostengünstige Lösung bei hohen Stückzahlen durch Ausnutzung von Skaleneffekten
Anwendung
In einem (Live-) Kamerabilddatenstrom werden 3 D- Augenpositionen und SD- Blickrichtungen detektiert, die für folgende Anwendungen genutzt werden können: o Sicherheitsrelevante Bereiche
■ z. B. Sekundenschlafwarner bzw. Müdigkeitsdetektor als Fahrassistenzsystem im Automotive Bereich, durch Auswertung der Augen (z. B. Verdeckung der Pupille als Maß für den Öffnungsgrad) und unter Berücksichtigung der Blickpunkte und des Fokus
o Mensch-Maschine-Schnittstellen
■ als Eingabcschnittstcllcn für technische Geräte (Augenpositionen und Blickrichtung können als Inputparameter genutzt werden)
■ Unterstützung des Nutzers beim Anschauen von Bildschirminhalten (z.B. hervorheben von Bereichen, die angeschaut werden)
■ z. B.
• im Bereich Assisted Living
• für Computerspiele
• Blickrichtungsgestützte Eingabe für Head Mounted Devices
• Optimierung von 3 D- V isualisi eru ngen durch Einbeziehen der Blickrichtung
o Markt- und Medienforschung
■ z.B. Attraktivität von Werbung bewerten durch Auswertung der räumlichen Blickrichtung und des Blickpunktes der Testperson o Ophthalmologische Diagnostik (z. B. objektive Perimetrie) und Therapie
FPGA-Facetracker
Ein Aspekt der Erfindung betrifft ein autonomes (PC-unabhängiges) System, das insbesondere FPGA-optimierte Algorithmen nutzt, und dazu geeignet ist ein Gesicht in einem Kamera-Livebild zu detektieren und dessen (räumliche) Position zu ermitteln. Die genutzten Algorithmen sind insbesondere dadurch gekennzeichnet, dass Sie für die Verarbeitung auf einem FPGA (tield programmable gate array) optimiert sind und im Vergleich zu den bestehenden Verfahren ohne Rekursionen in der Verarbeitung auskommen. Die Algorithmen ermöglichen eine sehr schnelle Bildverarbeitung mit konstanter Bildwiederholrate, minimalen Latenzzeiten und minimalem Ressourcenverbrauch im FPGA. Damit sind diese Module prädestiniert für zeit-/latenz-/sicherheitskri tische Anwendungen (z.B. Fahrerassistenzsysteme) oder Anwendungen wie Human machine interfaces (z.B. für mobile devices), die ein geringes Bauvolumen erfordern. Darüber hinaus kann unter Einsatz einer zweiten Kamera die räumliche Position des Nutzers für bestimmte Punkte im Bild hochgenau, ka- librationsfrei und berührungslos ermittelt werden.
Problemstellung
Robuste und hardwarebasierte Gesichtsdetektion in einem (Live-) Kamerabild
Detektion von Gesichts und Augenposition im 3D-Raum durch Verwendung eines stereoskopischen Kamerasystems
Sehr kurze Reaktionszeit (bzw. Verarbeitungszeit)
Kleine Bauform
autonome Funktionsweise (Unabhängigkeit vom PC) durch integrierte Lösung Stand der Technik
Literatur:
o Christian Küblbeck, Andreas Ernst: Face detection and tracking in video sequenecs using the modified census trans ormation
o Paul Viola, Michael Jones: Robust Real-time Objcct Detection
Nachteile aktueller Facetracker Systeme
Die gesamte Verarbeitung ist für PC-Systeme (allgemeiner: general purpose pro- cessors) optimiert und somit auch deren Nachteilen unterworfen (z.B. kein festes Zeitregime bei der Verarbeitung möglich (Beispiel: in Abhängigkeit des Bildinhal- tes z.B. Hintergrund dauert das Tracking unter Umständen länger))
Sequentielle Abarbeitung; das Eingangsbild wird sukzessive in verschiedene Skalierungsstufen gebracht (bis die kleinste Skalierungsstufe erreicht ist) und jeweils mit einem mehrstufigen Klassifikator nach Gesichtern durchsucht
o Je nachdem wie viele Skalierungsstufen berechnet werden müssen bzw. wie viele Stufen des Klassifikators berechnet werden müssen schwankt die Verarbeitungsdauer und damit die Verzögerungszeit bis das Ergebnis vorliegt
Um hohe Frameraten zu erreichen werden leistungsstarke Systeme benötigt (höhere Taktraten, unter Umständen Multicore-Systeme), da die bereits auf PC-Hardware optimierten Algorithmen trotzdem einen sehr hohen Ressourcenverbrauch aufweisen (insbesondere bei embedded Prozessorsystemen)
Ausgehend von der delektierten Gesichtsposition liefern Klassifikatoren nur ungenaue Augenpositionen (die Position der Augen - insbesondere der Pupillenmittelpunkt - wird nicht analytisch ermittelt (bzw. vermessen) und ist dadurch hohen Ungenauigkeiten unterworfen)
Die ermittelten Gesichts- und Augenpositionen liegen nur in 2D-Bildkoordinaten vor, nicht in 3D
Umsetzung
Das Gesamtsystem ermittelt aus einem Kamerabild (in dem ein Gesicht abgebildet ist) die Gesichtsposition und ermittelt unter Nutzung dieser Position die Positionen der Pupillenmittelpunkte des linken und rechten Auges. Werden zwei oder mehr Kameras mit einer bekannten Ausrichtung zueinander verwendet, können diese beiden Punkte für den 3- dimensionalen Raum angegeben werden. Die beiden ermittelten Augenpositionen können in Systemen, welche den„Integrated Eyetracker" nutzen, weiterverarbeitet werden.
Der„Parallel image scaler",„Parallel face fmder",„Parallel eye analyzer",„Parallel pupil analyzer",„Temporal smart smoothing filter",„3D camera system model" und„3D position calculation" betreffen einzelne Funktionsmodule des Gesamtsystems (FPGA- Facetracker). Sie ordnen sich in die Bildverarbeitungskette des FPGA-Facetrackers wie folgt ein:
Fig. 7a zeigt ein Blockschaltbild der einzelnen Funktionsmodule im FPGA-Facetracker. Die Funktionsmodule„3D camera system model" und„3D position calculation" sind für das Facetracking nicht zwingend erforderlich, werden aber bei Verwendung eines Stereoskopen Kamerasystems und Verrechnung geeigneter Punkte auf beiden Kameras zur Bestimmung räumlicher Positionen genutzt (beispielsweise zur Bestimmung der SD- Kopfposition bei Verrcchung der 2D-Gesichtsmittelpunkte in beiden Kamerabildern). Das Modul„Feature extraction (Classification)" des FPGA-Facetrackers baut auf der Merkmalsextraktion und Klassifikation von Küblbeck/Ernst vom Fraunhofer IIS (Erlangen) auf und nutzt eine angepasste Variante ihrer Klassifikation auf Basis von Census Merkmalen.
Das Blockschaltbild zeigt die einzelnen Verarbeitungsstufen des FPGA-Facetracking Systems. Im Folgenden wird eine detaillierte Beschreibung der Module gegeben.
• „Parallel image scaler"
o Funktion
■ Parallele Berechnung der Skalierungsstufen des Ausgangsbildes und Anordnung der berechneten Skalierungsstufen in einer neuen Bild-
matrix um den nachfolgenden Bildverarbeitungsmodulen eine simultane Analyse aller Skalierungsstufen zu ermöglichen
Fig. 7b zeigt die Ausgangsbild (Originalbild) und Ergebnis (Downscaling-Bild) des Paral- lel image-scaler. o Input
■ Ausgangsbild in Originalauflösung
o Output
■ Neue Bildmatrix die mehrere skalierte Varianten des Ausgangsbildes in einer für die nachfolgenden Facetracking-Module geeigneten Anordnung beinhaltet
o Detaillierte Beschreibung
■ Aufbau einer Bildpyramide durch parallele Berechnung der ver- schiedenen Skalierungsstufen des Ausgangsbildes
■ Um eine definierte Anordnung der zuvor berechneten Skalierungsstufen in der Zielmatrix gewährleisten zu können erfolgt eine Transformation der Bildkoordinaten der jeweiligen Skalierungsstufe in das Bildkoordinatensystem der Zielmatrix anhand verschiedener Kriterien:
• Definierter Mindestabstand zwischen den Skalierungsstufen um ein übersprechen von Analyseergebnissen in benachbarte Stufen zu unterdrücken
* Definierter Abstand zu den Rändern der Zielmatrix um die Analyse zum Teil aus dem Bild herausragender Gesichter gewährleisten zu können
• „Parallel face linder"
o Funktion
■ Detektiert ein Gesicht aus Klassifikationsergebmssen mehrerer Ska- lierungsstufen, die gemeinsam in einer Matrix angeordnet sind
Wie in Fig. 7c gezeigt, stellt das Ergebnis der Klassifikation (rechts) den Input für den Parallel face linder dar.
o Input
■ Klassifizierte Bildmatrix die mehrere Skalierungsstufen des Ausgangsbildes enthält
o Output
■ Position, an der sich mit der höchsten Wahrscheinlichkeit ein Gc- sieht befindet (unter Berücksichtigung mehrerer Kriterien) o Detaillierte Beschreibung
* Rauschunterdrückung zum Eingrenzen der Klassifikationsergebnisse " Räumliche Korrektur der Klassifikationsergebnisse innerhalb der Skalierungsstufen mittels einer Kombination aus lokalen Summen- und Maximumfilter
» Orientierung an der höchsten Auftrittswahrscheinlichkeit für ein Gesicht optional an der Gesichtsgröße über alle Skalierungsstufen hinweg
■ Räumliche Mittelung der Ergebnispositionen über ausgewählte Skalierungsstufen hinweg
• Auswahl der in die Mittelung einbezogener Skalierungsstufen erfolgt unter Berücksichtigung der folgenden Kriterien: o Differenz der Mittelpunkte des ausgewählten Gesichts in den betrachteten Skalierungsstufen o Dynamische ermittelte Abweichung vom höchsten Ergebnis des Summenfilters
o Unterdrückung von Skalierungsstufen ohne Klassifikationsergebnis
■ Schwellwertbasierte Einstellung der Detektionsleistung des„parallel face finder"
„Parallel eye analyzer"
o Funktion
■ Delektiert während der Gesichtsdetektion parallel die Position der Augen im entsprechenden Gesicht (diese ist vor allem bei nicht ideal frontal aufgenommenen und verdrehten Gesichtern wichtig) o Input
■ Bildmatrix, die mehrere Skalierungsstufen des Ausgangsbildes enthält (aus dem„Parallel image scaler" Modul) sowie die jeweils aktuelle Position an der sich höchstwahrscheinlich das gesuchte Gesicht befindet (aus dem„Parallel face finder" Modul) o Output
■ Position der Augen und ein dazugehöriger Wahrscheinlichkeitswert im aktuell vom ..Parallel face linder" gefundenen Gesicht o Detaillierte Beschreibung
■ Basierend auf dem herunter skalierten Ausgangsbild wird in einem definierten Bereich (Augenbereich) innerhalb der vom„Parallel face finder" gelieferten Gesichtsregion die im folgenden beschriebene Augensuche für jedes Auge durchgeführt:
• Definieren des Augenbereichs aus empirisch ermittelten Normalpositionen der Augen innerhalb der Gesichtsregion
• Mit einem speziell geformten korrelationsbasierten lokalen Filter werden innerhalb des Augenbereichs Wahrscheinlichkeiten für das Vorhandensein eines Auges ermittelt (das Au-
ge wird in diesem Bildbereich vereinfacht ausgedrückt als eine kleine dunkle Fläche mit heller Umgebung beschrieben)
• Die genaue Augenposition inklusive ihrer Wahrscheinlichkeit ergibt sich durch eine Maximumsuche in dem zuvor berechneten Wahrscheinlichkeitsgebirge
„Parallel pupil analyzer'
o Funktion
■ Detekticrt ausgehend von einer zuvor ermittelten Augenposition die Position der Pupillenmittelpunkte innerhalb der detektierten Augen (dadurch erhöht sich die Genauigkeit der Augenposition, was für Vermessungen oder das Anschließende Auswerten der Pupille wichtig ist)
o Input
■ Ausgangsbild in Original auflösung sowie die ermittelten Augenpositionen und Gesichtsgröße (aus dem„Parallel eye analyzer" bzw. „Parallel face fmder")
o Output
■ Position der Pupille innerhalb des ausgewerteten Bildes sowie ein Status, der aussagt, ob eine Pupille gefunden wurde oder nicht o Detaillierte Beschreibung
■ Basierend auf den ermittelten Augenpositionen und der Gesichtsgröße wird ein zu bearbeitender Bildausschnitt um das Auge herum festgelegt
8 Uber diese Bildmatrix hinweg wird ein Vektor aufgebaut, der die Minima der Bildspalten enthält, sowie ein Vektor, der die Minima der Bildzeilen enthält
■ Innerhalb dieser Vektoren (aus minimalen Grauwerten) wird wie nachfolgend erklärt separat der Pupillenmittelpunkt in horizontaler und in vertikaler Richtung detekticrt:
• Detektion des Minimums des jeweiligen Vektors (als Position innerhalb der Pupille)
• Ausgehend von diesem Minimum innerhalb des Vektors wird in positiver und negativer Richtung die Position ermittelt, an der ein einstellbarer prozentual auf den Dynamikbereich aller Vektorelemente bezogener Schwellwert überschritten wird
• Die Mittelpunkte dieser Bereiche in den Beiden Vektoren bilden zusammen den Mittelpunkt der Pupille im analysierten Bild
„Temporal smart smoothing filter"
o Funktion
■ Adaptive zeitliche Glättung einer Datenreihe (z. B. einer ermittelten Gesichtskoordinate), wobei Aussetzer, unsinnige Werte oder extreme Ausreißer in der zu glättenden Datenreihe NICHT zu Schwankungen der geglätteten Daten führen
o Input
■ Zu jedem Autrufzeitpunkt des Moduls jeweils ein Wert der Datenreihe und die dazugehörigen Gütekriterien (beim Facetracking: Ge- sichtsscorc und Downscalingstufe in der das Gesicht gefunden wurde)
o Output
■ Geglätteter Datenwert (z. B. Gesichtskoordinate)
o Detaillierte Beschreibung
■ Über einen Satz von Filterparametern kann beim Initialisieren des Filters dessen Verhalten festgelegt werden
■ Der aktuelle Input- Wert wird für die Glättung verwendet, wenn er nicht in eine der folgenden Kategorien fällt:
• Entsprechend dem dazugehörigen Score handelt es sich um einen Aussetzer in der Datenreihe
• Entsprechend der dazugehörigen Downscalingstufe handelt es sich um einen unsinnigen Wert (Wert, der in einer zu weit entfernten Downscalingstufe ermittelt wurde)
• Entsprechend der zu großen Differenz zum letzten für die Glättung verwendeten Wert handelt es sich um einen Ausreißer
■ Ist eines dieser Kriterien erfüllt, wird weiterhin der zuvor ermittelte geglättete Wert ausgegeben, andernfalls wird der aktuelle Wert zur Glättung herangezogen
■ Um eine möglichst geringe Verzögerung bei der Glättung zu erhalten werden aktuelle Werte stärker gewichtet als vergangene:
• aktueller geglättete Wert = aktueller Wert * Glättungskoeffi- zient + letzter geglätteter Wert * (1 - Glättungskoeffizient)
• der Glättungskoeffizient wird in definierten Grenzen dynamisch an den Trend der zu glättenden Daten angepasst: o Verringerung bei eher konstantem Werteverlauf der Datenreihe
o Erhöhung bei aufsteigendem oder abfallendem Werteverlauf der Datenreihe
■ Wenn langfristig ein größerer Sprung bei den zu glättenden Daten oder den dazugehörigen Downscalingstufen vorkommt, passt sich das Filter und somit auch der geglättete Werteverlauf an den neuen Wert an camera System model"
o Funktion
■ Modeiiierang des 3 D-Raumes in dem sich mehrere Kameras, der Nutzer (bzw. dessen Augen) und ggf. ein Bildschirm befinden o Input
■ Konfigurationsdatei, welche die Modellparameter (Lageparameter, optische Parameter, u. a.) aller Elemente des Modells beinhaltet o Output
■ Stellt ein Zahlengerüst und Funktionen für Berechnungen innerhalb dieses Modells zur Verfügung
o Detaillierte Beschreibung
■ Modellierung der räumlichen Lage (Position und Drehwinkel) aller Elemente des Modells sowie deren geometrische (z. B. Pixel große, Sensorgröße, Auflösung) und optische (z. B. Brennweite, Objektivverzeichnung) Eigenschaften
■ Das Modell umfasst zum jetzigen Zeitpunkt folgende Elemente:
• Kameraeinheiten, bestehend aus:
o Kamerasensoren
o Objektiven
• Augen
• Display
■ Es werden neben den Eigenschaften aller Elemente des Modells insbesondere die nachfolgend beschriebenen Funktionen„3D position calculation" (zur Berechnung der Augenposition) und„3D gaze di- rection calculation" (zur Berechnung der Blickrichtung) zur Verfügung gestellt
■ In anderen Anwendungsfällen stehen auch folgende Funktionen zur Verfügung:
• Mit Hilfe dieses Modells kann u. a. die 3D-Blickgerade (bestehend aus Pupillcnmittelpunkt und Blickrichtungsvektor (entsprechend der Biologie und Physiologie des menschlichen Auges korrigiert)) berechnet werden
• Optional kann auch der Blickpunkt eines Betrachters au einem anderen Objekt im 3 D-Modell (z. B. auf einem Display) berechnet werden sowie der fokussierte Bereich des Betrachters
„3D position calculation"
o Funktion
■ Berechnung der räumlichen Position (3 D-Koordinaten) eines Punktes, der von zwei oder mehr Kameras erfasst wird (z. B. Pupillenmittelpunkt)
o Input
■ 2D-Koordinaten eines Punktes in zwei Kamerabildern
o Output
■ 3 D-Koordinaten des Punktes
■ Fehlermaß: beschreibt die Genauigkeit der übergebenen 2D- Koordinaten in Verbindung mit den Modellparametem
o Detaillierte Beschreibung
■ Aus den übergebenen 2 D- Koordinaten werden mit Hilfe des ..3D camera System model" (insbesondere unter Berücksichtigung der optischen Parameter) für beide Kameras die Lichtstrahlen berechnet, die den 3 D-Punkt als 2 D- Punkte auf den Sensoren abgebildet haben ■ Diese Lichtstrahlen werden als Geraden im 3 D-Raum des Models beschrieben
■ Der Punkt von dem beide Geraden den geringsten Abstand haben (im Idealfall der Schnittpunkt der Geraden) wird als Position des gesuchten 3 D-Punktes angenommen
Vorteile
Ermittlung der Gesichtsposition und der Augenpositionen in einem (Live-) Kamerabild in 2D und durch Rückrechnung in den 3D-Raum in 3D (durch Einbeziehen eines 3D-Raum Modells)
- Die unter 3. Vorgestellten Algorithmen sind optimiert auf echtzeitfähige und parallele Verarbeitung in FPGAs
- Hohe Frameraten (60 FPS @ 640x480 auf einem XILINX Spartan 3 A DSP @ 48 MHz) und kurze Latenzzeiten durch vollständig parallele Verarbeitung ohne Rekursionen in der Verarbeitungskette - sehr schnelle Bildverarbeitung und verzö- gerzugsarme Ausgabe der Ergebnisse
Minimaler Bauraum, da die gesamte Funktionalität mit einem Bauteil (FPGA) erreicht werden kann
geringer Energieverbrauch
Festes Zeitregime (konstante Zeitdifferenz zwischen aufeinanderfolgenden Ergeb- nissen) und damit prädestiniert für den Einsatz in sicherheitskritischen Anwendungen
Möglichkeit zur direkten Portierung der Verarbeitung vom FPGA auf einen AS IC (applicalion specific integrated cireuit) -> sehr kostengünstige Lösung bei hohen Stückzahlen durch Ausnutzung von Skaleneffekten
Anwendung
Vorteile bei der Anwendung im Vergleich zur Softwarelösung
o autonome Funktionsweise (System on Chip)
o Möglichkeit der einfachen Überführung in einen ASIC
o platzsparende Integration in bestehende Systeme/Schaltungen
Anwendungsbereiche ähnlich denen einer Softwarelösung (In einem (Live-) Kame- rabilddatenstrom werden Gesichtsposition und die entsprechenden Augenpositionen detektiert, die für die unten aufgeführten Anwendungen genutzt werden können)
o Sicherheitsanwendungen
■ z.B. Sekundenschlafwarner im Automotive Bereich, durch Auswertung der A ugen (Öffnungsgrad) und der Augen- und Kopibewegung o Mensch-Maschine-Kommunikation
■ z.B. Eingabeschnittstel len für technische Geräte (Kopf- bzw. Au- genposition als Inputparamcter)
o Gaze-Tracking
■ z.B. Gesichts- und Augenpositionen als Vorstufe zur Blickrichtungsbestimmung (in Kombination mit„Integrated Eyetracker") o Marketing
* z.B. Attraktivität von Werbung bewerten durch Auswertung von
Kopf- und Augenparametern (u. a. Position)
Nachfolgend wird weiteres Hintergrundwissen zu den oben beschrieben Aspekten der Erfindungen offenbart.
Hough-Merkmalsextraktion
Das Ziel der vorliegenden nachfolgenden Ausführungen ist es, auf Basis der parallelen Hough-Transformation und ein robustes Verfahren zur Merkmalsextraktion zu entwickeln. Dazu wird der Houghcore überarbeitet und ein Verfahren zur Merkmalsextraktion vorgestellt, das die Ergebnisse der Transformation reduziert und auf wenige„Merkmalsvektoren" pro Bild herunterbricht. Anschließend wird das neu entwickelte Verfahren in einer Matlab- Toolbox implementiert und getestet. Es wird schließlich eine FPGA- Implementierang des neuen Verfahrens vorgestellt.
Parallele Hough-Transformation für Geraden und Kreise
Die parallele Hough-Transformation nutzt Houghcores unterschiedlicher Größe, die mit Hilfe von Konfigurationsmatrizen für den jeweiligen Anwendungsfall konfiguriert werden müssen. Die mathematischen Zusammenhänge und Verfahren zur Erstellung solcher Kon- figurationsmatrizen sind nachfolgend dargestellt. Das Mailab-Skript alc_config_lines_curvatures. m greift auf diese Verfahren zurück und erstellt Konfigurationsmatrizen für Geraden und Halbkreise in verschiedenen Größen.
Zur Erstellung der Konfigurationsmatrizen ist es zunächst erforderlich Kurvenscharen in diskreter Darstellung und für unterschiedliche Houghcore-Größen zu berechnen. Die Anforderungen (Bildungsvorschriften) an die Kurvenscharen wurden bereits aufgezeigt. Unter Berücksichtigung dieser Bildungsvorschriften sind insbesondere Geraden und Halbkreise zur Konfiguration der Houghcores geeignet. Für die Blickrichtungsbestimmung werden Houghcores mit Konfigurationen für Halbkreise (bzw. Krümmungen) eingesetzt. Aus Gründen der Vollständigkeit werden hier auch die Konfigurationen für Geraden (bzw. Geradenabschnitte) hergeleitet. Die mathematischen Zusammenhänge zur Bestimmung der Kurvenscharen für Geraden sind veranschaulicht.
Ausgangspunkt für die Berechnung der Kurvenscharen für Geraden bildet die lineare Geradengleichung in (Bl). y = m■ x -
(Bl)
Die Kurvenscharen können durch Variation des Anstiegs m generiert werden. Dazu wird die Geradensteigung von 0° bis 45° in gleichgroße Intervalle zerlegt. Die Anzahl der Intervalle ist von der Houghcore-Größe abhängig und entspricht der Anzahl an Houghcore- Zeilen. Der Anstieg kann über die Laufvariable Ycore von 0 bis core^ durchgestimmt werden.
1
m = ycore
core heigl
(B2)
Die Funktionswerte der Kurvenscharen errechnen sich durch Variation der Laufvariablen (in (B3) durch xcore ersetzt), deren Werte von 0 bis core width laufen. core core
COrehe,g,
(B3)
Für eine diskrete Darstellung im 2D-Plot müssen die Funktionswerte auf ganze Zahlen gerundet werden. Die Berechnung der Kurvenscharen für Halbkreise orientiert sich an (Katzmann 2005, S. 37-38) und ist in Fig. 9b veranschaulicht.
Ausgangspunkt für die Berechnung der Kurvenscharen ist die Kreisgleichung in Koordinatenform.
(B4)
Mit XM— 0 (Lage des Kreismittelpunktes auf der y-Achse), x = xcore und umstellen nach y folgt für die Funktionswerte der Kurvenscharen (B5).
^r2 - x]ore + yM
(B5)
Da yu und r nicht bekannt sind, müssen sie ersetzt werden. Dazu können die mathematischen
Zusammenhänge in (B6) und (B7) aus Fig. 9b hergeleitet werden. yM= h - r
(B6)
(B7)
Durch Umstellen von (B7) nach yM und der Bedingung das y^ immer negativ sein muss (s. Fig. 9b) erhält man (B8).
(B8)
Einsetzen von (B8) in (B5) führt zu (B9).
(B9)
Aus Fig. 9b wird deutlich, dass der Houghcore mittenzentriert in der y- Achse des Kreiskoordinatensystems liegt. Die Variable xcore läuft normalerweise von 0 bis corewidth - 1 und core
muss somit um width korrigiert werden.
2 2 core width core
y >' " X core + -J r - width
(B10)
Es fehlt noch der Radius, den man durch einsetzen von (B6) in (B7) und durch weitere Umformungen erhält. core
= (h - rf + width
(Bl l) core
r2 =h2-2hr + rl + width
(B12) core.
h2 + width
r =-
2 - h
(B13) core h,eight
Zum Erzeugen der Kurvenscharen muss schließlich die Variable h von 0 bis
variiert werden. Dies geschieht über die Lau (variable ycore die von 0 bis corehej ht läuft
yc
2 -
(B14)
Wie bereits bei den Geraden müssen die y- Werte für eine diskrete Darstellung im 2D-Plot gerundet werden. Die Kurvenscharen für Houghcores vom Typ 2 können ganz einfach über Gleichung (B15) ermittelt werden. y Typ - -- COrehel& - yTyP
(B15)
Ausgehend von den Kurvenscharen können für alle Houghcore-Größen jeweils zwei Konfigurationen (Typ 1 und Typ 2) für Geraden und Kreise ermittelt werden. Die Konfigurati- onen werden dabei direkt aus den Kurvenscharen bestimmt, vgl. (Katzmann 2005, S. 35- 36). Konfigurationsmatrizen können entweder mit Nullen oder mit Einsen besetzt sein. Eine Eins steht dabei für ein genutztes Delayelement im Houghcorc. Zunächst wird die Konfigurationsmatrix in den Dimensionen des Houghcores mit Nullwerten initialisiert. Danach werden folgende Schritte durchlaufen:
1. Beginne mit der ersten Kurve der Kurvenschar und prüfe den y-Wert der ersten x- Indexnummer. Ist der y-Wert größer als Null, dann besetze in der gleichen Zeile (gleicher y-Index) an genau derselben Stelle (gleicher x-Index) das Element der Konfigurationsmatrix mit Eins.
2. Modifiziere die y-Werte mit gleichem x-Index über alle Kurven der Kurvenschar.
Wurde im ersten Schritt das Element mit Eins besetzt, dann ziehe von allen y- Werten Eins ab. Wurde im ersten Schritt das Element nicht besetzt, dann tue nichts.
3. Durchlaufe Schritt 1 und 2 so lange, bis alle Elemente der Konfigurationsmatrix angesprochen wurden.
Die Konfigurationsprozedur ist in Fig. 9c schrittweise veranschaulicht.
Abschließend möchte ich auf ein paar Eigenheiten der Houghcorc- Konfigurationen einge- hen. Die Konfigurationen für Geraden repräsentieren immer nur Geradenabschnitte in Abhängigkeit der Breite des Houghcores. Längere Geradenabschnitte im binären Kantenbild müssen gegebenenfalls aus mehreren detektierten Geradenabschnitten zusammengesetzt werden. Die Auflösung der Winkel (bzw. Steigung) der Geradenabschnitte ist von der Höhe des Houghcores abhängig.
Die Konfigurationen für Kreise repräsentieren immer Kreisbögen um den Scheitelpunkt des Halbkreises herum. Nur die größte y-lndexnummer der Kurvenschar (kleinster Radius) repräsentiert einen vollständigen Halbkreis. Die entwickelten Konfigurationen können für den neuen Houghcore genutzt werden.
Überarbeitung des Houghcores
Ein entscheidender Nachteil der FPGA-Implementierung von Holland-Neil ist die starre Konfiguration der Houghcores. Die Delaylines müssen vor der Synthese parametrisiert werden und sind danach fest in den Hardwarestrukturen abgelegt (Holland-Neil, S. 48-49). Änderungen während der Laufzeit (z. B. Houghcore-Größe) sind nicht mehr möglich. Das neue Verfahren soll an dieser Stelle flexibler werden. Der neue Houghcore soll sich auch während der Laufzeit im FPGA vollständig neu konfigurieren lassen. Das hat mehrere Vorteile. Zum einen müssen nicht zwei Houghcores (Typ 1 und Typ 2) parallel abgelegt werden und zum anderen können auch unterschiedliche Konfigurationen für Geraden und Halbkreise genutzt werden. Darüber hinaus lässt sich die Houghcore-Größe flexibel wäh- rend der Laufzeit ändern.
Bisherige Houghcore-Struktur bestehen aus einem Delay und einem Bypass und es wird vor der FPGA-Synthese festgelegt welcher Pfad genutzt werden soll. Im Folgenden wird diese Struktur um einen Multiplexer, ein weiteres Register zur Konfiguration des Delay- elements (Schalten des Multiplexers) und ein Pipelinedelay erweitert. Die Konfigurationsregister können während der Laufzeit modifiziert werden. Auf diese Weise können unterschiedliche Konfigurationsmatrizen in den Houghcore eingespielt werden. Durch setzten der Pipelinedelays hat das Synthesetool im FPGA mehr Freiheiten bei der Implementierung des Houghcore-Designs und es können höhere Taktraten erzielt werden. Pipe- linedelays durchbrechen zeitkritische Pfade innerhalb der FPGA-Strukturen. In Fig. 9d ist das neue Design der Delayelemente veranschaulicht.
Im Vergleich zur bisherigen Umsetzung nach Katzmann und Holland-Neil sind die Delayelemente des neuen Houghcores etwas komplexer aufgebaut. Zur flexiblen Konfiguration des Delayelements wird ein zusätzliches Register benötigt und der Multiplexer belegt weitere Logikressourcen (muss im F GA in einer LUT implementiert werden). Das Pipelinedelay ist optional. Neben der Überarbeitung der Delayelemente wurden auch Modifikationen am Design des Houghcores vorgenommen. Der neue Houghcore ist in Fig. 9e veranschaulicht.
Im Unterschied zum bisherigen Houghcore soll zunächst eine neue Notation eingeführt werden. Aufgrund des um 90° rotierten Designs in Fig. 9e werden die ursprünglich als „Zeilensummen" bezeichneten Signale des Ausgangshistogramms ab sofort„Spaltensummen" genannt. Jede Spalte des Houghcores steht somit für eine Kurve der Kurvenschar. Der neue Houghcore kann außerdem während der Laufzeit mit neuen Konfigurationsmatrizen beaufschlagt werden. Die Konfigurationsmatrizen sind im FPGA-internen BRAM abgelegt und werden von einer Konfigurationslogik geladen. Diese lädt die Konfigurationen als spaltenweisen Bitstring in die verketteten Konfigurationsregister (s. Fig. 9d). Die Re-
Konfiguration des Houghcores benötigt eine gewisse Zeit und ist von der Länge der Spalten (bzw. der Anzahl der Delaylines) abhängig. Dabei benötigt jedes Spaltenelement einen Taktzyklus und es kommt eine Latenz von wenigen Taktzyklen durch den BRAM und die Konfigurationslogik hinzu. Die Gesamtlatenz zur Rekonflguration ist zwar nachteilig, kann jedoch für die videobasierte Bildverarbeitung in Kauf genommen werden. Im Normalfall haben die mit einem CMOS-Sensor aufgezeichneten Videodatenströme ein horizontales und vertikales Blanking. Die Rekonflguration kann somit problemlos i der horizontalen Blankingzeit stattfinden. Die Größe der im FPGA implementierten Houghcore-Struktur gibt auch die maximal mögliche Größe für Houghcore- Konfigurationen vor. Werden klei- ne Konfigurationen genutzt sind diese vertikal zentriert und in horizontaler Richtung an Spalte 1 der Houghcore-Struktur ausgerichtet (s. Fig. 9f). Nicht genutzte Elemente der Houghcore-Struktur werden allesamt mit Delays besetzt. Die korrekte Ausrichtung kleinerer Konfigurationen ist für die Korrektur der x- Koordinaten (s. Formeln (B17) bis (B19)) wichtig.
Der Houghcore wird wie bisher mit einem binären Kantenbild gespeist, das die konfigurierten Delaylines durchläuft. Mit jedem Verarbeitungsschritt werden die Spaltensummen über den gesamten Houghcore berechnet und jeweils mit dem Summensignal der vorhergehenden Spalte verglichen. Liefert eine Spalte einen höheren Summenwert, wird der Summenwert der ursprünglichen Spalte überschrieben. Als Ausgangssignal liefert der neue Houghcore einen Spaltensummenwert und die dazugehörige Spaltennummer. Auf Basis dieser Werte kann später eine Aussage darüber getroffen werden, welche Struktur gefunden wurde (repräsentiert durch die Spaltennummer) und mit welcher Auftrittswahrscheinlichkeit diese detektiert wurde (repräsentiert durch den Summenwert). Das Ausgangssignal des Houghcores kann auch als I loughraum oder Akkumulatorraum bezeichnet werden. Im Gegensatz zur herkömmlichen Hough-Transformation liegt der Houghraum der parallelen Hough-Transformation im Bildkoordinatensystem vor. Das heißt, dass zu jeder Bildkoordinate ein Summenwert mit dazugehöriger Spaltennummer ausgegeben wird. Zur vollständigen Transformation des Ausgangsbildes muss jeweils ein Houghcore vom Typ 1 und Typ 2 vom nicht rotierten und rotierten Bild durchlaufen werden. Damit liegen nach der Transformation nicht nur Spaltensumme mit dazugehöriger Spaltennummer, sondern auch der Houghcore-Typ und die Ausrichtung des Ausgangsbildes (nicht rotiert oder rotiert) vor. Darüber hinaus können verschiedene Houghcore-Größen und Konfigurationen jeweils für Geraden und Halbkreise genutzt werden. Damit kann neben den genannten Ergebnissen noch der Kurventyp und die Houghcore- Größe angegeben werden. Zusammenfassend ist ein Ergebnisdatensatz des neuen Houghcores in nachfolgender Tabelle dargestellt. Bei der parallelen Hough-Transformation entsteht für jeden Bildpunkt des Ausgangsbildes ein solcher Datensatz.
Ubersicht des Ergebnisdatensatzes der für jeden Bildpunkt des Ausgangsbildes bei der parallelen Hough-Transformation mit überarbeiteter Houghcore-Struktur entsteht.
Im Gegensatz zum binären und schwel 1 wertbasierten Ausgang des Houghcores von Katzmann und Holland-Neil erzeugt die neue Houghcore-Struktur deutlich mehr Ausgangsdaten. Da solch eine Datenmenge nur schwer zu handhaben ist, wird ein Verfahren zur Merkmalsextraktion vorgestellt, das die Ergebnisdatenmenge deutlich verringert.
Typ 2 Houghcore und Bildrotation
Bei den Ausführungen zur parallelen Hough-Transformation wurde bereits die Notwendigkeit der Bildrotation und die Eigenheiten des Typ 2 Houghcores angeschnitten. Bei der
parallelen Hough-Transformation muss das Ausgangsbild den Houghcore viermal durchlaufen. Das ist notwendig, damit Geraden und Halbkreise in unterschiedlichen Winkellagen detektiert werden können. Arbeitet man nur mit einem Typ 1 Houghcore, müsste man das Bild in Ausgangslage und rotiert um 90°, 180° und 270° verarbeiten. Durch Hinzu- nähme des Typ 2 Houghcores entfallen die Rotation um 180° und 270°. Wird das nicht rotierte Ausgangsbild mit einem Typ 2 Houghcore verarbeitet entspricht das einer Verarbeitung des um 180° rotierten Ausgangsbildes mit einem Typ 1 Houghcore. Ahnlich verhält es sich mit der Rotation um 270°. Diese kann durch Verarbeitung des um 90° rotierten Bildes mit einem Typ 2 Houghcore ersetzt werden. Für eine FPGA-Umsetzung wirkt sich der Wegfall zusätzlicher Rotationen positiv aus, da Bildrotationen im Normalfall nur mit Hilfe eines externen Speichers gelöst werden können. Je nach eingesetzter Hardware steht nur eine gewisse Bandbreite (maximal mögliche Datenrate) zwischen FPGA und Speicherbaustein zur Verfügung. Bei Verwendung eines Typ 2 Houghcores wird die Bandbreite des externen Speicherbausteins nur mit einer Rotation um 90° belegt. Bei der bisherigen Im- plementierung von Holland-Neil war es erforderlich einen Houghcore vom Typ 1 und einen Houghcore vom Typ 2 im FPGA abzulegen. Mit dem überarbeiteten Houghcore- Design ist es nun auch möglich die Houghcore-Struktur einmal im FPGA abzulegen und Konfigurationen vom Typ 1 oder Typ 2 zu laden. Durch diese neue Funktionalität kann mit nur einem Houghcore und bei nur einer Bildrotation das Ausgangsbild vollständig trans- formiert werden.
Es bleibt zu berücksichtigen, dass bei der Verarbeitung mit nur einem Houghcore auch die vierfache Datenrate im Houghcore anfällt. Bei einem Videodatenstrom mit 60fps und VGA-Aufiösung beträgt die Pixeldatenrate 24Mhz. In diesem Fall müsste der Houghcore mit 96Mhz betrieben werden, was für einen FPGA der Spartan 3 Generation bereits eine hohe Taktrate darstellt. Zur Optimierung des Designs sollte verstärkt mit Pipelincdelays innerhalb der Houghcore-Struktur gearbeitet werden.
Merkmalsextraktion
Die Merkmalsextraktion arbeitet auf den Datensätzen aus vorheriger Tabelle. Diese Datensätze können in einem Merkmalsvektor (B16) zusammengefasst werden. Der Merkmalsvektor kann im Folgenden auch als Hough-Feature bezeichnet werden.
MV=[MVX, MVy,MV0, MV KS, MVH, MVG.h MVA]
(B16)
Ein Merkmalsvektor bestellt jeweils aus x- und y-Koordinate für das gefundene Feature (MVX und MVy), der Orientierung MVo, der Krümmungsstärke MVKS, der Häufigkeit MVH, der Houghcore-Größe MVc-i und die Art der gefundenen Struktur MVA. Die detaillierte Bedeutung und der Wertebereich der einzelnen Elemente des Merkmalsvektors kann nach- folgender Tabelle entnommen werden.
Elemente des Hough-Merkmalsvektors, deren Bedeutung und Wertebereich.
Berechnung der Orientierung in Abhängigkeit der Bildrotation und des zur Transformation genutzten Houghcore-Typs.
Aus obigen Tabellen wird ersichtlich, dass die beiden Elemente MVQ und MVKS bei Geraden und Halbkreisen unterschiedliche Bedeutungen haben. Bei Geraden bildet die Kombination aus Orientierung und Krümmungsstärke den Lagewinkel des detektierten Geraden- abschnittes im Winkel von 0° bis 180°. Dabei adressiert die Orientierung einen Winkelbereich und die Krümmungsstärke steht für einen konkreten Winkel innerhalb dieses Bereiches. Je größer der Houghcore (genauer je mehr Houghcore-Spalten vorhanden sind), desto feiner ist die Winkelauflösung. Bei Halbkreisen steht die Orientierung für den Lagewinkel bzw. die Ausrichtung des Halbkreises. Halbkreise können prinzipbedingt nur in vier Aus- richtungen detektiert werden. Die Krümmungsstärke steht bei Halbkreiskonfigurationen für den Radius.
Neben der Orientierung MVo und der Krümmungsstärke MVKS ist bei den Koordinaten (MVx und MVy) eine weitere Besonderheit zu beachten (s. Fig. 9g). Bei Geraden sollen die Koordinaten immer den Mittelpunkt und bei Halbkreisen bzw. Krümmungen immer den Scheitelpunkt repräsentieren. Mit dieser Vorgabe kann die y-Koordinate entsprechend der implementierten Houghcore- Struktur korrigiert werden und ist unabhängig von der Größe der zur Transformation genutzten Konfiguration (s. Fig. 9f). Ähnlich einem lokalen Filter wird die y-Koordinate vertikal zentriert angegeben. Für die x-Koordinate wird ein Zusam- menhang über die Houghcore- Spalte hergestellt, die den Treffer geliefert hat (im Merkmalsvektor ist die Houghcore-Spalte unter der Bezeichnung MVKS abgelegt). In Abhängigkeit des Houghcore-Typs und der Bildrotation können Berechnungsvorschriften für drei verschiedene Fälle angegeben werden. Für einen Houghcore vom Typ 1 wird jeweils für das nichtrotierte und das rotierte Ausgangsbild auf Formel (B 1 7) zurückgegriffen. Liegt ein Houghcore vom Typ 2 vor muss in Abhängigkeit der Bildrotation auf Formel (B18) bzw. Formel (B19) zurückgegriffen werden.
(B17)
MVr = Bildbreite, MV
(B18)
MF = Bildbreite,. MV
12
(B 19)
Mit der Anweisung floor wird die gebrochen rationale Zahl abgerundet. Im FPGA entspricht das dem einfachen Abschneiden der binären Nachkommastellen. Nachdem die Orientierung bestimmt und die Koordinaten des Hough-Features korrigiert wurden, kann die eigentliche Merkmalsextraktion erfolgen.
Zur Merkmalsextraktion werden drei Schwellwcrte in Kombination mit einem non- maximumsuppression Operator genutzt. Der non-maximum-suppression Operator unterscheidet sich bei Geraden und Halbkreisen. Uber die Schwellwerte wird eine minimale MVKS und maximale Krümmungsstärke MV^ vorgegeben und eine minimale Häufigkeit MVH festgelegt. Der non-maximum-suppression Operator kann als lokaler Operator der Größe 3x3 betrachtet werden (s. Fig. 9h). Ein gültiges Merkmal für Halbkreise (bzw. Krümmungen) entsteht immer genau dann, wenn die Bedingung des nms-Operators in (B23) erfüllt ist und die Schwellwerte gemäß Formeln (B20) bis (B22) überschritten werden.
MVn > MV1
(B20)
MV > MV,
(B21 )
MV i >
mm22 MVH
(B22)
MV r H
nHms} ! A MV n"msi i A MV n"ms 5 MV nHms2 MV n"ms-, - MV n"m - t MV n"ms- ? MV n"ms- - MV n'ms-,
(B23)
Durch die non-maximum-suppression werden Hough-Features unterdrückt, die keine lokalen Maxima im Häufigkeitsraum der Merkmalsvektoren darstellen. Auf diese Weise werden Hough- Features unterdrückt, die keinen Beitrag zur gesuchten Struktur liefern und für die Nachverarbeitung irrelevant sind. Die Merkmalsextraktion wird nur noch über drei Schwellen parametrisiert, die im Vorfeld sinnvoll eingestellt werden können. Eine detaillierte Erläuterung der Schwel l werte ist nachfolgender Tabelle zu entnehmen.
Schwell wert Beschreibung Vergleichbarer Parameter des Verfahrens nach Katzmann
Schwellwert für eine minimale Häufigkeit, also einen Spalten- Hough- I hres summenwert, der nicht unterschritten werden darf.
MV«smm Schwellwert für eine minimale Krümmung des Hough-Features. Bottom-Line
Bei Houghcores mit Geradenkonfiguration bezieht sich die
Schwelle auf den vom Houghcore detektierten Winkelbereich.
Verhält: sich wie MVKS nur für eine maximale Krümmung. Top-Line
Detaillierte Beschreibung der drei Schwell werte zur Extraktion von Hough-Fcaturcs aus dem Houghraum. Im Vergleich zum Verfahren nach Katzmann sind Parameter mit ähnlicher Funktion angegeben.
Für Geraden kann ebenfalls ein non-maximum-suppression Operator der Größe 3x3 (s. Fig. 9h) hergeleitet werden. Dabei sind einige Besonderheiten zu beachten. Anders als bei den Krümmungen werden die gesuchten Strukturen bei den Geradenabschnitten nicht auf ein entstehen fortlaufend mehrere Maxima entlang des binären Kantenverlaufes. Die non- maximumsuppression kann somit an das Verfahren im Canny- Kantendetektionsalgorithmus angelehnt werden. Je nach Houghcore-Typ und detektiertem Winkelbereich können drei Fälle unterschieden werden (s. Fig. 9i in Kombination mit obiger Tabelle). Die Fallunterscheidung gilt sowohl für rotierte als auch nicht rotierte Ausgangsbilder, da die Rücktransformation rotierter Koordinaten erst nach der non-maximum- suppression erfolgt. Welcher nms-Operator zu verwenden ist hängt neben dem Houghcore- Typ auch vom Winkelbereich ab. Der Winkelbereich, den ein Houghcore mit Konfigurationen für Geraden liefert wird durch die Winkelbereichshalbierende geteilt. Die Winkelbe- reichshalbicrende kann als Houghcore-Spalte (dezimal gebrochen) angegeben werden ( MVKSI ^ ). Den mathematischen Zusammenhang in Abhängigkeit der Hougheore-Größe beschreibt Formel (B24). In welchem Winkelbereich das Hough-Fcature liegt richtet sich nach der Houghcore-Spalte, die den Treffer geliefert hat (MVKS), welche direkt mit der Winkelbereichshalbierenden Houghcore-Spalte verglichen werden kann. π
MVKS = tan
180 HoughcoreG'öße
(B24)
Hat man sich für einen Operator entschieden kann ähnlich der non-maximum-suppression für Krümmungen die Bedingung über den jeweiligen nms-Oprator abgefragt werden (Formeln (B25) bis (B27)). Sind alle Bedingungen erfüllt und werden zusätzlich die Schwell-
werte gemäß den Formeln (B20) bis (B22) überschritten, kann das Hough-Feature tion nms2,2 übernommen werden.
Entscheidung für einen nms-Operator in Abhängigkeit des Houghcore-Typs und des Win- kelbereichs, in dem der Treffer aufgetreten ist.
(MVn s > MVL ) MVnls > MVL )
(B25)
(MV " > MV " )A (MV" > MV " )
(B27) Den Abschluss der Merkmalsextraktion bildet die Rückrotation der x- und y-Koordinaten rotierter Hough-Features. Für die Nachverarbeitung sollten diese wieder im Bildkoordinatensystem vorliegen. Die Rüektransformation ist unabhängig vom Kurventyp (egal ob Geraden oder Krümmungen) immer dann auszuführen, wenn das rotierte Ausgangsbild verarbeitet wird. In den Formeln (B28) und (B29) ist der mathematische Zusammenhang be- schrieben. Mit Bildbreite ist die Breite des nicht rotierten Ausgangsbildes gemeint.
MVY = MV
(B28) MV = Bildbreite- MV y„r,„
(B29)
Mit Hilfe der Merkmalsextraktion ist es möglich die Ergebnisdaten der parallelen Hough- Transforrnation bis auf wenige Punkte zu reduzieren. Diese können dann als Merkmalsvektor an die Nachverarbeitung übergeben werden.
Die oben beschriebenen Ausführungsbeispiele stellen lediglich eine Veranschaulichung der Prinzipien der vorliegenden Erfindung dar. Es versteht sich, dass Modifikationen und Variationen der hierin beschriebenen Anordnungen und Einzelheiten anderen Fachleuten einleuchten werden. Deshalb ist beabsichtigt, dass die Erfindung lediglich durch den Schutz- umfang der nachstehenden Patentansprüche und nicht durch die spezifischen Einzelheiten, die anhand der Beschreibung und der Erläuterung der Ausführungsbeispiele hierin präsentiert wurden, beschränkt sei.