bilder_rotieren
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| bilder_rotieren [2024/01/20 11:23] – [Herleitung der Transformationsgleichung:] torsten.roehl | bilder_rotieren [2024/02/07 08:23] (aktuell) – torsten.roehl | ||
|---|---|---|---|
| Zeile 12: | Zeile 12: | ||
| - | |FIXME|FIXME| | + | | {{ : | 
| - | |Das originale Bild ist hier Quadratisch | + | |Das originale Bild ist hier Quadratisch | 
| Zeile 43: | Zeile 43: | ||
| \begin{equation} | \begin{equation} | ||
| - | ==== Beispiel ==== | ||
| + | {{: | ||
| <WRAP center round box 100%> | <WRAP center round box 100%> | ||
| - | **Aufgabe:**\\ | + | {{:inf: | 
| Wie lauten die Koordinaten des neuen Bildpunktes bei einer Drehung um **40°**, wenn der alte Bildpunkt **P(10, | Wie lauten die Koordinaten des neuen Bildpunktes bei einer Drehung um **40°**, wenn der alte Bildpunkt **P(10, | ||
| - | **Lösung:**\\ | + | |
| + | {{:inf: | ||
| Für den Sinus und Cosinus ergibt sich: | Für den Sinus und Cosinus ergibt sich: | ||
| * sin(40°)=0, | * sin(40°)=0, | ||
| Zeile 86: | Zeile 89: | ||
| Um Bilder zu rotieren, müssen grundsätzlich folgende Schritte abgearbeitet werden. Wir gehen hier davon aus, dass das Bild um seine Bildmitte rotiert werden soll. | Um Bilder zu rotieren, müssen grundsätzlich folgende Schritte abgearbeitet werden. Wir gehen hier davon aus, dass das Bild um seine Bildmitte rotiert werden soll. | ||
| - | - Vom zu rotierenden Bild< | + | - Vom zu rotierenden Bild< | 
| - Ein leeres Bild <color # | - Ein leeres Bild <color # | ||
| * Die neue Größe kann aus der alten Größe ermittelt werden! | * Die neue Größe kann aus der alten Größe ermittelt werden! | ||
| Zeile 114: | Zeile 117: | ||
| Mit **toScreen** bezeichnen wir eine Java-Methode, | Mit **toScreen** bezeichnen wir eine Java-Methode, | ||
| - | * Bildkoordinaten haben ihren Ursprung (0|) oben links und besitzen nur positive integer Werte | + | * Bildkoordinaten haben ihren Ursprung (0|0) oben links und besitzen nur positive integer Werte | 
| ===== Herleitung der Transformationsgleichung: | ===== Herleitung der Transformationsgleichung: | ||
| - | |||
| - | Angewandte Informatik | ||
| - | ist geschlossen | ||
| - | |||
| - | Office Pakete (Textverarbeitung, | ||
| - | Office Anwendungen | ||
| - | Datenbanken | ||
| - | Bildverarbeitung | ||
| - | Bildverarbeitung | ||
| - | MSR (Messen Steuern Regeln) und Robotik | ||
| - | Hardware-Überlebensregeln | ||
| - | Lego Roboter (leJOS) | ||
| - | Beispiele der LEJOS Bibliothek | ||
| - | Ein neuronales Netz für den NXT Roboter | ||
| - | Mikrocontroller IO-Warrior | ||
| - | Android Programmierung | ||
| - | Raspberry Pi | ||
| - | Softcomputing/ | ||
| - | IFS - Iterierte Funktionensysteme | ||
| - | Sierpinski-Dreieck | ||
| - | ..Neuronale Netze | ||
| - | Was sind neuronale Netze? | ||
| - | Hopfield-Netze | ||
| - | Grundlagen zu Hopfield-Netzen | ||
| - | Hopfield-Netz in Aktion | ||
| - | |||
| - | Praktische Informatik | ||
| - | ist geschlossen | ||
| - | |||
| - | Java | ||
| - | Java Grundlagen | ||
| - | Java Applet | ||
| - | Java & Datenbanken | ||
| - | Java & Bildverarbeitung | ||
| - | Hardware & Betriebssysteme | ||
| - | Funktionsprinzip des Computers | ||
| - | Betriebssystemarchitektur | ||
| - | Linux | ||
| - | Linux Essentials | ||
| - | Linux - Grundlagen - Konsole | ||
| - | |||
| - | Technische Informatik | ||
| - | ist geschlossen | ||
| - | Theoretische Informatik | ||
| - | ist geschlossen | ||
| - | Fächerübergeifender Unterricht | ||
| - | ist geschlossen | ||
| - | |||
| - | Physik | ||
| - | Biologie | ||
| - | |||
| - | Aufgaben & Tests | ||
| - | ist geschlossen | ||
| - | |||
| - | Aufgaben & Tests | ||
| - | |||
| - | Login Form | ||
| - | |||
| - | Benutzername | ||
| - | |||
| - | Passwort | ||
| - | |||
| - | Angemeldet bleiben | ||
| - | |||
| - | Passwort vergessen? | ||
| - | Benutzername vergessen? | ||
| - | |||
| - | Bilder Rotieren | ||
| - | |||
| - | |||
| - | Dieser Abschnitt zeigt wie sich Bilder um einen beliebigen Winkel φ (sprich PHI) rotieren lassen. | ||
| - | |||
| - | Rotation (lat. rotatio: Drehung) | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Wenn Bilder um einen Winkel φ gedreht (rotiert) werden sollen, muss beachtet werden, dass das rotierte Bild eventuell größer als das orginale Bild werden kann. | ||
| - | |||
| - | |||
| - | orginal todo gedrehtes Bild todo | ||
| - | Das orginale Bild ist hier Quadratisch todoxtodo. Das Bild wurde um 45° Grad gegen den Uhrzeigersinn gedreht. | ||
| - | Damit das komplete Bild sichtbar ist muss es jetzt todoxtodo groß sein. | ||
| - | |||
| - | |||
| - | |||
| - | Wenn Bilder gedreht werden, ist das Drehzentrum in der Regel der Mittelpunkt des Bildes | ||
| - | Der wichtgste Parameter bei der Rotation ist der Drehwinkel φ. Die Drehung erfolgt gegen den Uhrzeigersinn | ||
| - | In Java werden die Drehwinkel nicht in Grad, sondern in Rad angegeben. Es gilt 360° = 2 Π rad. Winkel werden also nicht im Gradmaß, sondern im Bogenmaß verwendet. | ||
| - | |||
| - | |||
| - | Für die Umrechnung vom Gradmaß in das Bogenmaß gilt die Beziehung: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Die Transformationsgleichung für die Rotation | ||
| - | |||
| - | Bei der Rotation wird jeder Bildpunkt P(x|y) des Orginalbildes in einen neuen Bildpunkt P´(x|y) überführt. | ||
| - | |||
| - | mit altem Bildpunkt P( px | py ) bezeichnen wir die Bildpunkte des orginalen Bildes. | ||
| - | mit neuem Bildpunkt P' ( p´x | p´y ) werden die transformierten Bildpunkte bezeichnet (P´ lies P Strich). | ||
| - | |||
| - | |||
| - | Gesucht ist eine Transformation, | ||
| - | |||
| - | neuer Bildpunkt = Transformation R(φ) · alter Bildpunkt | ||
| - | |||
| - | R(φ) ist die sogennante Transformationsmatrix um den Winkel φ | ||
| - | |||
| - | |||
| - | |||
| - | Wir werden an dieser Stelle die Transformation gleich angeben und zeigen, wie man mit ihr arbeitet. Eine Herleitung dieser Gleichungen ist weiter unten angegeben. | ||
| - | Die gesuchten Transformationgleichungen sind: | ||
| - | |||
| - | |||
| - | p´x = cos(φ) · px - sin(φ) · py | ||
| - | |||
| - | p´y = sin(φ) · px + cos(φ) · py | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Wie lauten die Koordinaten des neuen Bildpunktes bei einer Drehung um 40°, wenn der alte Bildpunkt P(10,30) ist? | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Für den Sinus und Cosinus ergibt sich: | ||
| - | |||
| - | sin(40°)=0, | ||
| - | |||
| - | cos(40°)=0.766 | ||
| - | |||
| - | Eingesetzt in die Transformationsformeln ergibt sich: | ||
| - | |||
| - | px´ = 0.766·10 - 0,643·30 = -11,63 | ||
| - | |||
| - | py´ = 0,643·10 + 0,766·30 = 29,41 | ||
| - | |||
| - | Die neuen Koordinaten sind damit P´( -11,63 | 29,41 ). | ||
| - | |||
| - | |||
| - | |||
| - | Die folgende Java Methode benutzt die Java Klasse Point, um die Transformation zu berechnen. | ||
| - | |||
| - | |||
| - | 1 | ||
| - | 2 | ||
| - | 3 | ||
| - | 4 | ||
| - | 5 | ||
| - | 6 | ||
| - | 7 | ||
| - | 8 | ||
| - | 9 | ||
| - | 10 | ||
| - | 11 | ||
| - | 12 | ||
| - | |||
| - | public Point rotation(Point point, double angle){ | ||
| - | |||
| - | Point result = new Point(); | ||
| - | |||
| - | double c = Math.cos(angle); | ||
| - | double s = Math.sin(angle); | ||
| - | |||
| - | result.x = c*point.x - s*point.y; | ||
| - | result.y = s*point.x + c*point.y; | ||
| - | |||
| - | return result; | ||
| - | } | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | orginal bild rotiertes bild | ||
| - | Orginal. Das um xx Grad gedrehte Bild. | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Herleitung der Transformationsgleichung: | ||
| - | |||
| Wir leiten jetzt die im vorherigen Abschnitt angegeben Transformationsgleichungen her. | Wir leiten jetzt die im vorherigen Abschnitt angegeben Transformationsgleichungen her. | ||
| - | Voraussetzungen | + | ==== Voraussetzungen | 
| - | Damit die Herleitung nachvollzogen werden kann, werden lediglich die Additionstheoreme für Sinus und Kosinus benötigt. | ||
| - | Sie lauten: | ||
| - | cos(φ + α ) = cos(φ)·cos(α) - sin(φ)·sin(α) | + | Damit die Herleitung nachvollzogen werden kann, werden lediglich die Additionstheoreme für Sinus und Kosinus benötigt. | 
| - | sin(φ + α ) = sin(φ)·cos(α) + cos(φ)·sin(α) | ||
| + | * cos(φ + α ) = cos(φ)·cos(α) - sin(φ)·sin(α) | ||
| + | * sin(φ + α )  = sin(φ)·cos(α) + cos(φ)·sin(α) | ||
| - | + | Eine einfache Herleitung dieser Formel kann mit Hilfe der komplexen Zahlen (Eulerformel) erfolgen. Für unsere Zwecke ist es | |
| - | Eine einfache Herleitung dieser Formel kann mit Hilfe der komplexen Zahlen (Eulerformel) erfolgen. Für unsere Zwecke ist es ausreichend, | + | |
| ==== Herleitung ==== | ==== Herleitung ==== | ||
| + | |{{: | ||
| + | |Der rote Punkt wird bei einer Drehung um den Winkel φ in den blauen Punkt überführt (transformiert). |Die oben stehenden Formeln lassen sich direkt aus dem Bild ablesen. \\ **Schauen Sie sich beides solange an, bis ihnen das gelingt!** | | ||
| + | |< | ||
| + | sin(φ+α) bzw. cos(φ+α) durch ihre rechten Seiten. \\ \\ \\ \\ Der Radius r kürzt sich heraus.</ | ||
| + | | Damit sind die oben angegebenen Transformationsgleichungen gefunden. :-) || | ||
bilder_rotieren.1705749831.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                