Projektdokumentation KinectSpy -...

54
Projektdokumentation KinectSpy Eintrittsüberwachung Projekt: KinectSpy v1.0 Autoren: Christian Meyer Tobias Niemczyk

Transcript of Projektdokumentation KinectSpy -...

Projektdokumentation KinectSpyEintrittsüberwachung

Projekt: KinectSpy v1.0

Autoren: Christian Meyer

Tobias Niemczyk

Inhaltsverzeichnis

1 Einleitung ........................................................................................................................1

1.1 Motivation ...............................................................................................................1

1.2 Ziel ...........................................................................................................................2

2 Komponenten/Bestandteile von KISPY ............................................................................3

2.1 3D Sensorsystem Kinect ...........................................................................................3

2.2 C++ ...........................................................................................................................5

2.3 Qt .............................................................................................................................5

2.4 OpenCV ....................................................................................................................5

3 Projekt KISPY ...................................................................................................................6

3.1 Modularer Aufbau ....................................................................................................6

3.1.1 KISPY GUI ..........................................................................................................7

3.1.2 KISPY Kinect.......................................................................................................8

3.2 Prinzipieller Ablauf der Applikation ........................................................................10

3.3 Extraktion des Gesichts aus dem Bild ......................................................................11

3.3.1 Segmentierung mit Hilfe von Konturen............................................................12

3.3.2 Transformation der Bildmatrizen .....................................................................13

3.3.3 Merkmalsextraktion im RGB-Bild .....................................................................15

3.4 Ablage und Speicherung .........................................................................................16

4 Evaluation des Überwachungssystems ..........................................................................17

4.1 Erster Ansatz mit Microsoft SDK .............................................................................17

4.2 Testumgebung zur Höhendarstellung .....................................................................18

4.3 Ausarbeitung mit OpenNI .......................................................................................20

4.4 Ergebnis .................................................................................................................21

5 Fazit und Ausblick ..........................................................................................................22

6 Literaturverzeichnis .......................................................................................................24

A. Anhang ..........................................................................................................................26

1. Lastenheft ..................................................................................................................26

2. Pflichtenheft ..............................................................................................................30

3. Volere Anforderungsanalyse ......................................................................................36

4. User Application Guide ..............................................................................................39

1. Übersicht zur Benutzeroberfläche .................................................................................41

1.1. Übersicht zum Modul KinectSpy .............................................................................42

1.2. Ausgabe der Sensordaten unter Kinect Connection ................................................43

1.3. Anzeige der Überwachung – Results of Observation ...............................................44

2. Besonderheiten der verschiedenen Funktionen ............................................................45

2.1. Start- und Stopp-Modalitäten der Applikation ........................................................45

2.1.1. Voreinstellungen nach Betriebsart ..................................................................45

2.1.2. Direkter Start/Stopp innerhalb der Benutzeroberfläche ..................................46

2.1.3. Voreinstellung des automatischen Starts .........................................................46

2.2. Betrachten der Ergebnisse der Observation ...........................................................47

3. Fehlerbehandlung .........................................................................................................48

3.1. Verbindungsfehler durch nicht angeschlossenes Sensorsystem ..............................48

3.2. Diskonnektion während der Laufzeit der Applikation .............................................49

4. Weitere Anmerkungen ..................................................................................................50

5. Impressum ....................................................................................................................50

B. Verzeichnisstruktur der CD ............................................................................................51

Einleitung

Seite | 1

1 EinleitungZunächst werden die Hintergründe der Motivation, die zur Ausarbeitung dieserThemenstellung führen, dargestellt und weiterhin das Ziel der Projektarbeit umrissen.

1.1 MotivationIm Zeitalter der zunehmenden Überwachung im Hinblick auf Aufklärung von diversenDelikten und der Gefahr des Terrorismus wurde im Jahr 2013 erst durch den WhistleblowerEdward Snowden die Überwachungspolitik und Datenakquise durch die verschiedenenGeheimdienste, insbesondere der National Security Agency, bekannt [HEISE1]. So wurdenbeziehungsweise werden über Jahre das Verhalten und die Daten der Nutzer derverschiedenen Kommunikationsnetzwerke weltweit über unterschiedliche Methodenfestgehalten und analysiert.

Eine weitere Form der Überwachung stellt die direkte Aufnahme eines Umfeldes mit einemKamerasystem dar. So versuchte der damalige Innenminister Friedrich im Dezember 2012eine Ausweitung der Videoüberwachung für öffentliche Plätze und Bahnhöfe durchzusetzen,wobei er allerdings heftigen Gegenwind erfahren musste [SPIEGEL1]. Denn neben derBefürchtung hinsichtlich der Verletzung des Datenschutzes und der Privatsphäre deraufgenommenen Personen zeigen Studien auch, dass die Kriminalität durch den Einsatz vonÜberwachungstechnik nur geringfügig reduziert werden kann und größtenteils nur dernachfolgenden Aufklärung dient – wie dies die Campbell Corporation in einer Studie eruierte[HEISE2].

Der Einsatz kamerabasierter Überwachungstechnik soll somit teilweise im großen Stil anöffentlichen Plätzen und Orten erfolgen, kann jedoch im kleinen oder privaten Bereichebenso Sinn ergeben. Hierbei kann das eigene Grundstück oder der Eingangsbereichobserviert werden, um festzustellen, wer zu welchem Zeitpunkt dieses Areal betritt oderverlässt. Zu diesem Zweck ist eine möglichst einfache und preiswerte Version sinnvoll, diezudem technische Vorteile und stetige Verfügbarkeit bietet. Im November 2010 gelang demUnternehmen Microsoft© mit der Spielekonsole Xbox© und dem dazugehörigenKamerasystem Kinect© ein grandioser Coup, der die Kombination von Farbbild- undTiefenbildkamera beinhaltete und für jedermann erschwinglich machte [ZEIT1]. Dieses leichtzugängliche und kostengünstige 3D Kamerasystem bildet fortan die Basis für die Entwicklungzahlreicher Applikationen zur Detektion und Interaktion von Personen in verschiedenenBereichen.

So bildet das erwähnte Kinect© Kamerasystem auch hier die Grundlage zur Ausarbeitungeiner Applikation zur Erfassung von Personen im Eingangsbereich einer privaten Einheit oderauch im Zutrittsbereich eines wissenschaftlichen Labors mit gefährlichem oder geheimenContent.

Einleitung

Seite | 2

1.2 ZielDas Vorhaben dieser Arbeit ist die Realisierung einer Eintrittsüberwachung für den privatenoder wissenschaftlich-institutionellen Bereich, welcher den Ein- und Ausgangsbereich einesRaumes observiert und die verschiedenen, das Areal passierenden Personen aufnimmt.

Die Grundlage werden hierbei das Kinect© Kamerasystem als Hardware-Komponente undzudem open Source basierte Softwarepakete und -bibliotheken zur weiterenBildverarbeitung bilden. Hierdurch wird eine kostengünstige und plattformunabhängigeApplikation angestrebt, die unterschiedliche Möglichkeiten der Interaktion mit demBenutzer realisieren soll. Zudem sollen Funktionen wie die direkte Darstellung deraufgenommenen Personen sowie eine datenbankbasierte Hierarchie der Bilderimplementiert werden. Der Aufnahmebereich wird beschränkt auf den Kopfbeziehungsweise das Gesicht der Personen, die den observierten Bereich durchqueren.

Weitere Anforderungen und Gegebenheiten sind im Anhang 1 und 2 mit dem Lasten- undPflichtenheft dargelegt, die zur Zielsetzung dieser Arbeit dienen.

Komponenten/Bestandteile von KISPY

Seite | 3

2 Komponenten/Bestandteile von KISPYNachfolgend werden die Komponenten des Gesamtsystems beschrieben und deren Aufbauund Funktionsweise erklärt. Hardwareseitig ist dies das Kinect© Kamerasystem und imHinblick auf die Software finden die Bibliotheken von C++, Qt und OpenCV Verwendung.

2.1 3D Sensorsystem KinectDie geplante Applikation benötigt neben einem leistungsfähigen Computer einKamerasystem, das zusätzlich zu einem Farbbild räumliche Informationen liefert. ZumEinsatz kommt hier das 3D Sensorsystem Kinect© von Microsoft.

