"In dieser Aufgabe geht es darum Bilder um Ihren Mittelpunkt entgegen dem Uhrzeigersinn zu rotieren.\n",
"Beantworten Sie dafür die mit `#TODO` gekennzeichneten Fragen und implementieren Sie die mit `#TODO` gekennzeichneten Codestellen.\n",
"Beachten Sie ggf. die Hinweise unten.\n",
"\n",
"Beschreiben Sie die Schritte um ein Bild im Bildmittelpunkt um den Winkel $\\alpha$ entgegen dem Uhrzeigersinn zu drehen. Die Rotation eines Punktes $\\begin{pmatrix} j \\\\ k \\end{pmatrix}$ um den Winkel $\\alpha$ ergibt sich mittels der Rotationsmatrix wie folgt:\n",
"Die Rotation eines Punktes $\\begin{pmatrix} j \\\\ k \\end{pmatrix}$ um den Winkel $\\alpha$ ergibt sich mittels der Rotationsmatrix wie folgt:\n",
"(Tipp: Gehen Sie so ähnlich wie bei der Größennormierung vor. Was passiert mit Punkten die nach der Rotation außerhalb des neuen Bildes liegen?)\n",
"1. Was für Besonderheiten gibt es bei der Rotation von Bildern im Gegensatz zur Größennormierung und wie kann man damit umgehen?\n",
"\n",
"## Teil 2\n",
"`#TODO`\n",
"\n",
"2. Implementieren Sie einen Algorithmus für die Rotation eines Bildes um dessen Mittelpunkt an der mit `#TODO` gekennzeichneten Codestelle. Beachten Sie dabei, dass der Winkel als Bogenmaß übergeben wird und dass es sich bei dem Bild um ein Grauwertbild handelt."
" # Der Typ der Bilder wird hier geändert um Overflows zu vermeiden (siehe Beispiele)\n",
" img = img.astype(np.float)\n",
" result = np.zeros((img.shape[:2]), np.float)\n",
" \n",
" #TODO implementieren Sie dir Rotation\n",
" \n",
" return result.astype(np.uint8)\n",
"\n",
"Implementieren Sie den von Ihnen zuvor entwickelten Algorithmus zur Rotation eines Bildes um einen beliebigen Winkel im Bildmittelpunkt. Verwenden Sie nicht die Rotationsfunktion aus OpenCV.\n",
"Das ist so die alte Struktur. Das macht denke ich eher Sinn, wenn das getrennte Aufgaben sind und man zur Theorie erst Feedback bekommt. Das sollte besser zu nur dem zweiten praktischen Teil umformuliert werden."
"* Gehen Sie wie bei der Größennormierung vor. Projezieren Sie die Ganzzahligen Pixel des Ergebnisbildes in das Ursprungsbild und berechnen Sie die Pixelintensität über bilineare Interpolation.\n",
"* Können Pixel nach der Pojektion in die Koordinaten des Ursprungsbildes außerhalb des Bildes liegen?"
]
}
],
...
...
%% Cell type:markdown id: tags:
# Aufgabe
## Teil 1
In dieser Aufgabe geht es darum Bilder um Ihren Mittelpunkt entgegen dem Uhrzeigersinn zu rotieren.
Beantworten Sie dafür die mit `#TODO` gekennzeichneten Fragen und implementieren Sie die mit `#TODO` gekennzeichneten Codestellen.
Beachten Sie ggf. die Hinweise unten.
Beschreiben Sie die Schritte um ein Bild im Bildmittelpunkt um den Winkel $\alpha$ entgegen dem Uhrzeigersinn zu drehen. Die Rotation eines Punktes $\begin{pmatrix} j \\ k \end{pmatrix}$ um den Winkel $\alpha$ ergibt sich mittels der Rotationsmatrix wie folgt:
Die Rotation eines Punktes $\begin{pmatrix} j \\ k \end{pmatrix}$ um den Winkel $\alpha$ ergibt sich mittels der Rotationsmatrix wie folgt:
(Tipp: Gehen Sie so ähnlich wie bei der Größennormierung vor. Was passiert mit Punkten die nach der Rotation außerhalb des neuen Bildes liegen?)
1. Was für Besonderheiten gibt es bei der Rotation von Bildern im Gegensatz zur Größennormierung und wie kann man damit umgehen?
## Teil 2
`#TODO`
Implementieren Sie den von Ihnen zuvor entwickelten Algorithmus zur Rotation eines Bildes um einen beliebigen Winkel im Bildmittelpunkt. Verwenden Sie nicht die Rotationsfunktion aus OpenCV.
2.Implementieren Sie einen Algorithmus für die Rotation eines Bildes um dessen Mittelpunkt an der mit `#TODO` gekennzeichneten Codestelle. Beachten Sie dabei, dass der Winkel als Bogenmaß übergeben wird und dass es sich bei dem Bild um ein Grauwertbild handelt.
# TODO:
%% Cell type:code id: tags:
Das ist so die alte Struktur. Das macht denke ich eher Sinn, wenn das getrennte Aufgaben sind und man zur Theorie erst Feedback bekommt. Das sollte besser zu nur dem zweiten praktischen Teil umformuliert werden.
``` python
importmath
importos
importrandom
importcv2ascv
importnumpyasnp
%matplotlibinline
frommatplotlibimportpyplotasplt
defrotate(img,alpha):
# Der Typ der Bilder wird hier geändert um Overflows zu vermeiden (siehe Beispiele)
* Gehen Sie wie bei der Größennormierung vor. Projezieren Sie die Ganzzahligen Pixel des Ergebnisbildes in das Ursprungsbild und berechnen Sie die Pixelintensität über bilineare Interpolation.
* Können Pixel nach der Pojektion in die Koordinaten des Ursprungsbildes außerhalb des Bildes liegen?