03.01.2013 Aufrufe

Schriftliche Ausarbeitung herunterladen

Schriftliche Ausarbeitung herunterladen

Schriftliche Ausarbeitung herunterladen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Institut für Visualisierung und Interaktive Systeme<br />

Universität Stuttgart<br />

Universitätsstraße 38<br />

D–70569 Stuttgart<br />

Diplomarbeit Nr. 2325<br />

Bildbasierte Positionserkennung<br />

und Aktualisierung von<br />

modellierten Objekten in Gebäuden<br />

Tim Hartter<br />

Studiengang: Informatik<br />

Prüfer: Prof. Dr. Thomas Ertl<br />

Betreuer: Dr. Andreas Hub<br />

begonnen am: 20. April 2005<br />

beendet am: 20. Oktober 2005<br />

CR-Klassifikation: H.5.2, I.2.10, I.3.7, I.4.1, I.4.3, I.4.6, I.4.7,<br />

I.4.8, I.6.8, K.3.1, K.4.2


Ich danke meinem Betreuer, Dr. Andreas Hub, für seine Unterstützung<br />

bei der Verfassung dieser Arbeit.<br />

Bedanken möchte ich mich auch bei Reinhard Lafrenz für die<br />

zahlreichen Tipps in Fragen der Bildanalyse und des Bildverstehens.<br />

Zudem möchte ich mich bei meiner Mutter für die Hilfe bei der<br />

Korrektur der schriftlichen <strong>Ausarbeitung</strong> herzlich bedanken.


Inhaltsverzeichnis<br />

1 Einleitung 1<br />

1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.3 Gliederung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

2 Grundlagen 3<br />

2.1 Grundlagen der Bildverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

2.1.1 Featurepunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

2.1.2 Kalibrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

2.1.3 Rektifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.1.4 Stereodisparität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.1.5 Linienerkennung durch Hough-Transformation . . . . . . . . . . . . . . . . . . 8<br />

2.1.6 Farbmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.1.7 Regiongrowing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.2 Stand der Forschung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.3 Vorarbeiten und verwendete APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.3.1 Farbklassifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.3.2 Navigation Assistance System (NAS) . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.3.3 Stereo Vision based Object Distance Estimation in 3D Environment Models . . . 14<br />

2.3.4 Rapid Object Detection using Haar-like Features . . . . . . . . . . . . . . . . . 14<br />

2.3.5 Lucas-Kanade Optical Flow in Pyramids . . . . . . . . . . . . . . . . . . . . . 15<br />

2.3.6 Microsoft DirectX 9.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.3.7 NI-IMAQ for IEEE 1394 Cameras . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.3.8 Intel Open Source Computer Vision Library (OpenCV) . . . . . . . . . . . . . . 15<br />

2.3.9 OpenSceneGraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.3.10 Microsoft Foundation Classes (MFC) . . . . . . . . . . . . . . . . . . . . . . . 16<br />

3 Lösungsentwurf 17<br />

3.1 Problembeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

3.2 Lösungsansatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.2.1 Aufbau des Sensormoduls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.2.2 Positionsbestimmung der Kamera . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

3.2.3 Auswahl geeigneter Messpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

3.2.4 Detektion von verschiebbaren, modellierten Objekten . . . . . . . . . . . . . . . 28<br />

3.2.5 Aktualisierung des Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

I


II INHALTSVERZEICHNIS<br />

4 Implementierung 35<br />

4.1 Sensordatenerfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

4.1.1 Ansteuerung der Kameras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

4.1.2 Berechnung der Stereodisparitätsbilder . . . . . . . . . . . . . . . . . . . . . . 37<br />

4.1.3 Verwendung eines selbstsynchronisierenden Stereokameramoduls . . . . . . . . 41<br />

4.1.4 Verfahren zur Berechnung der Stereobilder . . . . . . . . . . . . . . . . . . . . 42<br />

4.1.5 Ansteuerung des Xsens Motion Trackers . . . . . . . . . . . . . . . . . . . . . 43<br />

4.2 Bereitstellung der Modelldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

4.2.1 Erstellung des Gebäudemodells mit 3D Studio Max . . . . . . . . . . . . . . . . 44<br />

4.2.2 Darstellung des Gebäudemodells . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

4.3 Positionsbestimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

4.3.1 Bestimmung geeigneter Messpunkte . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

4.3.2 Positionsbestimmung der virtuellen Kamera . . . . . . . . . . . . . . . . . . . . 50<br />

4.4 Erkennung von verschiebbaren, modellierten Objekten . . . . . . . . . . . . . . . . . . 50<br />

4.5 Aktualisierung des 3D-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

5 Ergebnisse 53<br />

5.1 Hardwarekomponenten des Navigationsassistenten . . . . . . . . . . . . . . . . . . . . 53<br />

5.2 Distanzmessung über Stereokamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

5.3 Selbstlokalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

5.4 Lokalisierung von verschiebbaren Objekten . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

5.5 Performancemessung der Navigationssoftware . . . . . . . . . . . . . . . . . . . . . . . 61<br />

6 Diskussion 63<br />

6.1 Bewertung der Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

7 Zusammenfassung 65<br />

A Bedienungsanleitungen 67<br />

A.1 Kalibrierungs-Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

A.2 Rektifizierungs-Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

A.3 Navigationssoftware - Locator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

A.3.1 Lernen einer Objektbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

Literaturverzeichnis 73<br />

Abbildungsverzeichnis 77


Kapitel 1<br />

Einleitung<br />

1.1 Motivation<br />

Die Navigation in unbekannten Gebäuden stellt für Blinde eine große Herausforderung dar. Hier fehlt<br />

ihnen die Kenntnis der genauen Gebäudespezifikationen, über die sie sich üblicherweise in einer bekannten<br />

Umgebung orientieren. Da Informationen, die über gängige Hilfsmittel wie den Blindenstock<br />

erfasst werden können sehr begrenzt sind, wird heutzutage versucht, über elektronische Navigationshilfen<br />

weitere Gebäudedetails zur Verfügung zu stellen. Diese sollen durch die Angabe kontextbezogener<br />

Gebäudeinformationen helfen, auch schwierige Aufgaben wie das Finden eines bestimmten Raumes<br />

ohne fremde Hilfe zu bewältigen.<br />

Am Institut für Visualisierung und Interaktive Systeme werden zu diesem Zweck im Rahmen des Sonderforschungsbereiches<br />

Nr. 627 (Nexus Projekt) im Teilprojekt D2 Orientierungsassistenten für Blinde<br />

entwickelt. Ein Teilziel dieses Projektes ist es, den Aufenthaltsort einer blinden Person zu ermitteln. Die<br />

genaue Bestimmung der Position eines portablen Sensormoduls in Innenräumen kann genutzt werden,<br />

um die Navigation des Blinden zu unterstützen, und die Erkennung von Objekten durch Vergleiche mit<br />

einem 3D-Gebäudemodell ermöglichen.<br />

Die hier vorgestellte Arbeit zeigt, wie unter Zuhilfenahme einer Stereokamera und eines Intertialsensors<br />

(Orientierungssensor) die eigene Position bestimmt und die Abstände zu modellierten, verschiebbaren<br />

Objekten berechnet werden können um so den Blinden bei der Navigation durch das Gebäude zu unterstützen.<br />

1.2 Voraussetzungen<br />

Der vorgestellte Ansatz beschränkt sich auf die Navigation in Gebäuden. Diese müssen als 3D-Gebäudemodell<br />

vorhanden sein und alle festen und verschiebbaren Einrichtungsgegenstände des Gebäudes enthalten.<br />

Zudem wird vorausgesetzt, dass der aktuelle Aufenhaltsraum des Benutzers bekannt ist und die vom<br />

Inertialsensor abgefragte Orientierung korrekt ist.<br />

1


2 KAPITEL 1. EINLEITUNG<br />

1.3 Gliederung<br />

Diese Diplomarbeit gliedert sich wie folgt. Kapitel 2 beschreibt die Grundlagen und Vorarbeiten, die<br />

als Ressourcen für diese Arbeit herangezogen wurden. Kapitel 3 stellt die Problemstellung und den<br />

verwendeten Lösungsansatz vor. In der Implementierung (Kapitel 4) werden die zur Lösung der Aufgabe<br />

implementierten Methoden näher beschrieben. Kapitel 5 stellt die Ergebnisse einiger Selbst- und<br />

Objektlokalisierungstests dar. Diese werden in Kapitel 6 diskutiert und ein Ausblick auf mögliche Verbesserungen<br />

gegeben. Die Arbeit schließt mit einer kurzen Zusammenfassung der gewählten Methoden<br />

und Ergebnisse in Kapitel 7.


Kapitel 2<br />

Grundlagen<br />

Dieses Kapitel befasst sich mit den Grundlagen und Vorarbeiten, die als Basis für die hier vorgestellte<br />

Arbeit verwendet wurden. Es beschreibt den Stand der Forschung und die zur Lösung der Aufgabenstellung<br />

in Frage kommenden Verfahren. Diese sind zur Lösung von einzelnen Teilproblemen der<br />

Aufgabenstellung (nach Anpassung an das Projekt) geeignet. Im folgenden Kapitel wird ein Entwurf<br />

vorgestellt, der eine mögliche Kombination der Teillösungen vorschlägt und die Struktur des zu implementierenden<br />

Verfahrens vorstellt.<br />

2.1 Grundlagen der Bildverarbeitung<br />

Zum Verständnis dieser Arbeit, welche die Entwicklung eines bildbasierten Navigationsassistenten beschreibt,<br />

ist die Kenntnis der in den nächsten Abschnitten erklärten Grundlagen der Bildverarbeitung<br />

erforderlich.<br />

2.1.1 Featurepunkte<br />

Als Featurepunkte werden in der Bildverarbeitung Stellen im Bild bezeichnet, welche besondere Merkmale<br />

aufweisen. Besonders geeignete Bildmerkmale sind Ecken und Kanten im Graustufenbild. Diese<br />

sind kaum von Farbverzerrungen bei der Bilderfassung abhängig und können für die unterschiedlichsten<br />

Aufgaben in der Bildverarbeitung eingesetzt werden, wie zum Beispiel<br />

• Ausrichtung von Bildern<br />

• 3D Rekonstruktion<br />

• Verfolgung von Bewegungen<br />

• Objekterkennung<br />

• Roboternavigation<br />

• Suche in Bilddatenbanken<br />

3


4 KAPITEL 2. GRUNDLAGEN<br />

Harris und Stephens stellen in [1] ein Verfahren zur Erkennung von Kanten und Ecken vor, in dem die<br />

Hessematrix in einer Nachbarschaftsumgebung um jeden Bildpunkt berechnet wird.<br />

⎡<br />

⎢<br />

⎣<br />

∑<br />

Nachbarscha ft<br />

∑<br />

Nachbarscha ft<br />

� �2 δI<br />

δx<br />

� �<br />

δ2I δxδy<br />

� �<br />

δ2I ∑ δxδy<br />

Nachbarscha ft<br />

∑<br />

Nachbarscha ft<br />

� δI<br />

δy<br />

� 2<br />

⎤<br />

⎥<br />

⎦ , Intensität I (2.1)<br />

Aus dieser ergeben sich die Eigenwerte λ1,λ2 für jeden Bildpunkt. Bildpunkte an Kanten zeichnen<br />

sich durch einen großen Eigenwert λ1 oder λ2 aus. An diesen Stellen ändert sich in einer Richtung<br />

die Helligkeit sehr stark. Ecken im Bild zeichnen sich hingegen durch starke Änderungen in beiden<br />

Dimensionen aus. Die zugehörigen Eigenwerte sind näherungsweise gleich groß.<br />

� 2<br />

� 1<br />

Nachbarschaft<br />

a) Eigenwerte an Kanten λ2 >> λ1<br />

� 2<br />

� 1<br />

b) Eigenwerte an Ecken λ1 ≈ λ2<br />

Abbildung 2.1: Verhältnis von Eigenwerten an Kanten und Ecken, (a) zeigt die Eigenwerte an einer<br />

Bildkante, diese beschreiben aufgrund ihrer unterschiedlichen Größe eine Ellipse. In<br />

(b) sind die Eigenwerte einer Ecke dargestellt, diese sind näherungsweise gleich groß<br />

und bilden somit einen rotationsinvarianten Kreis.<br />

Aufgrund der Rotationsinvarianz ihrer Eigenwerte stellen sich Ecken im Graustufenbild als besonders<br />

gut zu verfolgende Merkmale heraus. Diese können durch eine „Nicht-Maxima-Unterdrückung“ (nonmaxima-suppression)<br />

anhand eines Grenzwertes λ gefiltert werden (min(λ1,λ2) > λ) und ergeben so die<br />

zur Weiterverfolgung am besten geeigneten Featurepunkte des Bildes. Eine ausführlichere Beschreibung<br />

des „Harris Edge Detectors“ findet sich unter [2].<br />

2.1.2 Kalibrierung<br />

Bei jeder Kamera entstehen durch die zur Abbildung verwendete Linse Verzerrungen im aufgenommenen<br />

Kamerabild (sphärische Aberration). Durch diesen Effekt erscheinen Geraden im Kamerabild nicht<br />

mehr als Geraden, sondern weisen eine starke konzentrische Krümmung auf. Die Stärke der Verzerrung<br />

hängt hauptsächlich vom Öffnungswinkel der verwendeten Kamera ab und ist in Abbildung 2.2 für eine<br />

Kamera mit starkem Weitwinkelobjektiv abgebildet.


2.1. GRUNDLAGEN DER BILDVERARBEITUNG 5<br />

Unter der Kalibrierung einer Kamera versteht man die Berechnung einer Entzerrungsmatrix aus den<br />

für die Verzerrungen verantwortlichen Kameraparametern. Über diese kann das verzerrte Bild korrigiert<br />

werden. Die Kameraparameter gliedern sich in die kameraspezifischen, intrinsischen Parameter:<br />

• Fokale Länge ( fx, fy), Abstand zwischen Linse und Bildebene in X-/Y-Richtung)<br />

• Position des Bildmittelpunktes in Pixelkoordinaten (cx,cy)<br />

und die räumlichen Zusammenhänge zwischen Kamera und Weltkoordinaten, den extrinsischen Parametern:<br />

• Rotationsmatrix (R)<br />

• Translationsvektor (�t)<br />

Für die Abbildung der Koordinaten eines Punktes M im Raum auf die Bildkoordinaten m gilt nach [3]<br />

folgende Vorschrift:<br />

m = A[R�t]M (2.2)<br />

wobei sich A aus den intrinsischen Parametern der Kamera wie folgt zusammensetzt:<br />

⎡<br />

A = ⎣<br />

fx 0 cx<br />

0 fy cy<br />

0 0 1<br />

⎤<br />

⎦ (2.3)<br />

Zur Berechnung der gesuchten Parameter kann der von Zhang vorgestellte Algorithmus [4] verwendet<br />

werden, der über die Präsentation eines bekannten Musters aus verschiedenen Positionen (Abbildung<br />

2.2 (a)-(c)) alle für die Entzerrung des Bildes notwendigen Daten berechnet, indem die intrinsischen<br />

und extrinsischen Parameter so lange variiert werden, bis der Fehler zwischen realer und optimaler<br />

Abbildung des Musters (d) minimal ist.<br />

a) b) c) d)<br />

Abbildung 2.2: Kamerakalibrierung über Schachbrettmuster nach Zhang. Die Kamera nimmt ein<br />

Schachbrettmuster aus unterscheidlichen Positionen (a)-(c) auf. Dieses wird mit der<br />

optimalen Abbildung des Musters (d) verglichen um die Kameraparameter zu berechnen.


6 KAPITEL 2. GRUNDLAGEN<br />

2.1.3 Rektifizierung<br />

Nach der im letzten Abschnitt beschriebenen Kalibrierung der Kamera erscheinen ursprüngliche Geraden<br />

in den entzerrten Bildern wieder als solche. Für die Abbildung eines Punktes M im Raum auf<br />

den CCD-Chip einer Kamera, wie sie in Abbildung 2.3 (a) dargestellt ist, gilt Gleichung 2.2. Bei Verwendung<br />

einer Stereokamera gilt diese Abbildungsvorschrift für beide Kameras. Zur Vereinfachung der<br />

Berechnung eines Stereodisparitätsbildes aus den beiden Einzelbildern der Kameras sorgt man durch die<br />

Rektifizierungstransformation dafür, dass die beiden Abbildungen des Punktes M, wie in Abbildung 2.3<br />

(b) gezeigt, auf einer Geraden, der sogenannten Epipolarlinie zu liegen kommen. Diese Linie ist über<br />

den Bildpunkt m und die nach Gleichung 2.2 in die Bildebene projizierte Position der jeweils anderen<br />

Kamera festgelegt. Durch Angabe einiger korrespondierender Punkte beider Kamerabilder kann die zur<br />

Rektifizierung notwendige Rektifizierungstransformation für jede Kamera berechnet werden. Diese entspricht<br />

einer Rotation beider Kameras, bis die Blickrichtungen parallel sind und die Epipolarlinien, wie<br />

in Abbildung 2.3 (c) gezeigt, aufeinander liegen. Eine ausführliche Beschreibung dieser Berechnung<br />

findet sich in [5].<br />

a) b)<br />

c)<br />

⇓ Rektifizierung ⇓<br />

Abbildung 2.3: Epipolarlinien nach [6]. Durch die Rektifizierungstransformation werden die beiden<br />

Kameras aus (b) so ausgerichtet, dass ihre Blickrichtungen parallel sind und zugehörige<br />

Scanlines der Kamerabilder aufeinander liegen. Bild (c) zeigt die Bildebenen nach der<br />

Rektifizierung.


2.1. GRUNDLAGEN DER BILDVERARBEITUNG 7<br />

2.1.4 Stereodisparität<br />

Die Stereodisparität ist ein Maß für den Abstand eines Punktes M von einer Stereokamera. Sie entspricht<br />

dem Abstand d zwischen den zueinander gehörigen Projektionen (m,m ′ ) des Punktes M aus Abbildung<br />

2.3 (c) und berechnet sich über die Formel:<br />

d = |mm ′ | (2.4)<br />

Nach Li [7] gilt hierbei, dass weit entfernte Punkte einen kleinen, und nahe Punkte einen großen Disparitätswert<br />

ergeben. Die Abbildungen der Punkte rücken auseinander, je näher dieser an der Stereokamera<br />

liegt.<br />

Die Stereodisparität wird dazu verwendet, ein Tiefenbild aus den zwei Einzelbildern einer Stereokamera<br />

zu berechnen, indem Featurepunkte des linken Bildes denselben Features im rechten Bild zugeordnet<br />

werden. Dies wird durch die vorangehende Rektifizierung der Kamerabilder vereinfacht, da sichergestellt<br />

ist, dass sich zueinander gehörige Merkmale auf derselben Scanline im Bild befinden. Somit muss<br />

nur in einer Dimension nach dem zugehörigen Bildpunkt gesucht werden. Berechnungslücken im Disparitätsbild<br />

können durch homogene Flächen entstehen, da diese keine Featurpunkte enhalten. Für die<br />

Disparitätsberechnung müssen die Einzelbilder möglichst zeitgleich aufgenommen werden, da sonst<br />

bei Bewegungen ein zusätzlicher Versatz zwischen den Bildern entstehen kann, der den Disparitätswert<br />

verfälscht. Die Begrenzung der Suche auf diskrete Abstandsstufen (Disparitätsstufen) kann den Rechenaufwand<br />

begrenzen.<br />

Linke Kamera Rechte Kamera Disparitätsbild<br />

mit 16 Stufen<br />

Abbildung 2.4: Durch Vergleiche der Abstände korrespondierender Features im linken und rechten Kamerabild<br />

kann für diese ein Disparitätswert berechnet und im Disparitätsbild dargestellt<br />

werden. Hierbei werden nahe Objekte hell und entfernte dunkel dargestellt.<br />

Aus der fokalen Länge f und dem Abstand B zwischen den Mittelpunkten der Kameras lässt sich folgender<br />

Zusammenhang zwischen Disparitätswert d und dem Abstand Z zu einem Objekt in der Szene<br />

anhand Abbildung 2.4 (c) über den Strahlensatz herleiten:<br />

d f<br />

=<br />

B Z<br />

Somit gilt für die Distanz eines Bildpunktes mit Disparitätswert d<br />

(2.5)


8 KAPITEL 2. GRUNDLAGEN<br />

Z =<br />

f B<br />

d<br />

X = (xc − x)Z<br />

f<br />

Y = (yc − y)Z<br />

f<br />

wobei (xc,yc) die Koordinaten des Bildmittelpunktes sind. Aus den drei Raumkoordinaten berechnet<br />

sich der Abstand zu einem Punkt P(X,Y,Z) im Raum als Länge z des Ortsvektors �p.<br />

2.1.5 Linienerkennung durch Hough-Transformation<br />

(2.6)<br />

(2.7)<br />

(2.8)<br />

z = |�p| =<br />

�<br />

X 2 +Y 2 + Z2 (2.9)<br />

Die Linienerkennung wird in der Bildanalyse oft eingesetzt, um grobe Strukturen aus Bildern zu extrahieren.<br />

Bevor in einem Bild Linien gesucht werden, wird üblicherweise zunächst ein Kantenbild<br />

berechnet. Als sehr geeignetes Verfahren steht hier der Canny Edge Detector [8] zur Verfügung. Andere<br />

Verfahren wie der Sobel Operator oder die Laplace Transformation führen ebenfalls zu guten Ergebnissen.<br />

Die Hough-Transformation ermöglicht eine Erkennung kollinearer Punkte im berechneten Kantenbild,<br />

indem die Geradengleichung y = mx + c nach c aufgelöst wird. Somit beschreibt jeder Punkt (x,y) im<br />

Bild eine Gerade im Hough-Raum (m,c) über:<br />

c = −mx + y (2.10)<br />

Es lässt sich zeigen, dass alle Hough-Geraden, die sich in einem Punkt (xi,yi) schneiden, im Bild auf<br />

einer Geraden liegen. Gleichung 2.10 lässt allerdings keine Darstellung senkrechter Geraden zu, da hier<br />

m = ±∞ wäre. Um diese Geraden ebenfalls darstellen zu können, werden die Hough-Geraden über<br />

folgende Parametrisierung als Punkte im (r,θ) Raum dargestellt.<br />

r = x ∗ cos(θ) + y ∗ sin(θ) (2.11)<br />

Hierbei ist�r der Normalenvektor auf die darzustellende Gerade mit Abstand r vom Ursprung und dem<br />