Bislang waren 3D-Kameras sehr teuer (mehrere tausend Euro), jedoch gibt es seit Ende 2010nun ein Produkt von Microsoft, das für den Massenmarkt bestimmt ist. Es handelt sich umden Kinect©3D-Sensor für die Spielekonsole XBox. Der Einführungspreis lag ungefähr bei150.- Euro und der Sensor wurde binnen weniger Monate mehrere Millionen Mal verkauft.Für die mobile Robotik stellt er eine kostengünstige Alternative zu herkömmlichen 3D-Sensoren für Navigations- und Lokalisationsaufgaben dar.

Die Komponenten der Kinect© sind zum einen eine RGB Kamera bei einer Auflösung von640x480 px bei einer Framerate von 30 fps, zum anderen die 3D Tiefensensorik, die zumeinen aus einem Projektor und einem Sensor zur Erfassung besteht. Desweiteren gibt eseinen motorisierten Fuß, mit dem verschiedenste Anstellwinkel (von plus bis minus 27°)einstellbar sind, und zur akustischen Erfassung ein Array, das aus 4 Mikrophonen besteht[KINECT2].

Abbildung 1 - Komponenten des Kamerasystems [KINECT2]

Komponenten/Bestandteile von KISPY

Seite | 4

Durch permanente Weiterentwicklung konnten so auch weitere Verbesserungen hinsichtlichHardware, Genauigkeiten der Sensordaten und Interaktionsmöglichkeiten durch neueSoftwarepakete erzielt werden, beispielsweise die neuartige Anwendung im Bereich Javaund HTML5 [KINECT1].

Das Prinzip der aktiven Triangulation

Technisch gesehen basiert die Kinect auf einem aktiven Triangulationsprinzip [KINECT4].

Abbildung 2 - Prinzip der aktiven Triangulation [KINECT3]

Das Prinzip der aktiven Triangulation des Kinect© Kamerasystems wird in obiger Abbildunggezeigt.

Es wird ein Infrarotmuster in die Umgebung projiziert, welches durch eine Infrarotkameraaus einer anderen Perspektive detektiert wird. Durch die Disparität der einzelnenProjektionspunkte über die Basis – also den Abstand von Projektor zu Sensor - können dieTiefendaten beziehungsweise die Entfernung zum Sensorsystem ermittelt werden.

Zusätzlich „überlagert“ die Kinect den Tiefenbildern ein RGB-Farbbild. Dies ist für dieMustererkennung ein wichtiges Merkmal.

Komponenten/Bestandteile von KISPY

Seite | 5

2.2 C++C++ ist eine höhere ISO – standardisierte Programmiersprache. Bjarne Strousrtupentwickelte sie 1979 bei AT&T als Erweiterung der Programmiersprache C. Das folgendeKapitel zeigt die Vorteile der Programmbibliothek OpenCV.

2.3 QtQt ist eine C++ Klassenbibliothek für die Entwicklung von plattformübergreifenden GUI-Anwendungen. Qt wurde von der norwegischen Firma Trolltech entwickelt und ist fürverschiedene Betriebssysteme erhältlich. Das Framework umfasst neben einer Bibliothek zurEntwicklung grafischer Benutzeroberflächen auch umfangreiche Funktionen zurDatenbankanbindung, Interprozesskommunikation, Multithreading und Weiteres.

2.4 OpenCVDie ursprünglich von Intel entworfene Programmbibliothek OpenCV stellt zahlreicheAlgorithmen zur Bildverarbeitung in Form bereits fertig implementierter Methoden zurVerfügung und ist als freie Software im Internet erhältlich. Sie ist für dieProgrammiersprachen C und C++ ausgelegt und erschien erstmals 2006 mit der Version 1.0,die neueste frei herunterladbare Version liegt als Beta Version bei 2.4.0

Die Wahl fiel auf diese Bibliothek, da sie frei erhältlich ist und zudem viele wichtige Filter(z.B. Canny) zur Verfügung stellt.

Projekt KISPY

Seite | 6

3 Projekt KISPYDie Arbeit mit dem Ziel der Erfassung der Gesichter von Personen, die einen Eintrittsbereichpassieren, ist in zwei Teilprojekte aufgeteilt. Dadurch erfolgt ein modularer Aufbau zureinfacheren Ansteuerung, Separation und nachgehender Weiterverarbeitung derApplikation. Dies ist in den folgenden Kapiteln beschrieben.

3.1 Modularer AufbauUm die Ansteuerung der Kamera sowie die Auswertung der gewonnen Daten möglichsteinfach in weitere Projekte einbinden zu können, wurde eine Art API geschaffen, die durcheine GUI angesprochen wird. So lässt sich sehr einfach die optische Erscheinung desProgramms ändern ohne die Berechnungsoperationen im Hintergrund zu beeinflussen.

Abbildung 3 - Aufbau der Arbeit in zwei Projekte

Der prinzipielle Aufbau mit dem Splitting in zwei Teilprojekte ist in Abbildung 3 dargestellt.

Projekt KISPY

Seite | 7

3.1.1 KISPY GUIDas Teilprojekt KISPYGui beschäftigt sich mit der Generierung der Benutzeroberfläche undden Möglichkeiten der Interaktion mit der Applikation. Hierbei wird Qt© mit verschiedenenFunktionen verwendet, die die GUI erzeugen und zusätzlich noch eine QSQLite-Datenbankeinbinden. Diese dient der chronologischen Archivierung der erfassten und abgespeichertenDaten.

Mit Hilfe verschiedener Push-Buttons können weiterhin Aktionen ausgelöst werden, wiebeispielsweise

- automatisiertes oder manuelles Starten und Stoppen der Applikation

- das Anzeigen des aktuellen Videostreams

- das Aufrufen und Durchblättern der aktuellen sowie archivierten Daten in derDatenbank

- das Aufrufen verschiedener Untermenüs und Anpassen der Einstellungen

Der Aufbau und das klassisch gehaltene Design der Oberfläche ist in nachfolgenderAbbildung 4 dargestellt.

Abbildung 4 - Aufbau der Benutzeroberfläche

Die GUI ist aufgeteilt in die Bereiche Kinect Spy, Kinect Connection und Results ofObservation. Der Bereich Kinect Spy zeigt die Push-Buttons mit verschiedenenInteraktionsmöglichkeiten, wie beispielsweise den Start und Stopp der Observation, und dieStati des aktuellen Systems, wie die eingestellte Auto Start und Auto Stopp Zeit sowie denStatus der Observation.

Projekt KISPY

Seite | 8

Im Bereich Kinect Connection werden die drei Videostreams des live RGB-Bildes, desaktuellen Tiefenbildes und die Auswertung über die Transfermatrizen (siehe Kapitel 3.3.2)angezeigt. Darunter befindet sich Results of Observation, worin die detektierten Bilderabgespeichert werden.

Die Implementierung der Interaktion des Benutzers und der Übertragung auf eine Funktionerfolgt nach dem Signal-Slot Prinzip, einem der wesentlichen Merkmale von Qt©.

Am Beispiel des Buttons des Untermenüs für die Hilfe ist hier die Verknüpfung desgedrückten Knopfes als „triggered“ angezeigt und löst somit die Funktion showHelp() aus.Der nachfolgende Ausschnitt demonstriert diese Funktionalität.

connect(m_pHelpAction, SIGNAL(triggered()), this, SLOT(showHelp()));

Die weiteren Funktionen und Möglichkeiten der Einstellungen sind in Anhang A-4 (UserApplication Guide) noch detailreicher beschrieben und dargelegt.

3.1.2 KISPY KinectDas Teilprojekt KISPYKinect bildet das Core Framework der Arbeit und dient sowohl derAnbindung des Kinect© Sensorsystems, als auch der Datenverarbeitung mit dem Target derDetektion einer Person.

Die Akquise der Bilddaten erfolgt hierbei über das open Source Entwicklungspaket OpenNI,welches verschiedenste Funktion für das Auslesen der RGB- und Tiefenbilddaten bereitstellt.Zudem werden hier die Verbindung zum System über den USB Port initialisiert undterminiert und die Motoreinheit der Kinect© zur Justierung des Winkels mittelsOpenNIMotorContoller angesteuert. Diese Funktionen sind in der Klasse Kinect zu finden.

So wird mit Hilfe der Funktion setDepthStream() der Stream der ankommendenTiefenbilddaten zur Darstellung innerhalb der Benutzeroberfläche an KISPYGui übergebenund im Falle der aktiven Überwachung an die Funktion processPicture() übertragen. Hierinwird die Gesichtserfassung vorangetrieben.

void Kinect::setDepthStream(){

if(stream)emit newDepth();

if(m_bObservation) m_pFaceFinder->processPicture();}

Dieses Code-Snippet zeigt anhand der Tiefenbilddaten die Weitergabe der Daten, was analogauch für den RGB-Videostream sowie zur Ansteuerung des Motors verwendet wird.

