Numerisches Programmieren



Ähnliche Dokumente
Numerisches Programmieren

Numerisches Programmieren

Numerisches Programmieren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

7 Rechnen mit Polynomen

Primzahlen und RSA-Verschlüsselung

Grundlagen der Theoretischen Informatik, SoSe 2008

Erstellen von x-y-diagrammen in OpenOffice.calc

PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

Lineare Gleichungssysteme

Anleitung SEPA-Lastschriften mit VR-NetWorld Software 5

Die Lightbox-Galerie funktioniert mit allen gängigen Webbrowsern. Zur Benutzung muss JavaScript im Browser aktiviert sein.

1 Mathematische Grundlagen

Lineare Gleichungssysteme I (Matrixgleichungen)

6.2 Scan-Konvertierung (Scan Conversion)

Informationsblatt Induktionsbeweis

Stammdatenanlage über den Einrichtungsassistenten

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Wie halte ich Ordnung auf meiner Festplatte?

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Wir arbeiten mit Zufallszahlen

Bedienungsanleitung Albumdesigner. Neues Projekt: Bestehendes Projekt öffnen:

Raiffeisen-Volksbank Wemding eg

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Anzeige von eingescannten Rechnungen

Microsoft Access 2010 Navigationsformular (Musterlösung)

Anleitung Postfachsystem Inhalt

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Dateimanagement in Moodle Eine Schritt-für

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Anleitung über den Umgang mit Schildern

Produktschulung WinDachJournal

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

1. Was sind Aufgaben? Aufgaben einrichten Ansicht für die Teilnehmer/innen... 3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Satzhilfen Publisher Seite Einrichten

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

TECHNISCHE UNIVERSITÄT MÜNCHEN

Abwesenheitsnotiz im Exchange Server 2010

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

BEDIENUNGSANLEITUNG: EINREICH-TOOL

Repetitionsaufgaben Wurzelgleichungen

Erstellung von Präsentationspostern

Konzepte der Informatik

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen!

Diese Prozesse und noch viele andere Tricks werden in der Digitalfotografie mit Hilfe von Bildbearbeitungsprogrammen, wie z. B. Gimp, bewältigt.

Datenbanken Microsoft Access 2010

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

2. Im Admin Bereich drücken Sie bitte auf den Button Mediathek unter der Rubrik Erweiterungen.

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Gimp Kurzanleitung. Offizielle Gimp Seite:

WinVetpro im Betriebsmodus Laptop

Musterlösungen zur Linearen Algebra II Blatt 5

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Eigenwerte und Eigenvektoren von Matrizen

Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Die Größe von Flächen vergleichen

Einfache Varianzanalyse für abhängige

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Installation OMNIKEY 3121 USB

DIFFERENTIALGLEICHUNGEN

Stift-Karussell in M-Plot einrichten

Approximation durch Taylorpolynome

Zwischenablage (Bilder, Texte,...)

5. Bildauflösung ICT-Komp 10

Hilfe zum Warenkorb des Elektronischen Katalogs 2007 Version 1.0

Woche 1: Was ist NLP? Die Geschichte des NLP.

Geld Verdienen im Internet leicht gemacht

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

1 topologisches Sortieren

Datenexport aus JS - Software

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Übungsaufgaben Tilgungsrechnung

Step by Step-Anleitung Version 1.00 vom 03. März 2009 Christian Schnettelker,

JRK-Spielplatztest. Was macht Spaß und kostet nix! Eine Kampagne des Jugendrotkreuzes im Nürnberger Land. Version 1.5 Juli 2008

Protokoll des Versuches 7: Umwandlung von elektrischer Energie in Wärmeenergie

Nutzung des Retain-Archivs

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Word 2010 Schnellbausteine

Wie Sie mit Mastern arbeiten

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Transkript:

Technische Universität München WS /3 Institut für Informatik Prof Dr Hans-Joachim Bungartz Dipl-Inf Christoph Riesinger Dipl-Inf Dipl-Math Jürgen Bräckle Numerisches Programmieren Programmieraufgabe: Polnominterpolation, kubische Splines, Bildinterpolation Motivation Einige Anwendungen in der Bildbearbeitung, wie zb das Vergrößern oder Drehen von Bildern, führen zu einer Veränderung der Pielmenge bzw der Pielstruktur Daher müssen Inhalte des Bildes an Stellen zwischen Pieln ausgewertet werden können In dieser Programmieraufgabe sollen verschiedene Interpolationsverfahren umgesetzt und am Beispiel der Skalierung von Bildern getestet werden Bildinterpolation Werden Bilder im RGB-Farbraum dargestellt, enthält jedes Piel Informationen zu den Grundfarben Rot, Grün und Blau Für jedes dieser Farbkanäle lässt sich ein Bild als eine Funktion f : [a, b] [c, d] [, ] auffassen, wobei f(, ) die Intensität der entsprechenden Farbe an der Stelle (, ) angibt ( =keine Farbe, =volle Intensität) Tpischerweise steht uns das Bild jedoch nur in diskretisierter Form zur Verfügung, dh es wurde bereits in n m (gleich große, einfarbige) Rechtecke bzw Piel unterteilt und wir kennen die Farbwerte der Piel Wir gehen im Folgenden davon aus, dass die Farbe eines Piels dem Funktionswert in seinem Mittelpunkt entspricht Außerdem nehmen wir an, dass die gegebenen Piel Seitenlänge und ihre Mittelpunkte ganzzahlige Koordinaten beginnend bei (, ) haben Somit ist f : [5, n + 5] [5, m + 5] [, ] und wir kennen f(i, j) i = n, j = m Abb zeigt die Piel und ihre Mittelpunkte Wollen wir das Bild nun mit einer höheren Auflösung von ñ m Pieln darstellen, so unterteilen wir [5, n + 5] [5, m + 5] in ein neues Raster aus ñ m Rechtecken (s Abb ) Die Farben der neuen Piel sind die Werte von f in den

Mittelpunkten der neuen Piel Um sie zu erhalten müssen wir für jeden der drei Farbkanäle f mit Hilfe der Werte aus dem alten Raster interpolieren 35 3 5 5 5 35 3 5 5 5 5 5 5 3 35 5 5 5 3 35 Abb : altes Pielraster Abb : altes und neues Pielraster D-Interpolation Für die Bildinterpolation werden Verfahren zur Interpolation im Zweidimensionalen benötigt Diese Verfahren lassen sich dabei gewöhnlich einfach auf den eindimensionalen Fall zurückführen Das soll nun am Beispiel der Polnominterpolation veranschaulicht werden Analog zum Vorgehen in D lassen sich auch zweidimensionale Interpolationspolnome konstruieren Die Aufgabenstellung ist hierbei zu vorgegebenen Stützstellen ( i, j ) und zugehörigen Werten f ij i, j = n (s Abb 3) ein Polnom p vom Grad n in und zu finden, sodass p( i, j ) = f ij i, j (Abb 6) Die Auswertung des D-Interpolationspolnoms p an einer Stelle (, ) lässt sich durch Festhalten einer Koordinate auf den eindimensionalen Fall zurückführen Wir halten zunächst die -Koordinate fest und definieren die Hilfspolnome p i () := p( i, ) Die p i sind (eindimensionale) Polnome n-ten Grades in und somit durch die Interpolationsbedingung p i ( j ) = p( i, j ) = f ij j eindeutig festgelegt (Abb 4) Insbesondere lässt sich somit durch D-Interpolation p( i, ) = p i ( ) bestimmen Als nächstes halten wir nun die -Koordinate fest und definieren p() := p(, )

