Algorithmenentwicklung mit MATLAB für 2D und 3D Bildanalyse-Systeme



Ähnliche Dokumente
Seminar Seminarname SS 2003

Anwendung der Aspektorientierung : Security

Projektarbeit/SHK-Tätigkeit: Entwicklung graphischer Visualisierungskomponenten

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Angewandte Signalverarbeitung

Engineering & EXPERT ADVICE

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

newslab Martin Koper Projektleitung Newsfactory GmbH Sponsoren Eine Veranstaltung der

Vorkurs C++ Programmierung

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Einführung in PHP. (mit Aufgaben)

Erfassung von Umgebungskontext und Kontextmanagement

Industrie 4.0 Entwicklung und Stand der Diskussion

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Thesaurusvisualisierung mit ICE-Map und SEMTINEL

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel

Grundlagen der Künstlichen Intelligenz

Symfony2 Framework Ein kleiner Überblick. Marc Aschmann

Die Software für Visualisierung und Analyse von Strukturinformationen aus EDM- und PDM-Systemen.

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Microsoft Visual C++ 6.0

Executive Summary BIG DATA Future Chancen und Herausforderungen für die deutsche Industrie

Java Kurs für Anfänger Einheit 5 Methoden

Non-Linear! Performance Pricing! (NLPP)!! Die smarte Kostenmanagement Lösung!

SERVICE SUCHE ZUR UNTERSTÜTZUNG

UA03 Interaktive Entscheidungsbäume

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Mikrocontroller Grundlagen. Markus Koch April 2011

How-to: Webserver NAT. Securepoint Security System Version 2007nx

PPC und Data Mining. Seminar aus Informatik LV Michael Brugger. Fachbereich der Angewandten Informatik Universität Salzburg. 28.

LOAD BALANCING LASTVERTEILUNG BEI INTERNETANWENDUNGEN

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Installation & Konfiguration AddOn CopyObjects

1 Einleitung. 1.1 Motivation und Zielsetzung der Untersuchung

Rapide An Event-Based Architecture Definition Language

Projekt: RFC to FTP. Szenario der serviceorientierten Anwendungsintegration. Sebastian Altendorf Dirk Brillski David Gebhardt

Abacus Formula Compiler (AFC)

Sie erhalten in diesem Dokument einige Tipps, wie Sie die Anzeigegeschwindigkeit für Ihre Eingabe optimieren. Folgende Themen finden Sie

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Praktikum Einführung

Java: Vererbung. Teil 3: super()

Der Begriff Cloud. Eine Spurensuche. Patric Hafner geops

Von Windows-Forms zu WPF mit Expression Blend? Thomas Müller conplement AG Nürnberg

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Java Entwicklung für Embedded Devices Best & Worst Practices!

Erhebung von Anforderungen an den Einsatz von ebusiness-standards in kleinen und mittleren Unternehmen

UBIQON STRATEGY ROUND TABLE 2015


Tagesprogramm

Einführung in die Programmierung

Was meinen die Leute eigentlich mit: Grexit?

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

AJAX Implementierung mit Joomla!

Übung - Konfigurieren einer Windows-XP-Firewall

Workflow Systeme mit der Windows Workflow Foundation

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Gemeinsam Software-Lösungen finden. Vom Prototyping bis zur Serienreife.

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

Projekte für reale Herausforderungen Projektarbeit: Einleitung und Gliederung. Projekte für reale Herausforderungen

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Informatik-Sommercamp Mastermind mit dem Android SDK

Fragebogen zur Imagebroschüre

Projektpraktikum: Bildauswertung und fusion Wintersemester 2011 / 2012

Die Zukunft gemeinsam gestalten

TIMI: Technische Informatik für Medieninformatiker

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Proseminar Technische Informatik A survey of virtualization technologies

Übungen Programmieren 1 Felix Rohrer. Übungen

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Daten haben wir reichlich! The unbelievable Machine Company 1

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

SEMINAR Modifikation für die Nutzung des Community Builders

Die Wahlpflichtfächer. Operations Research Statistik/Ökonometrie. Optimierung linearer Modelle Statistische Analyseverfahren

Virtuelle Maschinen Konzept von VMWare

Konfigurationsanleitung

Die R-Homepage R herunterladen

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

Deployment Deployment Seite 1 / 25

Testen mit JUnit. Motivation

Häufig gestellte Fragen zur Initiative Sportverein 2020

Algorithmen mit Python

Kompetenz. rund um. Ihren. Entwicklungsprozess. Über uns. Technische Software. Modellbasierter Test. Prüfplätze. Automatisierung.

Industrie 4.0 in Deutschland

Fuzzy Logik und Genetische Algorithmen für adaptive Prozesskontrolle

Entwicklungswerkzeuge