Winkel θ zur m-Achse (siehe Abbildung 2.5). Auf diese Weise können auch senkrechte Geraden (θ =<br />

±180 ◦ ) dargestellt werden.<br />

Durch die Transformation aller Punkte des Kantenbildes in den Hough-Raum ist es nun möglich, Geraden<br />

im Bild zu erkennen. Diese stellen sich, wie in [9] näher beschrieben wird, als häufige Treffer<br />

desselben Punktes in der (θ,r)-Ebene dar.


2.1. GRUNDLAGEN DER BILDVERARBEITUNG 9<br />

c<br />

r 0<br />

Θ 0<br />

g<br />

m<br />

a) Gerade im Hough-Raum b) Gerade als Punkt in der (θ,r)-Ebene<br />

Abbildung 2.5: Gerade-zu-Punkt-Transformation zur Darstellung von vertikalen Geraden. Diese Transformation<br />

wird eingesetzt, um Geraden im Hough-Raum als Punkte darzustellen. Die<br />

Erkennung von Geraden im Bild nutzt die Tatsache, dass in Hough-Geraden transformierte<br />

Bildpunkte, welche auf einer Geraden liegen, durch denselben Punkt in der<br />

(θ,r)-Ebene repräsentiert werden.<br />

2.1.6 Farbmodelle<br />

Üblicherweise werden Bilder im Computer als Folge von Rot, Grün und Blau (RGB) Werten gespeichert,<br />

da diese Repräsentation mit den Farbkanälen des Ausgabemediums (Bildschirm) übereinstimmt.<br />

Da sich Helligkeitsunterschiede auf alle drei Farbkanäle auswirken, empfiehlt sich, zur späteren Selektion<br />

eines bestimmten Farbbereichs, eine Konvertierung in einen Farbraum, der die Helligkeitsinformationen<br />

von den Sättigungs- und Farbtonwerten trennt und somit die Selektion eines bestimmten<br />

Farbbereichs zulässt.<br />

HSV Farbraum<br />

Im HSV Farbmodell werden Farben durch Helligkeit (Value), Sättigung (Saturation) und Farbton (Hue)<br />

beschrieben. Dies entspricht dem Blick entlang der Diagonalen in Abbildung 2.6 (a) von Schwarz nach<br />

Weiß und ergibt die sogenannte HSV-Farbpyramide (b).<br />

Lab Farbraum<br />

Der Lab-Farbraum (auch L*a*b-Farbraum) ist ein von der Commission Internationale d’Eclairage (CIE)<br />

1976 entwickeltes Farbmodell. Neben dem HSV-Modell eignet sich der Lab-Farbraum besonders gut zur<br />

wahrnehmungsorientierten Selektion von Farben, da er an die menschliche Farbwahrnehmung angepasst<br />

und geräteunabhängig ist. Im Lab-Raum werden die drei Farbkanäle (RGB) auf einen Helligkeitswert<br />

(L), einen rot-grün Wert (a) und einen blau-gelb Anteil (b), wie in [10] näher beschrieben wird, aufgeteilt.<br />

Abbildung 2.7 zeigt die Farbanteile bei unterschiedlichen Luminanzwerten.<br />

r 0<br />

r<br />

Θ 0<br />

Θ


10 KAPITEL 2. GRUNDLAGEN<br />

a) RGB Farbwürfel b) HSV-Farbpyramide<br />

Abbildung 2.6: RGB-Würfel und HSV-Farbmodell. Das HSV-Modell ergibt sich aus dem Blick entlang<br />

der Diagonalen von Schwarz nach Weiß im RGB-Würfel und eignet sich besonders<br />

zur wahrnehmungsorientierten Selektion von Farbtönen in Bildern, da hierfür nur ein<br />

bestimmter Winkelbereich H betrachtet werden muss.<br />

25 % Luminanz 50 % Luminanz 75 % Luminanz<br />

Abbildung 2.7: Lab-Farben für verschiedene Luminanzwerte. Die Farben erscheinen für gleiche Luminanzwerte<br />

in guter Näherung gleich hell. Luminanz Null entspricht Schwarz, eine<br />

Luminanz von 100 Prozent entspricht Weiß.


2.2. STAND DER FORSCHUNG 11<br />

2.1.7 Regiongrowing<br />

Als „Regiongrowing“ wird ein Verfahren bezeichnet, bei dem der Bereich um einen Startpunkt solange<br />

vergrößert wird, bis die Farbwerte größer als ein vorgegebener Schwellwert sind. Über dieses Verfahren<br />

ist es möglich, ausgehend von einem zufällig gewählten Startpunkt, Regionen ähnlicher Farbe im Bild<br />

zu finden und für die spätere Weiterverarbeitung zu markieren.<br />

Abbildung 2.8 (a) zeigt ein Beispielbild, für das in (b) ein Regiongrowing-Algorithmus verwendet wurde,<br />

um ausgehend vom Zentrum des Objektes das Objekt zu segmentieren.<br />

a) Beispielszene b) Markierung von Objekten durch Selektion<br />

Abbildung 2.8: Regiongrowing-Algorithmus zur farbtonbasierten Selektion. Die Objekte im Bild (a)<br />

werden von einem Startpunkt aus mit Farbe gefüllt, indem solange der Bereich um<br />

den Startpunkt mit einbezogen wird, bis sich die Farbwerte zu stark von denen des<br />

Startpunktes unterscheiden. Bild (b) zeigt die so segmentierten Bildbereiche.<br />

2.2 Stand der Forschung<br />

Die bisher veröffentlichten Verfahren zur Unterstützung von Blinden bei der Navigation konzentrieren<br />

sich auf die Lösung folgender Aufgaben.<br />

• Bestimmung der eigenen Position<br />

• Erkennung von Objekten in der Umgebung<br />

• Erkennung von Hindernissen / Gefahren<br />

• Navigation<br />

Häufig wird nur einer dieser Aspekte durch bestehende Lösungen abgedeckt. Die folgenden Abschnitte<br />

beschreiben den Stand der Forschung in diesen Bereichen und machen die Notwendigkeit der Verbindung<br />

aller Teilgebiete zur Lösung der hier behandelten Aufgabe deutlich.


12 KAPITEL 2. GRUNDLAGEN<br />

Erkennung von Hindernissen<br />

Der von Ulrich et al. vorgestellte GuideCane [11] ermöglicht es Hindernissen auszuweichen, aber nicht<br />

die zielgerichtete Leitung des Blinden zu einem gesuchten Raum im Gebäude, da die Information über<br />

die eigene Position fehlt und nur auf Objekte im direkten Umfeld des Benutzers reagiert wird. Da diese<br />

Objekte nur als Hindernisse erkannt werden, bleiben Informationen wie der Zustand von Türen unberücksichtigt.<br />

Erkennung der eigenen Position<br />

Projekte wie das Signpost-Projekt von Studierstube [12], welches die Positionsbestimmung ebenfalls<br />

über Stereokamera und Inertialsensor realisiert, sowie das von Chaitanya et al. in [13] vorgestellte System<br />

zur Navigation anhand von RFID-Tags verwenden Landmarken zur Selbstlokalisation. Sie setzen<br />

deshalb eine mit Markierungen präparierte Umgebung voraus, auf die in diesem Ansatz komplett verzichtet<br />

werden sollte. Die Lösungen aus der Robotik kommen oft auch ohne diese Präparationen aus,<br />

verwenden aber Ultraschall- oder Lasermessgeräte, um ihre eigene Position im Raum zu bestimmen.<br />

Diese sind mit diversen Problemen behaftet. Laserlicht wird von bestimmten Materialien stark gestreut<br />

oder nicht reflektiert. Bei Ultraschall ist die Interpretation reflektierter Signale häufig vieldeutig.<br />

Kombrink stellt in seiner Diplomarbeit [14] einen Ansatz vor über den die Position eines Inertialsensors<br />

durch die Messung von Beschleunigungen, welche bei der Bewegung auftreten, berechnet werden kann.<br />

Dieser Ansatz setzt keine Marker in der Umgebung voraus, ist aber anfällig für magnetischen Störungen,<br />

da diese aufgrund fehlender weiterer Sensoren kaum kompensiert werden können.<br />

Erkennung von Objekten in der Umgebung<br />

In der Umgebung von Blinden kommen häufig auch verschiebbare Objekte (wie zum Beispiel Stühle) als<br />

Hindernisse vor, deren Position im Modell nicht immer aktuell gehalten werden kann. Um die Position<br />

erkannter Objekte im Modell zu aktualisieren, wird die in der Robotik oft angewandte Erkennung anhand<br />

von Farbe und Form in diesem Ansatz mit einigen Erweiterungen weiterverwendet.<br />

Fazit<br />

Der hier vorgestellte Prototyp versucht, die Teillösungen der beschriebenen Ansätze zu kombinieren und<br />

durch „geschickt gewählte“ Vergleiche mit Modelldaten, allein aus Stereobild und Richtungssensor die<br />

eigene Position und die Beschaffenheit seiner Umgebung zu bestimmen. Dies ermöglicht dem blinden<br />

Benutzer die Navigation durch unbekannte Gebäude, ohne auf fremde Hilfe, schwere Sensorhardware<br />

oder eine speziell präparierte Umgebung angewiesen zu sein. In den nächsten Abschnitten werden Vorarbeiten<br />

und Application Programming Interfaces (APIs) beschrieben. In Kapitel 4 wird ihre Eignung<br />

zur Implementierung des Navigationsassistenten untersucht. Entsprechend ihrer Eignung werden sie zur<br />

Lösung einiger Teilaufgaben eingesetzt.


2.3. VORARBEITEN UND VERWENDETE APIS 13<br />

2.3 Vorarbeiten und verwendete APIs<br />

Dieser Abschnitt beschreibt die Vorarbeiten, die zur Lösung einiger Teilprobleme verwendet wurden<br />

und verweist auf die zur Implementierung eingesetzten Bibliotheken und APIs.<br />

2.3.1 Farbklassifizierung<br />

Hub und Teufel stellen in [15] ein Modell zur Klassifikation von Farben entsprechend der menschlichen<br />

Farbwahrnehmung vor. Dieses Modell basiert auf psychophysischen Experimenten zum simultanen<br />

Farbkonstrast und zur Farbbenennung und trägt dem Einfluss benachbarter Farben auf die wahrgenommene<br />

Farbe Rechnung. Es lässt sich auf reale Szenen anwenden, um die wahrgenommene Farbe<br />

einer Bildregion unabhängig vom Hintergrund zu bestimmen und lässt sich somit zur Suche nach Objekten<br />

mit bekannter Farbe in der Bildanalyse einsetzen.<br />

2.3.2 Navigation Assistance System (NAS)<br />

Hub et al. stellen in [16] den Prototyp eines Navigationsassistenten vor (siehe Abbildung 2.9). Dieser<br />

unterstützt Blinde bei der Navigation in Gebäuden und ermöglicht die Identifikation von Objekten durch<br />

Vergleiche mit einem 3D-Gebäudemodell. Die Positionsbestimmung im Gebäude ist in diesem Navigationsassistenten<br />

über ein Wireless-LAN (WLAN) Positionierungssystem realisiert. Anhand der Position<br />

des Benutzers können aus dem verwendeten Gebäudemodell Navigationshinweise abgeleitet und über<br />

eine Sprachausgabe an den blinden Benutzer weitergegeben werden. Die hier vorgestellte Diplomarbeit<br />

setzt auf diesem Prototyp auf und versucht, durch Einsatz einer selbstsynchronisierenden Stereokamera<br />

die Positionsbestimmung weiter zu verbessern.<br />

Abbildung 2.9: Prototyp eines Navigationsassistenten mit integrierter Kamera und Inertialsensor. Das<br />

Handgerät kann an einem Blindenstock befestigt werden. Die Bestimmung der eigenen<br />

Position wird bisher über das im angeschlossenen Laptop integrierte WLAN-Modul<br />

gelöst.


14 KAPITEL 2. GRUNDLAGEN<br />

Rogler stellt in ihrer Diplomarbeit [17] eine Designstudie vor, die den mobilen Navigationsassistenten<br />

komplett in einen Blindenstockgriff integriert (siehe Abbildung 2.10). Sie zeigt in ihrer Arbeit die Anforderungen<br />

auf, die zukünftige Navigationsassistenten erfüllen sollten, um Blinde möglichst unauffällig<br />

bei der Navigation zu unterstützen.<br />

Abbildung 2.10: Navigation Assistant System - Die Designstudie zeigt, wie in Zukunft die Sensoren in<br />

einen unauffälligen Blindenstockgriff integriert werden könnten.<br />

2.3.3 Stereo Vision based Object Distance Estimation in 3D Environment Models<br />

Li stellt in ihrer Studienarbeit [7] ein Verfahren zur Bestimmung von Objektdistanzen über die Stereodisparität<br />

in 3D-Modellen vor. Hierfür wird die Szene aus zwei kollinearen Kamerapositionen gerendert<br />

und auf diese Weise ein virtuelles Stereobildpaar erzeugt. Aus diesem kann über einen Stereoalgorithmus<br />

die Distanz zu Objekten in der Szene bestimmt werden. Der von Li verwendete Stereoalgorithmus<br />

basiert teilweise auf einer Implementierung der Carnegie Mellon Universität und benötigt auf dem verwendeten<br />

Testsystem bis zu zwei Sekunden für die Berechnung des Disparitätsbildes.<br />

2.3.4 Rapid Object Detection using Haar-like Features<br />

Lienhart et al. stellen in [18] ein Verfahren zur schnellen Erkennung von Objekten in Bildern vor (Rapid<br />

Object Detection). Sie erweitern hierfür die von Viola et al. in [19] zur Objekterkennung eingesetzte<br />

Menge der „Haar-Features“, um den Erkennungsprozess weiter zu beschleunigen. Obwohl Lienhart<br />

die Objektklassifizierung speziell zur Detektion von Gesichtern einsetzt, kann die auf dieser Arbeit<br />

aufbauende Implementierung in der OpenCV Bibliothek über die Vorlage von Beispielbildern, wie sie<br />

in [20] beschrieben wird, auch auf die Erkennung anderer Objekte trainiert werden. Auf diese Weise ist<br />

es möglich, viele Objekte im Bild über charakteristische Helligkeitsmerkmale zu erkennen.


2.3. VORARBEITEN UND VERWENDETE APIS 15<br />

2.3.5 Lucas-Kanade Optical Flow in Pyramids<br />

Es existieren diverse Verfahren zur Verfolgung des optischen Flusses (optical flow) in Bildern. Diese<br />

Arbeit verwendet das von Bouguet in [21] eingesetzte und in der OpenCV Bibliothek implementierte<br />

Verfahren zur Verfolgung von Featurepunkten über mehrere Bilder. Es wird eine iterative Anwendung<br />

des Lucas-Kanade Algorithmus [22] mit verschiedenen Suchfenstergrößen eingesetzt, um eine robuste<br />

Verfolgung der Features bei unterschiedlichen Flussgeschwindigkeiten zu realisieren.<br />

Die nächsten Abschnitte beschreiben die zur Implementierung herangezogenen APIs und begründen<br />

kurz ihre Eignung zur Entwicklung des Navigationsprototyps.<br />

2.3.6 Microsoft DirectX 9.0<br />

DirectX 9.0 ist eine von Microsoft zusammengestellte Sammlung von Application Programming Interfaces<br />

(APIs). Es wird zur Spieleprogrammierung und Entwicklung von Multimedia-Anwendungen<br />

eingesetzt. Neben der Unterstützung bei der Darstellung von 2D- und 3D-Grafik enthält DirectX die für<br />

diese Arbeit interessante DirectShow-API. Über diese können unter anderem Digitalkameras angesteuert<br />

und verwaltet werden.<br />

2.3.7 NI-IMAQ for IEEE 1394 Cameras<br />

National Instruments (NI) bietet als Zusatz zu Labview ein Bildverarbeitungsmodul zur Bildakquisition<br />

(image acquisition = imaq) und eine leicht bedienbare API für IEEE 1394 (Firewire) Digitalkameras<br />

an. Über die Integration der zugehörigen Treibersoftware in den Measurement & Automation Explorer<br />

bietet NI die Möglichkeit einer einfachen Treiberinstallation und Konfiguration der Kameras. Dank<br />

guter Beispielprogramme ist es über diese API sehr einfach, nicht nur Labview Programme, sondern<br />

auch C/C++ Applikationen zu schreiben, die eine Firewire Digitalkamera ansteuern.<br />

2.3.8 Intel Open Source Computer Vision Library (OpenCV)<br />

Die „Open Source Computer Vision Library“ (OpenCV) von Intel ist eine Sammlung von Algorithmen<br />

und Beispielprogrammen zu einer Vielzahl von Standardproblemen in der Bildverarbeitung. Diese<br />

Bibliothek eignet sich besonders zur Erstellung von Realtime-Anwendungen im Bereich der Bildanalyse<br />

und stellt die Implementierung einiger Lösungsansätze zur Objektidentifikation, Farbsegmentierung,<br />

Gesichtserkennung, Bewegungserfassung und Berechnung von Featurepunkten im Bild bereit.<br />

Die aktuelle Version 5b sowie die in dieser Arbeit eingesetzte Version 4b finden sich im SourceForge-<br />

Downloadbereich unter [23].<br />

2.3.9 OpenSceneGraph<br />

OpenSceneGraph ist ein plattformunabhängiges OpenSource Grafik-Toolkit zur Entwicklung hochperformanter<br />

Grafikanwendungen wie Flugsimulatoren, Spiele, Virtual Reality Simulationen und kann für


16 KAPITEL 2. GRUNDLAGEN<br />

wissenschaftliche Visualisierungen eingesetzt werden [24]. OpenSceneGraph basiert auf dem Szenengraphen-Konzept<br />

und bietet ein objektorientiertes Framework, welches den Programmierer von der Implementierung<br />

und Optimierung hardwarenaher Grafikbefehle befreit, indem es die Darstellung über<br />

die OpenGL-API vollständig übernimmt. Zudem bietet es viele zusätzliche Funktionen wie Kollisionserkennung<br />

und Schnittpunktberechnungen, welche dem Programmierer die Entwicklung von Grafikanwendungen<br />

erleichtern und so eine schnelle Implementierung unterstützen.<br />

Ein Szenengraph beschreibt den Aufbau von Szenen durch eine Baumstruktur. Diese wird von der Wurzel<br />

aus durch das Anhängen spezieller Knoten (Gruppierungs-, Transformations-, Farb-, Texturknoten)<br />

und Blättern (Geometrieknoten) hierarchisch aufgebaut und enthält alle Elemente der Szene. Er beschreibt<br />

auf diese Weise die räumliche Beziehung zwischen einzelnen Elementen und ihre Lage in der<br />

Szene. Aufgrund des hierarchischen Aufbaus ist eine schnelle Berechnung der im Viewing-Frustum liegenden<br />

Knoten und Blätter des Baumes und somit eine performante Darstellung der Szene möglich.<br />

Zudem können komplexe Objekte durch die Transformation ihres Vaterknotens auf einfache Weise verändert<br />

werden.<br />

2.3.10 Microsoft Foundation Classes (MFC)<br />

Die Microsoft Foundation Classes (MFC) sind eine Sammlung objektorientierter Klassenbibliotheken,<br />

die von Microsoft für das Betriebssystem Windows zur Programmierung windowsbasierter Anwendungen<br />

mit C++ entwickelt wurden.<br />

Die MFC dienen als Schnittstelle zu den nicht objektorientierten API-Funktionen des Betriebssystems<br />

und sollen den Umgang mit den vom Betriebssystem zur Verfügung gestellten Ressourcen erheblich<br />

vereinfachen. Ein Großteil der für Windows geschriebenen Programme nutzen die MFC zum Beispiel<br />

zur Darstellung von graphischen Oberflächen, wie sie auch in dieser Arbeit zur Implementierung der<br />

Kamerakalibrierungstools eingesetzt werden. Diese Oberfächen können in Microsofts Visual Studio<br />

.NET 2003 bequem über den Ressourcen-Editor gestaltet werden.


Kapitel 3<br />

Lösungsentwurf<br />

Dieses Kapitel beschreibt die Probleme, die gelöst werden müssen, um einen bildbasierten Navigationsassistenten<br />

auf Basis einer Stereokamera zu entwickeln. Es werden die Anforderungen an das System<br />

beschrieben und ein Lösungsansatz erarbeitet. Dieser ermöglicht die bildbasierte Positionsbestimmung<br />

und die Erkennung von Objekten auf aktueller, portabler Hardware. Auf die Implementierung der zur<br />

Lösung eingesetzten Klassen und Programme wird in Kapitel 4 näher eingegangen.<br />

3.1 Problembeschreibung<br />

Durch die Auswertung der über eine Sensoreinheit aufgenommenen Stereobild- und Richtungsdaten<br />

sollen blinde Benutzer genau an der Stelle unterstützt werden, an der sie durch ihre visuelle Beeinträchtigung<br />

bei der Navigation durch Gebäude gegenüber sehenden Menschen benachteiligt sind.<br />

Die Stereodisparität der Augen unterstützt sehende Menschen bei der Gewinnung von Informationen<br />

über Objektpositionen, Formen, Größenverhältnisse und Entfernungen. Zusätzlich kann über die farbempfindlichen<br />

Zapfen der Retina die Farbe der Objekte bestimmt werden. Diese Informationsgewinnung<br />

soll von einem tragbaren Navigationsassistenten übernommen werden, um die eigene Position im Gebäude<br />

und die Beschaffenheit der Umgebung an den blinden Benutzer weitergeben zu können, um ihm<br />

auf diese Weise die Navigation durch ein unbekanntes Gebäude zu erleichtern. Die Positionsbestimmung<br />

muss hierbei ohne eine spezielle Markierung der Umgebung auskommen und robust gegenüber<br />

starken Änderungen in der Beschaffenheit der Inneneinrichtung sein. Auf die Verwendung von Karten<br />

mit für spezielle Positionen aufgenommenen Messergebnissen, die dann mit den Sensordaten verglichen<br />

werden könnten, soll ebenfalls verzichtet werden. Die gewonnenen Positionsinformationen und Navigationshinweise<br />

sollen so aufbereitet sein, dass sie in kommenden Projekten dem Blinden auf möglichst<br />

einfache Weise über eine passende Schnittstelle (wie ein taktiles Display oder eine Audioschnittstelle)<br />

weitergegeben werden können.<br />

17


18 KAPITEL 3. LÖSUNGSENTWURF<br />

3.2 Lösungsansatz<br />

Dieser Ansatz versucht über die Möglichkeiten der bisher vorgestellten Arbeiten (siehe Abschnitt 2.3)<br />

hinauszugehen, indem er einige Ideen der Vorarbeiten kombiniert. Eine starke Verknüpfung zwischen<br />

