[ hlavní stránka cvičení | Matlab | jasové transformace | samostatná práce ]

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

Cílem prvního cvičení je seznámení s prostředím MATLAB a procvičení základních operací s obrazem na příkladu jasových transformací.

Seznámení s Matlabem

Spouštění Matlabu v počítačových laboratořích a doma

V laboratořích K132, K220 a G3 by měl být správný Matlab 7 na ploše. Pokud je váš domácí počítač připojen k Internetu, můžete si Matlab (včetně toolboxů) nainstalovat i doma. Matlab běží lokálně na vašem stroji a ověřuje si licenci na licenčních serverech.

Tutoriály, návody

Na webu lze najít mnoho tutoriálů a návodů. Z mnohých vybíráme:

Vzorové kódy, obrázky a funkce

Během cvičeních se vám budou hodit pomocné funkceobrázky. Doporučujeme stáhnout do vašeho pracovního adresáře, např do podadresářů Codes, Images. Spusťte Matlab. Přejděte do vašeho adresáře

>> cd jmeno_disku:/jmeno_adresare

Přidejte cesty pomocí příkazu

>> addpath ./Codes ./Images

Nyní bude Matlab vaše funkce a obrázky "znát", o čemž se snadno přesvědčíte příkazy:

>> help showdata
>> im = imread('Kravy_na_podzim.jpg');

Pro rychlejší pochopení základních operací můžete použít vzorové kódy, která jsme pro vás připravili. Demostrují některé základní operace s obrazy v Matlabu. Doporučujeme stáhnout a experimentovat pro lepší pochopení. Pokud vám nebude něco jasné, použijte nejdříve komfortní Matlab help doc jmeno_funkce, pak se ptejte cvičících.

Jasové transformace

Portret se spatnou tonalitou

 

Tento obrázek má malý kontrast, tj. malý rozdíl intenzit mezi světlými a tmavými oblastmi. Více podrobností zjistíme z jeho histogramu. V této úloze se naučíme, jak kvalitu takových obrázků vylepšovat. Pokud nevíte, jak na to, přečtěte si stručný úvod do jasových transformací. Můžete se podívat též na ukázkový skript a jeho výstup.

Poznámka: nízký kontrast neznamená automaticky špatnou fotografii, pokud je záměrem fotografa, hovoříme o low-key (chybí světlé odstíny) nebo high-key (chybí tmavé odstíny) fotografii.

Samostatná práce

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


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