p ist ein Polnom n-ten Grades in und durch die Interpolationsbedingung p( i ) = p( i, ) = p i ( ) i festgelegt (Abb 5) Auswerten von p an der Stelle liefert also schließlich das gesuchte p(, ) = p( ) 4 3 4 5 5 5 5 5 5 5 5 Abb 3: Stützpunkte Abb 4: Die Polnome p i 4 4 5 5 5 5 5 5 5 5 Abb 5: p i und p für = Abb 6: vollst Interpolationspolnom Verschiedene Interpolationsverfahren In diesem Abschnitt werden nun einige Interpolationsverfahren vorgestellt, dh Verfahren, die eine gegebene Menge an Stützpunkten ( i, i ) interpoliert und an weiteren Stellen auswertbar ist In der Bildinterpolation üblich sind die Verfahren Nearest Neighbor, die bilineare (D lineare Interpolation) und die bikubische Interpolation Bikubische Verfahren können auf verschieden Splinekonzepten basieren, und werden gewöhnlich nur auf Grundlage des 44 Pielfeldes um den gesuchten Punkt aufgebaut In dieser Programmieraufgabe wird der kubische Spline-Ansatz gewählt und auf das gesamte Bild bezogen Zusätzlich soll sich die Polnominterpolation als Verfahren zur Bildinterpolation versuchen

Nearest Neighbor Nearest Neighbor ist ein sehr einfach umzusetztendes Verfahren Dem gesuchten Punkt wird dabei der naheliegenste Piel zugeordnet Lineare Interpolation Hierbei wird stückweise zwischen zwei Stützpunkten linear interpoliert, dh zwei benachbarte Stützpunkte werden mit einer Geraden verbunden Newton-Interpolation Als Umsetzung der Polnominterpolation dient hier die Newton-Interpolation Wie aus der Vorlesung bekannt, lassen sich Polnome in Newton-Basis darstellen: p() = [ ]f + [, ]f ( ) + + [,, n ]f ( i ) Die Koeffizienten des Interpolationspolnoms in dieser Darstellung berechnen sich einfach mit Hilfe der dividierten Differenzen Sie folgen dem Aufbau [ i ]f = i n i= [ i,, i+k ] f = [ i+,, i+k ]f [ i,, i+k ]f i+k i und lassen sich in einem Dreiecksschema anordnen: i i \k [ ]f [, ]f [,, ]f [ ]f [, ]f [ ]f Damit kann man in der ersten Zeile direkt die Koeffizienten [,, k ]f ablesen Ist ein Polnom p() = a + a ( ) + + a n ( i ) n i=

einmal zur Newton-Basis aufgebaut, lässt es sich sehr effizient mit einem Verfahren ähnlich dem Horner-Schema an einer Stelle auswerten Dazu bringt man das Polnom durch Ausklammern der mehrfach auftretenden ( i ) in die Form p() = a + ( ) ( a + ( ) ( ( ) )) a n + ( n ) a n und erhält damit automatisch einen iterativen Algorithmus mit einer Laufzeit von O(n) Es wird zu erwarten sein, dass die Newton-Interpolation bei vielen Stützstellen Schwierigkeiten hat und große Fehler produziert Warum können sich sogar bei der Bildskalierung mit dem Faktor schlechte Ergebnisse ergeben? Wieso findet man in diesem Fall oft links oben noch einen richtig berechneten Ausschnitt? Kubische Splines Bei den kubischen Splines gehen wir vereinfacht von äquidistanten Stützstellen mit Intervallbreite h aus Stückweise zwischen zwei benachbarten Stützstellen i und i+ werden Polnome vom Grad 3 eingefügt, sodass die gesamte Funktion zweifach stetig differenzierbar ist Wie auf dem Aufgabenblatt 4 gezeigt, lassen sich kubische Splines folgendermaßen aufbauen und auswerten: Zunächst werden die Ableitungen i an den Stützstellen i ermittelt Als Randbedingung sind dazu die beiden äußersten Ableitungen und n gegeben (in unserem Fall der Bildinterpolation setzten wir beide auf ), alle weiteren erhält man durch lösen des Gleichungssstems 4 4 4 n n = 3 h h 3 3 n n 3 n n h 3 n Aufgrund seiner tridiagonalen Struktur lässt sich dieses Sstem mit einer Laufzeit von O(n) lösen, statt der für die Gaußelimination üblichen O(n 3 ) Mit diesen Ableitungen können nun die stückweisen Polnome aufgebaut werden Sollen nun die Splines an einer Stelle ausgewertet werden, kann man wie folgt vorgehen: i) Finde das Intervall I = [ i, i+ ] mit I und damit das entsprechende Polnom ii) Transformiere in das Intervall [, ] mit Hilfe von: t = t i () = i h mit h = i+ i