Sensordaten und Modell stellt hierbei die Grundlage für die später an den Benutzer weitergegebenen<br />

Navigationsinformationen dar. Die zur Navigation des blinden Benutzers notwendige Bestimmung der<br />

eigenen Position im Raum sowie die Erkennung von Hindernissen löst dieser Ansatz durch eine kontinuierliche<br />

Anpassung einer virtuellen Umgebung an real gemessene Daten. Zur Messung der notwendigen<br />

Daten wird ein Sensormodul eingesetzt, das im folgenden Abschnitt beschrieben wird.<br />

3.2.1 Aufbau des Sensormoduls<br />

Dieser Abschnitt stellt den zur Lösung der Aufgabe eingesetzten Aufbau des Sensormoduls und die<br />

verwendete Hardware vor. Gründe für die Auswahl dieser Hardwarekomponenten werden in Abschnitt<br />

4.1 ausführlicher beschrieben.<br />

Die Entscheidung, das Sensormodul nicht wie in der in Abschnitt 2.3.2 vorgestellten Designstudie in den<br />

Blindenstock zu integrieren und darum den zugehörigen ersten Prototyp nicht zu verwenden, begründet<br />

sich in der Tatsache, dass sich die zur Selbstlokalisation in Räumen notwendigen Abstandsinformationen<br />

auf gebäudespezifische, invariante Daten wie Abstände zu Wänden und Türen beschränken. Bei allen<br />

anderen Einrichtungsgegenständen muss davon ausgegangen werden, dass sich deren Position ändern<br />

kann oder sie nicht ins Modell integriert sind. Um sicherzustellen, dass diese Informationen möglichst<br />

oft auf den Stereobildern vorhanden sind, wurde die Stereokamera, wie in Abbildung 3.1 gezeigt, auf<br />

einem Fahrradhelm montiert und bildet so, bei natürlicher Kopfhaltung, die beste Ausgangssituation für<br />

den Vergleich mit den Modelldaten.<br />

Abbildung 3.1: Aufbau des Sensormoduls. Die zur Abstandsmessung eingesetzte Stereokamera ist auf<br />

einen Fahrradhelm montiert. Zur Bestimmung der Blickrichtung ist direkt hinter der<br />

Kamera ein Inertialsensor angebracht. Dieser Aufbau ist für den hier verfolgten Lösungsansatz<br />

sehr gut geeignet und zeichnet sich durch einen vergleichsweise hohen<br />

Tragekomfort aus.


3.2. LÖSUNGSANSATZ 19<br />

Direkt hinter der Stereokamera ist ein Inertialsensor montiert. Dieser Aufbau ermöglicht es auf die<br />

bildbasierte Berechnung der Blickrichtung zu verzichten. Somit verbleibt ausreichend CPU-Leistung,<br />

um die zur Positionsbestimmung notwendigen Stereodisparitätsbilder „echtzeitnahe“ zu berechnen und<br />

diese mit dem 3D-Modell zu vergleichen. In den folgenden Abschnitten wird eine Methode vorgestellt,<br />

mit deren Hilfe die Position des Sensormoduls aus den Modell- und Sensordaten berechnet werden kann.<br />

3.2.2 Positionsbestimmung der Kamera<br />

Der hier verfolgte Lösungsansatz ermöglicht die Positionsbestimmung und Unterstützung bei der Navigation<br />

durch das Angleichen einer simulierten Umgebung an real gemessenen Daten. Zu diesem Zweck<br />

wird das im OpenSceneGraph-Format [24] vorliegende Gebäudemodell um eine virtuelle Kamera erweitert<br />

und diese solange im Modell verschoben, bis die simulierten Messungen mit den realen Daten<br />

übereinstimmen. Zu diesem Zweck durchläuft der Navigationsassistent die in den folgenden Absätzen<br />

beschriebenen Schritte.<br />

Ausrichtung der virtuellen Kamera<br />

Unter der Voraussetzung, dass der Startpunkt in Form von 3D-Ortskoordinaten oder eines Raumnamens<br />

gegeben ist, wird die virtuelle Kamera, wie in Abbildung 3.2 (a) gezeigt, im 3D-Modell am vorgegebenen<br />

Startpunkt positioniert. Die Angabe des Startpunktes muss bisher durch den Benutzer erfolgen,<br />

soll aber zukünftig durch ein gerade in der Erprobung befindliches WLAN Positionierungssystem (siehe<br />

Abschnitt ??) automatisiert werden. Der Abstand der Kamera zum virtuellen Boden wird entsprechend<br />

der vorgegebenen Größe des Benutzers angepasst.<br />

Über den hinter der Stereokamera angebrachten Inertialsensor kann die Orientierung der Sensoreinheit<br />

abgefragt und so die Blickrichtung der virtuellen Kamera an die reale Blickrichtung angeglichen werden<br />

(Abbildung 3.2 b). Der Vorteil dieser Art der Orientierungsberechnung gegenüber einer bildbasierten<br />

Blickrichtungsanalyse ist die Robustheit gegenüber Unterschieden zwischen 3D-Modell und Realität,<br />

die sonst nur durch eine ständige Aktualisierung des Gebäudemodells möglich wäre.<br />

a) Initiale Kameraposition b) Ausgerichtete Kamera<br />

Abbildung 3.2: Positionierung und Ausrichtung der virtuellen Kamera. Bild (a) zeigt die initiale Kameraposition,<br />

in (b) ist die anhand des Richtungssensors ausgerichtete Kamera dargestellt.


20 KAPITEL 3. LÖSUNGSENTWURF<br />

Generierung von Positionsvarianten<br />

Unter der Annahme, dass sich die Position der Kamera zwischen zwei aufgenommenen Stereobildern<br />

nur gering ändert, werden vier Positionsvarianten zusätzlich zur aktuellen Position�s im Modell berechnet<br />

(siehe Abbildung 3.3). Für die Positionen der Varianten eins bis vier gilt unter Berücksichtigung der<br />

aktuellen Blickrichtungsrotation R der Kamera und der Schrittweite w:<br />

⎛<br />

⎜<br />

�si = �s ∗ ⎜<br />

⎝<br />

1 0 0 0<br />

0 1 0 0<br />

0 0 1 0<br />

vx vy vz 1<br />

⎞<br />

⎟<br />

⎠<br />

mit �v = �vi und i = 1..4,<br />

�v1,2 = � 0 ±w 0 � T ∗ R, (3.1)<br />

�v3,4 = � ±w 0 0 � T ∗ R<br />

Die 3D-Szene wird an diesen Positionen aus Sicht der virtuellen Kamera gerendert. Hierbei wird das<br />

Tiefenbild der Stereokamera an geeigneten Messpunkten (Kreise in Bild 3.3 a) mit den Abstandsinformationen<br />

im Modell (Bild 3.3 b) verglichen und die Variante mit der geringsten Abweichung als neue<br />

Position der virtuellen Kamera ausgewählt. Wie die Tests des Navigationsassistenten in Kapitel 5 zeigen,<br />

ist schon über die ersten zwei Varianten eine Positionsbestimmung möglich. In diesem Falle muss<br />

der Benutzer gelegentlich den Kopf drehen, um Fehler in der Positionsbestimmung zu minimieren.<br />

a) Reale Szene<br />

b) Virtuelle Szene an Position 0 c) Mögliche Positionsvarianten 1-4<br />

Abbildung 3.3: Berechnung der besten Positionsvariante durch Vergleiche zwischen real und virtuell<br />

gemessenen Abständen. Abbildung (a) zeigt die reale Szene, welche mit der gerenderten<br />

Szene (b) verglichen werden soll. Bild (c) zeigt die möglichen Positionsvarianten<br />

der virtuellen Kamera.


3.2. LÖSUNGSANSATZ 21<br />

Abbildung 3.4: Abstandsmessung im Modell. Über den Vektor �s und den Abstand d des Fokuspunkts<br />

von der Bildebene, der von Φ bestimmt wird, kann der Ortsvektor zum Fokuspunkt �f<br />

berechnet werden. Die xy-Koordinaten des Durchstoßpunktes legen die Richtung des<br />

Strahls�l fest. Die Länge des Vektors von �f zum ersten Schnittpunkt des Strahls mit der<br />

Szene Sp ist der gesuchte Abstand.<br />

Vergleich der realen Distanzen mit dem Modell<br />

Es gibt verschiedene Möglichkeiten aus der gerenderten 3D-Ansicht die Abstandsinformationen zu gewinnen.<br />

Die Distanzmessung wird hier nicht über die Verwendung des Tiefenpuffers oder den simulierten<br />

Tiefenbildern einer virtuellen Stereokamera gelöst. Stattdessen wird anhand der xy-Position der<br />

realen Messpunkte im Kamerabild ein Strahl durch die virtuelle Szene berechnet. Durch diese Maßnahme<br />

kann später auf ein Grafikausgabemedium komplett verzichtet werden. Die Distanz vom CCD-Chip<br />

der virtuellen Kamera zum ersten Schnittpunkt mit der Szene entspricht dann dem simulierten Abstand<br />

im Modell.<br />

Zunächst wird aus der bekannten Position der Bildebene der virtuellen Kamera die Position des virtuellen<br />

Fokuspunktes, anhand des bekannten Öffnungswinkels Φ berechnet. Für die Distanz zwischen<br />

Bildebene und Fokuspunkt gilt Gleichung 3.2.


22 KAPITEL 3. LÖSUNGSENTWURF<br />

d = arctan Φ<br />

; (3.2)<br />

2<br />

Es ergibt sich, über den Ortsvektor�s zum Zentrum der Bildebene, der Vektor �f zum Fokuspunkt.<br />

�f =�s −�v ∗ d, �v : Blickrichtung (3.3)<br />

Die Zusammenhänge zwischen den Abständen und Vektoren, welche zur Berechnung eines Strahls<br />

durch die Szene verwendet werden, sind in Abbildung 3.4 dargestellt. Für den Richtungsvektor �l, der<br />

die Strahlrichtung vom Fokuspunkt zum Durchstoßpunkt in der Bildebene bei den Koordinaten (x,y)<br />

angibt, lässt sich folgender Zusammenhang herleiten:<br />

�l =�v ∗ d +�r ∗ x +�u ∗ y, �r,�u : Right/U p −Vektor der Kamera (3.4)<br />

Die Verlängerung der so gewonnenen Richtung �l ergibt einen Strahl durch die Szene, dessen erster<br />

Schnittpunkt �sp mit der gerenderten Szene den zu messenden Abstand bestimmt.<br />

zvirtuell = |�sp − �f | (3.5)<br />

Anhand der in Absatz 2.1.4 vorgestellten Gleichung 2.9 lässt sich die Distanz zreal eines Punktes im<br />

Kamerabild aus dem Disparitätswert des Tiefenbildes berechnen. Diese kann mit der Distanz im Modell<br />

zvirtuell verglichen werden. Um die Positionsvarianten effizient miteinander vergleichen zu können, wird<br />

die Summe der Abstandsdifferenzen zwischen Messpunkten in Modell und Realität für jede Variante i<br />

in einem Differenzvektor gespeichert:<br />

�di = ∑ j<br />

|zreal − zvirtuell|, j : 1..Anzahl der Messpunkte (3.6)<br />

Für Fälle, in denen die virtuelle Kamera direkt vor einer Tür positioniert ist, werden alle virtuellen<br />

Distanzen zusätzlich für eine offene Tür berechnet und der kleinere Differenzvektor ausgewählt.<br />

Aktualisierung der Position<br />

Durch den Vergleich der Differenzvektoren �di aller Varianten i ergibt sich die beste Positionsvariante<br />

als die Variante mit den kleinsten Differenzen. Für die in Abbildung 3.3 (c) dargestellte Situation<br />

stellt Position 1 die beste Lösung dar. Anhand dieser Information wird die Kameraposition im Modell<br />

aktualisiert.<br />

Über eine Translation wird die virtuelle Kamera in Richtung der besten Positionsvariante verschoben.<br />

Hierbei muss nicht zwingend derselbe Abstand verwendet werden, wie er zur Berechnung der Varianten<br />

angenommen wurde. Dieser kann, abhängig von der Größe des Fehlers, dynamisch bestimmt werden,<br />

um die Positionsfindung bei großen Differenzen zu beschleunigen und bei kleinen zu verfeinern. Auf<br />

diese Weise führt das Verfahren auch bei größeren Positionsabweichungen nach wenigen Schritten zu<br />

guten Ergebnissen.


3.2. LÖSUNGSANSATZ 23<br />

Zur Aktualisierung der Kameraposition muss zuerst der Verschiebungsvektor �vs in Richtung der besten<br />

Positionsvariante berechnet werden. Dieser ergibt sich wie in Gleichung 3.1 aus der gewählten<br />

Verschiebungsdistanz und der aktuellen Blickrichtung. Für die neue Position �s der Kamera gilt dann<br />

entsprechend:<br />

⎛<br />

⎜<br />

�s =�s ∗ ⎜<br />

⎝<br />

1 0 0 0<br />

0 1 0 0<br />

0 0 1 0<br />

vx vy vz 1<br />

⎞<br />

⎟<br />

⎛<br />

⎠ , mit �vs = ⎝<br />

vx<br />

vy<br />

vz<br />

⎞<br />

⎠ (3.7)<br />

Neben der Berechnung der besten Positionsvariante kann durch den Vergleich der X-Koordinaten korrespondierender<br />

Featurepunkte aufeinander folgender Frames eine Rotation der Sensoreinheit oder eine<br />

Translation in X-Richtung erkannt werden. Zur Bestimmung zusammengehöriger Featurepunkte kann<br />

das in Abschnitt 2.3.5 beschriebene Tracking-Verfahren eingesetzt werden. Für die Bewegungserkennung<br />

müssen die Bilddaten mit den Richtungsinformationen des Inertialsensors verglichen werden. Folgende<br />

simple Logik liefert dann Aufschluss über die aktuelle Bewegung:<br />

Alle Featurepunkte streben in eine Richtung ∧<br />

Kompass meldet Bewegung → Rotation<br />

Alle Featurepunkte streben in eine Richtung ∧<br />

Kompass meldet keine Bewegung → Translation in XRichtung<br />

Eine zusätzliche Betrachtung der Tiefeninformation aller Messpunkte ermöglicht es Z-Translationen zu<br />

erkennen, wenn die Tiefenänderung ebenfalls einen Schwellwert überschreitet.<br />

Durch eine Kollisionserkennung auf dem Szenengraphen wird verhindert, dass die Kamera bei Messfehlern<br />

durch Objekte hindurch geschoben wird. Eine solche Verschiebung wird nur zugelassen, wenn<br />

es sich bei dem betreffenden Objekt um eine Türe im Modell handelt. Ein Raumwechsel ist auf diese<br />

Weise für die virtuelle Kamera nur an Türen möglich.<br />

Erste Tests mit festen Messpunkten zeigten, dass die Qualität der Positionsbestimmung in verschiedenen<br />

Räumen wesentlich von der Wahl der Messpunkte abhängt und diese somit entscheidend für eine gute<br />

Navigationsunterstützung des blinden Benutzers ist. Der nächste Absatz vergleicht verschiedene Ansätze<br />

zur Suche nach geeigneten Messpunkten und begründet die Auswahl der im Prototyp eingesetzten<br />

Verfahren.<br />

3.2.3 Auswahl geeigneter Messpunkte<br />

Durch Fenster, Messfehler und Schwächen im Stereoalgorithmus können alle Entfernungen zwischen<br />

Unendlich und Null im realen Tiefenbild vorhanden sein. Der triviale Ansatz zu versuchen, die Punkte<br />

mit größter Tiefe als Messpunkte zu wählen, führt nicht zum gewünschten Ergebnis. Um dennoch ohne<br />

großen Rechenaufwand Punkte auf den Wänden zu finden wurden die folgenden Kriterien auf ihre<br />

Eignung als Suchkriterium für Wandpunkte verglichen:


24 KAPITEL 3. LÖSUNGSENTWURF<br />

• Farbe und Form<br />

• Helligkeitsmuster<br />

• Charakteristische Linien<br />

• Featurepunkte mit Wandabstand<br />

Farbe und Form<br />

Wie Abschnitt 2.1.7 näher beschreibt, kann über einen Regiongrowing-Algorithmus eine gleichmäßig<br />

gefärbte Fläche gefunden werden. Über das in Absatz 2.3.1 vorgestellte Verfahren kann dann die wahrgenommene<br />

Farbe der Region bestimmt werden. Die Versuche, über diesen Ansatz graue Wände zu<br />

finden, machen deutlich, dass die Festlegung der Farbe zuviele Objekte wie Boden, Decke und Computermonitore<br />

ebenfalls mit einschließt. Sie ist deshalb als Auswahlkriterium zu schwach. Die zusätzliche<br />

Vorgabe einer bestimmten Form würde die Suche zwar weiter einschränken, da sich aber keine allgemeine<br />

Form einer Wand angeben lässt, ist dieser Ansatz in großen Gebäuden nicht geeignet.<br />

Helligkeitsmuster<br />

In Abschnitt 2.3.4 wird ein Verfahren vorgestellt, das es ermöglicht, Helligkeitsmuster in einem Bild<br />

wiederzufinden. Diese Muster können dem „Rapid Object Detection“ genannten Verfahren über mehrere<br />

hundert Beispielbilder und Markierung der gewünschten Objekte antrainiert werden und dann für<br />

die Suche nach Objekten wie Türgriffen, Fenstergriffen oder Fensterecken, welche üblicherweise an<br />

Wänden zu finden sind, verwendet werden. Die nacheinander aufgenommenen Bilder in Abbildung 3.5<br />

zeigen die Ergebnisse des nach Abschnitt 2.3.4 implementierten Verfahrens. Aufgrund zu großer Helligkeitsunterschiede<br />

und der geringen Größe der Fenstergriffe wurden hier nur die Fensterecken erkannt.<br />

Diese sind aber bei natürlicher Kopfhaltung in kleineren Räumen üblicherweise nicht im Bild zu sehen.<br />

Deshalb eignen sich Fensterecken nicht allein als Suchkriterium für Punkte auf Wänden. Es wird deutlich,<br />

dass aufgrund der fehlenden Stabilität der Objekterkennung dieses Verfahren ebenfalls nicht zur<br />

Bestimmung der Messpunkte geeignet ist.<br />

Abbildung 3.5: Messpunktauswahl anhand von erkannten Objekten. Die Abbildungen zeigen die durch<br />

rote Quadrate markierten gefundenen Objekte einer Bildsequenz. Der Mittelpunkt der<br />

Quadrate könnte als Messpunkt verwendet werden.


3.2. LÖSUNGSANSATZ 25<br />

Charakteristische Linien<br />

Wie in der Aufgabenstellung beschrieben, sollte ein Algorithmus getestet werden, der es ermöglicht,<br />

allein über die Zuordnung von erkannten Linien im Kamerabild zu Kanten im Modell, die genaue Position<br />

im Raum zu bestimmen. Die dafür nötigen Linien müssen zunächst in einem Kantenbild, wie es<br />

in Abbildung 3.6 (b) dargestellt ist, erkannt und den Modellkanten (in Bild 3.6 blau, grün und gelb dargestellt)<br />

zugeordnet werden. Der Algorithmus berechnet dann über ein Näherungsverfahren die Transformationsmatrix,<br />

die notwendig ist, um die Kanten des Modells auf die gegebenen Linien abzubilden.<br />

Hieraus ließe sich die Position der Kamera zurückrechnen. Dieser Ansatz setzt allerdings voraus, dass<br />

die erkannten Linien des Kamerabildes vorher den Kanten im Modell zugeordnet werden. Harald Sanftmann<br />

löst dieses Problem der Zuordnung in seiner Diplomarbeit [25], indem er die erkannten Kanten mit<br />

Orientierungsvarianten des Modells vergleicht und die ähnlichste Orientierung auswählt. Dieser Ansatz<br />

setzt aber ein speziell vorbereitetes 3D Modell voraus, in dem keine „falschen“ Kanten (in Abbildung<br />

3.6 (d) türkis markiert) vorhanden sind. Da ein solches Modell für diese Arbeit nicht zur Verfügung<br />

stand und der Vergleich mit Modellvarianten bei komplexen Objekten zuviele Lösungen ergeben würde,<br />

kommt dieses Verfahren aufgrund der begrenzten Rechenleistung hier ebenfalls nicht zum Einsatz.<br />

a) Kamerabild b) Extrahierte Kanten des Kamerabildes<br />

c) gerendertes Modell d) Wireframe Darstellung des gerenderten Modells<br />

Abbildung 3.6: Zuordnung von erkannten Linien zu Modellkanten. Bild (a) zeigt einen typischen Gang<br />

im Gebäude. Die aus dem Kantenbild extrahierten Geraden sind in (b) dargestellt. Bild<br />

(c) zeigt die gerenderte Szene und (d) die zugehörigen Kanten im Wireframe-Modell.


26 KAPITEL 3. LÖSUNGSENTWURF<br />

Trotz der rechenaufwändigen Extraktion der Bildkanten, können diese besonders gut zur Ermittlung<br />

eines „Fluchtpunkts“ am Gangende, über den Schnittpunkt der blauen und grünen Linien aus Abbildung<br />

3.7 (e) berechnet werden. Dies ermöglicht die Positionierung der Abstandsmesspunkte auf die in Gängen<br />

entscheidenden Messpunkte am Ende des Ganges (gelber Kreis), da sich alle anderen Abstände, wie in<br />

den roten Linien in Abbildung 3.7 (f) gezeigt, für verschiedene Kamerapositionen kaum unterscheiden.<br />

e) Fluchtpunktabschätzung f) Signifikante Abstände im Gang<br />

Abbildung 3.7: Schnittpunkt von Diagonalen in langen Gängen. Bild (e) zeigt, dass der Schnittpunkt<br />

von Diagonalen im Bild in Richtung des Gangendes liegt. Dieser markiert den einzigen<br />

signifikanten Abstand zum Sensormodul.<br />

Ein Vergleich der Position des Fluchtpunktes in realem und gerendertem Kamerabild kann zusätzlich<br />

zur Detektion von Abweichungen zwischen realer und virtueller Blickrichtung eingesetzt werden. Aus<br />

der Distanz z zum Fluchtpunkt und dem Unterschied der X-Koordinaten der Fluchtpunkte dx kann der<br />

Offset der virtuellen Kamera über Gleichung 3.8 für kleinere Abweichungen berechnet und korrigiert<br />

werden. Bei zu großen Abweichungen muss der Offset bei diesem Verfahren vom Benutzer manuell<br />

nachgestellt werden.<br />

