Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.
-
Upload
felix-vogt -
Category
Documents
-
view
220 -
download
1
Transcript of Altenhofen, Jung 1 Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation.
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
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.
Altenhofen, Jung 4
Bildverarbeitung
Extraktion von Information aus den Ursprungsdaten:z. B. Bewegungsbestimmung,
Mustererkennung (Kreise, Geraden), Erkennen von Gesichtern…
Altenhofen, Jung 5
Bildverarbeitung
Einsatzgebiete:modernen Mikroskopie, medizinischen
Diagnostik, Astronomie, Maschinenbau, Umweltbeobachtung, Spionage
Altenhofen, Jung 6
Modell der Bildverarbeitung
Altenhofen, Jung 7
Beispiel: Erkennen von Kreisen
Idee: Finden von geometrischen Objekten (Kreisen) in Bildern.
Methoden: Filterung und Hough-Transformation
Altenhofen, Jung 8
Beispiel: Erkennen von Kreisen
Vorgehen:1. Umwandeln der Farbinformationen in
Graustufen. cvCvtColor( frame, gray, CV_BGR2GRAY );
Altenhofen, Jung 9
Beispiel: Erkennen von Kreisen
Vorgehen: 2. Anwenden eines Kantenfilters (z.B. Sobelfilter)
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.
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.
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
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.
Altenhofen, Jung 14
Andere Kantenfilter
Prewitt-Operator„einfache“ Form des Sobelfilters
LaplacefilterBestimmt Nulldurchgänge, ist sehr
„rauschanfällig“
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.
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.
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.
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.
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
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.
Altenhofen, Jung 21
Praxis
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()
Altenhofen, Jung 23
Sequenzieller Algorithmus
Programmbeispiel…
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).
Altenhofen, Jung 25
Parallelisierung mit Cuda
1. GraustufenGraustufen werden weiterhin sequenziell mit
cvCvtColor( frame, gray, CV_BGR2GRAY );erstellt.
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.
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.
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
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.
Altenhofen, Jung 30
Parallelisierung mit Cuda
Programmcode…
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)
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.
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
Altenhofen, Jung 34
Ende
Vielen Dank für Ihre Aufmerksamkeit.Viel Spaß beim Halbfinalspiel!