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í.