Title: Bildverarbeitung mit Cuda
1Bildverarbeitung mit Cuda
- Erkennen von Strukturen mittels Hough
Transformation
2Inhalt
- 1. Theorie
- Was versteht man unter Bildverarbeitung
- Wie funktionieren die einzelnen Schritte
- 2. Praxis
- Sequenzielles Bespiel mit OpenCV
- Paralleler Algorithmus mit Cuda
3Bildverarbeitung
- Unter Bildverarbeitung versteht man die
Aufbereitung (Kalibrierung, Restauration,
Rekonstruktion) von Daten zur visuellen
Darstellung. - Im Gegensatz zur Bildbearbeitung, welche sich mit
der Manipulation von Bildern zur anschließenden
Darstellung beschäftigt.
4Bildverarbeitung
- Extraktion von Information aus den
Ursprungsdaten - z. B. Bewegungsbestimmung, Mustererkennung
(Kreise, Geraden), Erkennen von Gesichtern
5Bildverarbeitung
- Einsatzgebiete
- modernen Mikroskopie, medizinischen Diagnostik,
Astronomie, Maschinenbau, Umweltbeobachtung,
Spionage
6Modell der Bildverarbeitung
7Beispiel Erkennen von Kreisen
- Idee Finden von geometrischen Objekten (Kreisen)
in Bildern. - Methoden Filterung und Hough-Transformation
8Beispiel Erkennen von Kreisen
- Vorgehen
- 1. Umwandeln der Farbinformationen in Graustufen.
- cvCvtColor( frame, gray, CV_BGR2GRAY )
9Beispiel Erkennen von Kreisen
- Vorgehen
- 2. Anwenden eines Kantenfilters (z.B. Sobelfilter)
10Exkurs Filter
- Filter berechnen den Wert der einzelnen Pixel mit
Hilfe einer (meist quadratischen) Filtermatrix
(Filtermaske) aus den Werten der Nachbarpixel. - Die Randwerte sind unbestimmt.
11Kanten
- Eine Kante in einem Graustufenbild ist definiert
als Änderung des Grauwertes von einem Pixel zum
Nachbarpixel. - Da man diese Änderung des Wertes als Steigung der
Bildfunktion ansehen kann werden Kantenfilter
oft als erste Ableitung bezeichnet.
12Der Sobelfilter
Wir definieren das Originalbild als Matrix A, und
können so mit Hilfe der Sobeloperatoren Sx und Sy
die gefalteten Resultaten Gx und Gy berechnen.
mit vertikalem Sobel gefaltet
mit horizontalem Sobel gefaltet
13Der Sobelfilter
- Richtungsunabhängige Information durch
Kombination der Ergebnisse aus vertikalem und
horizontalem Sobel. - Die Bereiche der größten Intensität sind dort, wo
die Helligkeit des Originalbildes sich am
stärksten ändert und somit die größten Kanten
darstellt.
14Andere Kantenfilter
- Prewitt-Operator
- einfache Form des Sobelfilters
- Laplacefilter
- Bestimmt Nulldurchgänge, ist sehr rauschanfällig
15Beispiel Erkennen von Kreisen
- Vorgehen (Hough-Transformation)
- Das Verfahren wurde 1962 von Paul V. C. Hough
entwickelt - Dient zur Erkennung von Geraden, Kreisen oder
beliebigen anderen parametrisierbaren
geometrischen Figuren in einem Gradientenbild.
16Beispiel Erkennen von Kreisen
- Vorgehen
- 3.Der Hough Raum
- Der Hough Raum wird über alle Parameter des
gesuchten geometrischen Objektes aufgespannt. - Speziell für Kreise (drei Parameter, x,y und r)
wäre der Hough Raum dreidimensional, was die
Berechnung deutlich verkomplizieren würde.
17Beispiel Erkennen von Kreisen
- Vereinfachung
- Suche nach Kreisen mit festen Radien.
- Nur noch zwei freie Parameter (x,y).
- Hough Raum ist nur noch zweidimensional.
- Um jeden Kantenpunkt wird ein Kreis mir Radius r
gezeichnet. - Für jeden Punkt, der auf dem Kreis liegt wird der
Wert im Hough Raum inkrementiert.
18Beispiel Erkennen von Kreisen
- Vorgehen
- 4. Einzeichnen der gefundenen Kreise im
Originalbild. - Die Punkte mit dem größten Wert im Hough-Raum
repräsentieren die Kreismittelpunkte für Kreise
mit Radius r. - Hat man ein oder mehrere Maxima gefunden zeichnet
man einen oder eben mehrere Kreise mit Radius r
und dem Maximum als Kreismittelpunkt in das
Originalbild.
19VorgeheEinfaches Erkennen von Kreisen
in Graustufen umwandeln
Kantenfilterung mittels Sobel
Bild einlesen
Maxima (Kreismittel-punkte) suchen
Kreise in Originalbild einzeichnen
Hough-Parameterraum füllen
20Nachteile Hough-Transformation
- Es ist eine Art Brute-Force-Ansatz und damit
sehr rechenaufwändig - Der Speicherbedarf des klassischen Ansatzes ist
sehr groß - Es gibt Variationen der gezeigten Vorgehensweise,
die den Aufwand verringern.
21Praxis
22Open CV
- Open Source Computer Vision Library
- 2006 Von Intel entwickelte Bilbliothek für C, C
zur Bildverarbeitung. - Stellt viele Funktionen zur Verfügung, z.B.
- cvCaptureFromCAM()
- cvNamedWindow()
- cvHoughCircles()
23Sequenzieller Algorithmus
24Sequenzieller Algorithmus
- Auswertung
- Je nachdem wie viele Kreise gefunden wurden
schwankt die Geschwindigkeit zwischen ca 62 FPS
(keine Kreise) und 6 FPS (viele Kreise).
25Parallelisierung mit Cuda
- 1. Graustufen
- Graustufen werden weiterhin sequenziell mit
- cvCvtColor( frame, gray, CV_BGR2GRAY )
- erstellt.
26Parallelisierung mit Cuda
- 2. Sobelfilter
- Jeder Thread berechnet einen Pixel mit Hilfe des
Sobel-Operators. - Jeder Thread muss prüfen ob er sich am Rand des
Bildes befindet oder nicht. - Noch nicht optimal.
27Parallelisierung mit Cuda
- 3. Hough-Raum
- Jeder Thread berrechnet einen Kreis in den
Hough-Raum. - Jeder Thread muss prüfen ob sein Kreis in das
Bild passt oder nicht. - Die Rasterisierung der Kreise erfolgt mit Hilfe
der Methode von Horn realisiert.
28Die Methode von Horn
- wurde 1976 von Horn vorgestellt.
- Dient der Rasterisierung von Kreisen.
- Betrachtet einen ein Pixelbreiten Bereich um den
idealen Kreisbogen. - Vorteil Benutzt nur Addition und Subtraktion
29Parallelisierung mit Cuda
- 4. Zeichnen der Kreise
- Die gefundenen Kreise werden weiterhin
sequenziell mit cvCircle( frame, center, radius,
color , thickness, line_type, shift ) - gezeichnet.
30Parallelisierung mit Cuda
31CPU version with OpenCV
own CPU version
ideal GPU- version
GPU fast and easy
Capture Cam (OpenCV)
Capture Cam (OpenCV)
Capture Cam (OpenCV)
Capture Cam (OpenCV)
Sobel- Filter (shared memory)
Sobel- Filter
Sobel- Filter
Convert to grayscale image (OpenCV)
Fill Hough parameter space with circles (shared
memory)
Fill Hough parameter space with circles
Fill Hough parameter space with circles
Find spheres by Hough transform (OpenCV
cvHoughCircles)
find maxima
find maxima
find maxima
Display image and spheres (OpenCV)
Display image and spheres (OpenGL)
32Fazit
- Da es sich bei den durchgeführten Berechnungen
fast ausschließlich um Matrixberechnungen handelt
ist eine effiziente Parallelisierung möglich. - Jedoch ist der Performancegewinn stark von der
verwendeten Implementierung abhängig.
33Quellen
- www.wikipedia.de
- Jähne, Bernd Digitale Bildverarbeitung. 5.
überarb. und erw. Aufl.. Berlin Springer, 2002.
618 S. - Diplomarbeit von Christian Rathemacher
- http//www.nvidia.com/object/cuda_home.html
34Ende
- Vielen Dank für Ihre Aufmerksamkeit.
- Viel Spaß beim Halbfinalspiel!