Featurepunkte mit Wandabstand<br />

θO f f set = arctan( dx<br />

) (3.8)<br />

z<br />

Aufgrund der hohen Rechenzeit der vorangegangenen Verfahren wurde eine Methode entwickelt, bei<br />

der die Tiefeninformationen an geeigneten Featurepunkten (siehe Abschnitt 2.1.1) mit einem „Wandabstandsschätzwert“<br />

verglichen werden. Dieser Schätzwert wird nach dem in Abschnitt 4.3.1 implementierten<br />

Verfahren ermittelt und ermöglicht die Filterung der gefundenen Featurepunkte.<br />

Abbildung 3.8 (a) zeigt das Ergebnis einer solchen Filterung und stellt Featurepunkte mit zu kleinem Abstand<br />

weiß, Punkte mit zu großem Abstand rot und die Features mit Wandabstand gelb dar. Dieser Ansatz<br />

zeichnet sich durch seine hohe Geschwindigkeit und eine große Robustheit gegenüber Störungen aus.<br />

Er liefert über mehrere Bilder stabile Messpunkte (Abbildung 3.8 b), die mit hoher Wahrscheinlichkeit<br />

auf der Wand zu liegen kommen. Da sich das Verfahren zur Wandabstandsschätzung nur für annähernd


3.2. LÖSUNGSANSATZ 27<br />

a) b)<br />

Abbildung 3.8: Die Featurepunkte in (a) und (b) sind entsprechend ihrer Einstufung anhand eines<br />

Wandabstandsschätzwertes in drei Farben kodiert. Weiße Punkte sind zu nahe, gelbe<br />

haben ungefähr Wandabstand und rote Punkte sind zu weit entfernt um auf der Wand<br />

zu liegen.<br />

quadratische Räume eignet, muss bei langen Gängen auf das zuvor vorgestellte Fluchtpunkt-Verfahren<br />

zurückgegriffen werden.<br />

Abbildung 3.9 fasst die Geschwindigkeitsunterschiede der vorgestellten Verfahren in einem Diagramm<br />

zusammen. Das schnellste Verfahren wird als 100 Prozent Marke angenommen. Es zeigt sich, dass<br />

das zuletzt vorgestellte Verfahren bis zu drei mal schneller ist als die vorangegangenen Ansätze. Dies<br />

begründet sich hauptsächlich durch die schnelle Berechnung des Abstandsschätzwertes und der Featurepunkte,<br />

da für diese Berechnungen kein Kantenbild berechnet werden muss.<br />

Wiederverwendung der Messpunkte über mehrere Bilder<br />

Durch den Einsatz eines Verfahrens zur Verfolgung der gewählten Messpunkte über mehrere Bilder,<br />

wie es Lucas und Kanade 1981 vorgestellt haben (siehe Abschnitt 2.3.5), muss die „teure“ Berechnung<br />

der Messpunkte nur durchgeführt werden, wenn diese nicht mehr im Bild gefunden werden. Um die<br />

Messpunkte möglichst gleichmäßig über das aufgenommene Bild zu verteilen, wird es wie in Abbildung<br />

3.3 (a) gezeigt, in neun Quadranten eingeteilt.<br />

Zur Selbstlokalisation werden nur die oberen sechs Quadranten eingesetzt. Dies begründet sich mit<br />

dem Aufbau des Sensormoduls, da bei natürlicher Kopfhaltung üblicherweise im unteren Drittel des<br />

Bildes nur Einrichtungsgegenstände oder der Boden zu sehen sind. Verlässt einer der Messpunkte den<br />

ihm zugeordneten Quadranten, wird nur für diesen Teil des Bildes ein neuer Messpunkt auf der Wand<br />

berechnet. Für diese Neuberechnung werden, abhängig von der Form des aktuellen Aufenthaltsraums,<br />

entweder Featurepunkte auf der Wand gesucht oder Messpunkte am Gangende festgelegt. Dies ermöglicht<br />

eine gute Positionsbestimmung in vielen unterschiedlichen Räumen bei vergleichsweise hohen<br />

Frameraten.


28 KAPITEL 3. LÖSUNGSENTWURF<br />

Abbildung 3.9: Geschwindigkeitsvergleich zw. Messpunkt-Such-Verfahren. Das schnellste Verfahren<br />

wurde als Referenz mit 100 Prozent angenommen. Es wird deutlich, dass alle anderen<br />

Verfahren wesentlich langsamer arbeiten und sich das neu entwickelte Verfahren somit<br />

am besten zur Positionsbestimmung in Räumen eignet.<br />

3.2.4 Detektion von verschiebbaren, modellierten Objekten<br />

Der hier vorgestellte Ansatz zur Erkennung von Objekten nutzt die Kombination der Farb- und Tiefeninformationen<br />

des Kamerabildes, um Objekte im Bild anhand einer Objektbeschreibung wieder zu<br />

erkennen. Hierzu werden einige der Vorarbeiten dieses Gebietes kombiniert und um die Informationen<br />

aus dem Disparitätsbild erweitert. Die Erkennung der Orientierung von Hindernissen wird von Sanftmann<br />

für rechteckig modellierte Objekte beschrieben [25].<br />

In dieser Arbeit werden die folgenden drei Schritte sukzessive angewandt, um zu entscheiden, ob ein<br />

Bereich im Bild das gesuchte Objekt enthält.<br />

1. Suche nach gleichfarbigen Regionen<br />

2. Vergleich der Farbe<br />

3. Vergleich der Form


3.2. LÖSUNGSANSATZ 29<br />

1. Suche nach gleichfarbigen Regionen<br />

Die Suche nach homogenen Regionen im Bild nutzt das in der OpenCV Bibliothek implementierte<br />

Regiongrowing-Verfahren (siehe Abschnitt 2.1.7) um ähnlichfarbige Regionen im Bild zu finden. Hierfür<br />

wird das Verfahren an verschiedenen, über das Bild verteilten Startpunkten aufgerufen. Abbildung<br />

3.11 zeigt die so segmentierten Farbregionen im Kamerabild.<br />

a) Kamerabild b) Markierung der homogenen Farbregionen<br />

Abbildung 3.10: Farbsegmentierung über Regiongrowing. Homogene Flächen im Bild (a) werden zur<br />

Segmentierung mit Farbe gefüllt. Bild (b) zeigt die so gefundenen Regionen.<br />

Wird der Szene ein weiterer Stuhl hinzugefügt, färbt der Standard-Regiongrowing-Algorithmus diesen<br />

mit derselben Farbe ein, wenn dieser zu nahe an einem gleichfarbigen Stuhl positioniert ist (siehe Abbildung<br />

3.11 (a) linker und mittlerer Stuhl). Um diesen Effekt zu verringern wurde das Regiongrowing-<br />

Verfahren so erweitert, dass es zusätzlich die Unterschiede im Tiefenbild berücksichtigt und bei zu<br />

starker Änderung der Tiefe die Expansion der Region beendet. Das Ergebnis dieser Methode ist in Abbildung<br />

3.11 (b) dargestellt. In diesem Falle wird der mittlere Stuhl nicht in die Region des linken Stuhls<br />

mit einbezogen, sondern als eigenständiger Bereich betrachtet und mit einer anderen Farbe gefüllt.<br />

a) Ohne Tiefenbild, zwei segmentierte Stühle b) Mit Tiefenbild, drei segmentierte Stühle<br />

Abbildung 3.11: Regiongrowing mit und ohne Berücksichtung der Tiefenunterschiede. Wird die Tiefe<br />

mit einbezogen, können die Objekte besser unterschieden werden.


30 KAPITEL 3. LÖSUNGSENTWURF<br />

Für die Entscheidung, ob der gefüllte Bereich das gesuchte, modellierte Objekt enthält, wird die Farbe<br />

und Form der gefundenen Region mit einer Modellbeschreibung verglichen. Die Modellbeschreibung<br />

enthält für diesen Zweck drei Informationen über den zu suchenden Gegenstand:<br />

1. Name der Farbe<br />

2. Histogrammwerte der Farbe<br />

3. Form-Muster<br />

Diese sind in die Modellbeschreibungsdateien _description_i.txt und ein Form-Muster Bild<br />

kodiert, wobei die Art des Objektes und i die Nummer der Beschreibung bezeichnet. Für<br />

Stühle kann eine solche Modellbeschreibung folgendermaßen aussehen:<br />

rot<br />

chair_tpl_0.bmp<br />

0 255.0<br />

1 0.0<br />

...<br />

14 0.0<br />

15 78.0<br />

a) Beschreibungsdatei b) Histogrammbild aus 16 c) Form-Muster<br />

vorgegebenen Farbtönen (chair_tpl_0.bmp)<br />

Abbildung 3.12: Modellbeschreibung für einen roten Stuhl bestehend aus Modellbeschreibung mit Histogrammwerten<br />

wie sie in (b) dargestellt sind und einem Form-Muster für die Stuhllehne<br />

(c).<br />

Anhang A.3.1 beschreibt, wie eine solche Beschreibung durch simples Betrachten der Objekte erzeugt<br />

und abgespeichert werden kann. Es empfiehlt sich, für ein Objekt mehrere Beschreibungsdateien aus<br />

verschiedenen Blickwinkeln und mit unterschiedlicher Beleuchtung anzufertigen, um das gesuchte Objekt<br />

in möglichst vielen Situationen wiederzufinden.<br />

Vergleich der Farbe<br />

Anhand des im Abschnitt 2.3.1 vorgestellten Farbklassifikationsverfahrens von Hub und Teufel kann<br />

die wahrgenommene Farbe einer gefundenen Region bestimmt und mit dem Farbnamen in der Modellbeschreibung<br />

verglichen werden. Dies ermöglicht es zu entscheiden, ob der gefüllte Bildbereich das<br />

gesuchte, modellierte Objekt enthalten könnte. Ist dieser „Farbnamentest“ positiv, werden zusätzlich die<br />

in 16 Farbtöne (siehe Abbildung 3.13) eingeteilten Histogrammwerte der Bildregion im HSV Raum berechnet.<br />

Diese werden dann mit den vorgegebenen Farbwerten der Modellbeschreibung verglichen. Die<br />

hier verwendete Farbeinteilung in 16 Stufen wird auch im CamShift („Continuously Adaptive Mean-<br />

SHIFT“) Algorithmus von OpenCV [26] eingesetzt um Objekte mit speziellen Farben zu verfolgen.


3.2. LÖSUNGSANSATZ 31<br />

Abbildung 3.13: Farbtöne des Histogramms. Für den Vergleich zwischen Modell und Realität werden<br />

im HSV-Raum die Werte von 16 Farbtönen in der segmentierten Region berechnet.<br />

Vergleich der Form<br />

Ergibt die Farbklassifizierung den in der Beschreibung angegebenen Farbnamen und ähnliche Histogrammwerte,<br />

wird zusätzlich die Form der Region verglichen um sicherzustellen, dass die getestete<br />

Region wirklich das gesuchte Objekt und nicht nur einen ähnlichfarbigen Gegenstand enthält. Für diesen<br />

Vergleich stellt die OpenCV Bibliothek ein Verfahren zum Vergleich der HuMomente (HuMoments)<br />

[27] in Bildern bereit. Diese setzen sich aus sieben speziellen Richtungsableitungen des Bildes zusammen<br />

von denen bewiesen ist, dass sie unabhängig von Rotation und Skalierung des Bildes sind.<br />

Besteht eine Region alle drei Tests, wird die Mitte ihrer Oberkante zur Berechnung der Distanz zob j zum<br />

Betrachter aus dem Disparitätsbild eingesetzt.<br />

Positionsbestimmung der Objekte<br />

Anhand des Ortsvektors zur eigenen Position �f im Raum, wie sie nach Abschnitt 4.3 berechnet wurde,<br />

und der gemessenen Distanz zob j zu einem gefundenen, modellierten Objekt kann die Position �pob j<br />

des Objektes über Gleichung 3.10 berechnet werden. Diese leitet sich direkt von der in Abschnitt 3.2.2<br />

gezeigten Gleichung 3.4 für einen Strahl durch die Bildebene an der Position (x,y) ab. Für die Richtung<br />

des Strahles gilt wieder:<br />

�l =�v ∗ d +�r ∗ x +�u ∗ y, �r,�u : Right − /U p −Vektor (3.9)<br />

wobei d die nach Gleichung 3.2 bestimmte Distanz vom Fokuspunkt zur Bildebene und �v die aktuelle<br />

Blickrichtung der virtuellen Kamera ist. Für die Position des gefundenen, modellierten Objektes gilt<br />

dann:<br />

3.2.5 Aktualisierung des Modells<br />

�pob j = �f + �l<br />

|�l| ∗ zob j<br />

(3.10)<br />

Dieser Abschnitt beschreibt die Nutzung der ermittelten Positionsinformationen zur Unterstützung blinder<br />

Benutzer bei der Navigation durch ein unbekanntes Gebäude.<br />

Zunächst werden die Positionen der verschiebbaren, modellierten Objekte, welche nach dem im letzten<br />

Abschnitt beschriebenen Verfahren gefunden wurden, genutzt, um verschobene Hindernisse im Modell<br />

zu aktualisieren. Dies wird durch die Berechnung von Änderungstransformationen ermöglicht, welche<br />

die gefundenen Objekte in der virtuellen Szene an ihre neue Position verschieben. Hierfür ist die Suche


32 KAPITEL 3. LÖSUNGSENTWURF<br />

des gefundenen Objekts im Szenengraphen-Ast des aktuellen Aufenthaltsraumes erforderlich. Enthält<br />

dieser mehrere gleiche, verschiebbare Objekte, werden diese ohne Berücksichtigung ihrer vorherigen<br />

Position neu positioniert, indem ihnen im Szenengraphen ein neuer Transformationsknoten angehängt<br />

wird. Dieser transformiert die Objekte von ihrer ursprünglichen Position an die nach Gleichung 3.10<br />

bestimmte neue Position. Auf diese Art entsteht ein neues 3D-Modell mit aktualisierten Positionen aller<br />

modellierter Hindernisse. Das so gewonnene 3D-Modell kann nun verwendet werden, um den Benutzer<br />

bei der Navigation durch ein unbekanntes Gebäude zu unterstützen.<br />

Visuelle Darstellung der Navigationshinweise für den blinden Benutzer<br />

a) Aktueller Aufenthaltsraum und Abstand zum b) Warnung vor Hindernissen<br />

Objekt im Bildzentrum<br />

c) Information über den Zustand einer Tür d) Tür im Kamerabild (ist offen)<br />

Abbildung 3.14: Nach akustischer Umsetzung können visuelle Navigationshinweisen dem blinden Benutzer<br />

Aufschluss über den aktuellen Aufenthaltsraum und den Abstand zu modellierten<br />

Objekten geben, oder vor Gefahren warnen. Bild (a) zeigt den aktuellen Aufenthaltsraum<br />

und den Abstand zum Objekt in der Mitte des Blickfeldes an. Bild (b) zeigt<br />

eine Warnung vor einem Hindernis. Bild (c) zeigt eine als offen erkannte Tür.


3.2. LÖSUNGSANSATZ 33<br />

Die Selbstlokalisation des Navigationsassistenten über Stereokamera und Richtungssensor gibt dem<br />

blinden Benutzer Auskunft über seinen aktuellen Aufenthaltsraum. Ein Abtaststrahl im Zentrum des virtuellen<br />

Blickfeldes ermöglicht ihm zudem die Erforschung der Umgebung durch einfaches „Umsehen“.<br />

Die Namen und die Distanzen der vom virtuellen Abtaststrahl getroffenen Objekte (siehe Abbildung<br />

3.14 (a) orange markiert) können Aufschluss über die Beschaffenheit der Umgebung geben. Durch die<br />

Extrapolation der augenblicklichen Bewegung kann über eine modellbasierte Kollisionserkennung vor<br />

Hindernissen gewarnt werden (siehe Abbildung 3.14 (b)). Der Vergleich zwischen realen und virtuellen<br />

Abständen ermöglicht zudem einen Hinweis auf den Zustand von Türen (Abbildung 3.14 (c-d)).<br />

Der Blinde erhält vom Navigationsassistenten somit zusätzliche Informationen über seine Umgebung,<br />

welche ihm die Navigation durch das fremde Gebäude erleichtern können.<br />

Die in diesem Kapitel beschriebenen Schritte, die zur Realisierung einer Navigationsunterstützung notwendig<br />

sind, wurden im Diagramm 3.15 als Designentwurf des zu implementierenden Prototyps zusammengefasst.<br />

Die Eingabedaten sind durch Rechtecke und die zur Navigationsunterstützung notwendigen<br />

Berechnungen als Ellipsen dargestellt. Das nächste Kapitel beschreibt die Implementierung der zur Ansteuerung<br />

der Sensoren notwendigen Klassen. Es stellt zudem die zur Generierung des 3D-Modells im<br />

OpenScneneGraph-Format eingesetzte Software vor und geht auf einige Implementierungsdetails des<br />

im Lösungsansatz beschriebenen Navigationsassistenten ein.<br />

Realität vs<br />

Modell<br />

Neuberechnung auf Anfrage<br />

Farbbild<br />

Tiefenbild<br />

Objekterkennung<br />

Objektbeschreibung<br />

2D Bildpositionen<br />

Sensordaten Modelldaten<br />

Tiefenbild<br />

Richtung<br />

Positionsbestimmung<br />

Szenengraph<br />

Kontinuierliche Neuberechnung<br />

3D Raumpositionen<br />

Berechnung der<br />

Änderungstransformationen<br />

Aktualisierung des<br />

3D-Modells<br />

Abbildung 3.15: Systemdesign des Navigationsassistenten. Die rechteckig markierten Eingabedaten<br />

aus Realität und Modell werden in drei Schritten ausgewertet, um die eigene Position<br />

zu bestimmen und das 3D-Modell zu aktualisieren. Eigene Position und Bewegungsrichtung<br />

können verwendet werden, um dem Benutzer Informationen über seine<br />

Umgebung bereit zu stellen und ihn vor Hindernissen zu warnen.


Kapitel 4<br />

Implementierung<br />

Dieses Kapitel beschreibt die Umsetzung des in Abschnitt 3.2 vorgestellten Lösungsansatzes und die<br />

zur Lösung der einzelnen Teilaufgaben implementierten Klassen. Die Struktur des implementierten Navigationsprogramms<br />

folgt dem in Abbildung 3.15 dargestellten Systemdesign.<br />

Zunächst müssen die Sensordaten erfasst und entsprechend aufbereitet werden, um diese dann mit den<br />

Modelldaten vergleichen zu können. Der nächste Abschnitt beschreibt die Auswahl und Ansteuerung<br />

der hierfür notwendigen Sensorhardware, die schließlich im Prototyp (siehe Abschnitt 3.2.1) eingesetzt<br />

wurde.<br />

4.1 Sensordatenerfassung<br />

Über das Nexus-Teilprojekt D2 standen eine Vielzahl an IEEE-1394 (Firewire) Digitalkameras und anderen<br />

Sensoren zur Verfügung. Diese wurden zu Beginn dieser Arbeit vor dem Erwerb einer „Bumblebee“-<br />

Kamera, in den ersten Monaten der Arbeit, auf ihre Eignung zur Gewinnung der Disparitätsbilder getestet.<br />

Folgende drei als Stereokamera konzipierten Module standen zur Verfügung:<br />

a) Unibrain Fire-i Digitalkameras b) Hand-geführtes Modul c) Brillenmodul<br />

Abbildung 4.1: Kamera-Module zur Erfassung von Stereobildern<br />

Unibrain Fire-i Kamera: Die in Abbildung 4.1 (a) gezeigten Unibrain Fire-i Kameras wurden in 8,5<br />

Zentimeter Abstand auf einer Aluschiene befestigt und bilden den ersten Testkandidaten.<br />

35


36 KAPITEL 4. IMPLEMENTIERUNG<br />

NAS Prototyp: In der in Abschnitt 2.3.2 vorgestellten Forschungsarbeit von Hub wird der Navigationsassistent<br />

als Handgerät umgesetzt. In diesem sind, neben anderen Sensoren, zwei Point Grey Firefly<br />

Kameras in einen Blindenstockgriff mit Steuerungstastatur integriert.<br />

Brillenmodul mit Point Grey Fireflys: Um den Vergleich mit den Modelldaten für die Positionsbestimmung<br />

zu vereinfachen, wurden in diesem Testkandidaten zwei Point Grey Firefly Kameras auf<br />

einer Brille befestigt. Aufgrund der im Vergleich zum Blindenstock eher ruhigen Haltung des Kopfes<br />

wird durch diesen Aufbau ein stabileres Kamerabild erreicht.<br />

Die drei Stereokameras wurden kalibriert und auf ihre Eignung für den zu entwerfenden Navigationsassistenten<br />

geprüft. Hierfür musste zunächst ein Konzept zur einheitlichen Ansteuerung aller Kameras<br />

erstellt und ein Programm zur Kalibrierung implementiert werden.<br />

4.1.1 Ansteuerung der Kameras<br />

Aufgrund der bisherigen Verwendung von Windows in diesem Nexus-Teilprojekt und der vergleichsweise<br />

einfachen Möglichkeit, unterschiedlichste Hardware mit diversen Treibern an verschiedenen Schnittstellen<br />

zu testen, setzt die hier vorgestellte Arbeit ebenfalls auf den Einsatz des Redmonder Betriebssystems.<br />

Hier stehen zur Ansteuerung von Firewire-Kameras diverse Application Programming Interfaces<br />

(APIs) und Bibliotheken zur Verfügung. Unter den bekanntesten in Industrie und Forschung finden sich:<br />

• Microsofts DirectShow (siehe Abschnitt 2.3.6)<br />

• National Instruments Image Aquisition (IMAQ) for IEEE 1394 Cameras (siehe Abschnitt 2.3.7)<br />

• Intels OpenCV (siehe Abschnitt 2.3.8)<br />

Der nächste Abschnitt beschreibt die zu Beginn der Arbeit getesteten APIs und bewertet ihre Eignung<br />

zur Ansteuerung der Kameras. Die synchrone Bildaufnahme zweier baugleicher Kameras ist hierbei ein<br />

besonderes Kriterium, da dies für die Berechnung von Stereodisparitätsbildern, wie sie im Abschnitt<br />

4.1.2 beschrieben wird, bei bewegter Kamera unerlässlich ist.<br />

Test verschiedener APIs<br />

Microsoft stellt über das in DirectX 9.0 (siehe Abschnitt 2.3.6) integrierte DirectShow API die Möglichkeit<br />

zur Ansteuerung von Firewire-Kameras über die Identifikationsnummer (ID) zur Verfügung.<br />

