Váš kód bude otestován automaticky na sadě obrazů, které nebudete mít při vývoji k dispozici. Je proto důležité:
Implementujte funkci theta = estimaterotation(I),
kde I je dvourozměrná matice typu uint8
reprezentující šedotónový obraz s výraznou pravoúhlou strukturou,
vychýlenou max. o ±40 stupňů od os obrazu.
Výstup theta udává, o jaký úhel (ve stupních v kladném
směru x→y) je nutné fotografii otočit, aby struktura souhlasila
s osami obrazu. Např. pro tuto fotografii
theta = -10.
[1.5 bodu + 0.5 bonus dle počtu správně určených obrazů]
Implementujte funkci R = rotationmatrix(theta),
která vytvoří rotační matici R 2×2
pro úhel theta stupňů.
[0.5 bodu]
Implementujte funkci Ir = rotateimage(I,R), která
provede rotaci obrazu zadanou rotační maticí R
a vrátí výsledek jako dvourozměrnou matici Ir
typu uint8. Nesmí dojít k oříznutí obrazu ani
přidání zbytečných okrajů – vypočtěte přesně velikost
vzniklého obrazu. Očekáváme vaši vlastní implementaci metody
nearest neighbor, nepoužívejte funkce interp2,
imrotate, imtransform nebo tformarray.
[2 body]
Každý krok je hodnocen nezávisle, tj. i pokud váš algoritmus selže v prvním nebo druhém kroku, dostanete jako vstup do následujícího kroku správné hodnoty. Vyhodnocení uvidíte a budete mít možnost nahrát opravenou verzi. Nedostanete víc bodů, než kolik vám sdělí automatické vyhodnocení. Pokud si myslíte, že nefunguje správně, ozvěte se cvičícím před vypršením termínu odevzdání.