@@ -9,9 +9,9 @@ Als Sensor wurde die Kinect ausgewählt. Diese ist günstig, portabel und wird i
Die Kinect als Sensor bietet die Möglichkeit, aus einzelnen Aufnahmen, bestehend aus einem Farbbild und einem Tiefeinbild, eine Punktwolke aus der Perspektive der Kinect zu errechnen.
Eine Aufnahme (ein Frame) beinhaltet aber nur alle Informationen, die aus der Perspektive der Kamera sichtbar sind.
Das beinhaltet zum einen die Flächen der nächsten Oberfläche. % @@@ zum anderen fehlt
Dahinterliegende Geometrie wird verdeckt und ist aus einer Perspektive nicht sichtbar(siehe \ref{img:KinectSides} (a)).
Dahinterliegende Geometrie wird verdeckt und ist aus einer Perspektive nicht sichtbar(siehe \fref{img:KinectSides} (a)).
Außerdem sind an Kanten meist nicht genügend Informationen in der Aufnahme enthalten, sodass seitliche Flächen richtig in Punkte konvertiert werden können. %@@@ statt ``sodass'' muss des doch ``damit'' heißen, oder?
In vielen Fällen führt das zu falschen und nicht existierenden Flächen der errechneten Punktwolke (siehe \ref{img:KinectSides} (b)).
In vielen Fällen führt das zu falschen und nicht existierenden Flächen der errechneten Punktwolke (siehe \fref{img:KinectSides} (b)).
Diese Informationen aus einer Aufnahme reichen für die Visualisierung in VR für den Experten nicht aus.
Das Objekt sollte von allen Seiten gescannt werden, damit der Experte frei entscheiden kann, von welcher Seite er das Objekt bzw. die Punktwolke betrachtet.
...
...
@@ -30,7 +30,7 @@ Das spart Zeit und Rechenleistung und bietet somit eine einfache und schnelle MÃ
\subfigure[Aufnahme aus Sicht der Kinect ]{\includegraphics[width=0.49\textwidth]{Bilder/1FrameKamera.png}}
\subfigure[Aufnahme von der Seite\label{img:KinectSides-b}]{\includegraphics[width=0.49\textwidth]{Bilder/1FrameSeite.png}}
\caption{Aufnahme der Kinect aus verschiedenen Perspektiven. In Bild (a) ist zu erkennen, wie die Türme den Hintergrund verdecken. In Bild \ref{img:KinectSides-b} sind falsche Punkte zu sehen, die durch die Rekonstruktion aus einem 2D Bild entstehen. }
\caption{Aufnahme der Kinect aus verschiedenen Perspektiven. In Bild (a) ist zu erkennen, wie die Türme den Hintergrund verdecken. In \fref{img:KinectSides-b} sind falsche Punkte zu sehen, die durch die Rekonstruktion aus einem 2D Bild entstehen. }
\label{img:KinectSides}
\end{figure}
...
...
@@ -61,7 +61,7 @@ Auch alle Punkte, die zu nah oder zu weit vom Sensor entfernt sind, werden nicht
Je weiter das Objekt entfernt ist, desto ungenauer werden die Aufnahmen.
Im folgenden wurde ein Mindestabstand von 30cm und ein Maximalabstand von 90cm verwendet.
Als letztes werden alle Flächen deren Oberflächennormale zu weit von dem Kameravektor abweicht (siehe Abb \ref{img:KinectSides} b)
Als letztes werden alle Flächen deren Oberflächennormale zu weit von dem Kameravektor abweicht (siehe \fref{img:KinectSides} b)
Diese Flächen entstehen durch die Umwandlung des 2D Tiefenbildes in eine 3D Punktwolke.
Die benötigten Informationen fehlen an dieser Stelle und Punkte werden auf die Fläche zwischen Oberflächenobjekt und Hintergrund gesetzt.
Diese Ebene stimmt nicht mit der wirklichen Oberfläche überein und diese falschen Punkte müssen entfernt werden.
Eine Transformation ist die zwischen dem Koordinatensystem der Kinect und dem des Vive Controllers.
Ist zum Beispiel die Transformation entlang der X-Achse der Kinect verschoben, so verstärkt sich der Fehler, wenn man das Objekt von der anderen Seite, also um 180\degree gedreht aufnimmt (siehe Abb. \ref{img:KinecOffset}).
Ist zum Beispiel die Transformation entlang der X-Achse der Kinect verschoben, so verstärkt sich der Fehler, wenn man das Objekt von der anderen Seite, also um 180\degree gedreht aufnimmt (siehe \fref{img:KinecOffset}).
Der Fehler im lokalen Koordinatensystem wird in das globale transformiert und ist in dem Fall dann in genau entgegengesetzter Richtung.
\begin{figure}
...
...
@@ -108,18 +108,18 @@ Der Fehler im lokalen Koordinatensystem wird in das globale transformiert und is
In der offiziellen Dokumentation der Kinect ist beschrieben, dass der Ursprung von Punktwolken imTiefensensor liegt (siehe \cite{KinectDoku}).
Leider fehlt die exakte Positionsangabe im Gehäuse.
Im Bild \ref{img:KinectOrigin} aus dem chinesischen Microsoft Forum ist eine von Benutzern vermessene schematische Darstellung der Kinect abgebildet.
Im \fref{img:KinectOrigin} aus dem chinesischen Microsoft Forum ist eine von Benutzern vermessene schematische Darstellung der Kinect abgebildet.
Der Tiefensensor liegt hinter der kleineren runden Öffnung.
Die exakte Position ließ sich ohne die Kienct zu zerlegen nicht ermitteln, da auch Fertigungsungenauigkeiten die genaue Position beeinflussen können.
Für die Implementation wurde angenommen, dass er sich mittig hinter der Öffnung befindet.
Eine digitale Kalibrierung gestaltet sich schwierig, da das Lighhouse Tracking des Controllers zusätzlich einige Ungenauigkeiten mit sich bringt.
Der Ursprung des Controllers lässt sich aus den Modellen von Steam VR auslesen (siehe Abb.\ref{img:KinecttoVive} (c))
Der Ursprung des Controllers lässt sich aus den Modellen von Steam VR auslesen (siehe \fref{img:KinecttoVive} (c))
Dieser liegt geschickt für VR Anwendungen da die Z-Achse in der Hand liegt.
Aber das für das Tracking von Objekten liegt der Ursprung ungeschickt, da er im inneren des Controllers liegt und es keine ebene Auflagefläche parallel zu den Achsen gibt.
Bei der Implementation stand noch kein Vive Tracker zur Verfügung.
Die Tracker sind extra Sensoren die für das Tracken von Objekten mit dem Lighthouse System entwickelt wurden.
Bei diesen ist der Ursprung in der Schraube und parallel zur Auflagefläche (siehe Abb. \ref{img:Tracker}).
Für die Arbeit wurde der Controller so nah wie möglich an dem Tiefensensor, also direkt darüber angebracht (siehe Abb. \ref{img:KinecttoVive}).
Bei diesen ist der Ursprung in der Schraube und parallel zur Auflagefläche (siehe \fref[plain]{img:Tracker}).
Für die Arbeit wurde der Controller so nah wie möglich an dem Tiefensensor, also direkt darüber angebracht (siehe \fref{img:KinecttoVive}).
Als Hilfe wurde ein 3D gedruckter Zylinder verwendet der in den Ring des Controllers passt.
...
...
@@ -130,14 +130,14 @@ Als Hilfe wurde ein 3D gedruckter Zylinder verwendet der in den Ring des Control
\label{img:KinectOrigin}
\end{center}
\end{figure}
\todo{Bezüglich Bild \ref{img:KinectOrigin}: Ich würde mir hier gut überlegen, ob du das Bild abdrucken willst. Ich habe jedenfalls auf die schnelle keine Lizenz gefunden -> ist vermutlich ne Verletzung des Urheberrechts.}
\todo{Bezüglich \fref{img:KinectOrigin}: Ich würde mir hier gut überlegen, ob du das Bild abdrucken willst. Ich habe jedenfalls auf die schnelle keine Lizenz gefunden -> ist vermutlich ne Verletzung des Urheberrechts.}
\begin{figure}
\subfigure[Befestigung der Kinect\label{img:KinecttoVive-Befestigung}]{\includegraphics[width=0.32\textwidth]{Bilder/KincetHalterung.JPG}}
\subfigure[Kinect mit Controller]{\includegraphics[width=0.32\textwidth]{Bilder/KinecController1.JPG}}
\subfigure[Relative Position in 3D\label{img:KinecttoVive-3D}]{\includegraphics[width=0.32\textwidth]{Bilder/KinectToVive.png}}
\caption{Befestigung des Controllers an der Kinect. Die Mitte des Controllers ist direkt über dem Tiefensensor.
In Bild \ref{img:KinecttoVive-Befestigung} ist die 3D gedruckte Halterung zu sehen. Der Controller wird auf den Zylinder gesteckt. In \ref{img:KinecttoVive-3D} ist die Virtuelle Repräsentation. Koordinatenkreuze zeigen den jeweiligen Ursprung des Geräts (X-, Y- und Z-Achse in rot, grün und blau)}
In \fref{img:KinecttoVive-Befestigung} ist die 3D gedruckte Halterung zu sehen. Der Controller wird auf den Zylinder gesteckt. In \fref{img:KinecttoVive-3D} ist die Virtuelle Repräsentation. Koordinatenkreuze zeigen den jeweiligen Ursprung des Geräts (X-, Y- und Z-Achse in rot, grün und blau)}