DLLs (dynamic loaded libraries) mit MingW erstellen

Durchführung: Carole Maleh cama Institut für Kommunikationsentwicklung

MCRServlet Table of contents

Softwareanforderungsanalyse

3D Dentalscanner. AIT Austrian Institute of Technology Safety & Security Department. Manfred Gruber. Head of Business Unit

Ihre PLM-Prozessexperten für Entwicklung und Konstruktion

SINT Rest App Documentation

Transkript:

Algorithmenentwicklung mit MATLAB für 2D und 3D Bildanalyse-Systeme Csaba Beleznai Csaba Beleznai Senior Scientist Video- and Safety Technology Safety & Security Department AIT Austrian Institute of Technology GmbH Vienna, Austria Co-Autoren: Michael Rauter, Christian Zinner, Andreas Zweng, Andreas Zoufal, Julia Simon, Daniel Steininger, Markus Hofstätter und Andreas Kriechbaum Research pages: http://ivs.ait.ac.at

Inhalte Kurze Vorstellung - Austrian Institute of Technology Motivation - Entwicklung komplexer HW/SW Systeme Konzepte - Zusammenspiel von Matlab und C/C++ Matlab C++ und C++ Matlab Anwendungsfall: Personenflusserfassung mittels Bildanalyse Verfolgung mittels Optischem Fluss Warteschlangenanalyse (Länge, Wartezeit) 2D Zusammenfassung 3D

Einleitung Motivation Herausforderungen im Entwicklungsprozess: Komplexität Bildanalyse-Systeme Nichtlinearer Ablauf der Suche nach einer Lösung RESEARCH DEVELOPMENT Alg. A MATLAB C++ Alg. B branch & bound research methodology Alg. C IDEE ANWENDUNG PRODUKT

Einleitung Unser Entwicklungskonzept Fortgeschrittene Methoden Standard Methoden 3D Optical Flow Automatic Calibration Soft Biometrics Person Detection and Tracking Person Detection Advanced Background Model Moving Objects Blob based processing Innovations CPU GPU Embedded Products MATLAB C++ 4

Zusammenspiel von Matlab und C/C++ Unser Entwicklungskonzept Methode, Prototyp mex rechenintensive Methoden Verifikation Produkt MATLAB Matlab engine shared library Portierung Datengenerator C/C++ MATLAB: Breites Spektrum von algorithmischen Bibliotheken, Für Bildanalyse sehr gut geeignet, Visualisierung, Debugging, Kurze Entwicklungszeiten Methode, Prototyp, Demonstrator C/C++ Echtzeitfähigkeit 5

Zusammenspiel von Matlab und C/C++ Beschleunigtes Prototyping / Verifikation MATLAB C/C++ berechnungsintensiver Algorithmus oder Algorithmusteil 1. C/C++ Umsetzung beschleunigen und rückführen über ein mex-interface algorithmische Kette 2. Portierung von Matlab-Algorithmus unter Zuhilfenahme eines mex-interfaces zur Verifikation der Implementierungen

Zusammenspiel von Matlab und C/C++ Schnelle Integration neuer Algorithmen (1) MATLAB C/C++ neue algorithmische Methode Matlab Engine algorithmische Kette

Zusammenspiel von Matlab und C/C++ Schnelle Integration neuer Algorithmen (2) MATLAB C/C++ Eine oder mehrere neue algorithmische Methoden Matlab Compiler Methoden als shared lib algorithmische Kette

Zusammenspiel von Matlab und C/C++ Matlab Engine als Unterstützung für C/C++ Debugging MATLAB C/C++ Matlab Engine Interaktive Matlab Session Abfrage / Visualisierung von Variablen komplexe Variablen algorithmische Kette

Was ist Bildanalyse in unserem Kontext? Bildanalyse im Bereich der digitalen Videoüberwachung Algorithmen: Objektdetektion und Klassifikation Zählen, Dichte, Overcrowding Abgestellte Objekte Eindringlinge Verfolgung Vereinzelte Objekte Flußanalyse Typisches Überwachungsszenario: Erkennung von Aktivitäten Wer Personen, Fahrzeuge, Objekte, Wo befinden sie sich? Nahbereich (Artikulation) Welche Aktivität? Entfernung (Bewegungspfad) Wann passiert es?