Projekt KISPY

Seite | 9

Die weitere Bildverarbeitung befindet sich in der Klasse Facefinder. Hierbei wird dasmethodische Vorgehen, wie die Segmentierung anhand der Konturen (siehe Kapitel 3.3.1)und das Ausschneiden eines geeigneten Bildabschnitts, mittels OpenCV durchgeführt. DieOperationen an den Bilddaten erfolgen mittels 4x4-Matrizen zur Transformation, Rotation,Skalierung, Vertauschung, Vergrößerung und Zentrierung über in OpenCV implementierteFunktionen (siehe Kapitel 3.3.2).

Das angebundene Teilprojekt KISPYGui liefert hierbei als Schnittstelle die Information zuBenutzereingaben und Einstellungen, die die Verarbeitung der Daten in KISPYKinect imangegebenen Zeitrahmen ermöglicht.

Folgende Abbildung zeigt nochmals die verschiedenen Abhängigkeiten der Projekte bzw. derBibliotheken.

KISPYKinectKinect, Facefinder, OpenNIMotorController

KISPYGuiMainwindow, VideoControl, Clock,RestorDlg

OPENNI OpenCV

Qt

Abbildung 5 - Projektabhängigkeiten

Projekt KISPY

Seite | 10

3.2 Prinzipieller Ablauf der ApplikationDas Konzept zur Erkennung einer Person kann über folgende Prozesse grob umrissenwerden. Dabei kommen die Hintergrundsubtraktion, die konturenbasierte Segmentierung,die anschließende Transformation der Bilddaten und die Extraktion des gesuchten Merkmalszur Anwendung. Nachfolgend finden die Extraktion des Gesichtes und die Archivierung in dereingebundenen Datenbank statt.

Hintergrundsubtraktion

KonturenbasierteSegmentierung

Transformationvia Matrizen

Merkmalsextraktion Extraktion undArchivierung

Start

Ende

Tiefenbilddaten RGB-Bilddaten

Abbildung 6 - Flussdiagramm für Prozess der Merkmalsextraktion

All diese Prozesse sind in Abbildung 6 für eine einzelne Anwendung aufgezeigt, im Falle derApplikation würde die Start- und Ende-Aktion per Benutzer festgelegt und die gesamteSequenz würde periodisch fortgeführt.

Projekt KISPY

Seite | 11

3.3 Extraktion des Gesichts aus dem BildDie Lokalisierung und Extraktion des Gesichtsbereichs einer Person, die denAufnahmebereich passiert, stellt den Hauptbestandteil der Applikation dar.

Die Idee der Arbeit inklusive aller Restriktionen bezüglich des Kamerasystems ist inAbbildung 7 dargestellt.

Abbildung 7 - Konzept der Arbeit

Hierbei skizziert das Kinect© Kamerasystem einen Aufnahmebereich unter einem Winkelsowohl im horizontalen, als auch vertikalen Sichtfeld (hier vereinfacht mit α dargestellt). Derschwarze Rahmen deutet den Eintrittsbereich wie eine Schleuse oder eine Türe an. DerAbstand z von der Person zur Kamera wird über die Tiefenbilddaten ermittelt. Die Höhe hkennzeichnet einen definierten Bereich der Person relativ zum Boden. In der Abbildung istdies als Zentrum („Herz“-Bereich) der Person klassifiziert, wird aber im späteren Verlauf derArbeit zur Höhe des Kopfes über dem Boden geändert. Die Höhe h k stellt die Höhe derKamera über den Boden dar.

All diese Parameter und Annahmen sind notwendig zur weiteren Anwendung der Matrix-Operationen (Kap. 3.3.2). Vorher wird allerdings eine Hintergrundsubtraktion derTiefenbilddaten und eine konturenbasierte Segmentierung durchgeführt, die in denfolgenden Kapiteln beschrieben werden.

Aufnahmebereich der Kinect unter Winkel α

hk

z [mm]

h

α

Projekt KISPY

Seite | 12

3.3.1 Segmentierung mit Hilfe von KonturenAuf Basis des Tiefenbildes wird zunächst eine Hintergrundsubtraktion durchgeführt. Hierdient das Bild, das die Kinect© beim Initialisieren der Applikation aufnimmt, als Referenzund wird nachfolgend vom aktuellen Tiefenbildsatz abgezogen. Folgendes Code-Snippetstellt dieses Vorgehen dar.

//Second substract the Background Data from the actual Depth Data Mat matResult = abs(abs(m_depthData) - abs(m_backgroundData));

Das beim Starten abgespeicherte Referenzbild verbirgt sich hinter m_backgroundData undwird in der Ergebnismatrix von dem aktuellen Tiefenbild subtrahiert. Infolgedessen lassensich Veränderungen im erfassten Bildbereich klar darstellen (siehe Abbildung 8).

Abbildung 8 - Ergebnis der Hintergrundsubtraktion (links) von Tiefendatenbild (rechts oben)

Diese Differenzenbilder liefern die Unterschiede des aktuellen Bildes zu einem Referenzbild,wodurch der Umriss einer Person im Raum klar erkennbar wird.

Aufgrund vieler Störfaktoren der infrarotbasierten Technik, wie Reflektionen an spiegelndenOberflächen oder Sonneneinstrahlung, treten mehrere Bereiche im Differenzenbild auf. Umdiese Störstellen zu beseitigen, werden mit Hilfe der Funktion cvFindContours() die Konturender entstandenen Differenzen ermittelt und anschließend auf ihre Form bezüglich Umfangund Fläche geprüft. Es wird angenommen, dass die größte Differenz die der eintretendenPerson darstellt, so dass zu kleine Konturen verworfen und entsprechend große nochdargestellt werden.

Projekt KISPY

Seite | 13

for( ; contourLow != 0; contourLow = contourLow->h_next ){if (cvArcLength(contourLow,CV_WHOLE_SEQ,1) > 1000){

if(cvContourArea(contourLow,CV_WHOLE_SEQ)>9000) {

cvDrawContours(interimhere, contourLow, cvScalar( 255, 200, 150), cvScalar(255,255,255),CV_FILLED,CV_FILLED,CV_AA);

} }}

Wie obiger Auszug aus dem Code zeigt, wird auf Basis empirisch ermittelter Parameter dieseKontur einer Person zugeordnet und nachfolgend den weiteren Prozessen der Verarbeitungüberreicht.

3.3.2 Transformation der BildmatrizenNach [COMGRA] werden die dreidimensional vorliegenden Tiefenbilddaten mittels 4x4-Matrizen mit den in OpenCV implementierten Funktionen transformiert. DieVorgehensweise der Transferfunktion und die Transformation der Daten beziehungsweiseder Koordinatensysteme der Kinect© hin zu einer Höhendarstellung sind in Abbildung 9aufgezeigt und die zugehörigen Matrizen befinden sich in der Klasse KISPYConstants.

Dabei erfolgen zunächst eine Rotation um die y-Achse und eine Translation berechnet mitKorrektur der Höhe des Kamerasystems die Werte in z-Richtung um den normalisiertenHöhenwert h (m_height) (siehe 3.3.3). Die Daten werden um den Faktor s skaliert, so dassdie ankommenden Tiefendaten auf „brauchbare“ Entfernungen bis zu fünf Meternbeschränkt werden. Danach findet eine Vertauschung der Matrixdaten statt, wodurch dasxyz-Koordinatensystem in ein yzx-Koordinatensystem gewandelt wird. Zuletzt erfolgt eine

x

y

z

z

y

x

Transferfunktion max. Höhe

Abbildung 9 – Prinzip der Transferfunktion für Koordinatensystem und Daten der Kinect (links) und nachVerarbeitung (rechts)

Projekt KISPY

Seite | 14

Vergrößerung auf einen größeren Bereich mit dem Faktor w und eine Zentrierung der Daten,so dass w/2 nun den Mittelpunkt der neuen Darstellung bildet.

Nachfolgend sind die Code-Segmente mit den verschiedenen 4x4-Matrizen aufgelistet, die zuden gewünschten Operationen der Transferfunktion gehören.

double KISPYConstants::rot[] = {1, 0, 0, 0, 0, cosPHI, sinPHI, 0, 0, -sinPHI, cosPHI, 0, 0, 0, 0, 1 };

const cv::Mat KISPYConstants::rotateMat = cv::Mat(4, 4,cv::DataType<double>::type, rot);