Hierfür müssen die entsprechenden Windows-Treiber für die Kameras installiert werden, welche für<br />

die verschiedenen Kameras in unterschiedlich stabilen Versionen zur Verfügung standen. Das niedrige<br />

Abstraktionsniveau der DirectShow-API ermöglicht zwar die hardwarenahe Ansteuerung der Kameras,<br />

das Senden eines Synchronisationsimpulses (Trigger Impuls) ist aber dennoch nicht vorgesehen. Eine<br />

synchrone Ansteuerung der Kamera muss deshalb über den DirectX Synch-Filter implementiert werden.<br />

Da diese Möglichkeit der Synchronisation bereits in der CvCam Klasse von OpenCV eingesetzt wird,<br />

wurde dieser Ansatz nicht nochmals implementiert.


4.1. SENSORDATENERFASSUNG 37<br />

Das von National Instruments (NI) als Zusatz zu Labview zur Verfügung gestellte IMAQ API (siehe<br />

Abschnitt 2.3.7) bietet durch eine hohe Abstraktion von der Hardware eine komfortable Möglichkeit,<br />

über wenige Befehle Firewire-Kameras anzusteuern. Es setzt hierfür allerdings den Einsatz der NI eigenen<br />

IMAQ Firewire-Treiber voraus. Diese können über den Measurement & Automation Explorer von<br />

NI komfortabel installiert und getestet werden. Der Vorteil der IMAQ API liegt in der Möglichkeit, der<br />

Kamera Triggerimpulse zu senden. Es stellte sich allerdings heraus, dass keine der getesteten Kameras<br />

diese Impulse berücksichtigt und somit nur eine asynchrone Ansteuerung der Kameras möglich war.<br />

Die Open Computer Vision Library (OpenCV) aus Abschnitt 2.3.8 beinhaltet neben vielen anderen<br />

Funktionen zwei Wege um Digitalkameras anzusteuern. Der Standardweg führt über die CvCapture-<br />

Funktionen, welche aber bei der zu Beginn der Arbeit vorliegenden OpenCV Version 4b noch nicht zur<br />

parallelen Ansteuerung mehrerer Kameras vorgesehen waren. Der andere Weg führt über die Verwendung<br />

der kaum dokumentierten und offensichtlich noch in einer sehr frühen Entwicklungsphase befindlichen<br />

Klasse CvCam. Diese verwendet zur Synchronisation der Kameras den SyncFilter von OpenCV<br />

und bietet so einen vielversprechenden Ansatz zur Lösung des Synchronistionsproblems. Geschwindigkeitsvergleiche<br />

zwischen CvCapture und CvCam zeigten zudem einen erheblichen Geschwindigkeitszuwachs<br />

und führte so zur Entscheidung, die CvCam Klasse so zu erweitern, dass sie für die Bilderfassung<br />

des Navigationsassistenten verwendet werden kann.<br />

CCam - Eine Klasse zur Ansteuerung der Kameras: Die CCam genannte Wrapper-Klasse wurde<br />

geschrieben um die Möglichkeit der NI-API Triggerimpulse an die Kamera zu senden für zukünftige<br />

Hardware bereitzustellen. Sie vereint die NI-API mit der CvCam Klasse. Über das Setzen eines Kompilerflags<br />

ist es möglich, die gewünschte API auszuwählen, ohne dass der Programmcode, welcher die<br />

CCam-Klasse verwendet, geändert werden muss.<br />

4.1.2 Berechnung der Stereodisparitätsbilder<br />

Nach der Lösung des Ansteuerungsproblems ist, zur Berechnung des Stereodisparitätsbildes aus den<br />

erfassten Einzelbildern, die Kalibrierung und Rektifizierung der Kamerabilder erforderlich (siehe Absatz<br />

2.1.4).<br />

Kamerakalibrierung<br />

Unter der Kalibrierung einer Kamera versteht man die Bestimmung der durch den optischen Aufbau<br />

der Kamera auftretenden Verzerrungen. Diese können, wie in Abschnitt 2.1.2 beschrieben, über das<br />

von Zhang vorgestellte Verfahren [4] ermittelt werden und ergeben alle kameraspezifischen Parameter,<br />

die zur Berechnung einer Entzerrungsmatrix nötig sind. Diese ermöglicht es, gerade Linien wieder in<br />

Geraden zu überführen, um so ein unverzerrtes Abbild der realen Szene im Computer weiterverarbeiten<br />

zu können.<br />

Um diesen Schritt möglichst einfach für alle zur Verfügung stehenden Kameras durchführen zu können,<br />

wurde eine MFC Oberfläche geschrieben, welche die zu kalibrierende Kamera über die in der Implementierung<br />

(Kapitel 4, Abschnitt 4.1.1) vorgestellte CCam-Klasse ansteuert. Nach der Angabe der Anzahl<br />

von Zeilen und Spalten des verwendeten Schachbrettmusters werden dessen innere Ecken automatisch<br />

gefunden. Es müssen mindestens fünf Ansichten des Schachbretts mit gefundenen inneren Ecken abge-


38 KAPITEL 4. IMPLEMENTIERUNG<br />

speichert werden, bevor das Programm über den nach Zhang implementierten Kalibrierungsalgorithmus<br />

cvCalibrateCamera() alle zur Kalibrierung der Kamera notwendigen Daten berechnen kann. Sobald<br />

genügend Ansichten abgespeichert sind, wird die Entzerrungsmatrix berechnet und das entzerrte Kamerabild<br />

dargestellt. Eine ausführliche Bedienungsanleitung des „Cam Calibrator“ findet sich im Anhang<br />

A.1.<br />

Abbildung 4.2: Screenshot des entwickelten MFC-Programms zur Kalibrierung von Firewire-Kameras<br />

Rektifizierung der Kamerabilder<br />

Nach der Kalibrierung erscheinen Abbildungen von parallelen Geraden wieder parallel, allerdings ist<br />

aufgrund der Verwendung zweier Kameramodule nicht sichergestellt, dass die Scanlines beider Bilder<br />

aufeinander liegen und die Blickrichtung beider Kameras parallel ist. Um den Versatz zwischen den<br />

Kameras zu korrigieren, muss daher die in Abschnitt 2.1.3 beschriebene Rektifizierungstransformation<br />

berechnet werden, welche die Scanlines beider Bilder so ausrichtet, dass eine einfache Berechnung des<br />

Stereodisparitätsbildes möglich ist.<br />

Abbildung 4.3: MFC Programm zur Kalibrierung und Rektifizierung der Kameras<br />

Zur Berechnung der für die Rektifizierung notwendigen Daten, wurde der „Cam Calibrator“ des letzten<br />

Abschnitts mit Hilfe des undokumentierten, aber in den OpenCV-Quellen enthaltenen Calib-Filters<br />

erweitert. Dieser nutzt die gefundenen Eckpunktpositionen des Schachbrettmusters aus linkem und rech-


4.1. SENSORDATENERFASSUNG 39<br />

tem Kamerabild, um die zur Rektifizierung der Bilder notwendigen Transformationsmatrizen zu berechnen.<br />

Diese können zusammen mit den zur Kalibrierung nötigen Daten im File „cameras.txt“ abgespeichert<br />

werden. Dies ermöglicht es, nach einmaliger Berechnung der Kameraspezifikationen, diese in<br />

anderen Anwendungen zu laden und erspart so die Neukalibrierung der Kameras bei jedem Programmstart.<br />

Eine ausführliche Bedienungsanleitung für den „StereoCam Calibrator“ findet sich in Anhang A.2.<br />

Nach der Entzerrung der Kamerabilder kann über den „Show/Hide“ Button im Bereich „Disparity<br />

Image“ ein Tiefenbild angezeigt werden, welches über den OpenCV Algorithmus berechnet wird (Abschnitt<br />

4.1.4). Es zeigt sich, dass selbst kleine Rotationsbewegungen der Kamera zu großen Fehlern im<br />

Stereobild führen. Die Vermutung, dass dies mit einer unzureichenden Synchronisierung der Kameras<br />

zusammenhängt, wurde über den im folgenden Abschnitt beschriebenen Synchronitätstest bestätigt.<br />

Synchronität<br />

Die Messung der Synchronität beider Kameras ist durch einen einfachen Versuchsaufbau realisierbar.<br />

Hierfür wird ein Fadenpendel, wie in Abbildung 4.4 gezeigt, aufgebaut und die Stereokamera so vor<br />

dem Pendel positioniert, dass die Bewegungsrichtung des Pendels senkrecht auf der Kameraachse steht.<br />

Abbildung 4.4: Versuchsaufbau für Synchronitätstests. Die Stereokamera wird auf der Seite liegend vor<br />

einem Fadenpendel positioniert. Über eine Skala hinter dem Pendel kann der Versatz<br />

zwischen linkem und rechten Einzelbild abgelesen werden.


40 KAPITEL 4. IMPLEMENTIERUNG<br />

Die Starthöhe des Pendels kann über die Energieerhaltungsgleichung<br />

E = mgh = 1<br />

2 mv2<br />

h = 1<br />

2g v2 =<br />

1<br />

2 ∗ 9.81 (5/3.6)2<br />

� m 2 s 2<br />

m s 2<br />

�<br />

= 0.1[m] (4.1)<br />

so gewählt werden, dass es mit einer Geschwindigkeit von 5 km m<br />

h (≈ 1.4 s ) an der Kamera vorbei schwingt.<br />

Dies entspricht der anzunehmenden Laufgeschwindigkeit des Benutzers. Über die hinter dem Pendel<br />

angebrachte Skala kann der Zeitversatz zwischen den Bildern aus der Geschwindigkeit des Pendels<br />

berechnet werden. Die Zeit pro Skaleneinheit (0.01Meter) ergibt sich aus:<br />

s = vt<br />

t = 0.01<br />

1.4<br />

�<br />

m s<br />

�<br />

= 7.1[ms] (4.2)<br />

m<br />

Abbildung 4.5 vergleicht die Ergebnisse des Pendelversuchs für verschiedene Kameras bei Verwendung<br />

der CvCam-Klasse von OpenCV und der IMAQ-API. Es wird deutlich, dass in diesem Fall die Verwendung<br />

einer asynchronen, sequentiellen Ansteuerung der Kameras mit circa 40 ms Versatz synchroner ist,<br />

als die Verwendung der über den DirectX Sync-Filter synchronisierten CvCam-Klasse mit (≈ 48 ms).<br />

Abbildung 4.5: Zeitversatz zwischen linken und rechten Einzelbildern bei unterschiedlichen Kameras<br />

und APIs. Es zeigt sich eine etwas geringere Zeitdifferenz beim Einsatz der IMAQ-API.<br />

Der insgesamt hohe Versatz erklärt die Fehler im Disparitätsbild bei bewegter Kamera.<br />

Zum Vergleich ist der Versatz der Bumblebee (125 µs) ebenfalls abgebildet.


4.1. SENSORDATENERFASSUNG 41<br />

Die Versuche, durch die Verwendung paralleler Threads oder eines Bildpuffers zeitgleiche Bilder zu<br />

erhalten, führen leider zu ähnlich schlechten Ergebnissen. Wie an der Abbildung zu erkennen ist, erlaubt<br />

der Zeitversatz zwischen den Kameras nur sehr langsame Bewegungungen.<br />

Dieses erklärt die großen Fehler im Stereobild bei Rotationen, die in Abschnitt 4.1.2 beschrieben wurden,<br />

und disqualifiziert jedes der vorhandenen Testmodule für den Einsatz im Navigationsassistenten<br />

bei nicht statischer Anwendung, da selbst bei langsamen Bewegungen Ungenauigkeiten im Tiefenbild<br />

auftreten und der zu entwickelnde Navigationsassistent den Benutzer nicht zu unnatürlich langsamen<br />

Bewegungen zwingen sollte.<br />

4.1.3 Verwendung eines selbstsynchronisierenden Stereokameramoduls<br />

Nach den im letzten Abschnitt beschriebenen Synchronitätstests kommt keine der vorhandenen Kamerasysteme<br />

zur Lösung der hier behandelten Navigationsaufgabe in Frage, da diese nicht ausreichend gut<br />

synchronisiert werden können (Latenzzeit zwischen den Kameras von 40 ms) und somit die Berechnung<br />

eines Disparitätsbildes bei bewegter Kamera zu ungenau ist. Aus diesem Grund wurde entschieden, ein<br />

Stereokameramodul zu erwerben, welches sich am Firewire-Bus automatisch synchronisiert und so die<br />

Berechnung des Tiefenbildes aus den Einzelbildern auch bei Bewegungen ermöglicht.<br />

Point Grey Bumblebee<br />

Von Point Grey [28] wurde das Bumblebee Stereokameramodul entwickelt, welches die Berechnung<br />

eines Disparitätsbildes, dank einer Latenzzeit von maximal 125 µs zwischen linkem und rechtem Kamerabild,<br />

auch bei schnellen Bewegungen ermöglicht. Aufgrund der Vorkalibrierung ab Werk und des<br />

vergleichsweise geringen Gewichts wurde das Kameramodul zur Entwicklung des Navigationsassistenten<br />

eingesetzt.<br />

Abbildung 4.6: Point Grey bietet mit der Bumblebee eine vorkalibrierte Stereokamera an. Durch automatische<br />

Synchronisierung am Firewire-Bus ist der Zeitversatz zwischen Stereobildpaaren<br />

minimal.


42 KAPITEL 4. IMPLEMENTIERUNG<br />

Ansteuerung der Stereokamera<br />

Zur Ansteuerung der Bumblebee stehen unter [29] das Digiclops- und Triclops-API von Point Grey zur<br />

Verfügung. Beide können in C/C++ Programme eingebunden werden und ermöglichen eine weitgehend<br />

komfortable, jedoch recht hardwarenahe Abfrage der Kamera beziehungsweise des zur Positionsbestimmung<br />

notwendigen Tiefenbildes. Das Digiclops API dient zur Ansteuerung der Kameras und Abfrage<br />

der Einzelbilder. Das Triclops SDK enthält Funktionen zur schnellen Messung von Distanzen zu Pixeln<br />

im Bild und unterstützt die Generierung von Disparitätsbildern aus linkem und rechtem Bild der<br />

Stereokamera.<br />

CBumblebee - Eine Klasse zur Ansteuerung der Bumblebee: Aufgrund der Hardwarenähe der<br />

APIs wurden die Aufrufe zur Ansteuerung der Kamera und Abfrage der Tiefeninformationen in einer<br />

Wrapper-Klasse zusammengefasst. Neben der in den meisten Beispielen verwendeten Methode,<br />

zunächst über triclopsGetImage16() das Disparitätsbild zu extrahieren und daraus durch Aufrufe von<br />

triclopsRCDToXYZ() für jeden Pixel einen Tiefenwert zu berechnen, steht zusätzlich die Funktion triclopsExtractImage3d()<br />

zur Verfügung. Diese fasst die Schritte zusammen und liefert direkt die benötigten<br />

Tiefeninformationen. Aufgrund vergleichbarer Performance beider Methoden und der leichteren Handhabung,<br />

wurde die zweite in der CBumblebee-Klasse verwendet, um die Abstandsinformationen für den<br />

späteren Vergleich mit der realen Szene zu berechnen.<br />

4.1.4 Verfahren zur Berechnung der Stereobilder<br />

Die automatische Synchronisation der Kameras im Bumblebee Stereokameramodul ermöglicht eine<br />

selbst für schnelle Kamerabewegungen ausreichend synchrone Akquisition von Stereobildpaaren. Diese<br />

können dank interner Entzerrung und Rektifizierung direkt über einen Stereoalgorithmus in ein Disparitätsbild<br />

umgerechnet werden. Es standen drei Implementierungen zur Berechnung des Stereodisparitätsbildes<br />

zur Verfügung, die in den folgenden Absätzen kurz vorgestellt werden.<br />

1. Die in Abschnitt 2.3.3 beschriebene Studienarbeit verwendet zur Berechnung der Stereodisparität<br />

einen an der Carnegie Mellon University implementierten Stereoalgorithmus. Da dieser allerdings<br />

zur Berechnung des Disparitätsbildes mehrere Sekunden benötigt, eignet er sich nicht zum Einsatz in<br />

Echtzeit-Anwendungen.<br />

2. In der OpenCV Dokumentation [26] findet sich über den Link „Experimental Functionality“ die Beschreibung<br />

einiger Funktionen, die nicht in der offiziellen Dokumentation des OpenCV Pakets enthalten<br />

sind. Hier wird unter anderem die Funktion cvFindStereoCorrespondence() erwähnt, welche es ermöglicht,<br />

aus zwei rektifizierten Grauwertbildern anhand des nach Birchfield et al. [30] implementierten<br />

Stereoalgorithmus ein Tiefenbild der Szene zu berechnen.<br />

3. Über die Triclops-API von Point Grey steht ebenfalls eine Implementierung zur Berechnung des<br />

Tiefenbilds aus den linken und rechten Einzelbildern der Bumblebee zur Verfügung. Diese wird über<br />

die CBumblebee-Klasse bereitgestellt und ermöglicht eine schnelle Abfrage des gewünschten Disparitätsbildes.


4.1. SENSORDATENERFASSUNG 43<br />

Geschwindigkeitsvergleich zwischen den Berechnungsverfahren<br />

Um die Geschwindigkeiten der OpenCV und Point Grey Implementierungen vergleichen zu können,<br />

wurde ein Programm geschrieben, welches die Distanzmessung anhand von Disparitätsbildern unter<br />

Verwendung der Bumblebee ermöglicht und zwischen den beiden Implementierungen umschalten kann.<br />

Abbildung 4.7 vergleicht die auf einem 1.6 GHz Centrino Laptop gemessene Geschwindigkeit beider<br />

APIs für unterschiedliche Anzahlen von Disparitätsstufen. Es ergibt sich, dass die Triclops-API bei<br />

allen Stufen schneller arbeitet als OpenCV. Sie wird deshalb zur Generierung der Disparitätsbilder im<br />

Navigationsassistent eingesetzt.<br />

Abbildung 4.7: Geschwindigkeitsvergleich zwischen OpenCV und Point Grey API, gemessen auf einem<br />

1.6 GHz Centrino Laptop. Es zeigt sich ein deutlicher Performancevorsprung der<br />

Point Grey API.<br />

4.1.5 Ansteuerung des Xsens Motion Trackers<br />

Über den von Hub entwickelten Prototyp (Abbildung 4.1 (b)) steht mit dem integrierten Motion Tracker<br />

von Xsens ein Miniatur-Inertialsensor mit Beschleunigungs-, Gyro- und Magnetfeldsensoren zur Verfügung.<br />

Die Magnetfeldsensoren können, wie im Lösungsansatz vorgestellt, zur Vorgabe der Blickrichtung<br />

der simulierten Kamera verwendet werden. Dieses ermöglicht einen einfachen und robusten Vergleich<br />

zwischen Realität und Modell. Der Sensor ist, wie in Abbildung 3.1 (b) gezeigt, direkt am Gehäuse der<br />

Stereokamera befestigt. Die im nächsten Absatz beschriebene Client-Server Lösung ermöglicht es, die<br />

benötigten Richtungsdaten vom Sensor abzufragen, ohne den Sensor zu blockieren.


44 KAPITEL 4. IMPLEMENTIERUNG<br />

Client-Server Lösung zur Kommunikation mit dem Motion Tracker<br />

Die Verwendung einer Client-Server Lösung ermöglicht es, von der eingesetzten Hardware unabhängig<br />

zu bleiben und den Sensor nicht zu blockieren, sodass er gleichzeitig für andere Berechnungen zur<br />

Verfügung steht.<br />

Es wurde ein Server-Thread auf Basis von Windows Sockets implementiert, der Verbindungen zum Port<br />

7000 zulässt und über das folgende einfache Protokoll die Abfrage der benötigten Richtungsinformationen<br />

des Inertialsensors ermöglicht:<br />

Befehl Funktion<br />

mt_server_get_data erfragt die Richtungsdaten vom Server<br />

mt_server_quit beendet den Server<br />

Tabelle 4.1: Xsens Server Protokoll zur Abfrage der Richtungsdaten<br />

Zur Übertragung der Richtungsdaten wird das folgende Strukt verwendet, welches je nach Einstellung<br />

des Motion Tracker Servers die Orientierung des Sensors als Raumwinkel oder als Rotationsmatrix an<br />

den Client liefern kann:<br />

typedef struct _mtOrientation{<br />

float phi, theta, psi;<br />

float matrix[9];<br />

}mtOrientation;<br />

4.2 Bereitstellung der Modelldaten<br />

Wie der Lösungsansatz beschreibt, soll durch die Angleichung einer simulierten Umgebung an real<br />

gemessene Daten die Position des Sensormoduls im Raum approximiert werden. Nachdem nun die<br />

Hardware zur Messung der realen Daten vorliegt, muss für den effizienten Vergleich zwischen Modell<br />

und Realität ein möglichst genaues 3D-Modell des Gebäudes vorhanden sein.<br />

4.2.1 Erstellung des Gebäudemodells mit 3D Studio Max<br />

Über die von Architekten üblicherweise zur Planung öffentlicher Gebäude angefertigeten CAD-Zeichnungen<br />

steht oft ein detailliertes Grundgerüst eines 3D-Modells zur Verfügung. Dieses kann in ein gängiges<br />

3D-Animationsprogramm wie zum Beispiel Discreets 3D Studio Max 6.0 importiert und dort<br />

über die Integration von Flächen als Wände und Böden, Fenster, Türen, etc. vervollständigt werden.<br />

Um später Blinde bei ihrer Navigation durch das Gebäude unterstützen zu können, muss zusätzlich die<br />

Inneneinrichtung der Räume nachmodelliert werden. Hierbei sollten alle festen und verschiebbaren Objekte,<br />

die bei der Navigation durch das Gebäude Hindernisse darstellen könnten, beachtet werden. Für<br />

einen Teil des Informatikgebäudes der Universität Stuttgart wurde ein solches Modell von Alexander<br />

Kobus im Rahmen des Nexus-Projektes bereits erstellt. Abbildung 4.8 zeigt den vollständig modellierten<br />

Gebäudeabschnitt, der zur Simulation der Umgebung bei dieser Arbeit eingesetzt wird.


4.2. BEREITSTELLUNG DER MODELLDATEN 45<br />

Abbildung 4.8: Zur Navigationsunterstützung eingesetzter, modellierter Gebäudeabschnitt<br />

Einteilung in Hierarchiestufen<br />

Die Einteilung des Gebäudes in verschiedene Hierarchiestufen (sogenannte Gruppen) ermöglicht es,<br />

relevante Teile des Modells selektieren oder ausblenden zu können. Dies erleichtert die Positionsbestimmung<br />

