Schriftliche Ausarbeitung herunterladen
Schriftliche Ausarbeitung herunterladen
Schriftliche Ausarbeitung herunterladen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
50 KAPITEL 4. IMPLEMENTIERUNG<br />
Nach dieser Berechnung werden die Featurepunkte im Bild weiterverwendet, welche dem gefundenen<br />
„Fluchtpunkt“ am nächsten liegen.<br />
Weiterer Programmablauf: Unabhängig vom Berechnungsverfahren werden die gefundenen Featurepunkte<br />
solange im Bild verfolgt, bis diese nicht mehr gefunden werden oder sie ihren Quadranten<br />
verlassen haben (siehe Abschnitt 3.2.3, Wiederverwendung der Messpunkte). Auf diese Weise muss<br />
die rechenintensive Auswahl der Messpunkte nicht in jedem Durchlauf durchgeführt werden. So bleibt<br />
trotz kontinuierlicher Neuberechnung der eigenen Position noch Rechenleistung, um andere Objekte,<br />
wie verschiebbare Hindernisse, im Raum zu erkennen. Für diesen Zweck ist zunächst der aktuelle Aufenthaltsraum<br />
der virtuellen Kamera im Modell zu bestimmen.<br />
4.3.2 Positionsbestimmung der virtuellen Kamera<br />
Wechselt der blinde Benutzer seinen Aufenthaltsraum, so wird diese Raumänderung auch im Modell<br />
nachvollzogen. Eine einfache Möglichkeit zu bestimmen, in welchem Raum sich die virtuelle Kamera<br />
befindet, ist über ein Picking-ähnliches Verfahren implementiert. Die tvRoomFinder-Klasse berechnet<br />
die Schnittpunkte eines vom Mittelpunkt der Kamera senkrecht nach unten gehenden Strahls mit der<br />
Szene. Das erste getroffene Objekt liefert gemäß der Namenskonvention (raum_*, flur_* oder treppenhaus_*)<br />
(siehe Abschnitt 4.2.1) den Namen des aktuellen Aufenthaltsraumes. Der entsprechende<br />
Szenengraph Knoten wird zurückgegeben und ermöglicht die Extraktion des Raumnamens und der im<br />
Raum enthaltenen Geometrie.<br />
4.4 Erkennung von verschiebbaren, modellierten Objekten<br />
Neben der kontinuierlichen Neuberechnung der eigenen Position kann über den Locator nach verschiebbaren,<br />
modellierten Objekten im Bild gesucht werden. Auf diese Weise ist es möglich, das Modell<br />
anhand der gefundenen Objektpositionen aktuell zu halten. Die tvObjectDetector-Klasse implementiert<br />
den in Abschnitt 3.2.4 vorgestellten Ansatz zur farb- und formbasierten Erkennung von Objekten. Durch<br />
Vererbung kann dieses allgemeine Objekterkennungsverfahren auf die Detektion spezieller Objekte wie<br />
zum Beispiel Stühle zugeschnitten werden.<br />
Der ObjektDetector segmentiert in einem ersten Schritt Regionen im Bild. Die cvFloodFill() Funktion<br />
wird hierfür in diskreten Abständen im unteren Drittel des Bildes aufgerufen. Eine gefüllte Region<br />
wird dann als Binärbild zurückgegeben. Die Beschränkung auf das untere Bilddrittel ist in diesem Fall<br />
möglich, da nur nach Objekten am Boden gesucht werden soll. Sie reduziert den Aufwand der Suche<br />
auf diese Weise um zwei Drittel. Zur Bestimmung der Farbe wird das Kamerabild in den Lab-Farbraum<br />
konvertiert und der Farbwert des gefundenen Bereichs gemittelt. Dieser wird zusammen mit dem gemittelten<br />
Lab-Farbwert der Umgebung an den nach Hub [15] implementierten Farbklassifizierungsalgorithmus<br />
(colorClassifier()) übergeben. Der Name der ermittelten, wahrgenommenen Farbe kann dann mit<br />
dem Farbnamen der in Abschnitt 3.2.4 entworfenen Modellbeschreibung verglichen werden.<br />
Stimmt der aus dem Kamerabild ermittelte Farbname mit dem Farbnamen der Modellbeschreibung überein,<br />
so wird nach der Maskierung des Farbbildes über den logischen Und-Operator mit dem Binärbild<br />
der gefüllten Region, das Histogramm berechnet. In OpenCV steht für den Vergleich zweier Histogram-