• Keine Ergebnisse gefunden

In den Bildern unseres Versuchsaufbaus kann man deutlich einige Stellen erkennen, die keinen exakten Wert enthalten. Sie besitzen den Tiefenwert 0 und sind als schwarze Punkte in dem Tiefenbild zu erkennen. Diese fehlerhaften Bildpunkte sind auf den Versuchsaufbau zurückzuführen. Da der IR-Projektor und der IR-Sensor 7,5cm voneinander entfernt sind, kommt es zu einer Schattenbildung. Für diese Schatten kann kein direkter Tiefenwert errechnet werden. Daher werden sie als 0 Value dargestellt und bilden Lücken im Tiefenbild.

Zum Thema Filling werden zwei Ideen vorgestellt, in den versucht wird, diese Lücken zu schließen. Die Suche nach fehlerhaften Bildpunkten und der Aufruf der Filling Methoden wird in Algorithmus Abbildung [5] dargestellt.

Algorithm 5Filling Start Pseudocode

1: forY:Alle Zeilendo

2: forX: Alle Spaltendo

3: ifTiefenwert(X,Y) == 0then

4: DepthFilling(X,Y)

5: GrayFilling(X,Y)

6: end if

7: end for

8: end for

5.3.1 Depth Filling

Diese Variante des Filling beschäftigt sich damit, die einzelnen fehlerhaften Bildpunkte, die in unserem Tiefenbild existieren, zu befüllen. Hierbei werden nur die Informationen aus dem Tiefenbild genutzt. Die Idee dahinter ist, diese Bildpunkte anhand eines Durchschnittswertes zu befüllen. Der Durchschnittswert soll aus Punkten bestehen die in einer Zeile zu dem gefundenen fehlerhaften Bildpunkten bestehen. Hier kann man nun sehr variieren. Einerseits schaut man sich an, wie sich das Bild verändert, wenn man nur eine kleine Anzahl an Bildpunkten der Zeile nutzt. Weiterhin wird untersucht, wie die Werte sich verändern, wenn man eine große Anzahl von Bildpunkten nutzt, um die fehlerhaften Bildpunkte zu befüllen.

5 Design der Qualitätsverbesserungsverfahren

Algorithm 6Depth-Filling Pseudocode

1: AnzPixel = 5 // Anzahl der Pixel die zur Durchschnittsberechnung verwendet werden

2: Value = 0

3: count = 0

4: Ergebnis = 0

5: forX: von X aus bis X - AnzPixeldo

6: ifX >0then

7: ifT ief enImage(X, Y)! = 0then

8: Value = Value + TiefenImage(X,Y)

9: count++

10: end if

11: end if

12: end for

13: forX: von X aus bis X + AnzPixeldo

14: ifX < T ief enImageBreitethen

15: ifT ief enImage(X, Y)! = 0then

16: Value = Value + TiefenImage(X,Y)

17: count++

18: end if

19: end if

20: end for

21: ifcount >0then

22: Ergebniss = Value/count

23: end if

5 Design der Qualitätsverbesserungsverfahren

5.3.2 Grauwert Filling

Im Grauwert-Filling wird untersucht, wie die fehlerhaften Bildpunkte des Tiefenbildes mit Hilfe des Grauwertbildes befüllt werden können. Die Idee ist hierbei, sich fehlerhaften Bildpunkte aus dem Tiefenbild zu suchen. Sobald einer gefunden wird überprüft man, ob es ein einzelner fehlerhafter Bildpunkt ist oder ob es mehrere aufeinanderfolgende fehlerhafte Bildpunkte sind. Sollten es mehrere aufeinanderfolgende Bildpunkte sein, muss man das Ende dieser fehlerhaften aneinandergereiten Bildpunkte bestimmen. Somit erhält man eine Menge von fehlerhaften Bildpunkten.

Nun folgt der Teil, weswegen das aufgenommene Tiefenbild und das aufgenommene RGB-Bild des Versuchsaufbaus gemappt wurden. Somit besitzt man eine Referenz zu den gefundenen fehlerhaften Bildpunkten, da die Koordinaten der beiden Bilder übereinstimmen.

Man besitzt nun einen oder eine Menge von fehlerhaften Bildpunkten und die Referenz in Form des Grauwertbildes, welches aus dem RGB-Bild gewonnen wurde.

Der nächste Schritt ist, die gefundenen fehlerhaften Bildpunkt-Koordinaten zu nehmen und die Grauwerte, die man durch diese erhält, zu vergleichen.

In diesem Versuch wird eine einfache Methode angewendet, um die fehlerhaften Bildpunkte zu befüllen. Da die Koordinaten der fehlerhaften Bildpunkte bekannt sind, wird der Fokus auf den vorderen und hinteren Bereich des fehlerhaften Bildpunktes bzw. der Menge an

fehlerhaften Bildpunkten gelegt. Dazu speichert man eine bestimmte Anzahl der

