Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 15. November 2012.

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2008
Advertisements

Motivation Bisher: Codes mit möglichst kurzer Codelänge.
Asymptotische Notation
Schnelle Matrizenoperationen von Christian Büttner
Einführung in die Programmierung Zusammenfassung
Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03
Suche in Texten (Stringsuche )
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 6. Suchverfahren
Einführung in die Informationsverarbeitung Teil Thaller Stunde III: Algorithmen Köln 4. Dezember 2008.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 19. November 2009.
FH-Hof Optimierungsverfahren für kombinatorische Probleme Richard Göbel.
Philosophie der Logik nach Frege I
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
SQL als Abfragesprache
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Klausur „Diskrete Mathematik II“
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Der C-Präprozessor 08-CPräprozessor.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Bildverarbeitungsalgorithmen Gesamtwiederholung Manfred Thaller, Universität zu Köln Köln 29. Januar 2008.
FH-Hof Algorithmen und Datenstrukturen - Einführung Richard Göbel.
Prof. Dr. med. Stefan Schulz
§3 Allgemeine lineare Gleichungssysteme
Polynome und schnelle Fourier-Transformation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen Übungsmodul 8
Algorithmen und Datenstrukturen Übungsmodul 1
Algorithmen und Datenstrukturen Übungsmodul 3
PHP: Operatoren und Kontrollstrukturen
Programmieren ... in C++ Prof. Dr.-Ing. Franz-Josef Behr, HfT Stuttgart Programmeiren I.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 XCDL eXtensible Characterisation Description Language Von Maike Wosnitza.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Berechenbarkeit Klaus Becker Berechenbarkeit.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde IV: Bildverarbeitung IV Köln 15. Januar 2015.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 6. November 2014.
Einführung in die Informationsverarbeitung Teil Thaller Stunde III: Algorithmen Köln 4. November 2010.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde III: Bildverarbeitung III Köln 8. Januar 2015.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde III: Bildverarbeitung III Köln 2. Dezember.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 25. Oktober 2012.
Technische Informatik I Vorlesung 4: Vereinfachung von Schaltfunktionen Mirco Hilbert Universität Bielefeld Technische Fakultät.
Delphi Chars und Strings
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Der A*-Algorithmus.
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Einführung in die Informationsverarbeitung Teil Eide (auf Basis von Thaller 2014–15) Stunde III: Algorithmen, Visualisierung Köln 19. November 2015.
Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 27. Oktober 2011.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde III: Bildverarbeitung III Köln 5. Dezember 2013.
Punkt-in-Landkarte II
Cäsar-Verschlüsselung
 Präsentation transkript:

Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 15. November 2012

I. Rekapitulation 2

 Abstrakte Überlegungen zum Wesen der Information.  Darstellung von Information in geeigneten Strukturen auf (digitalen) Rechnern.  Entwicklung von Algorithmen, die auf diesen Strukturen operieren.  Einbettung in eine Methodologie, die die Konstruktion von Programmen aus geeigneten Strukturen und Algorithmen ermöglicht. 3 Gegenstand

1."Selbstabbildende Information". Es kann "gerechnet" werden. Bilder. 2."Kodierte Information". Zeichenketten und Teilketten können verglichen werden. Texte. 3."Symbolische Information". Terme können verglichen werden. Terminologien, "Ontologien" u.ä. „Arten“ von Information 4

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger 5

Soundex 1Das erste Zeichen jedes Namens wird beibehalten. 2W und H werden ignoriert. 3 A, E, I, O, U und Y ergeben keinen Codewert, gelten jedoch als "Trenner" (s.Regel 5). 4Die anderen Zeichen werden nach folgenden Regeln umgewandelt. 4.1 B, P, F, V ==>1 4.2 C, G, J, K, Q, S, X, Z ==>2 4.3 D, T ==>3 4.4 L ==>4 4.5 M, N ==>5 4.6 R ==>6 5 Ergeben zwei aufeinanderfolgende Zeichen denselben Code, wird er nur einmal gewertet. Sind sie durch einen "Trenner" (s. oben Regel 3) getrennt, wird er jedoch wiederholt. 6

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger 7

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger TRegel 1 8

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger TxTxRegel 2 9

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger T xRegel 3 10

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger T 2Regel

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger T 2xRegel 5 12

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger T 2 xRegel 3 13

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger T 2 5Regel

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger Tegenberger Tekekenperger T 2 51Regel

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger Tekekenperger 16

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger Tekekenperger TRegel 1 17

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger Tekekenperger TxTxRegel 2 18

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger Tekekenperger T 2Regel

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger Tekekenperger T 2xRegel 3 20

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger Tekekenperger T 2 5Regel

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger  T251 Tekekenperger T 2 51Regel

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger  T251 Tekekenperger T 2 2Regeln 4.2 / 5 / 3 23

Soundex Problem: Welche der drei folgenden Namen sind gleich? Theckenperger  T251 Tegenberger  T251 Tekekenperger  T225 * 24

