Parallele Algorithmen in der Bildverarbeitung

Ähnliche Dokumente
Überblick. Lineares Suchen

Lineare Programmierung

Algorithmen & Datenstrukturen 1. Klausur

6. Algorithmen der Computer-Geometrie

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Morphologie auf Binärbildern

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Scheduling und Lineare ProgrammierungNach J. K. Lenstra, D. B. Shmoys und É.

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Algorithmen II Vorlesung am

Seminararbeit für das SE Reine Mathematik- Graphentheorie

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Binärbildverarbeitung

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Zeichnen von Graphen. graph drawing

Universität Karlsruhe (TH)

OPERATIONS-RESEARCH (OR)

Grundregeln der Perspektive und ihre elementargeometrische Herleitung

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Teil II. Nichtlineare Optimierung

Optimalitätskriterien

Komplexitätstheorie Einführung und Überblick (Wiederholung)

2 Lösungen "Peptide de novo Sequencing"

13. Binäre Suchbäume

Sortierverfahren für Felder (Listen)

Approximationsalgorithmen

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Regionen in Binärbildern

Computer Graphik I Polygon Scan Conversion

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Graphen: Datenstrukturen und Algorithmen

TEILWEISE ASYNCHRONE ALGORITHMEN

Guten Morgen und Willkommen zur Saalübung!

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008

Einführung in die Informatik 1

Programmieren I. Kapitel 7. Sortieren und Suchen

Kapitel 5: Dynamisches Programmieren Gliederung

Grundlegende Geometrie - Vorlesung mit integriertem Praxiskurs Klausur (08-10 Uhr Audimax, HS 1)

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Texture Based Direct Volume Rendering

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von.

Microsoft Access 2010 Gruppierte Daten in Berichten

Übungen zur Vorlesung Verteilte Algorithmen II, Heiko Krumm, Universität Dortmund, FB Informatik

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Microsoft Visio 2007-Programmierung

Theoretische Grundlagen der Informatik

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Kompakte Graphmodelle handgezeichneter Bilder

Abschnitt: Algorithmendesign und Laufzeitanalyse

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen

Bildverarbeitung Herbstsemester. Binärbildanalyse

Erstellen und Bearbeiten von stereoskopischen 3D-Fotos

Anmerkungen zur Übergangsprüfung

32. Algorithmus der Woche Kreise zeichnen mit Turbo Programmoptimierung: Wie kann man die Zahl der Rechenoperationen minimieren?

3. Grundlagen der Linearen Programmierung

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Das Falten-und-Schneiden Problem

Kapitel 6: Graphalgorithmen Gliederung

Grundlagen verteilter Systeme

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Plotten von Linien ( nach Jack Bresenham, 1962 )

Zuschauer beim Berlin-Marathon

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Repetitionsaufgaben: Lineare Funktionen

Lenstras Algorithmus für Faktorisierung

Programmiertechnik II

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Lineare Gleichungssysteme

Bestimmung einer ersten

Datenstrukturen & Algorithmen

Kap. 4.2: Binäre Suchbäume

Grundlagen der Computer-Tomographie

Wortproblem für kontextfreie Grammatiken

Kompakte Graphmodelle handgezeichneter Bilder. Einbeziehung in Autentizierung und Bilderkennung

Extremwertaufgaben. 3. Beziehung zwischen den Variablen in Form einer Gleichung aufstellen (Nebenbedingung),

Integration von Schülerinnen und Schülern mit einer Sehschädigung an Regelschulen

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Leica 3D Disto CAD-Werkzeuge

Computer Vision I. Nikos Canterakis. Lehrstuhl für Mustererkennung, Universität Freiburg,

8 Diskrete Optimierung

Grundlagen verteilter Systeme

Numerisches Programmieren

DAS SNELLIUSSCHE BRECHUNGSGESETZ UND LINSEN MIT EXAKT PUNKTFÖRMIGEM FOKUS. Eugen Grycko, Werner Kirsch, Tobias Mühlenbruch

Wirtschaftsinformatik I