double KISPYConstants::trans[]= {1, 0, 0, 0, 0, 1, 0, -h, 0, 0, 1, 0, 0, 0, 0, 1 };

const cv::Mat KISPYConstants::translateMat = cv::Mat(4, 4,cv::DataType<double>::type,trans);

double KISPYConstants::scale[]= {s, 0, 0, 0, 0, 1, 0, 0, 0, 0, s, 0, 0, 0, 0, 1 };

const cv::Mat KISPYConstants::scaleMat = cv::Mat(4, 4,cv::DataType<double>::type,scale);

double KISPYConstants::exch[]= {1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1};

const cv::Mat KISPYConstants::exchangeMat = cv::Mat(4, 4,cv::DataType<double>::type,exch);

double KISPYConstants::exp[]= {w, 0, 0, 0, 0, w, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};

const cv::Mat KISPYConstants::expandMat = cv::Mat(4, 4,cv::DataType<double>::type,exp);

double KISPYConstants::ori[]= {1, 0, 0, w/2, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };const cv::Mat KISPYConstants::originMat = cv::Mat(4, 4,cv::DataType<double>::type,ori);

Projekt KISPY

Seite | 15

Das an den Tiefenbilddaten durchgeführte Vorgehen „kippt“ die Bilddaten so, dass dietransformierte Darstellung mit der Perspektive eines Vogels, also der Draufsicht,vergleichbar ist (siehe Abbildung 10).

Abbildung 10 - RGB- (links) und Tiefenbild (Mitte) sowie transformierte Darstellung (rechts)

3.3.3 Merkmalsextraktion im RGB-BildDieser Höhenwert wird mittels Winkelkorrektur und Einbeziehung der Grundfläche desBodens zur Höhe des Kamerasystems errechnet. Der zu erfassende Bereich wird mit eineroberen und unteren Höhenbegrenzung (0.5-1.7 m) limitiert und eine normalisierte Höhedes Detektionsbereichs (siehe folgendes Code-Snippet) weiter verarbeitet.

double normalized_height = (height-minimum_height_in_m)/(maximum_height_in_m-minimum_height_in_m);

Dabei wird das Verhältnis von der angegebenen Höhe height zur minimalen Erfassungshöheminimum_height_in_m sowie der Differenz von maximaler und minimaler Höhe gebildet.Dadurch werden nur gültige Höhenwerte verarbeitet und nachfolgend auch imresultierenden Transferbild dargestellt.

Die weitere Extraktion erfolgt über das Finden des maximalen Höhenwertes imErfassungsbereich. Diese Koordinate mit maximalem Höhenwert wird festgehalten undmittels cvDrawRect ein Rechteck an dieser Position gezeichnet (siehe folgender Ausschnitt).

cvDrawRect(interim,cvPoint(coord.x - 60, coord.y),cvPoint(coord.x + 60, coord.y +140 ),cvScalar( 255, 0, 2),2);

Die empirisch ermittelten Schwellwerte werden nun in x- und y-Richtung des Originalbildesangesetzt und der zugehörige Bildausschnitt mit einem Rechteck versehen, daraufhin ausdem RGB-Bild extrahiert und zur Ablage und Speicherung als QPixmap übergeben. DieserVorgang ist im folgenden Kapitel beschrieben.

Projekt KISPY

Seite | 16

3.4 Ablage und SpeicherungDas Programm bietet die Möglichkeit die Resultate der Observation zu speichern und somit

für einen späteren Zeitpunkt zur Verfügung zu stellen.

Dabei werden die aufgenommen Personen mit einer Identifikationsnummer id, dem

aktuellen Zeitstempel date und dem zugehörigen Bild picture abgespeichert.

Für diesen Zweck wurde mit Hilfe von Qt eine SQLite Datenbank eingerichtet. Diese

Datenbank besteht lediglich aus nur einer Tabelle persons. In ihr werden die erfassten Daten

gespeichert. Abbildung 11 zeigt die Tabelle persons und ihre Bestandteile.

Abbildung 11 – Aufbau und Parameter-Struktur der Datenbank

Die verwendeten Parameter sind nachfolgend kurz beschrieben:

Ø id ist ein Primary Key, welcher für die Eindeutigkeit der Einträge sorgt. Dessen Wertewerden durch ein einfaches Inkrement erstellt.

Ø date beinhaltet das Datum der Detektion in der ISO-Date Formyyyy:MM:ddThh:mm:ss unter Außerachtlassung der Zeitzone .

Ø Die Bilder der Personen werden in Form von QPixmap in der Datenbank in derTabelle picture binär gespeichert. SQL bietet hierfür den Datentyp BLOB (BinaryLarge Objects)

SQLite bietet keine Benutzerverwaltung. Somit lässt sich der Zugang zur Datenbank nicht

kontrollieren. Aus datenschutzrechtlichen Gründen ist der Einsatz dieser Speichertechnik nur

durch eine weitere von Nutzerseite geleistete Zugangssicherung zu empfehlen.

Evaluation des Überwachungssystems

Seite | 17

4 Evaluation des ÜberwachungssystemsEine Überprüfung des Systems erfolgt zunächst unter statischen Bedingungen hinsichtlichdes aufgenommenen Bereichs und der Anpassung und Eruierung der Transferfunktion.Weiterhin wurden zwei verschiedene Ansätze gewählt, wovon einer aus Gründen derPlattformunabhängigkeit allerdings wieder verworfen wurde.

Diese Thematiken sind in diesem Kapitel dargelegt.

4.1 Erster Ansatz mit Microsoft SDKDas Ziel der Plattformunabhängigkeit dieser Arbeit verhinderte den Einsatz des MicrosoftKinect Software Developers Kit, einem SDK aus dem Hause Microsoft, das Entwicklungen aufBasis des Kinect 3D Sensorsystems in C# und C++ ermöglicht.

Das Microsoft Kinect SDK bietet Funktionen bis zu 7 Personen gleichzeitig im Raum zudetektieren und liefert gleichzeitig Koordinaten markanter Körperstellen, wie Kopf undSchultern der gefundenen Personen: die Tracking Points als Daten des Skeleton. Dies ist inAbbildung 12 zu erkennen.

Abbildung 12 - Tracking Points des Skeleton unter MS SDK

Mit Hilfe dieser Skeleton Data ließe sich recht schnell und ohne wenig Aufwand der Kopf derPerson extrahieren, wie in Abbildung 13 dargestellt.

Evaluation des Überwachungssystems

Seite | 18

Abbildung 13 - Erfassung und Erkennung des Gesichtsbereichs unter MS SDK

Mit dem Einsatz des Microsoft SDKs war das Ziel, Personen und deren Gesichter zulokalisieren und zu extrahieren verhältnismäßig schnell erreicht. Dieser Ansatz wurdeallerdings aufgrund mangelnder Plattformunabhängigkeit wieder verworfen.

4.2 Testumgebung zur HöhendarstellungDie Anwendung einer Transferfunktion mit den verschiedenen 4x4-Matrizen alsKernbestandteil der Applikation wurde aufgrund diverser Anfälligkeiten auf Fehler unterfesten Bedingungen entworfen, determiniert und überprüft.

Dabei wurde zur genauen Bestimmung ein rechteckiger Corpus in definierter Höhe voreinem gleichmäßigen und in gleichem Abstand angebrachten Hintergrund aufgestellt. DasKamerasystem wurde auf einem Stativ gesichert und die Szene mit den Funktionenanalysiert (siehe Kapitel 3.3.2).

Evaluation des Überwachungssystems

Seite | 19

Abbildung 14 - Testaufbau zur Bestimmung der Höhe und der Überprüfung der Transferfunktion

Nachdem diese Sequenz und die Implementierung der Transferfunktion erfolgreichverlaufen sind, erfolgte ein Testablauf mit erfolgreicher Höhendarstellung der Aufnahme(siehe Abbildung 15).

Abbildung 15 – Testaufnahme mit Tiefenbild (links), Farbbild (mittig) und Transferbild in Vogelperspektive (rechts)

In obiger Abbildung ist die Umsetzung mittels Testaufnahmen dokumentiert. Hierbei zeigtsich das Tiefen- und Farbbild mit dem zu erfassenden Corpus und die Draufsicht (rechts)offenbart den höchsten Punkt in nahezu rechteckiger Form (roter Bereich) in derFalschfarbendarstellung.

Mit dieser „Debugging-Session“ konnte die Darstellung der Szenerie mit Hilfe derverschiedenen Matrixoperationen in der Draufsicht beziehungsweise der Vogelperspektiveerfolgen und somit das wichtige Merkmal der Applikation umgesetzt werden.