iii) Werte nun das Polnom q zur Hermite-Basis in t aus: q(t) = i H (t) + i+ H (t) + h i H (t) + h i+ H 3 (t) mit H (t) = 3t + t 3 H (t) = 3t t 3 H (t) = t t + t 3 H 3 (t) = t + t 3 Beschreibung des Programmgerüsts Das auf der Vorlesungsseite zur Verfügung gestellte Programmgerüst enthält: NearestNeighbour, LinearInterpolation, NewtonPolnom, CubicSpline: Diese Klassen implementieren alle das Interface InterpolationMethod und bieten Funktionalitäten zum Aufbau (init()) und zur Auswertung (evaluate()) der entsprechenden Interpolationsmethode TridiagonalMatri: Diese Klasse beschreibt eine Tridiagonalmatri und ermöglicht das Lösen (solvelinearsstem(double[] b)) von linearen Gleichungssstemen mit Tridiagonalgestalt und rechter Seite b Eine Tridiagonalmatri besitzt nur Einträge ungleich Null in der Diagonalen und den beiden Nebendiagonalen Picture: Diese Klasse verwaltet ein Bild im RGB-Format Sie ermöglicht das Manipulieren und Skalieren (scale()) des Bildes Für die Bearbeitung dieser Programmieraufgabe ist ein Verständnis dieser Klasse nicht erforderlich ImageViewer: Diese Klasse enthält eine main()-methode und implementiert eine einfache Benutzeroberfläche zum Laden und Skalieren von Bildern mit verschiedenen Interpolationsmodi

Aufgaben Im Folgenden werden die zu implementierenden Methoden aufgelistet Details finden Sie jeweils in den Kommentaren zu den einzelnen Methoden Überlegen Sie sich zu allen Methoden Testbeispiele und testen Sie unbedingt jede einzelne Methode direkt nach der Erstellung Sie können zusätzlich die zur Verfügung gestellte Testklasse Test Interpolation verwenden Es ersetzt aber nicht das Verwenden eigener Testbeispiele Programmieren Sie in der Klasse LinearInterpolation den gegebenen Methodenrumpf evaluate Programmieren Sie in der Klasse NewtonPolnom die gegebenen Methodenrümpfe computecoefficients, addsamplingpoint und evaluate Programmieren Sie in der Klasse CubicSpline die gegebenen Methodenrümpfe computederivatives und evaluate Formalien und Hinweise Das Programmgerüst erhalten Sie auf den Webseiten zur Vorlesung Ergänzen Sie das Programmgerüst bitte nur an den dafür vorgegebenen Stellen! Falls Sie die Struktur der Programme an anderer Stelle verändern, können wir sie evtl nicht mehr testen Beseitigen Sie vor Abgabe Ihres Programms alle Ausgaben an die Konsole und reichen Sie bis zum Dezember, : Uhr über Moodle ein Reichen Sie nur die Dateien LinearInterpolationjava, NewtonPolnomjava und CubicSplinejava ein Bitte laden Sie Ihre java-dateien als flaches tgz-archiv hoch Der Dateiname ist beliebig wählbar, bei der Erweiterung muss es sich jedoch um tgz oder targz handeln Ein solches Archiv können Sie beispielsweise mit dem Linu-Tool tar erstellen, indem Sie die laut Aufgabenstellung zu bearbeitenden java-dateien in ein sonst leeres Verzeichnis legen und dort anschließend den Befehl > tar cvvzf numpro_aufgtgz *java ausführen In jeder Gruppe sollte nur ein Teammitglied eine Lösung einreichen Wir empfehlen Ihnen, die Programme unter Linu (Rechnerhalle) zu testen

Bitte beachten Sie: Alle Abgaben, die nicht den formalen Kriterien genügen, werden grundsätzlich mit Punkten bewertet!