Computer Vision: 3D-Geometrie. D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17

Seminar Komplexe Objekte in Datenbanken

Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 8

Computergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal.

Allerdings ist die Bearbeitung von Standardobjekten vorerst eingeschränkt. Wir wollen uns dies im folgenden Beispiel genauer betrachten.

Grundlagen der digitalen Bildverarbeitung / Fortsetzung

In ein quadratisches Blech werden Löcher gestanzt. Insgesamt sind es 85 Löcher. Wie viele Löcher sind in der untersten Reihe?

Über Kommentare und Ergänzungen zu diesen Lösungsbeispielen freuen wir uns!


Transkript:

Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren immer mehr parallele Hardware- Architekturen, die mittlerweile auch den Heimbereich erreicht haben. Durch die parallele Ausführung von Algorithmen kann ein Prozess stark beschleunigt werden. Im Folgenden werden verschiedene Algorithmen der Bildverarbeitung betrachtet. In der Computergrafik sowie in der Bildverarbeitung ist die Geschwindigkeit ein zentrales Thema. Die Vertex- /und Fragmentshader einer Grafikkarte stellen für die parallelen Algorithmen ein mögliche Plattform zur Verfügung. 1.2 Grundlagen und Definitionen Die natürlichste Darstellung eines Bilds ist für den Menschen ein 2-dimensionales Array aus Pixeln. Es wird diese Repräsentation im Folgenden verwendet, auch wenn für spezielle Probleme andere Darstellungen besser geeignet sind. Das Bild hat die Größe von n n Pixeln und wird als binär angenommen. Die Pixel können die Werte 0 oder 1 enthalten. Die folgenden Algorithmen arbeiten auf einem 2-dimensionalen Prozessor-Array der Größe n n. Die Prozessoren sind untereinander horizontal, vertikal und diagonal verbunden. Jeder Prozessor kann durch die Spalten- und Zeilenzahl (i, j) identifiziert werden. Der (i, j)-prozessor speichert den Pixel (i, j) des Bildes. Die Nachbarschaft zweier Pixel definiert sich durch die Nachbarschaft der Prozessoren. Zwei Pixel sind also benachbart, wenn sie horizontal, vertikal oder diagonal benachbart sind. Zwei 1-Pixel sind verbunden, wenn es einen Weg von benachbarten 1-Pixel zwischen diesen Pixeln existiert. Die Abarbeitung eines Algorithmus erfolgt synchron. In jedem Schritt t führt jeder einzelne Prozessor die spezifizierte Tätigkeit aus, bevor der nächste Schritt t + 1 beginnt. Die Laufzeit eines Algorithmus ist über die benötigte Anzahl der Schritt definiert. 2 Component Labeling 2.1 Component Labeling Problem Eine Komponente besteht aus allen 1-Pixel, sodass jeder Pixel der Komponente mit den anderen Pixeln der Komponente verbunden ist. Das Component Labeling Problem besteht nun darin, dass jedem 1-Pixel einer Komponente das gleiche Label zugewiesen wird. 1

