03.01.2013 Aufrufe

Schriftliche Ausarbeitung herunterladen

Schriftliche Ausarbeitung herunterladen

Schriftliche Ausarbeitung herunterladen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!