Graubild-Bildpunkte in einem Zwischenspeicher. Dies wird für einen bestimmten Bereich vor dem ersten fehlerhaften Bildpunkt und für den selben Bereich hinter dem letzten fehlerhaften Bildpunkt gemacht. Als nächstes schaut man sich die Grauwerte der fehlerhaften Bildpunkte an und vergleicht diese mit den vorderen und hinteren gespeicherten Bildpunkten. Liegt eine Übereinstimmung mit einem passenden Wert vor, wird der fehlerhafte Bildpunkt durch den Tiefenwert des jeweiligen Bereiches ersetzt. Weitere Details hierzu und zu einer Auswertung folgen im nächsten Kapitel Ergebnisse [6].

5 Design der Qualitätsverbesserungsverfahren

Algorithm 7Gray-Filling Pseudocode

1: m = 10 // Menge der Punkte die Untersucht werden sollen vor und hinter den fehlerhaften Bildpunkten

2: count = 0

3: startDepth = 0

4: endDepth = 0

5: GrauwertVorPunkt[m] // Grauwerte vor dem fehlerhaften Bildpunkt

6: GrauwertNachPunkt[m]// Grauwerte nach dem fehlerhaften Bildpunkt

7: AnzPixel = findeLochLänge(X,Y) // hier wird die Menge an Fehlerhaften Bildpunkten bestimmt

8: if(X−m)>0∧(X+m+AnzP ixel)< ImageBreitethen

9: startDepth = TiefenImage(X-1,Y)

10: endDepth = TiefenImage((X + AnzPixel + 1), Y)

11: whilecount < mdo

12: GrauwertVorPunkt[count] = ImageGray(X - count,Y)

13: GrauwertNachPunkt[count] = ImageGray(x + AnzPixel + count)

14: count++

15: end while

16: end if

17: forX: Iteriere über X + AnzPixeldo

18: count = 0

19: whilecount < mdo

20: ifImageGray(X, Y) ==GrauwertV orP unkt[count]then

21: TiefenImage(X,Y) = startDepth

22: BREAK

23: end if

24: ifImageGray(X, Y) ==GrauwertN achP unkt[count]then

25: TiefenImage(X,Y) = endDepth

26: BREAK

27: end ifcount++

28: end while

29: end for

5 Design der Qualitätsverbesserungsverfahren

Abbildung 5.9: Skizze zur Idee des Gray-Filling

In Bild5.9soll skizziert, die Idee hinter dem Gray-Filling veranschaulicht werden. Dargestellt ist hier ein Ausschnitt aus einer Zeile, in dem Grauwertbild. Hier kann man auf der einen Seite den Grauwert G1 sehen und auf der anderen Seite den Grauwert G2. Zwischen beiden Grauwerten soll eine Menge an fehlerhaften Bildpunkten dargestellt sein. In der Mitte der Menge von fehlerhaften Bildpunkten soll eine Kante existieren. Die Idee hinter diesem Ansatz ist es, die fehlerhaften Bildpunkte mit den Tiefenwerten des jeweiligen Grauwerts bis zu der Kante, in der Menge der fehlerhaften Bildpunkte aufzufüllen.

6 Ergebnisse

In diesem Kapitel werden die in Kapitel5beschriebenen Verfahren, hinsichtlich Ihrer Eigenschaften untersucht und miteinander verglichen.

Die Verfahren werden an drei verschiedenen Beispielen dargestellt. Jedes dieser Beispiele besitzt Besonderheiten, die eine bessere Darstellung der Problemeffekte ermöglichen.

(a) Beispiel 1 Farbbild (b) Beispiel 1 Tiefenbild

Abbildung 6.1: Beispiel 1

Bild6.1(a)und Bild6.1(b)zeigen das erste Beispiel, welches in den jeweiligen Tests verwendet wurde. Hier sind zwei einfache Objekte dargestellt. Diese beiden Objekte stehen

hintereinander und weisen an ihren Rändern fehlerhafte Bildpunkte auf.

6 Ergebnisse

(a) Beispiel 2 Farbbild (b) Beispiel 2 Tiefenbild

Abbildung 6.2: Beispiel 2

Bild6.2(a)und Bild6.2(b)zeigen das zweite Beispiel. Hier findet man verschiedene Fehlereffekte. Zum einen zeigen sich hier große Kanten, wie die Tür und der Schrank.

Desweiteren findet man Spiegel, also reflektierende Oberflächen und einen Stuhl, als Objekt in diesem Bild. Darüber hinaus sind verrauschte Kanten in dem Bild zu erkennen.

(a) Beispiel 3 Farbbild (b) Beispiel 3 Tiefenbild

Abbildung 6.3: Beispiel 3

Bild6.3(a)und Bild6.3(b)zeigen das dritte Beispiel. Hier findet man eine Vielzahl von Kanten, sowie einen Stuhl. Der Hauptgrund für die Verwendung dieses Beispiels ist, die hohe Anzahl an fehlerhaften Bildpunkten in diesem Bild.

6 Ergebnisse