0 0 0 1 0 0 0 0 0 0 A A B B B A B B B A A C C C C C D E C D D E E Figure 1: Erwartetes Ergebnis eines Component Label Algorithmus 2.2 Simpler Algorithmus Zu Beginn wird eine einfacher Algorithmus vorgestellt. Es existiert eine Initialisierungs- und eine Update- Phase. Phase 1 Jeder Pixel generiert sich ein eigenes Label aus der Adresse im Array Phase 2 Jeder Pixel aktualisiert das eigene Label mit dem kleinsten Label der Nachbarn, falls dieses Label kleiner als das eigene Label ist. Wiederhole solange bis alle Nachbar-Pixel den gleichen Wert haben. Es wird der innere Durchmesser einer Komponente als der kleinste Wert d definiert, sodass jedes Paar u, v aus 1-Pixeln einer Komponente mit einem Weg der Länge d verbunden werden kann. In jedem Schritt der Update-Phase wird das kleinste Label der Komponente an die benachbarten Pixel weitergegeben. Die Laufzeit des Algorithmus sich mit dem größten Durchmesser aller Komponenten abschätzen. Im Worst case beträgt die Laufzeit Θ(n). 2.3 Levialdi Algorithmus Der Levialdi Algorithmus besteht aus einer Schrumpfungsphase, in der jede Komponente auf eine Größe von einem Pixel verringert wird und anschließend eliminiert wird. Dieser Pixel erhält ein Label. In der anschließenden Expansionsphase wird die Schrumpfoperation rückgängig gemacht. Die verteilten Label werden dabei zurückpropagiert. Dazu muss jeder Prozessor die Werte während der Schrumpfungsphase speichern. Wechselt bei der Expansionsphase der Wert von 0 auf 1, dann wird das Label des rechten, unteren oder rechten unteren Pixels zugewiesen. Ausgenommen der erste Pixel der Expansionsphase, dem während der Schrumpfungsphase das Label zugewiesen wurde. Die Schrumpfoperation ist als Levialdi Transformation bekannt. Die Transformation folgt den zwei folgenden Regeln. Ein 1-Pixel wird zu einen 0-Pixel, falls der obere, linke und obere linke Pixel den Wert 0 hat. Ein 0-Pixel wird zu einem 1-Pixel, falls der obere und der linke Pixel den Wert 1 besitzt. Im Abbildung 2.3 ist die Levialdi Transformation anschaulich dargestellt. Die Korrektheit des Algorithmus basiert auf den Eigenschaften der Transformation, dass Komponenten nicht vermischt werden und nicht zerfallen. Die Laufzeit für die Schrumpfungsphase beträgt höchstens 2 n 1 Schritte. Dies kann über die Invariante gezeigt werden, die besagt, dass nach Schritt t alle Pixel (i, j) den Wert 0 haben, fall i+j < t+1 gilt. Insgesamt entsteht eine Laufzeit von 4 n 2. Der Nachteil dieses Algorithmus stellt der Speicherverbrauch von 2 n pro Prozessor dar. 2

* * * 0 * * * 1 Figure 2: Levialdi Transformation: Der grau markierte Pixel ist aktiv. Auf Grund der Belegung der Nachbarpixel wird entschieden, ob der aktive Pixel geändert wird. 3 Hough Transformation 3.1 Erläuterung Es wird in diesem Abschnitt die Hough Transformation eines Bildes vorgestellt. Die Transformation ist analog zum Anfertigen einer Computer-Tomografie Aufnahme eines 3D-Objekts, bei der jeweils das Objeket schichtweise und mit verschiedenen Winkeln durchleuchtet wird. Gegegeben sei ein n n großes binäres Bild, sowie ein Projektionswinkel Θ( π 2 < Θ π 2 ). Das Bild wird in parallele Streifen der Höhe 1 mit einem Winkel Θ bezüglich der x-achse partitioniert. Die Transformation summiert alle 1-Pixel eines Streifens. Anhand des Pixelzentrum wird entschieden, in welchem Band ein Pixel gezählt wird. Mit Hilfe der resultierenden Ergebnisse für jeden Streifen, kann die Hough Transformation dazu eingesetzt werden, bestimmte Formen in einem Bild zu erkennen. Ist die Transformation z.b. unter verschiedenen Winkeln invariant, kann geschloßen werden, dass das Bild eine Kreisscheibe enthält. 3.2 Algorithmus Der Projektionswinkel Θ wird auf den Wert 0 Θ π 4 beschränkt. Es werden Variablen b i eingeführt, die entlang eines Streifens durch das Array geschickt werden und alle vorkommenden 1-Pixel zählen. Initial sind diese Variablen mit dem Wert 0 belegt und werden an der linken und unteren Grenze des Array eingegeben. Die Variablen b i tragen weiterhin die Information, in welchem Winkel Θ sie durch das Array geschickt werden. Durch die Beschränkung des Winkel Θ ist der nächste Prozessor entweder rechts, oben oder rechts oben zu suchen. Anhand der Winkelinformation kann ein Prozessor dies lokal entscheiden. Als Erweiterung soll ein Prozessor zusätzlich zum eigenen Pixel ebenfalls den Pixel des oberen Nachbarn speichern. Dies kann durch einen zusätzlichen Berechnungsschritt in der Initialisierung realisiert werden. Durch die Erweiterung muss eine Variable nur einen Prozessor in jeder Spalte besuchen. In Abbildung 3.2 ist der Weg der Variablen für einen Winkel von Θ = π/6 gezeigt. Die Laufzeit eines Durchlaufs benötigt 2 n Zeit, wenn die linken und die unteren Variablen nacheinander durch das Array geschickt werden, um Kollisionen an Prozessoren zu vermeiden. Für M verschiedene Winkel benötigt der Algorithmus mit Pipelining O( n + M) Zeit. 3

