22
Kameraanbindung mit OpenCV Projektpraktikum AR/VR Raphael Baumeister 06.10.2010

Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung

mit OpenCV

Projektpraktikum AR/VR

Raphael Baumeister

06.10.2010

Page 2: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Einleitung & Allgemeines

Open Source Bibliothek

Basierend auf Image Processing Library

Programmiersprache C++

Hohe Geschwindigkeit

Lizenzfrei für akademischen und kommerziellen

Einsatz

Breites Spektrum der Computervision (über 500

Funktionen)

06.10.20102 Kameraanbindung mit OpenCV

Page 3: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Einleitung & Allgemeines

Verwendet von: Microsoft, Google …

Verwendet für:

Bildverarbeitung(Filterung, Segmentierung,…)

Mensch-Maschine Interaktion

Objekt-Identifikation/-Verfolgung

Kontur-Verarbeitung

Ermittlung von Struktur aus Bewegung

Maschinelles Sehen von (mobilen) Robotern

06.10.20103 Kameraanbindung mit OpenCV

Page 4: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kamera

Point Grey Firefly MV

Sensor: „global shutter“

Auflösung: 752x480 Pixel

Framerate: 61 FPS

Transferrate: 400 Mb/s

06.10.20104 Kameraanbindung mit OpenCV

Page 5: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Mögliche Anwendungen von OpenCV

Bewegungsanalyse:

Background Subtraction

Motion Templates

Geometrische Figuren erkennen:

Feature Detection

Umrisse analysieren:

Borgefoss

Strukturen analysieren:

Contour Processing, Geometry

06.10.20105 Kameraanbindung mit OpenCV

Page 6: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Mögliche Anwendungen von OpenCV

Direktes Lineares Transformationsverfahren

Kamerakalibrierung

Tracking von Gesichtern/Personen:

Camshift

Statistische Methoden

Image Statistics

Morphing-Algorithmen

06.10.20106 Kameraanbindung mit OpenCV

Page 7: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Aufbau der OpenCV Bibliothek

Anwendungsbeispiele, Demos etc.

highguieinfache,

plattformunabhängige

GUI-Funktionen

mlSammlung

(statistischer) Klassifikationsverfahren

cvGrundfunktionen

aus Bildverarbeitung

und Computervision

cvauxspezielle (z.T.

experimentelle) CV-

Funktionen

cxcoreBasisstrukturen und Basisoperationen

06.10.20107 Kameraanbindung mit OpenCV

Page 8: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

Der Mensch erkennt Objekte schnell

Computer „sieht“ nur Zahlen

2D Bilder einer 3D Welt

schwierig 3D Abbildung zu erstellen

„projective transform“ :

Weltkoordinaten Bildkoordinaten

06.10.20108 Kameraanbindung mit OpenCV

Page 9: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

Homogene 3D Weltkoordinaten [X,Y,Z,1]

extrinsische Parameter

Homogene 2D Projektionskoordinaten [x´,y´,1]

intrinsische Parameter

2D Pixelkoordinaten [x,y]

06.10.20109 Kameraanbindung mit OpenCV

Page 10: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

Raumposition messen

Passpunkte müssen bekannt sein (mind. 4)

Position im Bild messen

Neuermittlung bei Änderungen

OpenCV benutzt Schachbrettmuster

Ecken sind leicht zu finden

und zu verfolgen

06.10.201010 Kameraanbindung mit OpenCV

Page 11: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

06.10.201011 Kameraanbindung mit OpenCV

Videolink:

http://www.youtube.com/watch?v=DrXIQfQHFv

0

Page 12: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

Mehr Licht führt zur schnelleren Entwicklung

Störungen: Licht, Reflektionen,

Standpunktänderungen etc.

Lichtstrahl: Objekt Linse Bildwandler

06.10.201012 Kameraanbindung mit OpenCV

Page 13: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

Krümmung Fischaugeneffekt (radial distortion)

Linse nicht parallel tangential verzerrtes Bild

(tangential distortion)

06.10.201013 Kameraanbindung mit OpenCV

Page 14: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

Radiale Verzerrung:

Skaliert den Abstand des

Bildpunktes zum Fokus, dem

Zentrum der Verzerrung

Tangentiale Verzerrung:

Entsteht durch Dezentralisierung

der Linsen

Im Vergleich sehr gering

06.10.201014 Kameraanbindung mit OpenCV

Page 15: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Wichtige Methoden

cvCreateCameraCapture() (Kamera ansprechen)