Zusammenspiel von Matlab und C/C++ Matlab C++: Matlab-Engine Offizielles Beispiel: engdemo.c MATLAB Funktion Beispiel für eine Berechnung: function [DescrTempl] = ComputeDescr(iminTempl, Params) Eingabe: Bildausschnitt + Parameter Ausgabe: MATLAB arbeitet im Hintergrund als eine mächtige und programmierbare mathematische Algorithmenbibliothek #include "engine.h" // including the Matlab engine Engine *ep; // instancing the Matlab engine //======== 1. Initializing the Matlab engine ============================== if (!(ep = engopen("\0"))) return STATUS_MATLAB_INIT_ERROR; // otherwise return error code Signatur (z.b. Histogramm) engputvariable(ep, "Params", mxparams); engputvariable(ep, "imintempl", mximt); // Place variable Params into the MATLAB workspace // Inserting image data into Matlab // Evaluating the expression in Matlab engevalstring(ep, "DescrTempl = ComputeDescr(iminTempl, Params);"); // Deallocating Matlab-specific C-variables mxdestroyarray(mxparams); mxparams = NULL; mxdestroyarray(mximt); mximt = NULL; // closing the Matlab engine engclose(ep);

Zusammenspiel von Matlab und C/C++ Matlab C++: shared library Shared Library: Funktionssammlung die in einer C/C++ Anwendung während der Laufzeit dynamisch geladen wird. MATLAB code MATLAB compiler shared library Compiler Aufruf: mcc -W lib:matchlib -T link:lib ComputeDescr.m #include "matchlib.h" // Compiled interface of Matlab code //============= 1. MCR and library initialization functions ======== if(!mclinitializeapplication(null, 0) ) { fprintf(stderr, "Could not initialize the application.\n"); exit(1); } if (!matchlibinitialize()) { fprintf(stderr, "Could not initialize the library.\n"); exit(1); } // compiled function call mlfcomputedescr(1, &mxdescrt, mximt, mxparams);// first argument is the number of outputs matchlibterminate(); mclterminateapplication(); // library termination // application-level resource termination

Anwendungsfall Personenflussanalyse in 2D Public dataset: Grand Central Station, NYC: 720x480 pixels, Rechengeschwindigkeit 35 fps (C++)

Anwendungsfall Warteschlangenanalyse: Schätzung der Länge und Wartezeit Was ist die Wartezeit bei einer Warteschlange? Stereokamera Benötigte Zeit für die hinterste Person von A nach B zu gelangen. A B Checkpoint Wartezeit Warum ist diese Problemstellung relevant? Beispiel: Automatische Erfassung von Wartezeiten (App) Kundenzufriedenheit Beispiel: Infrastrukturbetreiber load balancing

Anwendungsfall Analyse von Warteschlangen (Länge, Dynamik) Geradlinig Rechengeschwindigkeit: 6 fps inkl. Stereo-Tiefenberechnung (C++) 15

Anwendungsfall Analyse von Warteschlangen (Länge, Dynamik) Gebogen Rechengeschwindigkeit: 6 fps inkl. Stereo-Tiefenberechnung (C++) 16

Anwendungsfall: Warteschlangenanalyse Visuelle Analyse von Warteschlangen Herausforderndes Problem Wartezeit = Länge Geschwindigkeit 1. Wie verläuft die Warteschlange? 2. Wie groß ist die Fortschrittsgeschwindigkeit? Form Kein vordefinierbarer Verlauf (Situationsabhängig und zeitlich variabel) Bewegung keine reine Translation Propagierendes Stop-and-Go Verhalten Entfernung (Kopplung mit Bewegungspfad) DEFINITION: Zielorientierte Bewegung von Personen mit räumlicher und zeitlicher Kohärenz

Anwendungsfall: Warteschlangenanalyse MATLAB Simulationstool Daten mit großer Variabilität Einige Konfigurationen: Zwei Simulationsbeispiele in Matlab: 18

Anwendungsfall: Warteschlangenanalyse Adaptive Schätzung der räumlichen Konfiguration Geschätzte Warteschlangenkonfiguration (top-view) Detektionsergebnisse Linke Bildhälfte ist aus datenschutzrechtlichen Gründen ausgeblendet

Zusammenfassung MATLAB unterstützt die Entwicklung komplexer Algorithmik Entwicklung von Algorithmen gleicher Komplexität sind in C/C++ mit hohem Aufwand verbunden Ein technisches Problem hat oft mehrere Lösungswege: Schnelle Erprobung mehrerer Alternativen durch Integration in eine bestehende Algorithmenkette. Unerwähnte nützliche Aspekte Befehl pcode Schutz eigener Matlabskripten Versionsverwaltung (Git, SVN) 2014b User Interfaces mit Tab-Panels 2014b MatlabCentral und FileExchange MATLAB C++ 20

Vielen Dank! CSABA BELEZNAI Senior Scientist Digital Safety & Security Department Video- and Security Technology AIT Austrian Institute of Technology GmbH Donau-City-Straße 1 1220 Vienna Austria T +43(0) 664 825 1257 F +43(0) 50550-4170 csaba.beleznai@ait.ac.at http://www.ait.ac.at Research pages: http://ivs.ait.ac.at http://www.d-sens.eu/