Asus Xtion Pro Tiefenkamera mit Matlab/Simulink: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 87: | Zeile 87: | ||
== Mögliche Fehler in den Verarbeitungsschritten == | == Mögliche Fehler in den Verarbeitungsschritten == | ||
1. | *1. Messung | ||
**Oberflächeneigenschaften | |||
**Schnelle Bewegungen | |||
**Kantenrauschen | |||
2. | *2. Analog-Digital-Umsetzung | ||
**Amplitudenfehler | |||
**Linearitätsfehler | |||
**Phasenfehler | |||
**Quantisierungsfehler | |||
**Quantisierungsrauschen | |||
3. | *3. Matlab-Implementierung | ||
**Rundungsdifferenzen | |||
**Codierungsfehler | |||
== Literaturverzeichnis == | == Literaturverzeichnis == |
Version vom 25. Juni 2018, 16:47 Uhr
→ zurück zum Hauptartikel: SigSys SoSe2018
Seite befindet sich im Aufbau
Autoren: Maximilian Harrer
Betreuer: Prof. Schneider
Einleitung
Im Rahmen der semesterbegleitenden Prüfung der Veranstaltung „Signalverarbeitende Systeme“ im Sommersemester 2018 des Masterstudiengangs „Business and Systems Engineering“ sind die Studierenden zur Bearbeitung eines Projekts angehalten. Dabei handelt es sich um die Auslesung eines Sensors mittels MATLAB/Simulink sowie der Beschreibung, Untersuchung und dem Verstehen der Signalverarbeitungskette.
Die Kamera
Der taiwanische Hersteller von Computer-Hardware Asus hat 2012 die Xtion Pro Live offiziell vorgestellt. Dabei handelt es sich um ein Eingabegerät für bewegungsgesteuerte Spiele, Natural User Interfaces, wie dem Nutzer eine direkte Interaktion mit der Bedienoberfläche durch Wischen, Tippen, Berühren, Gesten oder Sprache ermöglichen, und Computer Vision Research, der computergestützte Lösung von Aufgabenstellungen, die sich an den Fähigkeiten des menschlichen visuellen Systems orientieren.[1]. Die Kamera verwendet eine SD-Speicherkarte, auf der das Linux basierte Betriebssystem Dabian installiert ist. Dies ermöglicht eine einfache Konfiguration der Asus Xtion Pro Live mittels OpenNi Library und PrimeSense Sensor Treiber. Im ersten Schritt wird durch Hintergrundsubtraktion, einer der am häufigsten verwendeten Algorithmen zur Erkennung sich bewegender Objekte innerhalb einer Sequenz von Bildern das Video analyisiert. Dieser Ansatz ist zuverlässig, da die Tiefeninformationen eines jeden Pixels beibehalten wird und so die Entfernung jedes Blobs erfassen kann[2]. Als Blob (Binary large obeject) wird eine eine Gruppe von benachbarten und zusammenhängenden Pixeln mit vergleichbaren Helligkeits- oder Farbwertes und geschlossenen Konturen bezeichnet [3]. Um eine falsche Erkennung von Objekten zu vermeiden (falsche Positivität), wird das Hintergrundbild dynamisch aktualisiert. Nach der Hintergrundsubtraktion wird ein Schwellenwert definiert, der es ermöglicht, positive Signale, die sich bewegende Objekte anzeigen, durch falsche Positivitäten aufgrund von Hintergrundrauschen zu unterscheiden. Ein wichtiger Schritt besteht in der Objekterkennung, dabei werden für jeden Blob die Grenz- und Extrempunkte ermittelt, welche dem Kopf der Person entsprechen. Wenn sich diese Punkte in einer Region befinden, welche vergleichbar mit der Kopf-/Schulterhöhe eines Menschen ist, handelt es sich um einen gültigen Blob. Die letzte Phase ist die Objektverfolgung, wobei jeder Blob entlang der Frames erkannt und verfolgt wird. Zudem wird für jede Person die Höhe bestimmt, um zu bestätigen, dass es sich um die Person des vorherigen Bildes handelt. Der letzte Schritt des Algorithmus liefert die Interaktionen für die Suche [4].
Tabelle 1: Technische Daten der Asus Xtion Pro Live [5]
Sensoren | RGB-Sensor, Tiefensensor, Mikrofon (2x) |
Auflösung Tiefenkamera | VGA (640x480), QVGA (320x240) |
Bildrate Tiefenkamera | VGA 30 fps, QVGA 60 fps |
Auflösung | SXGA (1280x1024) |
Sichtfeld horizontal | 58° |
Sichtfeld vertikal | 45° |
Sichtfeld diagonal | 70° |
Distanz des Tiefensensors | 0.8m bis 3.5m |
Stromverbrauch | 2.5W |
Schnittstelle | USB2.0/3.0 |
Plattform | Intel X86, AMD |
Betriebssysteme | Windows, Linux, Android |
Software | OpenNI |
Programmiersprache | C++/C (Windows), C++(Linux), JAVA |
Nutzungsfeld | Innen |
Abmessungen | 18x3.5x5cm |
Der Primärsensor
Für die Tiefenwahrnehmung der Xtion Pro Live spielen, neben dem PrimeSense Carmine 1.09 Sensor, zwei Elemente eine entscheidende Rolle. Dabei handelt es sich einerseits um einen Infrarot-Projektor und andererseits eine Infrarot-Kamera. Der Projektor projiziert ein Punktmuster auf in Reichweite befindliche Objekte, welche jedoch vom menschlichen Auge nicht wahrgenommen werden können. Die Infrarot-Kamera ist jedoch in der Lage diese aufzunehmen, da die aufgenommen Bilder der Kamera im Infrarot-Farbbereich liegen. Durch die unterschiedliche Entfernung der Objekte zum Projektor ergeben sich unterschiedliche Ausprägungen der Infrarot-Punkte. Die größere der Punkte steigt umso weiter ein Objekt von der Kamera entfernt ist. Dies lässt sich mit dem Lichtkegel einer handelsüblichen Taschenlampe vergleichen. Umso näher man diese an eine Wand hält, umso kleiner und konzentrierter wird der Lichtkegel. Die Kamera sendet anschließend die Rohsignale an einen PrimeSense Tiefensensor, welcher aus der größere der Punkte die Entfernung berechnet. Die Rechenleistung übernimmt dabei der PrimeSense SoC (System-on-a-Chip). Durch die vorhandene Auflösung von 640x480 ergibt sich für jeden der 307200 Pixel ein Wert in Millimeter, woraus eine Tiefenkarte erstellt wird. [6]
Signalvorverarbeitung
Sollen Messwerte oder vorverarbeitete Daten übertragen werden? Wie lässt sich eine Vorverarbeitung umsetzen? Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?
Analog-Digital-Umsetzer
Welcher ADU in der Asus Xtion Pro Live zum Einsatz kommt lässt sich nicht ermitteln. Für die Wahl eines sinnvollen Analog-Digital-Wandlers müssen die Abtastrate, Auflösung, der Stromverbrauch und die Größe des Wandlers berücksichtigt werden. Da die Sensoren bereits viel Platz wegnehmen, würde ein ADU mit großem Flächenbedarf den Chip unnötig Groß machen. Für den Stromverbrauch muss bedacht werden, dass durch eine hohe Anzahl an Komparatoren die Verlustleistung exponentiell ansteigt und dies zur Folge hätte, dass zuätzliche Supplypads eingefügt werden müssten um den Stromverbrauch zu decken, was den Chip gegebenenfalls ebenfalls vergrößern würde. [8] Eine sinnvolle Wahl für die Xtion Pro Live wäre ein Wandler auf Basis der suxessiven Approximation, da diese sich leicht in ein CMOS integrieren lässt, eine Auflösung von 12-16 Bit und eine Abtastrate von 20 kHz bis 5 mHz erreicht und mit einem Stromverbrauch von lediglich 100-400mW gerechnet werden kann. Alternativ wäre auch die Nutzung einer Delta-Sigma-Modulation denkbar. [9] [10]
Bussystem
Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt? Wenn ja, wie funktioniert dieses Bussystem?
Messdaten in MATLAB/Simulink
Zur Implementierung der vom Tiefensensor ausgegebenen Tiefenwerte in Matlab wurde die Toolbox „Kinect Matlab“ von Dirk-Jan Kroon in der Version 1.9 genutzt und zur Erlangung der nötigen Daten bearbeitet. Zur Nutzung der Toolbox musste zusätzliche Software auf dem Rechner installiert werden. Dabei handelt es sich um das OpenNI Framework (Version 1.5.2.23), die Sensor DDK (Version 5.1.0.41) und PrimeSense Nite (Version 3.1.3.1). Die Toolbox unterstützt jedoch nicht jede Matlab-Version, weshalb zur Ansteuerung des Sensors auf die Version R2010a zurückgegriffen werden musste[11]. Um die nötigen Mex-Files kompilieren zu können, musste zudem Visual Studio Express 2010 C++ installiert und mit VS2010MEXSupport [12] ergänzt werden, da die Toolbox nur diese Version unterstützt. Durch das Starten der Datei „compile_cpp_files.m“ erstellt die Toolbox die zum Ansteuern des Sensors nötigen Rahmenbedingungen. Der in der folgenden Abbildung gezeigte Code erzeugt eine Matlab-Tabelle mit den Tiefenwerten in mm für jeden Pixel. Erwähnt werden muss jedoch, dass bei jeder Messung die ersten 7x480 Pixel als „0“ deklariert werden, woraus sich eine Auflösung von leidiglich 633x480 Pixeln ergibt.
Hier steht bald Matlab Code
Digitale Signalverarbeitung
Verarbeitungsschritte
Filter
Tiefenauflösung und Empfindlichkeit
Messunsicherheit und Vertrauensintervall
Mögliche Fehler in den Verarbeitungsschritten
- 1. Messung
- Oberflächeneigenschaften
- Schnelle Bewegungen
- Kantenrauschen
- 2. Analog-Digital-Umsetzung
- Amplitudenfehler
- Linearitätsfehler
- Phasenfehler
- Quantisierungsfehler
- Quantisierungsrauschen
- 3. Matlab-Implementierung
- Rundungsdifferenzen
- Codierungsfehler
Literaturverzeichnis
- ↑ JOSEPH HOWSE, STEVEN PUTTEMANS, QUAN HUA, UTKARSH SINHA: "OpenCV 3 Blueprints", Birgmingham 2013
- ↑ COSIMO DISTANTE, SEBASTIANO BATTIATO, ANDREA CAVALLARO: "Video Analytics for Audience Measurement", Stockholm 2014
- ↑ https://www.invision-news.de/allgemein/blobanalyse/, letzte Informationsabfrage am 16.06.2018
- ↑ COSIMO DISTANTE, SEBASTIANO BATTIATO, ANDREA CAVALLARO: "Video Analytics for Audience Measurement", Stockholm 2014
- ↑ https://www.asus.com/de/3D-Sensor/Xtion_PRO_LIVE/specifications/, letzte Informationsabfrage am 16.06.2018
- ↑ MATHEW FISHER: „Kinect“ auf http://graphics.stanford.edu/~mdfisher/Kinect.html, letzte Informationsabfrage am 24.06.2018
- ↑ http://www.vias.org/mikroelektronik/img/adcsukap.png
- ↑ CONOR POWER: „Spezifikationen für Wandler – Auswahlkriterien für A/D-Wandler“ auf https://www.elektronikpraxis.vogel.de/auswahlkriterien-fuer-a-d-wandler-a-151736/, letzte Informationsabfrage am 25.06.2018
- ↑ ROLAND KÜNG: „Elektrotechnik 2 – A/D- und D/A- Wandler“ auf https://home.zhaw.ch/kunr/Elektronik2/Skript/AD_Wandler_v3.pdf, letzte Informationsabfrage am 25.06.2018
- ↑ PROF. DR. ULRICH SCHNEIDER: „Skript Signalverarbeitende Systeme 2018“
- ↑ https://de.mathworks.com/matlabcentral/fileexchange/30242-kinect-matlab
- ↑ https://de.mathworks.com/matlabcentral/answers/uploaded_files/1211/VS2010MEXSupport.zip
→ zurück zum Hauptartikel: SigSys SoSe2018