Evaluation des Überwachungssystems

Seite | 20

4.3 Ausarbeitung mit OpenNIDer Ablauf der Applikation, die auf Basis von OpenNI implementiert wurde, ist in denKapiteln 3, insbesondere den Teilabschnitten 3.2 und 3.3 dokumentiert.

Abbildung 16 - Erfassung und Erkennung des Gesichts mit Ansteuerung unter OpenNI

Ein Test unter Realbedingungen im Eintritts- beziehungsweise Türbereich einer Wohnung,auch mit diversen Gegenständen als Störfaktoren, offenbarte als Resultat der Applikation,dass die Erkennung und Aufnahme der Personen beziehungsweise deren Gesichter imAllgemeinen relativ gut funktioniert – anhand Abbildung 16 dargestellt. Hierbei wird derGesichtsbereich mittels der Funktionalität von OpenCV mit einem roten Rechteck markiert.Dieser Bereich des eintretenden Probanden wird im Laufe des Eintretens erfasst undmehrfach aufgenommen und gespeichert.

Jedoch gibt es auch generell Erscheinungen und Abschnitte, in denen fehlerhafte Ergebnisseaufgenommen werden. Dazu wird in Kapitel 5 noch detailliert Stellung bezogen.

Evaluation des Überwachungssystems

Seite | 21

4.4 ErgebnisIn den Ergebnissen sind Disparitäten zwischen RGB- und Tiefenbild deutlich zu erkennen,welche mit der Entfernung zum Sensorsystem variieren. Die Ursache dieser Disparitäten istin der Anordnung der Sensoren für RGB- und Tiefenbilddaten zu finden. Diese liegen amKamerasystem einige Zentimeter auseinander.

Abbildung 17 - Disparität zwischen RGB- und Tiefenbild

Obiges Bild dokumentiert anschaulich inwieweit Tiefen- und Farbbild in einer Entfernung vonca. 3m voneinander abweichen. Zur Darstellung dieses Bildes, wurden die Koordinaten einergefundenen Person in dem dazugehörigen Farbbild farblich dargestellt. Als Basis für dieseVeranschaulichung diente das Microsoft Kinect SDK.

Fazit und Ausblick

Seite | 22

5 Fazit und Ausblick

Fazit des erarbeiteten Konzepts

Der anfängliche Ansatz mit dem Microsoft© SDK erfolgte aufgrund der bereitsimplementierten Funktionen und Methoden schneller als der Ansatz unter OpenNI. Einenweiteren Vorteil stellt die Detektion von bis zu sieben Personen gleichzeitig dar. Allerdings istdas Tracking des Skeletons begrenzt, wodurch dies erst aktiv wird, sobald eine Person mitnahezu vollständiger Statur den Aufnahmebereich betritt.

Aus diesem Grund und aufgrund der Plattformunabhängigkeit von OpenNI wurde ein zweiterAnsatz angestrebt. Hier zeigten sich die Problematik der Disparität zwischen Tiefen- undFarbbild und die genaue Bestimmung der Parameter des Kamerasystems (Höhe, Winkel) alsmögliche Schwachstelle der Applikation. Dennoch detektierte das System in den gewähltenTestumgebungen die eintretenden Probanden entsprechend gut und speicherte diese ab.Die Einstellungen des Aufnahmebereichs mit Höhe und Winkel des Kamerasystemsermöglichen desweiteren eine Anpassung an die Gegebenheiten des Areals derÜberwachung. Eine weitere Evaluation der Applikation ist allerdings erstrebenswert, um alleMöglichkeiten der Einstellungen zu überprüfen und gegebenenfalls an die unterschiedlichenSituationen anpassen zu können.

Möglichkeiten der Verbesserung und Optimierung

Eine hierarchische Funktion könnte mehrfache Aufnahmen reduzieren, zum Beispiel durchdie Verfolgung und Speicherung des maximalen Höhenpunktes und des Ausschneidens undAblegens der Bilder nahe dem maximalen Wert.

Darüber hinaus bestehen diverse Ansätze zur Optimierung und Verbesserungsmöglichkeitender Erkennung. So kann eine Verknüpfung der Überwachung im Farbbild zu einer zweifachenDetektion den Sicherheitsfaktor erhöhen. Eine Erhöhung der Auflösung der Kamera –wie esMicrosoft© laut immer wiederkehrenden Gerüchten mit Herausgabe einer neuen Kinect©-Generation plant – bietet zudem eine genauere Darstellung und die Möglichkeit, einenhöher aufgelösten Bildbereich zu detektieren, auszuschneiden und abzuspeichern.

Eine weitere Problematik stellt eine fehlende Erkennung dar, ob die vorder- oder rückseitigeAnsicht der Person vorliegt. Die Applikation basiert hier nur auf den Höhenwerten, weshalbdas System auch durch das Emporstrecken eines Armes als maximalen Höhenpunkt relativleicht „ausgetrickst“ werden könnte.

Fazit und Ausblick

Seite | 23

Ausblick und Weiterentwicklung

Nachgelagert könnte auch eine Gesichtserkennung denkbar sein, die automatisch dieZuordnung von Gesichtern zu Personen, die beispielsweise in dem Labor arbeiten,gewährleistet. So könnten in einem weiteren Stadium diverse Personen schon vor Gefahren-oder Sicherheitszonen als „nicht erkannt“ beziehungsweise als „nicht bekannt“ festgehaltenwerden und ihnen danach der Zutritt versperrt oder verweigert werden.

Die Thematik des Datenschutzes, wie in Kapitel 3.4 schon kurz angesprochen, stellt ein nichtzu vernachlässigendes Problem dar. So bietet die aktuell verwendete SQLite Datenbankkeinerlei Zugriffskontrolle und eine Verschlüsselung der Observationsdaten ist auch nichtvorhanden.

Aufgrund der steigenden Aktualität wird das Thema Überwachung und Observationallerdings weiterhin nicht den Reiz verlieren und hiermit wurde ein erster Ansatz geliefert,einen für Zutritt sensiblen oder zu erfassenden Bereich zu observieren.

Literaturverzeichnis

Seite | 24

6 Literaturverzeichnis[HEISE1]

http://www.heise.de/newsticker/meldung/PRISM-Whistleblower-bekennt-sich-1885409.html

Artikel von heise.de, Aufruf am 19.04.2014

[SPIEGEL1]

http://www.spiegel.de/politik/deutschland/streit-ueber-videoueberwachung-nach-bonner-anschlagsversuch-a-873207.html

Artikel von Spiegel Online, Aufruf am 19.04.2014

[HEISE2]

http://www.heise.de/newsticker/meldung/ueberwachungskameras-reduzieren-Kriminalitaet-nur-geringfuegig-219579.html

Artikel von heise.de, Aufruf am 19.04.2014

[ZEIT1]

http://www.zeit.de/2011/12/Microsoft-Spielekonsole-Kinect

Artikel der Zeit, Aufruf am 20.04.2014

[KINECT1]

http://www.heise.de/newsticker/meldung/Kinect-versteht-HTML5-und-JavaScript-1961438.html

Artikel von heise.de, Aufruf am 20.09.2013

[COMGRA]

http://schorsch.efi.fh-nuernberg.de/roettger/index.php/Lectures/Computergrafik

Wiki von Prof. Dr. Röttger, Kapitel: Geometrische Grundlagen, Aufruf am 19.05.2014

Literaturverzeichnis

Seite | 25

[KINECT2]

http://channel9.msdn.com/Series/KinectSDKQuickstarts/Understanding-Kinect-Hardware

Aufruf am 20.09.2013

[KINECT3] An overview of depth measurement for motion picture applications, Thomas Hach

http://www.ldv.ei.tum.de/uploads/media/Vorlesung_5_Gastvortrag_ARRI_TOF.pdf

Aufruf am 20.09.2013

[KINECT4] Optische Sensorik, Martin Löffler-Mang, Vieweg Verlag, Friedrich & SohnVerlagsgesellschaft mbH, 2011

Anhang

Seite | 26

A. Anhang

1. Lastenheft

Projekt: Kinectspy 1.0

Autoren: Christian Meyer

Tobias Niemczyk

Letzte Änderung: 11.02.2013

Lastenheft KinectSpy 1.0Eintrittsüberwachung KinectSpy

Anhang

Seite | 27

Inhalt

Zielsetzung ........................................................................................................................28

Produktleistungen .............................................................................................................28

Ergänzungen .....................................................................................................................29

Anhang

Seite | 28

Zielsetzung