und Änderung von Objekten im Modell.<br />

Folgende Namenskonvention wurde zur Benennung der Gruppen festgelegt, um die in Abschnitt 3.2.2<br />

beschriebene Selektion des Startraumes zu vereinfachen.<br />

Räume : raum_ < Raumnummer ><br />

Gänge und Flure : f lur_ < Flurname ><br />

Treppenhäuser : treppenhaus_ < Treppenhausname ><br />

Der Flur- beziehungsweise Treppenhausname ist frei wählbar und besteht in den meisten Fällen aus<br />

einer Kombination aus Stockwerk und Himmelsrichtung im Gebäude.


46 KAPITEL 4. IMPLEMENTIERUNG<br />

Rohbau-Modell Mit statischen Mit statischen und<br />

Objekten verschiebbaren Objekten<br />

Abbildung 4.9: Anzeige verschiedener Hierarchiestufen des Gebäudes. Die Einteilung in Gruppen ermöglicht<br />

es, zwischen festen und verschiebbaren Hindernissen zu unterscheiden.<br />

Export des Modells ins OpenSceneGraph Format<br />

Das um verschiebbare Hindernisse erweiterte 3D-Modell wird über das OSGExp-Plugin [31] mit den in<br />

Abbildung 4.10 gezeigten Einstellungen ins OpenSceneGraph (.osg) Format exportiert. Dieses Format<br />

wurde gewählt, da es sich beim OpenSceneGraph-Format um eine einfach zu parsende, hierarchische<br />

Modellbeschreibungssprache handelt. Diese Format wird auch von anderen Nexus-Projekten zur Repräsentation<br />

von 3D-Modellen eingesetzt. OpenSceneGraph unterstützt außerdem Formate wie Alias Wavefront<br />

(.obj), 3D Studio Max (.3ds), VRML 1.0 (.wrl) und viele andere, die aber nicht die gewünschten<br />

strukturellen Eigenschaften besitzen.<br />

Abbildung 4.10: Osg Export Einstellungen des OSGExp Plugins für 3D Studio Max


4.2. BEREITSTELLUNG DER MODELLDATEN 47<br />

4.2.2 Darstellung des Gebäudemodells<br />

Die Darstellung komplexer 3D-Modelle wird üblicherweise durch den Einsatz einer ausgereiften 3D-<br />

Rendering-Engine übernommen. Diese setzen häufig einen Szenengraphen ein um die Szene möglichst<br />

effizient zu rendern. Verdeckung, „View-Frustum-Culling“, „Level-Of-Detail“ und viele andere Berechnungen<br />

werden vorab direkt auf dem Szenengraphen ausgeführt, damit nur die minimal nötige Anzahl an<br />

Vertices von der Grafikkarte dargestellt werden muss. Zudem wird eine schnelle Berechnung von Kollisionen<br />

und Schnittpunkten von Geraden mit der Szene ermöglicht. Das in Abschnitt 2.3.9 vorgestellte<br />

OpenSceneGraph-Toolkit stellt eine Opensource-Implementierung einer hochperformaten Rendering-<br />

Engine zur Verfügung. Diese wird in der hier vorgestellten Arbeit zur Simulation der Umgebung eingesetzt<br />

indem der in den OpenSceneGraph-Quellen enthaltene Viewer so erweitert wird, dass er die<br />

Distanzmessung des Sensormoduls im 3D-Gebäudemodell simuliert. Dies ermöglicht den Vergleich mit<br />

den real gemessenen Sensordaten. Die Locator genannte Implementierung der Navigationsassistenz-<br />

Software rendert die Szene zur grafischen Visualisierung der Positionsbestimmung aus Sicht einer virtuellen<br />

Kamera. Abbildung 4.11 (a) zeigt einen Raum im Informatikgebäude aus Sicht der simulierten<br />

Kamera. Zur besseren Informationsvisualisierung der Positionsbestimmungn, wird zudem eine Außenansicht<br />

der Szene gerendert, wie sie in Abbildung 4.11 (b) dargestellt ist. Diese zeigt die Position der<br />

virtuellen Kamera im Gebäude.<br />

Der Locator verbindet die in den folgenden Abschnitten beschriebenen Implementierungen zur Selbstlokalisation<br />

und Erkennung von modellierten Hindernissen und gibt das Feedback an den Benutzer grafisch<br />

zurück. Später soll auf eine grafische Ausgabe verzichtet werden und alle Berechnungen direkt auf<br />

dem Szenengraphen ausgeführt werden können. Die dargestellten Navigationshinweise könnten dann<br />

über eine Text-zu-Sprache Software wiedergegeben werden. Eine ausführliche Bedienungsanleitung mit<br />

allen Tastaturkürzeln findet sich in Anhang A.3.<br />

a) Aus Sicht der virtuellen Kamera b) Außenansicht der gerenderten Szene<br />

gerendertes 3D-Modell<br />

Abbildung 4.11: Darstellung des gerenderten 3D-Modells. Abbildung (a) zeigt die Szene aus Sicht der<br />

virtuellen Kamera, Bild (b) zeigt eine Außenansicht der gerenderten Szene.


48 KAPITEL 4. IMPLEMENTIERUNG<br />

4.3 Positionsbestimmung<br />

Ausgehend von den Modell- und Sensordaten wird in diesem Abschnitt auf die relevanten Berechnungsschritte<br />

des Navigationsprogramms eingegangen. Die zentralen Bestandteile sind die Objekterkennung,<br />

die Bestimmung der eigenen Position und der erkannten Objekte, sowie die Aktualisierung des Modells<br />

(Abbildung 4.12 (b))<br />

Realität vs<br />

Modell<br />

Neuberechnung auf Anfrage<br />

Farbbild<br />

Tiefenbild<br />

Objekterkennung<br />

Objektbeschreibung<br />

2D Bildpositionen<br />

Sensordaten Modelldaten<br />

Tiefenbild<br />

Richtung<br />

Positionsbestimmung<br />

Szenengraph<br />

Kontinuierliche Neuberechnung<br />

3D Raumpositionen<br />

Berechnung der<br />

Änderungstransformationen<br />

Aktualisierung des<br />

3D-Modells<br />

Objekterkennung<br />

2D Bildpositionen<br />

Positionsbestimmung<br />

3D Raumpositionen<br />

Berechnung der<br />

Änderungstransformationen<br />

a) Systemdesign b) Berechnungsschritte des<br />

Navigationsprogramms<br />

Abbildung 4.12: Berechnungsschritte zur Positionsbestimmung. Bild (a) zeigt nochmals das im Lösungsansatz<br />

entwickelte Systemdesign. Bild (b) zeigt die Berechnungsschritte, welche<br />

das Programm zur Navigationsunterstützung durchführen muss.<br />

Das im Lösungsentwurf vorgestellte Verfahren zur Bestimmung der eigenen Position verschiebt die<br />

virtuelle Kamera solange, bis der Unterschied zwischen Simulation und Realität minimal wird. Der Locator<br />

setzt für den Vergleich zwischen Realität und Modell ein Verfahren zur Verfolgung von geeigneten<br />

Messpunkten ein. Die Art der Auswahl der Messpunkte wird dabei dynamisch vom Programm gesteuert.<br />

4.3.1 Bestimmung geeigneter Messpunkte<br />

Wie im Lösungsansatz bereits erwähnt wurde, eignen sich für annähernd quadratische Räume Featurepunkte<br />

auf Wänden als Messpunkte. In langen Gängen ist ein Punkt am Ende des Ganges aussagekräftiger.<br />

Die Berechnung des Wandabstandsschätzwertes beziehungsweise des Gangendes zur Kategorisierung<br />

und Auswahl der über cvGoodFeaturesToTrack() gefundenen Featurepunkte ist in der tvCalcPos-<br />

Klasse implementiert.


4.3. POSITIONSBESTIMMUNG 49<br />

Schätzung des Wandabstandes<br />

Die Schätzung des Wandabstandes beruht auf der Annahme, dass sich in der oberen Hälfte des Bildes üblicherweise<br />

keine Gegenstände befinden. In Abbildung 4.13 (a) sind die vier verwendeten Höhen durch<br />

farbige Linien dargestellt. Bild (b) zeigt die über die Stereokamera ermittelten Tiefen in den verschiedenen<br />

Höhen. Die obere (rote) Linie zeigt deutlich die extremen Tiefenunterschiede an Fenstern. Diese<br />

sind an den roten „Zacken“ zu erkennen. Durch die Mittelung aller gemessenen Tiefen und die Auswahl<br />

des größten Mittelwertes, nach Elemination der „Zacken“, kann der Wandabstand abgeschätzt werden.<br />

Abbildung 4.13 zeigt die gemäß Absatz 3.2.3 anhand des Abstands kategorisierten Featurepunkte des<br />

Bildes. Als Messpunkte geeignete Featurepunkte sind gelb eingefärbt.<br />

a) Eingesetzte Messhöhen b) Ermittelte Tiefen c) Kategorisierte Featurepunkte<br />

Abbildung 4.13: Schätzung des Wandabstandes durch Tiefensampling in verschiedenen Höhen. Abbildung<br />

(a) zeigt in verschiedenen Farben kodierte Messhöhen. Die an den Messhöhen<br />

ermittelten Tiefen sind in (b) dargestellt. Bild (c) zeigt die kategorisierten Featurepunkte.<br />

Bestimmung des Fluchtpunktes<br />

Als Fluchtpunkt wird der Punkt im Bild bezeichnet, in dem sich die meisten diagonalen Kanten eines<br />

Kantenbildes schneiden. Für lange Gänge lässt sich dieser Schnittpunkt über die in Abbildung 3.6 (e)<br />

dargestellten Hough-Linien im Bild berechnen. Zu diesem Zweck werden in der tvCalcPos-Klasse über<br />

einen Aufruf cvHoughLines2() alle Hough-Linien (siehe Abschnitt 2.1.5) extrahiert und ihre Richtung<br />

anhand des Hough-Winkels bestimmt. Den gesuchten Schnittpunkt P1 jeweils zweier Diagonalen g und<br />

n, mit den Steigungswinkeln α1 und α2, wie sie in Abbildung 4.14 dargestellt sind, berechnet tvCalc-<br />

Pos::getVanisingPoint().<br />

Abbildung 4.14: Schnittpunkt zweier Geraden im 2D-Raum, Quelle [32]


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-


4.5. AKTUALISIERUNG DES 3D-MODELLS 51<br />

me die cvCompareHist() Funktion zur Verfügung. Über diese wird das berechnete Histogram mit den in<br />

der Modellbeschreibung gespeicherten Histogrammwerten des zu suchenden Objektes verglichen.<br />

Waren beide Farbtests erfolgreich, wird zuletzt der Unterschied zwischen gefundener Region und dem<br />

Form-Muster der Beschreibung berechnet. Der ObjektDetector setzt hierfür die ebenfalls in der OpenCV<br />

Bibliothek enthaltene cvMatchShapes() Funktion ein. Das Ergebnis dieses Aufrufs gibt den Unterschied<br />

der verglichenen Form zurück.<br />

Wird das gesuchte Objekt in der gefüllten Region wiedererkannt, speichert der ObjektDetector die räumlichen<br />

Koordinaten (x,y,z) des Mittelpunktes der gefundenen Region und ruft die Fülloperation für einen<br />

weiteren Startpunkt im Bild auf. Auf diese Weise können alle in der Objektbeschreibung vorhandenen<br />

Objekte gesucht und gefunden werden. Über die in Gleichung 3.10 entwickelte Positionsbestimmung<br />

der Objekte im Raum ist eine Aktualisierung der Objektpositionen im 3D-Modell möglich.<br />

Der hohe Rechenaufwand, der zur Segmentierung der Bildbereiche notwendig ist, erlaubt bisher keine<br />

Berechnung der Objektpositionen in Echtzeit. Aus diesem Grund wird die Objektsuche nicht kontinuierlich<br />

durchgeführt, sondern muss vom Benutzer bei Bedarf manuell gestartet werden. Auf diese Weise<br />

kann zum Beispiel beim Betreten eines neuen Raumes die Lage der verschiebbaren Objekte aktualisiert<br />

werden.<br />

4.5 Aktualisierung des 3D-Modells<br />

Die Bestimmung des aktuellen Aufenthaltsraumes der virtuellen Kamera, wie sie in Absatz 4.3.2 beschrieben<br />

ist, ermöglicht eine schnelle Abfrage der enthaltenen Geometrie über den Szenengraphen.<br />

Die Beispiel-Klasse zur Suche nach Stühlen implementiert die Suche nach allen Stühlen im aktuellen<br />

Aufenthaltsraum. Zeiger auf die entsprechenden Szenengraphen-Knoten ermöglichen es, bei Erkennung<br />

einer geänderten Position, den Translationsknoten eines Stuhles zu aktualisieren, um ihn auf diese Weise<br />

an seine neue Position zu verschieben. Um sicherzustellen, dass die Objekte weiterhin auf dem Boden<br />

stehen, werden nur die X- und Y-Koordinaten der gefunden Objekte neu berechnet.<br />

Nach der Aktualisierung des Gebäudemodells kann dieses über die im OpenSceneGraph-Paket enthaltenen<br />

Funktionen wieder als OSG-Datei abgespeichert werden.<br />

Das aktualisierte Modell ermöglicht es blinde Benutzer bei der Erforschung ihrer Umgebung zu unterstützen.<br />

Über einen Abtaststrahl im Modell können Informationen wie Abstand und Art von betrachteten<br />

Objekten an den Benutzer zurückgegeben werden. Zudem ist die Warnung vor Hindernissen über Kollisionserkennung<br />

im Modell möglich.


Kapitel 5<br />

Ergebnisse<br />

Dieses Kapitel stellt die Ergebnisse der Selbstlokalisation und Positionserkennung von verschiebbaren,<br />

modellierten Objekten vor. Es beschreibt kurz die Testbedingungen unter welchen die Ergebnisse gemessen<br />

wurden. Alle Tests wurden auf der im nächsten Absatz beschriebenen Hardware durchgeführt.<br />

5.1 Hardwarekomponenten des Navigationsassistenten<br />

Als Entwicklungsplattform diente in dieser Arbeit ein Samsung x20 Laptop mit 1.6 GHz Pentium CPU<br />

(siehe Abbildung 5.1 (a)). Dieses verfügt über einen sechspoligen Firewire-Anschluss und eignet sich<br />

deshalb besonders gut zur Ansteuerung der Stereokamera, da keine zusätzliche Stromquelle benötigt<br />

wird. Das Laptop wurde aus diesem Grund auch zur Messung der Ergebnisse eingesetzt. Zur Positionsbestimmung<br />

sind die in Bild (b) gezeigte Stereokamera und der Inertialsensor (Bild (c)) aus den im<br />

Lösungsansatz beschriebenen Gründen auf einen Fahrradhelm montiert.<br />

a) Samsung x20 Centrino Laptop b) Point Grey Bumblebee c) Xsens MT9-B<br />

mit 1.6 GHz Stereokamera Inertialsensor<br />

Abbildung 5.1: Navigationsassistent bestehend aus Samsung x20 und Sensormodul. Bild (a) zeigt das<br />

eingesetzte Laptop im Betrieb, Bild (b) die Stereokamera und (c) den Inertialsensor.<br />

53


54 KAPITEL 5. ERGEBNISSE<br />

5.2 Distanzmessung über Stereokamera<br />

Vor dem Einsatz im Navigationsassistenten wurde zunächst die Abstandsmessung über die Stereokamera<br />

getestet. Die aus dem Disparitätsbild ermittelten Abstände wurden mit den gemessenen Abständen<br />

eines Laserentfernungsmessers (Leica Disto pro 4 a) verglichen. In einem großen Raum des Gebäudes<br />

wurden hierfür in bestimmten Entfernungen Markierungen an Einrichtungsgegenständen und Wänden<br />

angebracht und die Abstände zur Kamera gemessen. Abbildung 5.2 zeigt die Abweichung der Entfernungsmessung<br />

über die Bumblebee vom exakten Wert. Im Nahbereich (bis sechs Meter) ergibt sich eine<br />

Abweichung im Dezimeterbereich. Für Distanzen über neun Metern ist mit einem Messfehler von über<br />

einem Meter zu rechnen. Der Fehler steigt dabei exponentiell mit wachsendem Abstand.<br />

Abbildung 5.2: Abweichung der Abstandsmessung über Stereobilder der Bumblebee<br />

5.3 Selbstlokalisierung<br />

Zur Bestimmung der Qualität der Selbstlokalisierung wurden in verschiedenen Räumen Markierungen<br />

am Boden angebracht. Die Position der Markierungen wurde mit dem Laserentfernungsmesser bestimmt<br />

und in einer Karte eingetragen (siehe Abbildung 5.3 - grüne Markierungen).<br />

Testparcours 1: VIS-GS-Pool im Informatikgebäude<br />

Als erster Testparcours diente der VIS-GS-Pool im Informatikgebäude. Die Messpunkte wurden mit<br />

dem Navigationsassistenten abgelaufen und die Position der virtuellen Kamera an diesen Punkten abgespeichert.<br />

Durchgeführt wurden vier Messungen. Die Ergebnisse der ersten Testläufe sind in Abbildung<br />

5.3 (a) dargestellt. In diesen wurden vom Navigationsassistenten kontinuierlich alle Positionsvarianten<br />

berechnet. Tabelle 5.1 zeigt die zugrundeliegenden Messdaten. In Abbildung 5.3 (b) und Tabelle 5.2 sind<br />

die Ergebnisse der Selbstlokalisierung bei Beschränkung auf die Berechnung zweier Positionsvarianten<br />

(vor und zurück) abgebildet.


5.3. SELBSTLOKALISIERUNG 55<br />

a) Selbstlokalisierung durch Berechnung aller Positionsvarianten<br />

b) Selbstlokalisierung bei Beschränkung auf zwei Varianten<br />

Abbildung 5.3: Ergebnisse der Positionsbestimmung im VIS-GS-Pool. Abbildung (a) zeigt die Markerpositionen<br />

(grün) und die Positionen der virtuellen Kamera des Navigationsassistenten<br />

bei Berechnung aller Positionsvarianten (rot bzw. blau). Bild (b) stellt die Selbstlokalisierung<br />

bei Beschränkung der Berechnung auf zwei Varianten dar. Für annähernd<br />

quadratische Räume (Raum 1 und Raum 2) zeigt sich eine durchschnittliche Abweichung<br />

im Meterbereich. In langen Gängen weichen die Positionen über zwei Meter von<br />

den exakten Werten ab. Türdurchgänge, an denen vom Benutzer nachgeholfen werden<br />

musste, sind gelb markiert.


56 KAPITEL 5. ERGEBNISSE<br />

Messpunkte Messung 1 Messung 2<br />

X Y x y |∆x| |∆y| x y |∆x| |∆y|<br />

Raum 1 66,71 -53,61 66,19 -54,09 0,51 0,48 66,28 -53,41 0,42 0,19<br />

(7,25m x 9,49m) 63,92 -53,56 64,23 -55,18 0,31 1,62 63,65 -54,59 0,26 1,03<br />

61,45 -53,46 62,09 -55,05 0,64 1,59 61,93 -54,22 0,48 0,76<br />

61,45 -57,31 63,85 -56,98 2,40 0,32 64,25 -57,32 2,80 0,01<br />

63,85 -57,46 62,93 -57,11 0,91 0,34 62,71 -54,19 1,13 3,26<br />

66,72 -57,51 65,56 -57,52 1,15 0,01 65,98 -54,92 0,73 2,58<br />

66,75 -61,05 64,61 -60,96 2,13 0,08 65,96 -60,77 0,78 0,27<br />

63,85 -61,41 63,46 -59,33 0,38 2,07 64,26 -60,39 0,41 1,01<br />

61,45 -61,09 61,79 -60,57 0,34 0,51 62,32 -59,87 0,87 1,21<br />

Abweichung Ø 0,32 0,29 0,35 0,12<br />

Raum 2 58,22 -61,1 59,77 -61,95 1,55 0,85 59,80 -60,49 1,58 0,60<br />

(7,25m x 9,49m) 58,23 -57,64 57,74 -59,24 0,48 1,60 57,41 -59,37 0,81 1,73<br />

58,18 -53,82 59,06 -55,23 0,88 1,41 59,30 -55,71 1,12 1,89<br />

58,23 -57,64 58,55 -57,61 0,32 0,02 57,66 -57,08 0,56 0,55<br />

58,22 -61,1 58,05 -60,98 0,16 0,11 58,41 -60,65 0,19 0,44<br />

58,17 -64,12 58,43 -64,02 0,26 0,09 58,05 -63,99 0,11 0,12<br />

58,13 -66,35 58,02 -65,25 0,10 1,09 57,48 -65,42 0,64 0,92<br />

56,25 -66,43 57,16 -66,48 0,91 0,05 57,85 -66,40 1,60 0,02<br />

Abweichung Ø 0,67 0,09 0,54 0,13<br />

Raum 3 56,22 -68,39 56,73 -67,54 0,51 0,84 58,25 -68,94 2,03 0,55<br />

(26,56m x 2,15m) 50,92 -68,38 54,74 -68,35 3,82 0,02 51,20 -69,56 0,28 1,18<br />

41,86 -68,4 41,83 -68,75 0,02 0,35 48,65 -68,70 6,79 0,30<br />

50,92 -68,38 51,44 -69,54 0,52 1,16 49,82 -68,24 1,09 0,13<br />

56,22 -68,39 59,79 -67,99 3,57 0,39 57,41 -68,54 1,19 0,15<br />

61,02 -68,31 61,94 -68,31 0,92 0,00 59,96 -68,48 1,05 0,17<br />

66,42 -68,42 65,67 -69,27 0,74 0,85 66,30 -67,91 0,11 0,50<br />

Abweichung Ø 0,11 0,37 0,21 0,56<br />

Tabelle 5.1: Positionen der virtuellen Kamera bei Berechnung aller vier Positionsvarianten. |∆x| und<br />

|∆y| geben den Betrag der Abweichung in X- und Y-Richtung an. Es ergibt sich für die in<br />

Abbildung 5.3 (a) markierten Räume eine durchschnittliche Abweichung im Meterbereich.<br />

Im Gang mit einfarbigen Wänden fällt diese Abweichung wesentlich größer aus.


5.3. SELBSTLOKALISIERUNG 57<br />

Messpunkte Messung 1 Messung 2<br />

X Y x y |∆x| |∆y| x y |∆x| |∆y|<br />

Raum 1 66,71 -53,61 66,12 -53,96 0,59 0,35 66,37 -53,86 0,34 0,25<br />

