Bildverarbeitung mit Cuda - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Bildverarbeitung mit Cuda

Description:

Bildverarbeitung mit Cuda Erkennen von Strukturen mittels Hough Transformation Inhalt: 1. Theorie Was versteht man unter Bildverarbeitung Wie funktionieren die ... – PowerPoint PPT presentation

Number of Views:216
Avg rating:3.0/5.0
Slides: 35
Provided by: ich74
Category:

less

Transcript and Presenter's Notes

Title: Bildverarbeitung mit Cuda


1
Bildverarbeitung mit Cuda
  • Erkennen von Strukturen mittels Hough
    Transformation

2
Inhalt
  • 1. Theorie
  • Was versteht man unter Bildverarbeitung
  • Wie funktionieren die einzelnen Schritte
  • 2. Praxis
  • Sequenzielles Bespiel mit OpenCV
  • Paralleler Algorithmus mit Cuda

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.

4
Bildverarbeitung
  • Extraktion von Information aus den
    Ursprungsdaten
  • z. B. Bewegungsbestimmung, Mustererkennung
    (Kreise, Geraden), Erkennen von Gesichtern

5
Bildverarbeitung
  • Einsatzgebiete
  • modernen Mikroskopie, medizinischen Diagnostik,
    Astronomie, Maschinenbau, Umweltbeobachtung,
    Spionage

6
Modell der Bildverarbeitung
7
Beispiel Erkennen von Kreisen
  • Idee Finden von geometrischen Objekten (Kreisen)
    in Bildern.
  • Methoden Filterung und Hough-Transformation

8
Beispiel Erkennen von Kreisen
  • Vorgehen
  • 1. Umwandeln der Farbinformationen in Graustufen.
  • cvCvtColor( frame, gray, CV_BGR2GRAY )

9
Beispiel Erkennen von Kreisen
  • Vorgehen
  • 2. Anwenden eines Kantenfilters (z.B. Sobelfilter)

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.

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.

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

14
Andere Kantenfilter
  • Prewitt-Operator
  • einfache Form des Sobelfilters
  • Laplacefilter
  • Bestimmt Nulldurchgänge, ist sehr rauschanfällig

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.

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.

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.

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.

19
VorgeheEinfaches Erkennen von Kreisen
in Graustufen umwandeln
Kantenfilterung mittels Sobel
Bild einlesen
Maxima (Kreismittel-punkte) suchen
Kreise in Originalbild einzeichnen
Hough-Parameterraum füllen
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.

21
Praxis
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()

23
Sequenzieller Algorithmus
  • Programmbeispiel

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

25
Parallelisierung mit Cuda
  • 1. Graustufen
  • Graustufen werden weiterhin sequenziell mit
  • cvCvtColor( frame, gray, CV_BGR2GRAY )
  • erstellt.

26
Parallelisierung 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.

27
Parallelisierung 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.

28
Die 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

29
Parallelisierung mit Cuda
  • 4. Zeichnen der Kreise
  • Die gefundenen Kreise werden weiterhin
    sequenziell mit cvCircle( frame, center, radius,
    color , thickness, line_type, shift )
  • gezeichnet.

30
Parallelisierung mit Cuda
  • Programmcode

31
CPU 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)
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.

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

34
Ende
  • Vielen Dank für Ihre Aufmerksamkeit.
  • Viel Spaß beim Halbfinalspiel!
Write a Comment
User Comments (0)
About PowerShow.com