Es soll eine Eingangsüberwachung realisiert werden, die es ermöglicht eintretende Personenzu erkennen und deren Gesicht, mit Datum und Uhrzeit versehen, darzustellen.

Im Nachfolgenden bezeichne gefundene Personen die Bilder dieser Personen.

Produktleistungen

Folgende Produktleistungen muss das Programm erfolgreich erfüllen

Ø Die Ausgabe der Personen soll innerhalb einer graphischen Oberfläche erfolgen. Umdie eventuell große Anzahl gefundener Personen übersichtlich darzustellen, sollendrei, idealerweise sogar fünf Gesichter in chronologischer Reihenfolge dargestelltsein.

Ø Zusätzlich zur Darstellung gefundener Personen soll die aktuelle Uhrzeit und Datum,sowie ein Livebild in der Oberfläche zu sehen sein.

Ø Im Menu des Programms findet sich eine Funktion mit welcher man Zeit und Datumder Überwachung einstellen kann, damit das Programm selbständig mit derÜberwachung beginnt. Zusätzlich gibt es eine Start/Stopp Funktion auf derOberfläche, die es erlaubt die Überwachung unabhängig der Einstellungen im Menüzu starten bzw. zu stoppen.

Ø Die Gesamtzahl gefundener Personen der aktuellen Überwachung ist jederzeit aufder Oberfläche ablesbar.

Ø Das Programm soll unabhängig von Datum und Uhrzeit arbeiten können, notfalls24/7/365.

Anhang

Seite | 29

Ergänzungen

Folgende Eigenschaften des Produkts sind wünschenswert:

Ø Die Möglichkeit Personen über einen längeren Zeitraum zu speichern

Ø Der Versand der im Laufe des Tages gefundenen Personen via Email

Ø Plattformunabhängigkeit

Ø Die Möglichkeit die Kameraeinstellung wie Neigung über die Oberfläche zu verstellen

Anhang

Seite | 30

2. Pflichtenheft

Projekt: Kinectspy 1.0

Autoren: Christian Meyer

Tobias Niemczyk

Letzte Änderung: 11.02.2013

Pflichtenheft KinectSpy 1.0Eintrittsüberwachung KinectSpy

Anhang

Seite | 31

Inhalt

Zielbestimmungen ............................................................................................................32

Musskriterien ....................................................................................................................32

Wunschkriterien ...............................................................................................................33

Abgrenzung .......................................................................................................................33

Produktumgebung ............................................................................................................34

Produktdaten ....................................................................................................................34

Entwicklungsumgebung ....................................................................................................34

Ergänzungen .....................................................................................................................35

Anhang

Seite | 32

Zielbestimmungen

Es soll eine Eintrittsüberwachung realisiert werden, welche Personen, die durch eine Türeinen Raum betreten, erkennt und deren Gesichter als Bilder speichert.

Im Nachfolgenden bezeichne gefundene Personen die Bilder dieser Personen.

Musskriterien

Ø Die gefundene Person muss klar vom restlichen Bild erkannt und ausgenommenwerden

Ø Die gefundenen Personen müssen übersichtlich auf der graphischen Oberflächedargestellt sein

Ø Die gefundenen Personen müssen mit Datum und Uhrzeit versehen werden

Ø Die Eintrittsüberwachung muss in einem vom Nutzer frei definierten Zeitraumautomatisiert arbeiten

Ø Die automatisierte Eintrittsüberwachung muss unabhängig von der Einstellung zustoppen und zu starten sein

Ø Es muss jederzeit die Zahl der im Zeitraum der Überwachung eingetretenenPersonen ablesbar sein

Ø Es muss ein Kamerasystem in geeigneter Position angebracht werden(idealerweise Kopfhöhe)

Anhang

Seite | 33

Wunschkriterien

Ø Gefundene Personen können in einer Datenbank gespeichert werden, so dass sieauch nach einem längeren Zeitraum abrufbar sind

Ø Gefundene Personen können am Ende der Überwachung per Email versandtwerden

Ø Das Programm kann auf verschiedenen Plattformen wie Windows oder UNIXarbeiten.

Abgrenzung

Das Produkt beschränkt sich auf die Erkennung von Personen und speichert derenGesichter über einen durch den Benutzer gewählten Zeitraum. Hierbei wird auf einespezifische Gesichtserkennung und Klassifizierung verzichtet.

Desweiteren wird vereinfachend angenommen, dass die detektierten Personen unterNormalbedingungen die Türe passieren. Spezielle Kriterien wie das Tragen vonaußergewöhnlichen Kopfbedeckungen und rückwärtiges Laufen durch denErkennungsbereich werden hierbei als unwahrscheinliche Fälle vernachlässigt.

Der Einsatz des Produkts hat nur in geeignetem Umfeld und unter Voraussetzung derEinwilligung des Nutzers und der aufgenommenen Personen zu erfolgen.

Anhang

Seite | 34

Produktumgebung

Das Produkt benötigt neben einem Computer ein Kamerasystem, das zusätzlich zu einemFarbbild räumliche Informationen liefert.

Zum Einsatz kommt das 3D Sensorsystem Kinect von Microsoft.

Produktdaten

Das 3D Sensorsystem Kinect bietet ein Farbbild in einer Auflösung von 640x480 Pixel, sowieräumliche Informationen mit der Auflösung 320x240 Pixel. Die Bildwiederholungsratebeträgt 30 Bilder pro Sekunde.

Entwicklungsumgebung

Ø Programmierung erfolgt unter MS Visual Studio 2010 (C/C++)

Ø Oberflächengestaltung wird mit Qt DevelopmentFramework4.7.1 realisiert

Ø OpenNI dient zur Anbindung des 3D Sensorsystems Kinect

Durch die Verwendung von OpenNI und Qt wird eine Plattformunabhängigkeit erwartet.

Anhang

Seite | 35

Ergänzungen

Dem Wunschkriterium einer Speicherung der gefundenen Personen kann durch dieVerwendung einer Datenbank gerecht werden. Hierfür muss noch geklärt werden, ob dieseDatenbank passwortgeschützt sein soll oder nicht. Dies beeinflusst die Wahl der Datenbank.

Der Versand der gefundenen Personen kann über zwei Wege erfolgen:

Ø Durch die direkte Kommunikation mit einem zur Verfügung stehenden SMTP Servers

Ø Durch einen programminternen Aufruf eines Emailprogramms, das auf demComputer vorhanden sein muss.

Beide Möglichkeiten müssen weiter geklärt werden.

Anhang

Seite | 36

3. Volere Anforderungsanalyse

The “Kinect-Spy” System

Requirements Specification

Version 1.0

Table of Contents

PROJECT DRIVERS

1. The Purpose of the Project

Aufbau eines Projektes zur Erfassung und Aufnahme von passierenden Personen in einem Innenraum

- Erfassen von Personen gegenüber dem Hintergrund im Raumbereich

- Aufnahme des Gesichtsausschnittes einer passierenden Person

- Verknüpfung von Bild und Zeitpunkt

- grafische Darstellung dieser Verbindung über eine geeignete Oberfläche

2. Client, Customer and other Stakeholders

S. Röttger

3. Users of the Product

T. Niemczyk, C. Meyer, C. Matla

PROJECT CONSTRAINTS

4. Mandated Constraints

- Betriebssystem sollte Windows 7© oder höher sein.

- Microsoft Kinect© SDK v1.0 oder höher

- 3D Kinect© Kamera System

- USB-Schnittstelle, um Daten der Kamera übertragen zu können.

5. Naming Conventions and Definitions

Anhang

Seite | 37

6. Relevant Facts and Assumptions

- Programmierung erfolgt unter MS Visual Studio 2010 (C/C++)

- Oberflächengestaltung wird mit einem geeigneten Tool durchgeführt (Qt 4.7.x oder höher)

- geplanter Termin zur Fertigstellung des Produkts ist vorerst der 22. Februar

FUNCTIONAL REQUIREMENTS

7. The Scope of the Work

8. The Scope of the Product

- Anwendung als Überwachungseinheit in sensiblen Innenräumen, z.B. der Bereich eines medizinischen Labors

- weitere Anwendungen folgen im Laufe des Projekts

9. Functional and Data Requirements

NON-FUNCTIONAL REQUIREMENTS

10. Look and Feel Requirements

11. Usability and Humanity Requirements

- Tracking von Personen in einem (Innen-)Raumbereich

- Erfassen und Aufnehmen von Personen und deren Gesichtern

- Zuordnung der Gesichtsaufnahme zum gegenwärtigen Zeitpunkt der Aktion