Ein Algorithmus ist eine Funktion f(D ein, D aus ), die Eingabedaten D ein in Ausgabedaten D aus schrittweise transformiert und dabei bestimmte Bedingungen erfüllt. Algorithmen: Definition 25

1.Exaktheit. Die Funktion f kann präzise auf formale Weise beschrieben werden. 2.Finitheit. Die Beschreibung von f ist endlich lang. 3.Vollständigkeit. Die Beschreibung von f umfasst alle vorkommenden Fälle. 4.Effektivität. Die Einzelschritte sind elementar und real ausführbar. 5.Terminierung. Die Funktion f hält nach endlich vielen Schritten an und liefert ein Resultat. 6.Determinismus. Die Funktion f liefert bei gleichen Eingabewerten stets das gleiche Ergebnis, wobei die Folge der Einzelschritte für jeden Eingabewert genau festgelegt ist. Algorithmen: Eigenschaften 26

1."Selbstabbildende Information". Es kann "gerechnet" werden. Bilder. 2."Kodierte Information". Zeichenketten und Teilketten können verglichen werden. Texte. 3."Symbolische Information". Terme können verglichen werden. Terminologien, "Ontologien" u.ä. „Arten“ von Information 27

Towers of Hanoi Situation in einem Tempel in Hanoi: Ein Turm von 100 Scheiben auf einer Spindel (S1). Eine leere Spindel (S2). Eine weitere leere Spindel (S3). Transportiere S1 so nach S2 - wobei S3 als Zwischenlager verwendet werden darf - dass: Jeweils nur die oberste Scheibe von einem Turm genommen wird. Niemals eine größere Scheibe auf einer kleineren liegt. Prophezeiung: Ist das erledigt, ist das Ende der Welt gekommen. 28

Towers of Hanoi S1 S2 S3 29

Towers of Hanoi S1 S2 S3 30

Towers of Hanoi S1 S2 S3 31

Towers of Hanoi S1 S2 S3 32

Towers of Hanoi S1 S2 S3 33

Towers of Hanoi S1 S2 S3 34

Towers of Hanoi S1 S2 S3 35

Towers of Hanoi S1 S2 S3 36

Towers of Hanoi Lösung I 1.Finde jemand, der die obersten 99 Scheiben von S1 nach S3 transportiert. 2.Transportiere die unterste Scheibe von S1 nach S2. 3.Finde jemand, der die obersten 99 Scheiben von S3 nach S2 transportiert. 37

Towers of Hanoi Lösung II 1.Besteht der zu transportierende Turm aus mehr als einer Scheibe, finde jemand, der einen Turm von n-1 Scheiben von S1 nach S3 transportiert. Nutze S2 als Zwischenablage. 2.Transportiere selbst die unterste Scheibe von S1 nach S2. 3.Besteht der zu transportierende Turm aus mehr als einer Scheibe, finde jemand, der einen Turm von n-1 Scheiben von S3 nach S2 transportiert. Nutze S1 als Zwischenablage. 38

Towers of Hanoi Lösung III function transport( int n, stack spindel1, stack spindel2, stack spindel3) { if (n >1) transport(n-1,spindel1,spindel3,spindel2); schritt(spindel1,turm2); if (n>1) transport(n-1,spindel3,turm2,spindel1); } function schritt( stack spindel1, stack spindel2) { spindel2.push(spindel1.pop()); } 39

Towers of Hanoi Fragen 1.Wie viele Mitarbeiter werden benötigt? n 2. Wieviele Transferschritte? 2 n Wie lange? Schritte == ca Schritt == 1 Sekunde ==> ca Sekunden == ca. 4 * Jahre * 40

1."Selbstabbildende Information". Es kann "gerechnet" werden. Bilder. 2."Kodierte Information". Zeichenketten und Teilketten können verglichen werden. Texte. 3."Symbolische Information". Terme können verglichen werden. Terminologien, "Ontologien" u.ä. „Arten“ von Information 41

Minimal neighbour Original Ergebnis 42

Ersetze in jeder Zeile jedes Pixel durch den niedrigsten Pixelwert der dieses Pixels umschreibenden 3 x 3 Matrix. Minimal neighbour 43

Minimal neighbour 44

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour

Minimal neighbour * 54

 Abstrakte Überlegungen zum Wesen der Information.  Darstellung von Information in geeigneten Strukturen auf (digitalen) Rechnern.  Entwicklung von Algorithmen, die auf diesen Strukturen operieren.  Einbettung in eine Methodologie, die die Konstruktion von Programmen aus geeigneten Strukturen und Algorithmen ermöglicht. 55 Gegenstand

II. Bildverarbeitung I 56

Bildverarbeitung 57 Bildverarbeitung hier ::= Bearbeitung von Bildern, die als strukturierter Bytestream im Memory geladen sind.