b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 Figure 3: Algorithmus zur Berechnung der Hough Transformation. Die Variablen werden an der linken und unteren Seite des Arrays eingegeben und wandern den eingezeichneten Weg durch das Array. 4 Konvexe Hülle Gegeben sei zunächst eine Menge P aus Punkten p 1,..., p n in der Ebene. Die konvexe Hülle ist definiert als kleinstes konvexes Polygon, dass alle Punkte p i umschließt. Es sollen die Eckpunkte, sowie die Punkte, die auf dem Rand der konvexen Hülle liegen, berechnet werden. 4.1 Hüllpunkte Lemma: Gegeben eine Menge von Punkten p 1,..., p n sortiert nach x-koordinate. Es wird Θ i,j als Winkel zwischen der Strecke p i p j und der negativen y-achse definiert. Weiterhin sei r(i ) das kleinste j > i, für das Θ i,j maximal ist. Punkt p i ist Punkt der oberen konvexen Hülle gdw. x 1 < x i < x n und für alle i < i r(i ) i gilt. Bew.: Es wird eine Menge aller Strecken konstruiert, die zwei verschiedene Punkte aus P verbinden. Nach Definition liegen alle Strecken innerhalb der oberen konvexen Hülle. Ein Punkt p i liegt auf dem Rand der konvexen Hülle, wenn er nicht unterhalb einer Strecke liegt und x 1 < x i < x n gilt. Ein Punkt liegt unterhalb einer Strecke p i p j (j > i ), wenn ein Schnittpunkt zwischen der Strecke und dem Strahl von (x i, y i ) nach (x i, ) existiert. Dies ist der Fall, wenn Θ i,j > Θ i,i und i i j gilt. Dies ist die Bedingung, dass der Anfangspunkt des Strahls p i unterhalb der Strecke liegt. Nach Definition ist r(i ) das kleinste j > i, für das Θ i,j maximal ist. Für jede Strecke zwischen i tem und j = r(i )ten Punkt ist bekannt, dass alle Punkte im Intervall von x i bis x j unterhalb dieser Strecke liegen müssen. Falls für alle i < i r(i ) i erfüllt ist, existiert keine Strecke von i nach k > i. Damit liegt p i nicht unter einer Strecke und ist damit Punkt der oberen konvexen Hülle. 4

4.2 Algorithmus Der Algorithmus arbeitet auf einem linearen Array von Prozessoren. Jeder Prozessor speichert einen der Punkte p i. 1. Sortiere Punkte nach x-koordinate 2. Weise sortierten Punkten Label p i zu. 3. Berechne r(i) für alle i, indem Punkte von rechts nach links gesendet werden. Dabei kann Θ i,j für alle j > i berechnet werden. Der Prozessor speichert das Maximum. Damit ist dem iten Prozessor j = r(i) mit maximalem Θ i,j bekannt. 4. Führe ein Prefix von links nach rechts mit Maximums-Operation aus. Es ist danach ma i ir(i ) bekannt. Der ite Prozessor kann nun durch Vergleich mit seiner Identität prüfen, ob p i ein Hüllpunkt ist. 5