Úlohy 1. cvičení: Matlab; Jasové transformace

  1. Pro experimenty můžete použít připravenou fotografii. Můžete přirozeně použít i nějakou vlastní. Uvažujeme 8-bitový šedotónový obraz, načítejte pomocí standardní funkce imread.

  2. Napište funkci [q01,q99] = hist_and_quantiles(I), kde vstupní parameter I je matice s obrazem, a výstupní parametry q01,q99 jsou 1% a 99% kvantily intenzit v obraze. Funkce také musí zobrazit histogram jasových hodnot pomocí Matlab funkce bar. [0.5 bodu]

  3. Implementujte po částech lineární transformační funkci Iout = jastr_lin(I,a,b,c,d) – byla popsána v návodu. Napište funkci maximálně obecně tak, aby fungovala pro libovolné parametry. Tedy například i pro c>d. Zkuste si vaši funkci použít pro konverzi obrázku na negativ. Funkce by měla sama kontrolovat přípustnost parametrů a v případě chyby zobrazit smysluplné hlášení. Při testování můžete také vhodně použít kvantily vpočtené funkcí hist_and_quantiles. Výstupní obraz Iout musí mít stejný rozměr a být stejného typu jako obraz vstupní. [2 bodu]

  4. Pokud napíšete výše požadovanou funkci jastr_lin bez jediného cyklu pomocí maticových a vektorových operací (google: Matlab code vectorization). Implementujte tak aby komplexita byla úměrná počtu jasových hodnot, nikoli počtu pixelů v obraze. Náleží vám dalších [0.5 bodu]

  5. Bonusová úloha: implementujte ekvalizaci histogramu Iout = jastr_ekv(I) podle definice z přednášky, aplikujte na I. Opět, vstupní i výstupní obrázek musí mít stejný rozměr i datový typ. [0.5 bodu]

Odevzdáváte tedy funkce (soubory): hist_and_quantiles.m, jastr_lin.m a případně bonusovou funkci jastr_ekv.m. Pokud tyto funkce případně vyžadují ještě další vaši funkci, přibalte ji také.

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