(7,25m x 9,49m) 63,92 -53,56 64,10 -54,16 0,18 0,60 63,67 -54,30 0,25 0,74<br />

61,45 -53,46 60,21 -53,53 1,24 0,07 61,64 -53,85 0,19 0,39<br />

61,45 -57,31 60,80 -56,97 0,65 0,34 61,18 -57,01 0,27 0,30<br />

63,85 -57,46 63,44 -58,50 0,41 1,04 63,50 -57,80 0,35 0,34<br />

66,72 -57,51 65,92 -58,72 0,80 1,21 65,62 -58,26 1,10 0,75<br />

66,75 -61,05 66,62 -61,24 0,13 0,19 66,10 -60,78 0,65 0,27<br />

63,85 -61,41 63,10 -60,45 0,75 0,96 63,60 -61,10 0,25 0,31<br />

61,45 -61,09 62,15 -61,26 0,70 0,17 62,23 -61,32 0,78 0,23<br />

Abweichung Ø 0,60 0,56 0,47 0,40<br />

Raum 2 58,22 -61,10 56,55 -61,30 1,67 0,20 59,68 -61,47 1,46 0,37<br />

(3.26m x 14,38m) 58,23 -57,64 57,44 -57,44 0,79 0,20 58,42 -57,32 0,19 0,32<br />

58,18 -53,82 57,68 -54,59 0,50 0,77 58,52 -55,07 0,34 1,25<br />

58,23 -57,64 57,79 -57,97 0,44 0,33 58,34 -56,88 0,11 0,76<br />

58,22 -61,10 57,64 -63,98 0,58 2,88 57,93 -60,93 0,29 0,17<br />

58,17 -64,12 57,58 -65,97 0,59 1,85 57,89 -63,90 0,28 0,22<br />

58,13 -66,35 57,70 -66,53 0,43 0,18 58,11 -65,77 0,02 0,58<br />

56,25 -66,43 55,86 -68,07 0,40 1,64 57,90 -66,14 1,65 0,29<br />

Abweichung Ø 0,67 1,01 0,54 0,50<br />

Raum 3 56,22 -68,39 55,13 -68,33 1,09 0,06 56,07 -68,13 0,15 0,26<br />

(26,56m x 2,15m) 50,92 -68,38 51,52 -68,06 0,60 0,32 55,82 -68,07 4,90 0,31<br />

41,86 -68,40 42,94 -68,32 1,08 0,08 46,51 -68,71 4,65 0,31<br />

50,92 -68,38 46,14 -68,52 4,78 0,14 47,64 -68,90 3,28 0,52<br />

56,22 -68,39 58,69 -68,69 2,47 0,30 58,48 -68,04 2,26 0,35<br />

61,02 -68,31 61,94 -68,54 0,92 0,23 60,35 -68,44 0,67 0,13<br />

66,42 -68,42 65,79 -68,66 0,63 0,24 64,01 -68,75 2,41 0,33<br />

Abweichung Ø 1,65 0,19 2,62 0,31<br />

Tabelle 5.2: Positionswerte der virtuellen Kamera für Abbildung 5.3 (b) bei Beschränkung der Berechnung<br />

auf zwei Positionsvarianten. |∆x| und |∆y| geben wieder den Betrag der Abweichung<br />

in X- und Y-Richtung an. Es zeigt sich, dass durch Beschränkung eine genauere Positionsbestimmung<br />

in Räumen möglich ist (vergleiche Abbildung 5.3 (b). In Gängen erzielt die<br />

Beschränkung keine besseren Ergebnisse, ist aber aufgrund des niedrigeren Berechnungsaufwands<br />

zu bevorzugen.


58 KAPITEL 5. ERGEBNISSE<br />

Testparcours 2: Wohnräume<br />

Aufgrund starker magnetischer Störungen im ersten Testparcours musste die Orientierung der virtuellen<br />

Kamera bei den Tests gelegentlich von Hand nachjustiert werden. Zudem stellen die vielen homogenen<br />

Flächen im Informatikgebäude ein „Worst Case Szenario“ für die Berechnung des Disparitätsbildes dar.<br />

Aus diesem Grund wurde ein zweiter Testparcours in einem Wohnhaus aufgebaut. Abbildung 5.4 und<br />

Tabelle 5.3 zeigen die hier gemessenen Ergebnisse.<br />

Abbildung 5.4: Ergebnisse der Positionsbestimmung in Wohnräumen. Aufgrund geringer magnetischer<br />

Störungen und besserer Texturen auf den Wänden, kann die eigene Position wesentlich<br />

exakter bestimmt werden.<br />

Ergebnis der Selbstlokalisierung<br />

Tabelle 5.1 und 5.2 zeigen die Ergebnisse der Positionsbestimmung des Sensormoduls bei unterschiedlichen<br />

Einstellungen der Navigationssoftware. Für annähernd quadratische Räume ergibt sich eine durchschnittliche<br />

Abweichung von der exakten Position von circa einem Meter. In langen Gängen ist mit<br />

einer durchschnittlichen Abweichung längs des Ganges von zwei Metern zu rechnen. Der Vergleich mit<br />

den Messergebnissen in Räumen, die weniger magnetische Störungen und wenige homogene Flächen<br />

aufweisen zeigt, dass dort eine Positionsbestimmung im Bereich weniger Dezimeter möglich ist. Die<br />

starke Positionsabweichung in langen Gängen entsteht zum einen durch die Schwierigkeit, geeignete<br />

Messpunkte zu finden (einfarbige Wände und wenige Texturen auf den Wänden), zum anderen aus der<br />

für große Entfernungen ungenauen Abstandsmessung der Bumblebee. Dieser Effekt ist in Abbildung<br />

5.2 dargestellt.


5.3. SELBSTLOKALISIERUNG 59<br />

Messpunkte Messung 1 Messung 2<br />

X Y x y |∆x| |∆y| x y |∆x| |∆y|<br />

Raum 1 1,00 0,70 1,55 0,18 0,55 0,52 1,34 0,35 0,34 0,35<br />

2,30 0,75 2,65 0,29 0,35 0,46 2,53 0,46 0,23 0,29<br />

4,00 0,70 4,16 0,32 0,16 0,38 3,92 0,52 0,08 0,18<br />

4,00 2,30 4,10 2,74 0,10 0,44 4,05 2,24 0,05 0,06<br />

2,30 2,30 2,63 2,36 0,33 0,06 2,78 2,30 0,48 0,00<br />

1,00 2,30 1,20 2,62 0,20 0,32 0,08 2,30 0,92 0,00<br />

1,00 3,50 1,59 3,29 0,59 0,21 1,17 3,40 0,17 0,10<br />

2,30 3,50 2,44 3,34 0,14 0,16 2,48 3,36 0,18 0,14<br />

4,00 3,50 3,60 3,41 0,40 0,09 3,27 3,48 0,73 0,02<br />

Abweichung Ø 1,65 0,19 2,62 0,31<br />

Gang 4,66 5,11 4,58 4,95 0,08 0,16 3,83 4,90 0,83 0,21<br />

6,66 5,11 6,26 4,97 0,40 0,14 6,92 5,00 0,26 0,11<br />

8,00 5,11 7,45 5,11 0,55 0,00 7,53 4,98 0,47 0,13<br />

9,50 5,11 7,86 5,03 1,64 0,08 8,91 5,18 0,59 0,07<br />

Abweichung Ø 1,65 0,19 2,62 0,31<br />

Raum 2 9,50 7,00 9,41 7,49 0,09 0,49 9,15 7,90 0,35 0,90<br />

9,50 8,50 9,47 8,38 0,03 0,12 9,22 8,50 0,28 0,00<br />

9,50 9,78 9,56 9,46 0,06 0,32 9,31 9,29 0,19 0,49<br />

7,74 9,78 8,07 9,74 0,33 0,04 8,09 9,63 0,35 0,15<br />

7,74 8,50 7,62 7,72 0,12 0,78 7,72 7,30 0,02 1,20<br />

7,74 7,00 7,68 6,52 0,06 0,48 7,69 6,39 0,05 0,61<br />

7,74 7,00 7,6787 6,52 0,06 0,48 7,69 6,39 0,05 0,61<br />

Abweichung Ø 1,65 0,19 2,62 0,31<br />

Tabelle 5.3: Positionswerte der virtuellen Kamera zu Abbildung 5.4. Es wird deutlich, dass in Räumen<br />

mit besseren Wandtexturen und geringen magnetischen Störungen eine bessere Positionsbestimmung<br />

erzielt werden kann. Die durchschnittliche Abweichung liegt hier im Bereich<br />

weniger Dezimeter.


60 KAPITEL 5. ERGEBNISSE<br />

5.4 Lokalisierung von verschiebbaren Objekten<br />

Anhand einer Modellbeschreibung für modellierte, verschiebbare Objekte ist es möglich, diese über<br />

ein bildbasiertes Verfahren in der Szene zu lokalisieren. Um das entwickelte Suchverfahren zu testen,<br />

wurden Modellbeschreibungen für mehrere Ansichten verschiedener Stühle erstellt und diese in unterschiedlichen<br />

Abständen vor der Kamera positioniert. Die exakten Abstände zu den Objekten und die<br />

über die Stereokamera ermittelten Distanzen sind in Abbildung 5.5 zusammengefasst. Aufgrund der<br />

Eigenschaften des eingesetzten Lokalisierungsverfahrens konnten nicht in jedem Durchgang alle Stühle<br />

gefunden werden (fehlende orange Balken im Bild). Vor allem dunkelblaue Stühle heben sich bei<br />

zu schwacher Beleuchtung zu wenig von ihrer grauen Umgebung ab und können deshalb schlechter<br />

gefunden werden.<br />

Abbildung 5.5: Distanzen zu lokalisierten Objekten. Für Abstände von bis zu 4,5 Metern können Objekte<br />

im Stereobild lokalisiert werden. Ob ein gesuchtes Objekt gefunden werden kann,<br />

ist von der Beleuchtung und dem Farbkontrast zur Umgebung abhängig.<br />

Ergebnisse der Objektlokalisierung<br />

Für die Bestimmung der Position erkannter Objekte lässt sich, aus den Schaubild 5.5 zugrundeliegenden<br />

Daten, eine durchschnittliche Abweichung von 0,2 Metern ermitteln. Aufgrund der Einschränkung des<br />

Verfahrens auf eine bestimmte Objektgröße werden Objekte ab einer Entfernung von circa viereinhalb<br />

Metern nicht mehr gefunden. Dies ist für eine Hindernis-Erkennung für Blinde noch annehmbar, da<br />

innerhalb dieser Distanz noch Gelegenheit besteht, Hindernisse zu erkennen und zu umgehen.


5.5. PERFORMANCEMESSUNG DER NAVIGATIONSSOFTWARE 61<br />

5.5 Performancemessung der Navigationssoftware<br />

Zur Bestimmung der Geschwindigkeit der Navigationssoftware wurde die Anzahl der verarbeiteten Bilder<br />

pro Sekunde (Fps) gemessen. Abhängig von der Komplexität der Szene kann diese mit bis zu 230<br />

Fps dargestellt werden. Wird zusätzlich das Disparitätsbild der Stereokamera angezeigt, sinkt die Geschwindigkeit<br />

auf 16 Fps. Dies entspricht circa zehn Prozent der von der Grafikhardware möglichen<br />

Leistung. Abbildung 5.6 zeigt die Berechnungsgeschwindigkeiten mit und ohne Stereokamera und bei<br />

Zuschaltung der entwickelten Verfahren zur Selbstlokalisierung und Suche nach verschiebbaren Objekten.<br />

Abbildung 5.6: Performancemessung der Navigationssoftware. Aufgrund der zeitaufwändigen Berechnung<br />

sinkt die Anzahl der verarbeiteten Bilder der Software bei Anzeige des Disparitätsbildes<br />

um circa 90 Prozent.


Kapitel 6<br />

Diskussion<br />

Dieses Kapitel diskutiert die im letzten Kapitel gemessenen Ergebnisse. Es geht auf die Bedeutung der<br />

ermittelten Positionsdaten und die errechnete Abweichung vom mit Laser vermessenen, exakten Wert<br />

ein und gibt einen Ausblick auf die Maßnahmen, die zur weiteren Verbesserung der Positionsbestimmung<br />

führen könnten.<br />

6.1 Bewertung der Ergebnisse<br />

Die Ergebnisse der Selbstlokalisation des Sensormoduls zeigen, dass eine deutliche Verbesserung der<br />

Positionsbestimmung gegenüber dem bisher eingesetzten WLAN-Positionierungssystem, welches die<br />

eigene Position nur auf Raumgenauigkeit bestimmt, erreicht werden kann. Je nach Beschaffenheit der<br />

Räume ist es möglich, die Position des Benutzers auf einen Bereich von einem halben Meter bis maximal<br />

zwei Meter einzugrenzen. Der Blinde ist damit einerseits weiterhin auf den Blindenstock zur<br />

Erforschung seiner direkten Umgebung angewiesen, andererseits können erweiterte Informationen aus<br />

dem Modell die Navigation zusätzlich erleichtern.<br />

Durch das in Abschnitt 3.2.3 vorgestellte Verfahren ist es möglich, die Selbstlokalisation echtzeitnahe<br />

durchzuführen. Der Einsatz geeigneter Bildpunkte zur Abstandsbestimmung ist robust gegenüber Störungen<br />

und somit in vielen Umgebungen einsetzbar. Tests mit unterschiedlichen Anzahlen berechneter<br />

Positionsvarianten im Modell zeigen, dass es im Allgemeinen ausreicht, die ersten zwei Varianten (vor<br />

und zurück) zusätzlich zur aktuellen Position mit der Realität zu vergleichen. In diesem Fall sollte der<br />

Benutzer gelegentlich den Kopf um 90 Grad drehen, um durch Abweichungen des Kompasses entstandene<br />

Fehler zu korrigieren.<br />

Die Performancemessung in Abschnitt 5.5 macht deutlich, dass eine kontinuierliche Suche nach modellierten,<br />

verschiebbaren Hindernissen, bei gleichzeitiger Erfassung des Stereobildes, den Programmablauf<br />

zu stark verzögert (0,62 Bilder pro Sekunde). Diese Berechnung muss deshalb vom System oder<br />

vom Benutzer bei Bedarf aufgerufen werden. Die Ergebnisse der Objektlokalisierung zeigen, dass das<br />

zur Detektion der Objekte entworfene Verfahren (siehe Abschnitt 3.2.4) Hindernisse mit Dezimetergenauigkeit<br />

lokalisieren kann, sofern diese nicht zu weit entfernt oder von anderen Objekten verdeckt sind.<br />

Durch Vergleiche mit dem Modell können genauere Informationen über die Art und Lage von Objek-<br />

63


64 KAPITEL 6. DISKUSSION<br />

ten in der Umgebung des Benutzers bereitgestellt werden, als das über bisherige Verfahren möglich ist<br />

(Abschnitt 2.2).<br />

6.2 Ausblick<br />

Im Verlauf dieser Arbeit wurde deutlich, dass viele der eingesetzten Verfahren durch die Wahl geeigneter<br />

Parameter oder durch die Kombination mit anderen Methoden und Sensordaten verbessert werden<br />

können. Der implementierte Prototyp zeigt, dass das entworfene Konzept zur Selbstlokalisation und<br />

Detektion geeignet ist und durch Beschleunigung der eingesetzten Verfahren und schnellere Hardware<br />

schon bald eine Navigationsunterstützung für Blinde echtzeitnahe möglich ist.<br />

Die Geschwindigkeitsmessung der Software zeigt, dass bis zu 90 Prozent der Rechenzeit für die Berechnung<br />

des Tiefenbildes benötigt werden. Da diese Berechnung komplett auf der CPU stattfindet bleibt<br />

nur wenig Zeit für die zur Positionsbestimmung notwendigen Verfahren. Eine GPU-basierte Berechnung<br />

des Disparitätsbildes könnte die CPU stark entlasten und auf diese Weise die Suche nach verschiebbaren<br />

Objekten beschleunigen.<br />

Die Ende Oktober 2005 erscheinende Umsetzung eines Embedded Systems zur Berechnung der Stereobilder<br />

von Videre Design [33] stellt ebenfalls eine interessante Möglichkeit zur Beschleunigung des<br />

Systems dar. Der auf einem kleinen FPGA (2x3 cm) synthetisierte Stereoalgorithmus soll die CPU von<br />

allen Berechnungen befreien, die zur Ermittlung der Abstände aus dem Tiefenbild notwendig sind und<br />

ausreichende Bildfrequenzen liefern.<br />

Prinzipbedingt ist ein Raumwechsel über die Stereokamera oft nicht zu erkennen. In diesen Fällen wird<br />

die Kamera aufgrund ungleicher Distanzen im Modell rückwärts bewegt, obwohl sie in der Realität<br />

vorwärts bewegt wird. Dieser Effekt könnte durch die zusätzliche Nutzung der Beschleunigungssensoren<br />

des Inertialsensors oder durch eine Fusion der Positionsbestimmung mit anderen Verfahren, wie zum<br />

Beispiel dem von Kombrink [14] verbessert werden.<br />

Neue Erkenntnisse aus der Psychophysik könnten zudem helfen, die Suche nach verschobenen Objekten<br />

zu verbessern und die Segmentierung der Bildregionen zu beschleunigen. Eine geeignete Wahl von<br />

wenigen Startpunkten, von deren Position aus die Regionen segmentiert werden, würde das eingesetzte<br />

Suchverfahren erheblich beschleunigen.<br />

Die zunehmende Miniaturisierung von Kamerasensoren macht eine Integration der Sensorhardware in<br />

eine Brille denkbar. Das immer häufiger verfügbare WLAN-Netz könnte in diesem Fall genutzt werden<br />

um aufwändige Berechnungen vom Navigationsassistenten auf einen externen Server zu verlagern und<br />

so den blinden Benutzer, bezüglich der zu tragenden Hardware, weiter zu entlasten.<br />

Über die von Hub et al. in [34] vorgestellte Methode zur Sprachausgabe oder ein taktiles Display können<br />

die über den Navigationsassistenten gewonnenen Informationen an den blinden Benutzer weitergegeben<br />

werden.


Kapitel 7<br />

Zusammenfassung<br />

Ziel dieser Arbeit war die Optimierung eines elektronischen Navigationsassistenten für Blinde, der auf<br />

der Kombination lokaler Sensorik mit 3D-Gebäudemodellen basiert. Zum einen sollte die Position des<br />

Benutzers und die von modellierten Objekten, unter Verwendung einer Stereokamera und eines Inertialsensors,<br />

bestimmt werden. Des Weiteren sollten veränderte Positionen von verschiebbaren Objekten<br />

erkannt und das Gebäudemodell entsprechend aktualisiert werden.<br />

Nach der Auswahl und Kalibrierung geeigneter Sensorhardware wurden Verfahren evaluiert, über die<br />

Daten aus dem virtuellen Modell mit realen Messungen verglichen werden können. Aufgrund der langen<br />

Rechenzeit vorhandener Verfahren, wurde eine neue Methode zur Auswahl von geeigneten Messpunkten<br />

entwickelt und implementiert. Als geeignet stellen sich Bildpunkte heraus, die einen starken<br />

Helligkeitskontrast bezüglich ihrer Umgebung aufweisen. Diese können über richtungsbasierte Gradientverfahren<br />

gefunden werden. An diesen Stellen kann die Tiefe über die Stereodisparität zuverlässig<br />

berechnet werden. Parameterbereiche zur Auswahl der Messpunkte wurden über Tests in verschiedenen<br />

Umgebungen ermittelt. Durch den Vergleich von Messdaten mit einer simulierten Umgebung kann die<br />

Selbstlokalisation gegenüber bisher verwendeten Verfahren erheblich verbessert werden. Die Messfehler<br />

liegen in Umgebungen mit einfarbigen Wänden im Bereich von ein bis zwei Metern. In kontrastreichen<br />

Umgebungen liegt der Fehler im Bereich weniger Dezimeter.<br />

Zur bildbasierten Detektion verschobener Objekte wurden charakteristische Objekteigenschaften ermittelt<br />

und in einer Modellbeschreibung zusammengefasst. Diese umfasst Farbnamen, Farbtonwerte und<br />

Forminformationen. Durch die Kombination bestehender Verfahren aus der farbbasierten Bildsegmentierung<br />

und deren Erweiterung um die Nutzung der Tiefeninformationen, können Regionen im Bild segmentiert<br />

und mit der Modellbeschreibung verglichen werden. Der zusätzliche Vergleich der Form und<br />

die Optimierung der Erkennungsparameter können dabei beleuchtungsbedingte Störungen der Farbsegmentierung<br />

kompensieren. Verschiebbare, modellierte Objekte können auf diese Weise lokalisiert und<br />

das Modell ohne ständiges Eingreifen eines 3D-Designers aktuell gehalten werden.<br />

Über die im Rahmen dieser Arbeit entwickelten Methoden können Blinde ihre Position innerhalb einzelner<br />

Räume bis auf eine ertastbare Abweichung bestimmen. Die Verwendung eines 3D-Gebäudemodells<br />

ermöglicht es, auf zusätzliche Infrastruktur im Gebäude weitgehend zu verzichten. Durch Ausgabe von<br />

Objektnamen, Distanzmessungen zu modellierten Objekten und Kollisionserkennung im Modell kann<br />

der blinde Benutzer neuartige Informationen erhalten und vor Hindernissen gewarnt werden. Für Blinde<br />

ist somit eine Basis für eine sichere und unabhängige Navigation in unbekannten Gebäuden gegeben.<br />

65


Anhang A<br />

Bedienungsanleitungen<br />

A.1 Kalibrierungs-Tool<br />

Zur Kalibrierung von Kameras wurde das Programm CamCalibrator entwickelt. Es ermöglicht die Kalibrierung<br />

von Kameras über die Aufnahme eines Schachbrettmusters aus verschiedenen Positionen.<br />

a) CamCalibrator-GUI b) Kamerabild mit gefundenen Ecken<br />

Abbildung A.1: CamCalibrator zur Kalibrierung von Kameras. Bild (a) zeigt die GUI zur Steuerung<br />

der Kalibrierung, (b) zeigt die gefundenen inneren Ecken des Schachbrettmusters als<br />

farbige Punkte.<br />

Nach Programmstart muss die Kamera über den „Start Cam“-Button gestartet werden. Sofern die Kamera<br />

dies unterstützt, wird ein Video Device Konfigurationsfenster geöffnet. In diesem sollte die maximale<br />

Auflösung und RGB als Farbspektrum gewählt werden. Die Anzahl der Zeilen und Spalten des verwen-<br />

67


