Cvičení 2 - Jasové transformace

A) Teoretický úvod

Jasové transformace obrazu mohou být obecně bodové, lokální a globální podle toho, jaké okolí používají pro stanovení výstupní hodnoty vyšetřovaného bodu. Globální jasová transformace znamená, že výsledná hodnota pixelu je upravena na základě analýzy celého vstupního obrazu. Příkladem může být např. globální zvýšení jasu podexponovaného snímku. Lokální jasová transformace používá pro obrazovou analýzu jen malé lokální okolí vyšetřovaného bodu (zpravidla nejbližší čtyřokolí nebo osmiokolí) a bodová jasová transformace už jen pouze tento jeden bod. Bodová jasová transformace obrazu je tedy taková transformace, u níž je hodnota výstupního obrazového bodu s danými souřadnicemi závislá pouze na obrazovém bodu se stejnými souřadnicemi ve vstupním obrazu. Tento typ jasové transformace se při zpracování obrazu využívá nejčastěji a to ve formě převodních funkcí (převodních charakteristik nebo v diskrétním pojetí vyhledávacích tabulek LUT).

Převodní funkce je monotónní transformační funkce jednoznačně určující jasovou hodnotu výstupního pixelu na základě jasové hodnoty vstupního pixelu. Základní a nejčastěji používané převodní funkce jsou graficky zobrazeny na následujícím obrázku.

Každá převodní funkce musí splňovat princip jednoznačnosti (exkluzivní implikace), tedy že pro každou vstupní hodnotu existuje právě jedna hodnota výstupní. Obráceně ale tento princip neplatí a více vstupních hodnot může být zobrazeno na jednu výstupní hodnotu (zobrazení není surjektivní). Zřejmým případem je např. prahování s jedním prahem, kdy jsou ve výstupním obrazu použity jen dvě krajní jasové hodnoty. Výpočetně lze převodní charakteristiku pro šedotónový obraz v 8 bitové hloubce implementovat jako vektor o délce 256 hodnot z intervalu <0;255>. Algoritmus pro naplnění hodnot vektoru však závisí na typu prováděné transformace a obecně může být libovolně složitý.

Jasové transformace obrazu vždy změní jeho histogram bez ohledu na to, zda jde o transformaci bodovou, lokální nebo globální. V případě prahování s jedním nebo více prahy (tzv. redukce barev) dochází např. ke vzniku čárového histogramu. Vzhledem k tomu, že vlivem špatné expozice nejsou někdy u reálných snímků v histogramu přítomny krajní hodnoty tj. tmavé a světlé jasové úrovně, provádí se saturace mezních hodnot. Z hlediska histogramu to znamená, že daná část tmavých jasových hodnot je saturována na úrovni 0 a stejná část světlých jasových hodnot na úrovni 255. Míra saturace se volí podle potřeb aplikace a zpravidla dosahuje jednotek procent (nejčastěji percentil). K implementaci se používá kumulovaný histogram, v němž se určí jasové hodnoty odpovídající zadanému procentu pixelů stejně jako p-procentní kvantil u distribuční funkce hustoty pravděpodobnosti.

B) Úkoly

  1. Sestavte funkci [J] = ImageTransformLUT(I,LUT), která realizuje transformaci vstupního obrazu I na výstupní obraz J podle převodní tabulky dané parametrem LUT. Vygenerujte převodní charakteristiky a zobrazte výsledky pro operace negace obrazu, zvýšení jasu, zvýšení kontrastu a prahování.

  2. Implementujte funkci [Q01,Q99] = ImageQuantiles(I), která pomocí kumulovaného histogramu vypočítá 1% a 99% kvantil intenzit vstupního obrazu I a následně oba kvantily zobrazí v histogramu obrazu svislými čarami. Správnost implementace ověřte na obrazu [lenaM.bmp] pomocí vhodného snížení nebo zvýšení jasu obrazu a demonstrujte rozdíly vypočítaných hodnot kvantilů vzhledem k původnímu obrazu.

  3. Proveďte jasovou korekci obrazu tak, aby kvantily q01 a q99 tvořily v novém obrazu krajní hodnoty, tj. saturujte 1% tmavých a 1% světlých odstínů.

C) Dobré vědět

  • Povolené funkce: imhist, cumsum, find, plot, line

  • Nepovolené funkce: imadjust

D) Ilustrace výsledků