Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

34
Altenhofen, Jung 1 Bildverarbeitun g mit Cuda Erkennen von Strukturen mittels Hough Transformation

Transcript of Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Page 1: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 1

Bildverarbeitung mit Cuda

Erkennen von Strukturen mittels Hough Transformation

Page 2: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 2

Inhalt:

1. Theorie Was versteht man unter Bildverarbeitung Wie funktionieren die einzelnen Schritte

2. PraxisSequenzielles Bespiel mit OpenCVParalleler Algorithmus mit Cuda

Page 3: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 3

Bildverarbeitung

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.

Page 4: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 4

Bildverarbeitung

Extraktion von Information aus den Ursprungsdaten:z. B. Bewegungsbestimmung,

Mustererkennung (Kreise, Geraden), Erkennen von Gesichtern…

Page 5: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 5

Bildverarbeitung

Einsatzgebiete:modernen Mikroskopie, medizinischen

Diagnostik, Astronomie, Maschinenbau, Umweltbeobachtung, Spionage

Page 6: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 6

Modell der Bildverarbeitung

Page 7: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 7

Beispiel: Erkennen von Kreisen

Idee: Finden von geometrischen Objekten (Kreisen) in Bildern.

Methoden: Filterung und Hough-Transformation

Page 8: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 8

Beispiel: Erkennen von Kreisen

Vorgehen:1. Umwandeln der Farbinformationen in

Graustufen. cvCvtColor( frame, gray, CV_BGR2GRAY );

Page 9: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 9

Beispiel: Erkennen von Kreisen

Vorgehen: 2. Anwenden eines Kantenfilters (z.B. Sobelfilter)

Page 10: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 10

Exkurs: Filter

Filter berechnen den Wert der einzelnen Pixel mit Hilfe einer (meist quadratischen) Filtermatrix (Filtermaske) aus den Werten der Nachbarpixel.

Die Randwerte sind unbestimmt.

Page 11: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 11

Kanten

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.

Page 12: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 12

Der SobelfilterWir 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

Page 13: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 13

Der 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.

Page 14: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 14

Andere Kantenfilter

Prewitt-Operator„einfache“ Form des Sobelfilters

LaplacefilterBestimmt Nulldurchgänge, ist sehr

„rauschanfällig“

Page 15: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 15

Beispiel: 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.

Page 16: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 16

Beispiel: 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.

Page 17: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 17

Beispiel: 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.

Page 18: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 18

Beispiel: 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.

Page 19: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 19

Vorgehe:Einfaches Erkennen von Kreisen

Bild einlesen in Graustufen umwandeln

Kantenfilterung mittels Sobel

Hough-Parameterraum

füllen

Maxima (Kreismittel-

punkte) suchen

Kreise in Originalbild einzeichnen

Page 20: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 20

Nachteile 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.

Page 21: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 21

Praxis

Page 22: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 22

Open 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()

Page 23: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 23

Sequenzieller Algorithmus

Programmbeispiel…

Page 24: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 24

Sequenzieller Algorithmus

Auswertung: Je nachdem wie viele Kreise gefunden

wurden schwankt die Geschwindigkeit zwischen ca 62 FPS (keine Kreise) und 6 FPS (viele Kreise).

Page 25: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 25

Parallelisierung mit Cuda

1. GraustufenGraustufen werden weiterhin sequenziell mit

cvCvtColor( frame, gray, CV_BGR2GRAY );erstellt.

Page 26: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 26

Parallelisierung mit Cuda

2. SobelfilterJeder 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.

Page 27: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 27

Parallelisierung mit Cuda

3. Hough-RaumJeder 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.

Page 28: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 28

Die Methode von Horn

wurde 1976 von Horn vorgestellt. Dient der Rasterisierung von Kreisen. Betrachtet einen ein Pixel

breiten Bereich um den idealen Kreisbogen.

Vorteil: Benutzt nur Addition und Subtraktion

Page 29: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 29

Parallelisierung mit Cuda

4. Zeichnen der KreiseDie gefundenen Kreise werden weiterhin

sequenziell mit cvCircle( frame, center, radius, color , thickness, line_type, shift ); gezeichnet.

Page 30: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 30

Parallelisierung mit Cuda

Programmcode…

Page 31: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 31

CPU version with OpenCV

own CPU version

ideal GPU- version

GPU – fast and easy

Convert to grayscale image

(OpenCV)

Find spheres by Hough transform

(OpenCV: cvHoughCircles)

Display image and spheres

(OpenCV)

Sobel- Filter

Fill Hough parameter space

with circles

find maxima

Sobel- Filter

Fill Hough parameter space

with circles

find maxima

Sobel- Filter

(shared memory)

Fill Hough parameter space

with circles (shared memory)

find maxima

Display image and spheres (OpenGL)

Capture Cam (OpenCV)

Capture Cam (OpenCV)

Capture Cam (OpenCV)

Capture Cam (OpenCV)

Page 32: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 32

Fazit

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.

Page 33: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 33

Quellen

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

Page 34: Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.

Altenhofen, Jung 34

Ende

Vielen Dank für Ihre Aufmerksamkeit.Viel Spaß beim Halbfinalspiel!