Basisalgorithmus Bildverarbeitung 58 Unter Annahme eines Bildes als: struct image { int zeilen; int spalten; unsigned char *bytes; } o; for (i=0;i<o.spalten;i++) for (j=0;j<o.zeilen;j++) transform(* (o.bytes + (j*spalten) + i) );

Ein Algorithmus ist eine Funktion f(D ein, D aus ), die Eingabedaten D ein in Ausgabedaten D aus schrittweise transformiert und dabei bestimmte Bedingungen erfüllt. Algorithmen: Definition 59

Basisalgorithmus Bildverarbeitung 60 Oder allgemeiner: struct image { int zeilen; int spalten; pixel *pixel; } o; for (i=0;i<o.spalten;i++) for (j=0;j<o.zeilen;j++) transform(* (o.pixel + (j*spalten) + i) );

Basisalgorithmus Bildverarbeitung 61 Eingebunden in den Kontext von Qt (i.e., QImage): Beispiel: Negation 8 Bit for (int y=0;y height();y++) for (int x=0;x width();x++) { oldVal = *(image->scanLine(y) + x); newVal=255-oldVal; *(image->scanLine(y) + x) = newVal; }

Basisalgorithmus Bildverarbeitung 62 Eingebunden in den Kontext von Qt (i.e., QImage): Beispiel: Negation 24 Bit for (int y=0;y height();y++) for (int x=0;x width();x++) { RGB=(QRgb *)image->scanLine(y) + x; oldRed = qRed(*RGB); newRed=255-oldRed; oldGreen = qGreen(*RGB); newGreen=255-oldGreen; oldBlue = qBlue(*RGB); newBlue=255-oldBlue; *RGB = qRgb(newRed,newGreen,newBlue); }

Basisalgorithmus Bildverarbeitung 63 Dabei gilt jedoch: for (int y=0;y<result.height();y++) { for (int x=0;x<result.width();x++) { *(result.scanLine(y) + x) = meineTransformation(*(image.scanLine(y)) ; } Etwa eine Größenordnung langsamer als:

Basisalgorithmus Bildverarbeitung 64 for (int y=0;y<result.height();y++) { newpixel=result.scanLine(y); oldpixel=image.scanLine(y); for (int x=0;x<result.width();x++) *(newpixel++) = meineTransformation(*(oldpixel++)); }

Basisalgorithmus Bildverarbeitung 65 Merke: Bildverarbeitung muss performant sein!

Basistransformationen 66 Negation: oldVal = *(image->scanLine(y) + x); newVal=255-oldVal; *(image->scanLine(y) + x) = newVal;

Basistransformationen 67 Horizontale Spiegelung: for (int y=0;y height();y++) for (int target=0,source=image->width()-1; target<limit;target++,source--) { pixel=*(image->scanLine(y) + source); *(image->scanLine(y) + source) = *(image->scanLine(y) + target); *(image->scanLine(y) + target) = pixel; }

Basistransformationen 68 Vertikale Spiegelung: for (int target=0,source=image->height()-1; target<limit;target++,source--) for (int x=0;x width();x++) { pixel=*(image->scanLine(source) + x); *(image->scanLine(source) + x) = *(image->scanLine(target) + x); *(image->scanLine(target) + x) = pixel; }

Basistransformationen 69 Farbbandextraktion (Qt spezifisch, lookup table): for (int y=0;y height();y++) for (int x=0;x width();x++) { RGBval=image->colorTable() [*(image->scanLine(y) + x)]; pixel=qRed(RGBval); *(result.scanLine(y) + x) = pixel; }

Basistransformationen 70 Quadrantenrotation: for (int oldy=0,newx=image->height()-1;oldy height(); oldy++,newx--) for (int oldx=0,newy=0;oldx width(); oldx++,newy++) *(result.scanLine(newy) + newx) = *(image->scanLine(oldy) + oldx);

Basistransformationen 71 Gradgenaue Rotation: for (int y=0;y height();y++) { h=image->height()-y; for (int x=0;x width();x++) { rho=sqrt((double)(x*x)+(double)(h*h)); theta=atan((double)h/(double)x)-usearc; newx=(int)rint(rho*cos(theta)+xmin); newy=ysize-((int)rint(rho*sin(theta)+ymin)); *(inter+(newy*xsize)+newx)= *(image->scanLine(y) + x); }

Erinnerung: Winkelfunktionen 72 y/r=sin(β) β=asin(y/r) x/r=cos(β) β=acos(x/r) y/x=tan(β) β=atan(y/x)

Basistransformationen 73 Nachgeschobene Interpolation zur Rotation: offset[0]= -1; offset[1]= 1; offset[2]= xsize*-1; offset[3]= xsize; for (int y=0;y<result.height();y++) { for (int x=0;x<result.width();x++,use++) { if (*use>=0) *(result.scanLine(y)+x) = *use; else if (*(use-1)<0 || *(use+1)<0) *(result.scanLine(y)+x) = 0; else { *(result.scanLine(y)+x) = *(use+offset[now]); if (++now==4) now=0; }

Danke für heute! 74