cvCalibrateCamera2() (Ausrichtung auf eine

bekannte Struktur / identifizierbare Punkte)

cvSobel(), cvCanny()

cvPreCornerDetect(), cvFindContours()

(Konturen finden)

cvUpdateMotionHistory() (Tracking)

cvGoodFeaturesToTrack() (starke Eckpunkte im

Bild finden)

06.10.201015 Kameraanbindung mit OpenCV

Page 16: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Codebeispiel

#include <cv.h>

#include <highgui.h>

IplImage* m_img_3 = 0; // Header

int main()

{

m_img_3 = cvCreateImage(m_sz, IPL_DEPTH_8U,1);

iplColorToGray(m_img,m_img_2); // zu Graubild umwandeln

cvvNamedWindow("Fenster2", 1); // Fenster für Graubild

cvvShowImage ("Fenster2", m_img_2); // Graubild

cvCanny ( m_img_2, m_img_3, 0, 50, 5); // Canny-Operator

// lowThresh = 0

// highThresh = 50

// apertureSize = 5

cvvNamedWindow ( "Fenster3", 1);

cvvShowImage ( "Fenster3", m_img_3); // Bild anzeigen

}

Kantendetektion mit Canny-Operator

06.10.201016 Kameraanbindung mit OpenCV

Page 17: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Konturentest mit OpenCV

06.10.201017 Kameraanbindung mit OpenCV

Videolink:

http://www.youtube.com/watch?v=J2w_6wpOyRo

Page 18: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Vielen Dank für Eure Aufmerksamkeit!

06.10.201018 Kameraanbindung mit OpenCV

Page 19: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Tutorials & Beispiele

Offizielle Webseite ist:

http://www.intel.com/research/mrl/research/opencv/

Newsgroup: http://groups.yahoo.com/group/OpenCV

Download:OpenCV http://sourceforge.net/projects/opencvlibrary

Kamerakalibrierung:

http://www.vision.caltech.edu/bouguetj/calib_doc/

Webcam abfragen

http://www.online-tutorials.net/bildbearbeitung/webcam-mit-opencv-abfragen/sourcecodes-t-142-327.html

Prüfungsarbeit: „Grobbestimmung der Blickrichtung für eine Augenmaus als Benutzerinterface“ von Martin Schnurrenberger [Vorallem Projektablauf interessant]

06.10.201019 Kameraanbindung mit OpenCV

Page 20: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Quellen

Prüfungsarbeit: „Grobbestimmung der Blickrichtung für eine Augenmaus als Benutzerinterface“ von Martin Schnurrenberger

„Kamera Kalibrierung“ Hauptseminar Augmented Reality, TUM-Lehrstuhl Klinker / Navab

„Hand Gesture Recognition in Natural State Based on Rotation Invarlance and OpenCV Realization“, von Baoyun Zhang, Ruwei Yun und Huaqing Qui

Broschüre Fachseminar des Bachelorstudiengangs Medieninformatik bei Prof. Dr. Ulrich Schwanecke, Hochschule RheinMain Wiesbaden

Seminararbeit „Intel OpenCV“ von Gunther Sudra, Universität Karlsruhe

Learning OpenCV, Computer Vision with the OpenCV Library, Gary Bradski & Adrian Kaehler, O´Reilly Verlag 2008

06.10.201020 Kameraanbindung mit OpenCV

Page 21: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Quellen

Kamerabild:

http://www.ptgrey.com/products/fireflymv

Codebeispiel:

Seminararbeit „Intel OpenCV“ von Gunther Sudra, Universität Karlsruhe

Verzerrungsbild:http://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Geometrical_Aberration_de.svg/440px-Geometrical_Aberration_de.svg.png

Grafik Linse & Abbild:

http://www.puchner.org/Fotografie/technik/physik/abbildung.htm

Video zur Konturfindung: http://www.youtube.com/watch?v=J2w_6wpOyRo

Videos zur Kalibrierung:http://www.youtube.com/watch?v=bV-jAnQ-tvwhttp://www.youtube.com/watch?v=DrXIQfQHFv0

06.10.201021 Kameraanbindung mit OpenCV

Page 22: Kameraanbindung mit OpenCV - userpages · Einleitung & Allgemeines Open Source Bibliothek Basierend auf Image Processing Library Programmiersprache C++ Hohe Geschwindigkeit Lizenzfrei

Kameraanbindung & Kalibrierung

06.10.201022 Kameraanbindung mit OpenCV