- Anzeige der Bilddaten von Personen, die im Raumbereich agiert haben

12. Performance Requirements

- Datenverarbeitung sollte in Echtzeit erfolgen, ohne Zeitverzögerung

- Verschmelzung von Tiefeninformation und Bild der Kinect© Kamera

- Das Produkt sollte 24-7-365 zur Verfügung stehen

13. Operational Requirements

- Einschränkung des Messbereichs auf Reichweite der Kamera (ca. 0,8 – 4,0 Meter)

- die endgültige Version sollte einfach ausführ-/bedienbar sein

Anhang

Seite | 38

14. Maintainability and Support Requirements

15. Security Requirements

16. Cultural and Political Requirements

17. Legal Requirements

PROJECT ISSUES

18. Open Issues

- Funktionstüchtigkeit unter verschiedenen Betriebssystemen und mit älteren Hardwarekomponenten kannnicht gewährleistet werden

19. Off-the-Shelf Solutions

- andere Produkte nicht bekannt

20. New Problems

21. Tasks

- Benutzer muss die Kinect© Kamera über Schnittstelle anbinden

- Der Nutzer muss die Kamera an geeigneter Stelle positionieren

- Aufruf des Hauptprogramms und Justierung des Aufnahmebereichs

- Alle implementierten Funktionen können nun aufgerufen werden

22. Cutover

23. Risks

- unvorteilhafte Positionierung der Kamera

24. Costs

25. User Documentation and Training

- siehe anschließende Projektdokumentation

26. Waiting Room

27. Ideas for Solutions

Specification prepared by T. Niemczyk, C. Meyer, C. Matla Date 2012-10-16

Anhang

Seite | 39

4. User Application Guide

Projekt: Kinectspy 1.0

Autoren: Christian Meyer

Tobias Niemczyk

Letzte Änderung: 21.02.2014

Anleitung KinectSpy 1.0Eintrittsüberwachung KinectSpy

Anhang

Seite | 40

Inhalt

1. Übersicht zur Benutzeroberfläche .................................................................................41

1.1. Übersicht zum Modul KinectSpy .............................................................................42

1.2. Ausgabe der Sensordaten unter Kinect Connection ................................................43

1.3. Anzeige der Überwachung – Results of Observation ...............................................44

2. Besonderheiten der verschiedenen Funktionen ............................................................45

2.1. Start- und Stopp-Modalitäten der Applikation ........................................................45

2.1.1. Voreinstellungen nach Betriebsart ..................................................................45

2.1.2. Direkter Start/Stopp innerhalb der Benutzeroberfläche ..................................46

2.1.3. Voreinstellung des automatischen Starts .........................................................46

2.2. Betrachten der Ergebnisse der Observation ...........................................................47

3. Fehlerbehandlung .........................................................................................................48

3.1. Verbindungsfehler durch nicht angeschlossenes Sensorsystem ..............................48

3.2. Diskonnektion während der Laufzeit der Applikation .............................................49

4. Weitere Anmerkungen ..................................................................................................50

5. Impressum ....................................................................................................................50

Übersicht zur Benutzeroberfläche

Seite | 41

1. Übersicht zur Benutzeroberfläche

Die grafische Oberfläche der Applikation teilt sich grundsätzlich in 3 Sektoren auf.

Diese sind zum einen die Status- und Interaktionsleiste „KinectSpy“ auf der linken Seite, zumanderen die Videodarstellungen „Kinect Connection“, die in der vertikal getrennten Ansichtoben zu finden sind, und darunter die Ergebnisse der durchgeführten Applikation derEintrittsüberwachung „Results of Observation“.

Die Benutzeroberfläche ist in folgender Abbildung dargestellt.

Abbildung 18 - Übersicht der Benutzeroberfläche

Zudem findet sich die typische Aktionsleiste mit den Möglichkeiten „File“, „Settings“ und„Help“.

Nachfolgend eine Übersicht zu den Möglichkeiten hinter diesen Tabs:

Funktion Kurzkombination Funktion

Fileà Exit Strg + Q Beenden der Applikation

SettingsàSettings Strg + S Auswählen und Bearbeiten verschiedenerEinstellungen (Start/Stop, Datenbank)

HelpàHelp F1 Help-File, Anleitung zur Applikation

HelpàAbout Informationen, Impressum

Übersicht zur Benutzeroberfläche

Seite | 42

1.1.Übersicht zum Modul KinectSpyZunächst soll der Teil KinectSpy der Benutzeroberfläche betrachtet werden.Dieser besteht aus einem kreisrunden Push-Button, mit dem sich die Routine der Applikationstarten und stoppen lässt (siehe Abbildung – Nr.1).

Unterhalb finden sich Informationen zu den verschiedenenEinstellungen und aktuellen Stati des Systems (siehe Nr.2).Zunächst werden Auto Start und Auto Stop, die unter Settings(Tastenkombination: Strg + S) eingestellt werden können, angezeigt.Unter diesen Eingaben wird die Systemroutine, d.h. dieEintrittsüberwachung, automatisch ausgeführt.Zusätzlich werden die aktuelle Zeit unter der Bezeichnung „CurrentTime“ und die Anzahl gefundener Personen mittels „Personscount“aufgezählt beziehungsweise angezeigt.

Darauffolgend sind vier längliche Push-Buttons, mit denen wichtigeFunktionen direkt angesprochen werden können, und ein Status-Button zu finden (siehe Nr.3).

Mit „Start/StopVideostream“ kann die Ausgabe der Daten desKinect© Kamerasystems angesteuert werden und je nachSystemstatus der Videostream begonnen oder gestoppt werden.Der Button „Show recent Observation“ aktiviert die Darstellung deraktuell ankommenden Daten und somit das Zeigen der Kameradatenin Echtzeit innerhalb der GUI des Benutzers. Mit dem Bedienelement„Clear Observation Window“ wird das Überwachungsfenster zurDarstellung der Bilder bereinigt, um gegebenenfalls eine neueZeiteinheit zu betrachten oder auszuwerten. Die bereits durch die

Applikation aufgenommenen Personen und Szenen können mittels „Show oldResults“ ausder im Hintergrund befindlichen Datenbank geladen und anschließend betrachtet werden.

Zuletzt findet sich ganz unten im Modul „KinectSpy“ die Statusleiste, die Auskunft über denderzeitigen Status der Applikation gibt. Eine Übersicht und Erläuterungen zu denverschiedenen Stati befinden sich in nachstehender Tabelle.

Statusleiste Bedeutung

Applikation gestartet

Überwachung aktiv

Applikation inaktiv

es erfolgt keine Überwachung

1

23

Abbildung 19 - Modul"KinectSpy"

Übersicht zur Benutzeroberfläche

Seite | 43

1.2.Ausgabe der Sensordaten unter Kinect ConnectionDer horizontale Bereich der Benutzeroberfläche gliedert sich in einen oberen Bereich, derGegenstand dieses Abschnitts ist, und einen unteren Bereich (siehe Kap. 1.3).

Obenauf befindet sich im Modul Kinect Connection die Darstellung der verschiedenenVideoströme sowie die durch die vorhandene Algorithmik ermittelte Höhendarstellung derSzenerie.

In Abbildung 3 sind exemplarisch ein derartiger Aufbau und die zugehörigen Ausgaben derverschiedenen Sensoreinheiten des Kinect© Kamerasystems angezeigt.

Abbildung 20 - Ausgabe der Sensorerfassung: RGB-Kamera (links), Tiefenbild, transformierte Höhendarstellung (rechts)

Hierbei wird der RGB-Videostream der VGA-Kamera unter „Livevideo“ ausgegeben. Direktdaneben befindet sich – mit „Depthvideo“ umschrieben – das Tiefenbild, das von derInfrarotsensorik des Kamerasystems erfasst wurde, und nun in Falschfarbendarstellungdargestellt wird. Hierbei wird eine Skalierung von weiß für kurze Entfernungen nach schwarzfür entlegener detektierte Objekte verwendet.

Die Ausgabe „TransferVideo“ zeigt ein Höhenbild der aktuellen Situation, ähnlich einerVogelperspektive, insofern das Programm gerade aktiv geschaltet ist.

Die erwähnten Ausgaben dienen nur der Anschaulichkeit und der Kontrolle der zuobservierenden Szenerie für den Benutzer.

Übersicht zur Benutzeroberfläche

Seite | 44

1.3.Anzeige der Überwachung – Results of ObservationIm unteren Bereich der grafischen Benutzeroberfläche ist unter „Results of Observation“ dieAusgabe der detektierten Personen anzutreffen.