68 ANHANG A. BEDIENUNGSANLEITUNGEN<br />

deten Schachbrettmusters muss in die Felder „Rows, Cols“ eingetragen werden. Das Programm sucht<br />

nach dieser Angabe automatisch die inneren Ecken des Schachbrettmusters. Der „Save Image“-Button<br />

wird erst freigegeben, wenn alle Ecken gefunden wurden. Im „Num Images“-Feld kann die Anzahl der<br />

zur Kalibrierung verwendeten Bilder angegeben werden. Für die Bestimmung der Verzerrungen sind<br />

mindestens drei Bilder des Musters aus unterschiedlichen Betrachtungswinkeln notwendig. Nachdem<br />

die notwendige Anzahl an Bildern abgespeichert wurde, erlaubt der Knopf „Get Calibration Parameters“<br />

die Berechnung der gesuchten Kalibrierungsdaten. Diese können über den „Save“-Button abgespeichert<br />

und später in anderen Programmen geladen werden.<br />

Über den „Verbose“ Schalter kann eine grafische Darstellung der Suche nach den inneren Ecken zugeschaltet<br />

werden. „Flip Image“ ermöglicht das Spiegeln der Bilder an der Horizontalen, falls die Kamerabilder<br />

auf dem Kopf stehen sollten.<br />

Nach der Berechnung der Parameter kann die Kamera gestoppt und über den „Quit“-Knopf die Anwendung<br />

beendet werden.<br />

A.2 Rektifizierungs-Tool<br />

Die mit StereoCam bezeichnete Anwendung erweitert den CamCalibrator um die Ansteuerung einer<br />

zweiten Kamera und die Möglichkeit neben den Kalibrierungsdaten gleichzeitig die zur Rektifizierung<br />

notwendigen Parameter mitzuberechnen.<br />

a) StereoCam-GUI b) linkes Kamerabild c) rechtes Kamerabild<br />

Abbildung A.2: StereoCam zur Kalibrierung und Rektifizierung von Kameras. Bild (a) zeigt die StereoCam<br />

Oberfläche, in Bild (b) und (c) sind die Kamerabilder mit gefundenen Schachbrettecken<br />

dargestellt.


A.3. NAVIGATIONSSOFTWARE - LOCATOR 69<br />

Der Ablauf des Programms ist dem CamCalibrator nachempfunden. Nach dem Start der Anwendung<br />

muss zunächst die Auflösung und das Farbspektrum beider Kameras eingestellt werden. Farbe und Helligkeit<br />

der Kameras sind über die „Left, Right“-Knöpfe im „Cam Settings“-Bereich einstellbar. Die<br />

Anzahl der Spalten und Zeilen des verwendeten Schachbrettmusters muss wieder in die „Rows-, Cols“-<br />

Felder eingetragen werden. Nach Drücken des „Calibrate“-Buttons sucht das Programm im linken und<br />

rechten Kamerabild die inneren Ecken des Musters und markiert diese mit farbkodierten Punkten. Bei<br />

Positionsänderungen des Musters muss darauf geachtet werden, dass das Schachbrett immer in beiden<br />

Kamerabildern zu sehen ist. Durch die Betätigung des „Snap“-Knopfes wird die aktuelle Ansicht gespeichert.<br />

Zur Rektifizierung sind mindestens fünf Ansichten aus verschiedenen Winkeln notwendig. Die<br />

gewünschte Anzahl kann in „Num Images“ eingestellt werden, sollte aber nicht zu hoch angesetzt werden,<br />

da sonst die Berechnung der Kalibrations- und Rektifizierungsdaten unnötig lange dauert. Der „Sort<br />

Points“-Schalter wurde eingefügt, da sich die Reihenfolge der linken und rechten Schachbrettecken unterscheiden<br />

kann (erkennbar durch unterschiedliche Farbkodierung der Punkte in den Kamerabildern).<br />

Ist der Schalter aktiviert, werden die Ecken automatisch sortiert. Dies führte in allen Tests zu besseren<br />

Ergebnissen. Steht dem Programm eine ausreichende Anzahl an Bildpaaren zur Verfügung, werden<br />

die Kalibrierungs- und Rektifizierungsdaten automatisch berechnet. Diese können über die „Save“- und<br />

„Load“-Knöpfe abgespeichert und später wieder geladen werden.<br />

Über den „Show/Hide“-Button kann das berechnete Stereobild ein- und ausgeblendet werden. Das Ausund<br />

Einschalten der „Undistort“- und „Rectify“-Schalter macht den Einfluss von Kalibrierung und Rektifizierung<br />

auf das Disparitätsbild deutlich. Der „Steps“-Regler steuert die Anzahl der verwendeten Disparitätsstufen.<br />

Die Anwendung kann nach dem Anhalten der Kameras über den „Quit“-Knopf verlassen<br />

werden.<br />

A.3 Navigationssoftware - Locator<br />

Locator ist die implementierte Software des Navigationsassistenten. Sie bestimmt die Position des Sensormoduls<br />

durch Vergleiche zwischen real gemessenen und simulierten Abstandsdaten in Gebäuden. Für<br />

den Vergleich zwischen Realität und Modell wird ein OpenSceneGraph-Modell des Gebäudes verwendet.<br />

Aus diesem Grund baut der Locator auf dem OpenSceneGraph-Viewer auf und erbt das Konzept<br />

zur Mausinteraktion mit der Szene und einige Tastaturkürzel.<br />

Bevor der Viewer, welcher die aktuelle Position und Navigationshilfen anzeigt, gestartet wird, fragt eine<br />

MFC-Oberfläche den aktuellen Aufenthaltsraum ab.<br />

Abbildung A.3: Raum-Auswahl-Dialog. Über diesen Dialog muss beim Programmstart der aktuelle<br />

Aufenthaltsraum angegeben werden.


70 ANHANG A. BEDIENUNGSANLEITUNGEN<br />

Nach der Angabe des Startraumes zeigt der Locator im Hauptfenster die virtuelle Szene mit der aktuellen<br />

Position und Orientierung der Kamera an (siehe Abbildung A.4 (a)). Nebenfenster Right zeigt das Bild<br />

der realen Kamera mit den Messpunkten in den oberen sechs Quadranten. Im Nebenfenster Disp wird<br />

das aus der Stereodisparität berechnete Tiefenbild und ebenfalls die Position der Messpunkte angezeigt.<br />

Über die Schieberegler im Right-Fenster kann das Rot-Blau-Verhältnis der Kamera und die Anzahl der<br />

berechneten Varianten eingestellt werden. Die Zahlen entsprechen folgenden Varianten:<br />

Variants Berechnete Varianten<br />

0 keine<br />

1 aktuelle Position<br />

2, 3 aktuelle Position, vor, zurück<br />

3, 4 aktuelle Position, vor, zurück, links, rechts (alle)<br />

Tabelle A.1: Einfluss des Reglers „Variants“ auf die Anzahl der berechneten Varianten<br />

Über die s-Taste kann die Selbstlokalisation gestartet werden. Sollte die Orientierung der virtuellen<br />

Kamera nicht mit der realen Blickrichtung übereinstimmen kann dies über die r- / l-Tasten korrigiert<br />

werden. Die Suche nach modellierten Objekten steht über die f-Taste bereit. Tabelle A.2 fasst alle Tastaturkürzel<br />

zusammen, die zur Steuerung des Locators notwendig sind. Diese können im laufenden<br />

Programm über die h-Taste im Locator-Fenster eingeblendet werden. Die i-Taste ermöglicht zudem das<br />

Anzeigen der Navigationshinweise in einem HUD. Dieses gibt Auskunft über den aktuellen Aufenthaltsraum<br />

und zeigt den Namen und Abstand des Objekts im Zentrum des Kamerabildes an. Errechnet<br />

die Bewegungsextrapolation Kollisionen im Modell wird hier auch eine entsprechende Warnung ausgegeben.<br />

Zur besseren Visualisierung der aktuellen Position wird im oberen Teil des 3D-Modell-Fensters<br />

die Szene von außen angezeigt. Über die linke Maustaste kann die Szene rotiert werden. Die rechte<br />

Maustaste erlaubt das Hinein- und Herauszoomen. Werden beide Tasten gedrückt, ist zudem das Verschieben<br />

der betrachteten Szene möglich.<br />

Taste Locator-Funktion<br />

h Anzeige der Hilfe im Viewer<br />

i HUD anzeigen / ausblenden<br />

s Start / Stop der Positionsbestimmung<br />

← ↑ ↓ → Verschiebung der virtuellen Kamera<br />

l, r Rotation der virtuellen Kamera nach links, rechts<br />

u, d Translation der virtuellen Kamera nach unten, oben<br />

f Einmalige Suche nach Objekten<br />

t Trainieren einer neuen Objektbeschreibung<br />

w Modellbeschreibung speichern<br />

o Aktualisiertes 3D-Modell abspeichern<br />

ESC Programmende<br />

SPACE Rücksetzen der Außenansicht<br />

Tabelle A.2: Tastaturkürzel zur Steuerung des Navigationsassistenten


A.3. NAVIGATIONSSOFTWARE - LOCATOR 71<br />

a)<br />

Abbildung A.4: Locator Programmoberfläche. Das Hauptfenster (a) zeigt die Position der virtuellen<br />

Kamera, welche aus den Messdaten der Stereokamera berechnet wurde. Über dieses<br />

Fenster kann die Navigationssoftware gesteuert und die Position und Orientierung der<br />

Kamera nach Programmstart korrigiert werden. Bild (b) zeigt die Position der augenblicklich<br />

verwendeten Messpunkte in den Quadranten. Schieberegler ermöglichen die<br />

Begrenzung der berechneten Varianten und die Einstellung der Kamerafarben. In Bild<br />

(c) wird das Disparitätsbild und ebenfalls die Messpunkte angezeigt.<br />

b)<br />

c)


72 ANHANG A. BEDIENUNGSANLEITUNGEN<br />

A.3.1 Lernen einer Objektbeschreibung<br />

Über den Locator besteht die Möglichkeit neue Objektbeschreibungen für verschiebbare Objekte zu<br />

erzeugen. Bisher ist diese Funktion allerdings nur für das Objekt „Stuhl“ implementiert. Wird das zu<br />

erlernende Objekt wie in Abbildung A.5 (a) im Zentrum des Kamerabildes positioniert, kann über die<br />

t-Taste die Objekt-Trainings-Funktion gestartet werden. Wurde eine ausreichend große und charakteristische<br />

Region des Objekts markiert (siehe Abbildung A.5 (b)) kann die zugehörige Modellbeschreibung<br />

über die w-Taste abgespeichert werden.<br />

a) b)<br />

Abbildung A.5: Trainieren eines verschiebbaren Objekts im Locator. Bild (a) zeigt das zu trainierende<br />

Objekt im Zentrum des Bildes. In (b) ist die gefundene Region Weiß markiert.<br />

Die im Locator-Verzeichnis unter data/ abgelegte Modellbeschreibung enthält den Namen der wahrgenommenen<br />

Farbe des Objekts und die zur Erkennung notwendigen Histogrammwerte (siehe Abbildung<br />

A.6 (a). Das in Bild (b) gezeigte Form-Muster wird ebenfalls abgespeichert.<br />

a) b)<br />

Abbildung A.6: Histogramm und Forminformationen der Modellbeschreibung. In (a) sind die Histogrammwerte<br />

des gefundenen Stuhls dargestellt, Bild (b) zeigt das aus der gefüllten<br />

Region abgeleitete Form-Muster.


Literaturverzeichnis<br />

[1] Harris, C.; Stephens, M.: A Combined Corner and Edge Detector. In: M.M. Matthews, (eds.): 4th<br />

ALVEY vision conference, 147–151. University of Manchester, England, September, 1988<br />

[2] Matching with Invariant Features, 19. Oktober, 2005.<br />

Internetseite: http://www.wisdom.weizmann.ac.il/ deniss/vision_spring04/files/InvariantFeatures.ppt<br />

[3] Intel Corporation: Open Source Computer Vision Library, Reference Manual, 19. Oktober, 2001.<br />

Internetseite: http://www710.univ-lyon1.fr/ ameyer/devel/opencv/docs/opencvman_old.pdf<br />

[4] Zhang, Z.: Flexible Camera Calibration by Viewing a Plane from Unknown Orientations. In:<br />

ICCV, 666–673. 1999<br />

[5] Owens, R.: Epipolar geometry, 19. Oktober, 2005.<br />

Internetseite: http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/OWENS/LECT10/<br />

node3.html<br />

[6] Bougnoux, S.: Learning Epipolar Geometry, 19. Oktober, 2005.<br />

Internetseite: http://www-sop.inria.fr/robotvis/personnel/sbougnou/Meta3DViewer/EpipolarGeo.html<br />

[7] Li, X.: Stereo Vision based Object Distance Estimation in 3D Environment Models. Diplomarbeit,<br />

Universität Stuttgart, 2005<br />

[8] Canny, J. Finding Edges and Lines in Images. Technical report, Cambridge, MA, USA, 1983<br />

[9] Fermüller, C.: Edge detection, 19. Oktober, 2005.<br />

Internetseite: http://www.cfar.umd.edu/ fer/cmsc426/lectures/edge1.ppt<br />

[10] Wyszecki, G.; Stiles, W. S.: Color Science. John Wiley & Sons, 1982<br />

[11] Ulrich, I.; Borenstein, J.: The GuideCane-applying mobile robot technologies to assist the visually<br />

impaired. IEEE Transactions on Systems, Man, and Cybernetics, Part A Vol. 31.2, 131–136 , 2001<br />

[12] Kalkusch, M. (eds.). Structured Visual Markers for Indoor Pathfinding, 2002<br />

[13] Chaitanya, V. K.: A Robotic Wayfinding System for the Visually Impaired<br />

[14] Kombrink, S.: Positionsbestimmung in Gebäuden auf der Basis von Sensordaten und Umgebungsinformationen.<br />

Diplomarbeit, Universität Stuttgart, 2005<br />

73


74 LITERATURVERZEICHNIS<br />

[15] Hub, A. und Teufel, H. in Jamal, R. and Jaschinski, H.,: Virtuelle Instrumente in der Praxis. Hüthig<br />

2003<br />

[16] Hub, A.; Diepstraten, J.; Ertl, T.: Augmented Indoor Modeling for Navigation Support for the Blind.<br />

In: International Conference on Computers for People with Special Needs, 54–59. Las Vegas, NV,<br />

USA, 2005<br />

[17] Rogler, U.: NAS Navigation Assistance System - Orientierungshilfe für Blinde. Diplomarbeit,<br />

Hochschule für Gestaltung Offenbach am Main, 2005<br />

[18] Lienhart, R.; Maydt, J.: An Extended Set of Haar-like Features for Rapid Object Detection. IEEE<br />

ICIP Vol. 1, 900–903 , 2002<br />

[19] Viola, P.; Jones, M. J.: Rapid Object Detection using a Boosted Cascade of Simple Features. IEEE<br />

CVPR Vol. 1, 511–518 , 2001<br />

[20] Adolf, F.: OpenCV´s Rapid Object Detection, 19. Oktober, 2005.<br />

Internetseite: http://terasu.cntl.kyutech.ac.jp/ nishida/opencv/OpenCV_ObjectDetection_HowTo.pdf<br />

[21] Bouguet, J.-Y. Pyramidal Implementation of the Lucas Kanade Feature Tracker Description of the<br />

Algorithm. Intel Corporation, Microprocessor Research Labs, 1999<br />

[22] Lucas, B. D.; Kanade, T.: An Iterative Image Registration Technique with an Application to Stereo<br />

Vision (IJCAI). In: Proceedings of the 7th International Joint Conference on Artificial Intelligence<br />

(IJCAI ’81), 674–679. April, 1981<br />

[23] Open Computer Vision Library, 19. Oktober, 2005.<br />

Internetseite: http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16937<br />

[24] Open Scene Graph, 19. Oktober, 2005.<br />

Internetseite: http://www.openscenegraph.org<br />

[25] Sanftmann, H.: Objekt Registrierung für AR-Anwendungen. Diplomarbeit, Universität Stuttgart,<br />

2005<br />

[26] OpenCV Library Documentation, 19. Oktober, 2005.<br />

Internetseite: http://www.cs.bham.ac.uk/resources/courses/robotics/doc/index.php<br />

[27] Hu, M.-K.: Visual pattern recognition by moment invariants. IEEE Trans. Inform. Theory Vol. 8,<br />

179–187 , 1962<br />

[28] Point Grey Research, 19. Oktober, 2005.<br />

Internetseite: http://www.ptgrey.com<br />

[29] Point Grey Customer Support Login, 19. Oktober, 2005.<br />

Internetseite: http://www.ptgrey.com/support/downloads/ps-downloads.html<br />

[30] Birchfield, S.; Tomasi, C.: Depth Discontinuities by Pixel-to-Pixel Stereo. Int. J. Comput. Vision<br />

Vol. 35.3, 269–293 , 1999<br />

[31] Schmidt Jensen, R.: Open source exporter from 3ds max to openscenegraph, 19. Oktober, 2005.<br />

Internetseite: http://osgexp.vr-c.dk/


LITERATURVERZEICHNIS 75<br />

[32] Hinterseher, M.: Schnittpunkt zweier Gerden, 19. Oktober, 2005.<br />

Internetseite: http://www.hinterseher.de/Diplomarbeit/GeometrischeFunktionen.html<br />

[33] Videre Design, 19. Oktober, 2005.<br />

Internetseite: http://www.videredesign.com/stereo_on_a_chip.htm<br />

[34] Hub, A.; Diepstraten, J.; Ertl, T.: Design of an Object Identification and Orientation Assistant for<br />

the Deafblind. In: 6th DbI European Conference On Deafblindness. Presov, Slovakia, 2005


Abbildungsverzeichnis<br />

2.1 Verhältnis von Eigenwerten an Kanten und Ecken . . . . . . . . . . . . . . . . . . . . . 4<br />

2.2 Kamerakalibrierung über Schachbrettmuster . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.3 Epipolarlinien nach [6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.4 Disparitätsbild aus rektifizierten Einzelbildern . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.5 Gerade-zu-Punkt-Transformation zur Darstellung von vertikalen Geraden . . . . . . . . 9<br />

2.6 RGB-Würfel und HSV-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.7 Lab-Farben für verschiedene Luminanzwerte . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.8 Regiongrowing-Algorithmus zur farbtonbasierten Selektion . . . . . . . . . . . . . . . . 11<br />

2.9 Prototyp eines Navigationsassistenten mit integrierter Kamera und Inertialsensor . . . . 13<br />

2.10 Navigation Assistant System - Designstudie . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

3.1 Aufbau des Sensormoduls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.2 Positionierung und Ausrichtung der virtuellen Kamera . . . . . . . . . . . . . . . . . . 19<br />

3.3 Berechnung der besten Positionsvariante . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

3.4 Abstandsmessung im Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

3.5 Messpunktauswahl anhand von erkannten Objekten . . . . . . . . . . . . . . . . . . . . 24<br />

3.6 Zuordnung von erkannten Linien zu Modellkanten . . . . . . . . . . . . . . . . . . . . 25<br />

3.7 Schnittpunkt von Diagonalen in langen Gängen . . . . . . . . . . . . . . . . . . . . . . 26<br />

3.8 Featurepunkte mit Wandabstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3.9 Geschwindigkeitsvergleich zw. Messpunkt-Such-Verfahren . . . . . . . . . . . . . . . . 28<br />

3.10 Farbsegmentierung über Regiongrowing . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

3.11 Regiongrowing mit und ohne Berücksichtung der Tiefenunterschiede . . . . . . . . . . . 29<br />

3.12 Modellbeschreibung für einen roten Stuhl . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

3.13 Farbtöne des Histogramms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

3.14 Visuelle Ausgabe von Navigationshinweisen . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3.15 Systemdesign des Navigationsassistenten . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

77


78 ABBILDUNGSVERZEICHNIS<br />

4.1 Testaufbauten zur Erfassung von Stereobildern . . . . . . . . . . . . . . . . . . . . . . 35<br />

4.2 Screenshot des entwickelten MFC-Programms zur Kalibrierung von Firewire-Kameras . 38<br />

4.3 MFC Programm zur Kalibrierung und Rektifizierung der Kameras . . . . . . . . . . . . 38<br />

4.4 Versuchsaufbau für Synchronitätstests . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

4.5 Zeitversatz zwischen Einzelbildern bei unterschiedlichen Kameras und APIs . . . . . . . 40<br />

4.6 Point Grey Bumblebee Stereokamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

4.7 Geschwindigkeitsvergleich zwischen OpenCV und Point Grey API . . . . . . . . . . . . 43<br />

4.8 Zur Navigationsunterstützung eingesetzter, modellierter Gebäudeabschnitt . . . . . . . . 45<br />

4.9 Anzeige verschiedener Hierarchiestufen des Gebäudes . . . . . . . . . . . . . . . . . . 46<br />

4.10 Osg Export Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

4.11 Darstellung des gerenderten 3D-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

4.12 Berechnungsschritte zur Positionsbestimmung . . . . . . . . . . . . . . . . . . . . . . . 48<br />

4.13 Ermittlung des Wandabstandsschätzwertes . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

4.14 Schnittpunkt zweier Geraden im 2D-Raum, Quelle [32] . . . . . . . . . . . . . . . . . . 49<br />

5.1 Navigationsassistent bestehend aus Samsung x20 und Sensormodul . . . . . . . . . . . 53<br />

5.2 Abweichung der Abstandsmessung über Stereobilder der Bumblebee . . . . . . . . . . . 54<br />

5.3 Ergebnisse der Positionsbestimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

5.4 Ergebnisse der Positionsbestimmung in Wohnräumen . . . . . . . . . . . . . . . . . . . 58<br />

5.5 Distanzen zu lokalisierten Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

5.6 Performancemessung der Navigationssoftware . . . . . . . . . . . . . . . . . . . . . . . 61<br />

A.1 CamCalibrator - Programm zur Kalibrierung von Kameras . . . . . . . . . . . . . . . . 67<br />

A.2 StereoCam - Programm zur Kalibrierung und Rektifizierung von Kameras . . . . . . . . 68<br />

A.3 Raum-Auswahl-Diealog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

A.4 Locator Programmoberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

A.5 Trainieren eines verschiebbaren Objekts im Locator . . . . . . . . . . . . . . . . . . . . 72<br />

A.6 Histogramm und Forminformationen der Modellbeschreibung . . . . . . . . . . . . . . 72


Erklärung<br />

Hiermit versichere ich, diese Arbeit<br />

selbständig verfaßt und nur die<br />

angegebenen Quellen benutzt zu haben.<br />

(Tim Hartter)

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!