== Vorlesung "Echtzeitbildverarbeitung" (Sommer 2013) ==
=== Real-Time Computer Vision ===
=== News ===
* Wenn nicht Noteneintrag in Pabo, dann zur Prüfung vorausgefülltes Scheinformular (Vorlage im svn) mitbringen
* zur Übung am 25.6.2013 bitte Rechner mit bringen und ebvtutorial12 ausgecheckt und kompiliert haben
* Fachgespräche und mündliche Prüfungen: 17.7.2013 und 6.9.2013
* Abgabe des letzten Übungszettels am 11.7.2013 in den Ferien
* Vorlesung am 4.6 fällt aus, statt dessen zentrales Programm am Tag der Lehre
* Vorlesung am 30.4.2013 startet um 12:45 und endet um 14:00
* ab jetzt auch Dienstags in MZH1470
* zur ersten Übung bitte openCV installieren, Beispielprogramm peas aus dem svn kompilieren und starten und Notebook mitbringen
=== Veranstalter ===
Prof. Dr. Udo Frese
Sommersemester 2013
'''Veranstaltungskennziffer: 03-MB-709.03 Kategorie: Masterbasis (ECTS: 6, TMG: 2)<
>
Ü 2 SWS : Di von 12:15 - 13:45 MZH 1470<
>
V 2 SWS : Do von 12:15 - 13:45 MZH 1470'''
Voraussetzung (inhaltlich): Bildverarbeitung I. Um erfolgreich an Echtzeitbildverarbeitung teilzunehmen benötigt man nicht sämtliche Details aus Bildverarbeitung I, wohl aber ein Grundverständnis für wie Bilder in den Rechner kommen und wie Perspektive funktioniert. Die Darstellung dieser Grundlagen in EBV ist abgeschlossen aber ein bisschen gestrafft. Im Zweifelsfall bitte nachfragen.
=== Thema ===
[[ attachment:ebvfrese11results.mpg | {{attachment:ebvfrese11results.jpg |alt "Flugbahnvorhersage eines Balles mit Partikelfilter"|align="right"}} ]]
Bildverarbeitung (engl. computer vision) ist die automatische Extraktion von Informationen aus Bildern. In den meisten Fällen ist das Ziel abgebildete Objekte und deren (räumliche) Lage zu bestimmen. Industrielle Anwendungen sind Qualitätskontrolle ("ist eine Platine vollständig bestückt", "stimmen die Maße eines Bauteils"), Montage ("Lage eines Objektes zum Greifen oder Fügen") aber auch Logistik ("Lesen von Aufklebern", "Greifen von Paketen") und Sicherheit ("Personenerkennung"). In der Forschung ist ein breites Anwendungsfeld die Servicerobotik, wo Roboter zu greifende Gegenstände, Hindernisse oder ihre eigene Position im Gebäude erkennen müssen. Ein anderes Beispiel sind "Sportrobotik"-Anwendungen, z.B. der Roboterfussball Robo``Cup oder das Fangen zugeworfener Bälle.
Viele Anwendungen sind deshalb schwierig, weil das Ergebnis in "Echtzeit", d.h. während der Vorgang abläuft vorliegen muss. Diese Veranstaltung beschäftigt sich mit Techniken für Bildverarbeitung bei denen Rechenzeit eine schwierige Beschränkung ist.
Ziel ist,
* ausgewählte Methoden zur Bildverarbeitung in Echtzeit zu beherrschen
* in einer Anwendung potentielle Probleme und Lösungen zu erkennen
* einschätzen zu können, welche Methode sich für welche Anwendung eignet
Die letzten beiden Punkte werden einen großen Raum einnehmen. Wir werden in Vorlesung und Übung ausführlich Anwendungen, Lösungsansätze ("wie könnte man es machen") und potentielle Schwierigkeiten ("was wird dabei schief gehen") diskutieren.
=== Teilnahme ===
* Informatik Diplom (Hauptstudium, praktische Informatik)
* Informatik Master (Masterbasis), Bachelor (freie Wahl)
* Digitale Medien Bachelor, Master (frei Wahl)
* Systems Engineering Bachelor/Master
* Studierende aller Fachrichtungen, die praktische Informatikscheine akzeptieren.
=== Profil ===
Die Anteile in der Veranstaltung auf einer Skala von * bis *****.
|| Programmieren || Algorithmen || Anwendung || Mathematik || Softwaretechnik || Gesellschaftlicher Kontext ||
|| ***** || ***** || **** || ** || * || * ||
=== Inhalt ===
||04.04. || Einführung; Industrielle Anwendungen; Forschungsanwendungen || || ||
||11.04. || Weg des Bildes in den Rechner; Industrieller Ansatz: Schwellwert, Regionenbildung || Übung 1 || ||
||18.04. || Differenzbilder; Trägheitsmomente; Histogramm; Automatischer Schwellwert || || ||
||25.04. || Faltungsoperationen; Kanten- und Liniendetektion; C/C++ Optimierungen || Übung 2 || ||
||02.05. || Multi-core Parallelisierung; SIMD Parallelisierung || || ||
||'''07.05.''' || Kreis Hough Transformation || Übung 3 || ||
||16.05. || Linien Hough Transformation; Farbsegmentierung || || ||
||21.05. || Anwendung: RoboCup; Rekapitulation 2D Bildverarbeitung; || Übung 4 || ||
||28.05. || Koordinaten und Transformationen; Kameragleichung in 3D; || || ||
||'''06.06.!''' || Geometrische Rekonstruktion, RANSAC || Übung 5|| ||
||11.06. || Quadratische Ausgleichsrechnung, Zustandsschätzer || || ||
||18.06. || Partikelfilter, Mess- und Dynamikmodelle || Übung 6 (11.7.13) || ||
||25.06. || Partikelfilter: Initialisierung, Resampling, Herleitung || || ||
||02.07. || Anwendungen von Partikel Filtern, Ausblick: Kognitive Bildverarbeitung ||- || ||
[[https://svn-agbkb.informatik.uni-bremen.de/ufrese/teaching/ebv/slides/ebvpublic|Folien, Beispiele und Übungsblätter im svn-repository]]
=== Übungen ===
Übungszettel werden im zweiwöchigen Rhythmus in Gruppen abgegeben und bestehen jeweils aus einer Implementierungsaufgabe in C++ (10 Punkte), einer Konzeptaufgabe (Lösungsansatz für eine Anwendung skizzieren, 4 Punkte) und einer Minifrage (1 Bonuspunkt). Die Programmiersprache ist C++, weil "Echtzeit" im Fokus steht und C++ erlaubt effizientere Programme zu schreiben. Es ist aber keineswegs der ganze Sprachumfang von C++ nötig, vielmehr programmieren wir Algorithmen in einem vorgegebenen Rahmen mit den grundlegenden Sprachkonstrukten. Wer Erfahrung in Java hat sollte auch keine Probleme mit dem Umstieg haben. Wichtiger ist schon die Fähigkeit, auch in kleinen, aber schwierigen Programmteilen eigene Fehler zu finden.
Es gibt 6 Übungszettel. Nach zwei allein stehenden Aufgaben wollen wir uns in den Zetteln 3 bis 6 einem etwas umfassenderen Anwendungsbeispiel widmen. Wir wollen mit Bildverarbeitung die Flugbahn eines geworfenen Balles verfolgen und den Auftreffpunkt auf dem Boden vorhersagen. Das oben stehende Video illustriert, wie das Ergebnis aussehen soll. Zuerst erkennen wir den Ball als Kreis (rot) im Bild, dann die Linien der Bodenfliesen (rote Kreuze am Boden). Danach kalibrieren wir die Kamera über die Linien, d.h. wir bestimmen, wo sie sich befinden und in welche Richtung sie schaut (erster Teil des Videos). Als letztes verfolgen und wir den Ball (rote Kreuze) und sagen den Auftreffpunkt (blaue Kreuze) vorher.
Abgabe in Gruppen zu 2-3 Studenten per svn. Abzugeben ist der Text der Aufgabenbearbeitung als .pdf incl. dem kompilierbaren Source Code. Bitte Namen und email aller Gruppenmitglieder angeben.
=== OpenCV ===
Die Implementierungen werden mit der freien OpenCV Bibliothek wahlweise unter LINUX, Windows oder Mac durchgeführt. Die [[http://opencv.org |OpenCV Bildverarbeitungsbibliothek]] kann direkt von Source``Forge heruntergeladen und auf dem eigenen Rechner installiert werden ([[http://docs.opencv.org/doc/tutorials/tutorials.html | Informationen zur Installation]]).
=== Prüfungen ===
Zusammenfassung des Prüfungsstoffes bei den Folien im svn
Wahlweise Fachgespräch oder Mündliche Prüfung.
Fachgespräch: Schriftliche Abgabe von Übungsaufgaben (Programmierung:6*10, Anwendung:5*4, Summe: 80 zzgl. Bonus:6*1) in Gruppen und kurzes Fachgespräch zur Beurteilung der individuellen Leistungen in einer Gruppe. Note aufgrund der Punktzahl und des Fachgespräch Ergebnisses gemäß folgender Tabelle (>=):
||Note ||1.0 ||1.3 ||1.7 ||2.0 ||2.3 ||2.7 ||3.0 ||3.3 ||3.7 ||4.0 ||
||Punkte>= ||76 ||72 ||68 ||64 ||60 ||56 ||52 ||48 ||44 ||40 ||
Mündliche Prüfung: Einzelprüfung von 20-30min. Übungsaufgaben gehen nicht in die Note ein. Prüfung beginnt mit einer kleinen Anwendungsaufgabe (ca. 3min Überlegungszeit).