Je nach Priorisierung des Benutzers können hier die aktuellen Ergebnisse der Überwachungoder auch bereits früher aufgenommenen Datensätze betrachtet werden (siehe Kap.2.2). Eswerden jedoch maximal fünf Bildausgaben der abgespeicherten Aufnahmen mit Datums-und Zeitstempel nach Coordinated Universal Time plus eine Stunde (UTC+1) dargestellt. Zuden weiteren erfassten Datensätzen gelangt man über die beidseitig angebrachtenPfeiltasten, die ein chronologisches Durchlaufen der Überwachungsbilder ermöglichen.

Eine exemplarische Darstellung findet sich unter Abbildung 4.

Abbildung 21 - Beispiel für eine mögliche Ausgabe unter Results of Observation

Das Auslesen erfolgt hierbei über die hinterlegte Datenbank, in der das Ergebnis derÜberwachung per Option in den Settings gespeichert wird (siehe Kapitel 2.1.1).

Besonderheiten der verschiedenen Funktionen

Seite | 45

2. Besonderheiten der verschiedenen FunktionenIm Hinblick auf die erleichterte und verständliche Bedienung werden nachfolgend diverseimplementierte Funktionen und deren Charakteristika erläutert.

2.1.Start- und Stopp-Modalitäten der ApplikationUm die Applikation zu starten, gibt es verschiedene Optionen. Hierbei stehen dieMöglichkeiten des manuellen Starts und Stopps der Anwendung sowie des automatisiertenBetriebs nach gewähltem Zeitraum zur Verfügung.

2.1.1. Voreinstellungen nach BetriebsartJe nach Betriebsart sind unterschiedliche Modi einzustellen, dieeinen manuellen oder auch einen automatisierten Betriebermöglichen.

Wie in Kapitel 1.1 beleuchtet und in Abbildung 5 auf der linkenSeite nochmals dargestellt, gibt die Benutzeroberfläche einenÜberblick über die eingegeben Stati im Bereich „Kinect Spy“.

Falls die Felder „Auto Start“ und „Auto Stop“ nicht belegt sind, soist kein automatischer Start eingestellt. Hier im Beispiel jedoch isteine „Auto Start“-Zeit von 17:00:00 Uhr bis zur „Auto Stop“-Zeitvon 7:00:00 Uhr eingegeben, ein automatischer Start des Systemsist also aktiv. Die Eingabe dieser Parameter wird in Kapitel 2.1.3detailliert erläutert.

So kann beispielsweise die Überwachung eines sensiblen Zutrittsbereichs eines Labors überdie Nacht voreingestellt und gewährleistet werden.

Abbildung 22 - Möglichkeiten der Start-/Stopp-Modi

Die Statusleisten (siehe Kapitel 1.1) geben zudem Auskunft über eine aktivierte oderdeaktivierte Überwachung der Szenerie.

Besonderheiten der verschiedenen Funktionen

Seite | 46

2.1.2. Direkter Start/Stopp innerhalb der BenutzeroberflächeÜber das Bedienelement „Start Observation“ besteht die Möglichkeit für den Benutzer, dieAnwendung manuell anzustoßen und mit dem Gegenpart „Stop Observation“ wiederanzuhalten. Dies geschieht auch unabhängig von einer manuellen Voreinstellung für einenautomatischen Betrieb. Dieser Push-Button steuert somit direkt die Aktivität derÜberwachung an.

2.1.3. Voreinstellung des automatischen StartsWenn man sich für einen automatisierten Betrieb entscheidet, so sind vorab dieEinstellungen hinsichtlich des Zeitraums vorzunehmen.

In nachfolgender Abbildung ist die grafische Oberfläche zur Einstellung der Zeiten für denBetrieb der Applikation dargestellt.

Abbildung 23 - Einstellungen zu automatischer Überwachnung

Zunächst muss die Option „Start Observation automatically“ gesetzt werden undnachfolgende die Start- und Stoppzeit eingetragen werden. So kann das Programmsekundengenau und automatisch den Betrieb aufnehmen und beenden. Diese Einstellungensind noch mit dem Ok-Button zu bestätigen, wodurch das Programm im gewählten Zeitraumaktiv wird.

Besonderheiten der verschiedenen Funktionen

Seite | 47

2.2.Betrachten der Ergebnisse der ObservationNach oder auch während des aktiven Betriebs kann über den Button „Show Old Results“ derprimären Benutzeroberfläche (siehe Kap. 1.1) die Datenbank angesteuert werden, um dieBilder des aktuellen Verfahrens anzuzeigen.

Hier kann mittels zwei angezeigten Kalendarien der Überwachungszeitraum, für den dieErgebnisse der KinectSpy Applikation angezeigt werden sollen, festgelegt werden. In derAnzeige zur linken Seite wird der Beginn gewählt, zur rechten findet der Benutzer dieAuswahl zum Ende der interessanten und auszugebenden Zeitspanne (Abb. 7).

Abbildung 24 - Auswahl der interessanten Zeitspanne in der Datenbank zur Ausgabe

Der eingegebene Zeitraum legt nun die entsprechenden Bilder der Überwachung fest undselektiert diese in der Datenbank zur Ausgabe im Hauptfenster unter „Results ofObservation“ mit dem dazugehörigen Zeitstempel. So kann der Nutzer auf vergangeneÜberwachungsdaten beziehungs-weise –ergebnisse zugreifen und diese betrachten sowieanalysieren.

Fehlerbehandlung

Seite | 48

3. FehlerbehandlungDa das System nicht vor Fehlbedienung oder fehlerhafte Datenübertragung gefeit ist, wirdein entsprechender Ablauf nach Auftreten eines Errors, ein Exception-Handling, eingeführt.

Die nachfolgenden Szenarien demonstrieren die elementaren Defizite der Systembedienungund des Daten-Inputs.

3.1.Verbindungsfehler durch nicht angeschlossenes SensorsystemNach Start des Programms und einem nicht angeschlossenem Kamerasystem tritt dieserError auf, der den Benutzer darüber informiert, dass aufgrund fehlender Datenübertragungvon der Kinect© zu dem Rechner ein Timeout ausgelöst wurde. Demnach sollte dieVerbindung des Sensorsystems über einen entsprechenden USB-Port des Rechners überprüftbeziehungsweise sichergestellt werden. Anschließend folgt die Aufforderung, die Applikationneu zu starten. Dies initialisiert das System und den Datentransfer neu, wodurch der Fehlerbehoben sein sollte.

Abbildung 25 - Error zu nicht angeschlossenem Kamerasystem

Die komplette Fehlermeldung eines nicht angeschlossenen Kamerasystems zumProgrammstart und den damit verbundenen Handlungsempfehlungen ist in Abbildung 8dargestellt.

Zudem kann es durch eine nicht angeschlossene Kamera dazu kommen, dass eine weitereFehlermeldung ausgeben wird. Diese lautet „Can’t create any node of the requested type!”und resultiert aus dem fehlerhaften Versuch des Verbindungsaufbaus zur Kinect©. Hierbeikann der Verbindungsknoten „node“ nicht geschaffen oder angesprochen werden.

Die Verifizierung eines korrekt angeschlossenen Kamerasystems und ein erneuterProgrammstart schaffen hier – wie bereits oben erwähnt – Abhilfe.

Fehlerbehandlung

Seite | 49

3.2.Diskonnektion während der Laufzeit der ApplikationEin weiterer möglicher Error ist die Verbindungsunterbrechung beziehungsweise derVerbindungsabriss durch absichtlich oder unabsichtlich herbeigeführtes, manuellesEntfernen des Kinect© Kamerasystems vom Rechner. Dabei wird folgende Fehlermeldungausgegeben (Abb. 9).

Abbildung 26 - Fehlermeldung bei Verbindungsabbruch

Der Benutzer wird hierdurch informiert, dass es einen Fehler hinsichtlich der Verbindung vonSensorsystem und Rechner gegeben hat und dazu aufgefordert, die Verbindung zuüberprüfen sowie das Programm zu beenden und neu zu starten.

Weitere Anmerkungen

Seite | 50

4. Weitere Anmerkungen

5. Impressum

Dieses Programm entstand im Rahmen einer Projektarbeit.

Betreuender Professor

Prof. Dr. Stefan Röttger

Bearbeitet von

Christian Meyer

Tobias Niemczyk

Technische Hochschule Georg-Simon-Ohm, Nürnberg

Verzeichnisstruktur der CD

Seite | 51

B. Verzeichnisstruktur der CD

Abbildung 27 - Verzeichnisstruktur der CD