Úlohy 3. cvičení: Geometrické transformace – rotace

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é:

  1. 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ů]

  2. Implementujte funkci R = rotationmatrix(theta), která vytvoří rotační matici R 2×2 pro úhel theta stupňů. [0.5 bodu]

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

Doprovodný text


[ ZSO cvičení | Za stránku zodpovědný: Tomáš Svoboda ]