====== Transformace obrazu ====== Podle lokality: * **Bodové** – výstupní hodnota na určitých souřadnicích je závislá jen na vstupní hodnotě o stejných souřadnicích * **Lokální** – výstupní hodnota na určitých souřadnicích je závislá na vstupních hodnotách okolí bodu o stejných souřadnicích * **Globální** – výstupní hodnota na určitých souřadnicích je závislá na všech hodnotách vstupního obrazu Podle typu: * **Barevné** * **Geometrické** * **Frekvenční** (DFT, DCT, Gabor) * **Integrální** (vlnková) Důvody transformace: korekce obrazu, extrakce informací, ... ===== Bodové transformace ===== ==== Jasové operace ==== * Slouží například pro zvýšení kontrastu, negativ * Intenzita (jas) odpovídá odstínu šedé barvy //I// = 0,299//R// + 0,587//G// + 0,114//B// ==== Prahování ==== * Vstupem při prahování může být barevný obraz či obraz s odstíny šedé * Výsledkem je většinou binární obraz reprezentující hodnoty nad/pod zvoleným prahem ==== Nelineární transformace ==== * **Logaritmická** – Slouží pro zvyšování detailů v tmavých oblastech obrázku a snížení detailů ve světlých oblastech * **Exponenciální** – Zvyšování detailů ve světlých oblastech, snížení detailů v tmavých oblastech ===== Lokální operace ===== * Nová hodnota bodu se odhaduje z malého okolí (okno např. 3 × 3 body), problémy na okrajích obrazu – přesah masky. * Příspěvek jednotlivých bodů v okolí je vážen v lineární kombinaci koeficienty matice //h// – nazývané jako maska či konvoluční jádro. ==== 2D Konvoluce ==== [[wp>Convolution]], [[http://docs.gimp.org/en/plug-in-convmatrix.html|Convolution matrix]] ^ Rozostření ^^^ | 1 | 1 | 1 | | 1 | 1 | 1 | | 1 | 1 | 1 | ^ Doostření ^^^ | 0 | −1 | 0 | | −1 | 5 | −1 | | 0 | −1 | 0 | Výsledek se pak ještě musí normalizovat (podělit sumou matice)! ===== Globální operace ===== * Globální operace využívají informaci z celého obrazu, výsledná informace pak slouží ke změně hodnot jednotlivých bodů v obraze. * Slouží pro např. ekvalizaci histogramu, zvýraznění kontrastu, ... ==== Ekvalizace histogramu ==== **Histogram** * Jedná se o statistickou reprezentaci obrazu, která představuje graf četnosti výskytu jednotlivých barev (odstínů, intenzit ...) * Histogram je grafické znázornění vektoru s počtem složek rovným počtu možných úrovní intenzit obrazových bodů a slouží k hodnocení rozložení intenzit v digitálním obraze (posuzování kvality obrazu). **Ekvalizace histogramu** * Algoritmus, který změní rozložení intenzit v obraze tak, aby se v něm vyskytovaly pokud možno intenzity v širokém rozmezí, a to přibližně se stejnou četností. * Cílem je zvýšit kontrast úplným využitím jasové stupnice, jasově obraz normalizovat (například pro automatické srovnání) ===== Geometrické transformace ===== Geometrické operace mapují bod v obraze o souřadnicích (//x//, //y//) do výstupního obrazu na novou pozici (//x//′, //y//′) ==== Homogenní souřadnice ==== * Bežně se používají v projektivní geometrii, počítačové grafice, robotice aj. * Základní myšlenkou je reprezentovat bod ve vektorovém prostoru o jednu dimenzi větším. * Bod [//x//, //y//]//ᵀ// se v homogenních souřadnicích vyjádří ve 3D vektorovém prostoru jako [//λx//, //λy//, //λz//]//ᵀ//, kde //λ// ≠ 0. * Pro jednoduchost se používá jedno z nekonečně mnoha vyjádření [//x//, //y//, 1]//ᵀ// * Homogenní souřadnice bodu ve 3D s kartézskými souřadnicemi [//x//, //y//, //z//] je uspořádaná čtveřice [//X//, //Y//, //Z//, //w//] pro kterou platí //x// = //X//%%/%%//w//, //y// = //Y//%%/%%//w//, //z// = //Z//%%/%%//w//. ==== Afinní transformace ==== Čáry, které jsou rovné a paralelní zůstanou rovné a paralelní i po transformaci, ovšem nemusí být rovnoběžné s původními. Příklady: ^ Identita ^^^ | 1 | 0 | 0 | | 1 | 1 | 0 | | 1 | 0 | 1 | ^ Posun ^^^ | 1 | 0 | 0 | | 1 | 1 | 0 | | //xᵀ// | //yᵀ// | 1 | ^ Velikost ^^^ | //Sx// | 0 | 0 | | 1 | //Sy// | 0 | | 0 | 0 | 1 | ^ Rotace ^^^ | //cos//(//Θ//) | //sin//(//Θ//) | 0 | | −//sin//(//Θ//) | //cos//(//Θ//) | 0 | | 0 | 0 | 1 | ^ Zkosení ^^^ | 1 | //Zx// | 0 | | //Zy// | 1 | 0 | | 0 | 0 | 1 | ==== Skládání transformací ==== * Výsledná transformace vznikne skládáním násobením matic * Záleží na pořadí – součin transformačních matic není komutativní * "//V OpenGL platí, že transformace jsou na vertexy aplikovány v opačném pořadí, než jsou zavolány jejich korespondující příkazy. Jestliže například bude v programovém kódu sekvence příkazů ''glTranslatef(); glRotatef();'', ve skutečnosti bude objekt (resp. jeho vertexy) nejprve otočen a teprve poté posunut.//"((http://www.root.cz/clanky/opengl-6-vyuziti-transformacnich-matic)) ===== Frekvenční transformace ===== ==== Diskrétní Fourierova transformace ==== [[wp>Discrete Fourier transform]] Popisuje signál ve frekvenční oblasti, výsledek se nazývá spektrum\\ X(k) = \sum{n=0}{N-1}{x[n] e^{-j2\pi{nk}/{N}}}\\ //N// je počet vzorků signálu, //k// ∈ <0, //N//−1> * Srovnávání signálu s různě roztaženými komplexními exponenciálami * Pro analýzu obrazu se používá 2D DFT (série 1D) ==== Diskrétní kosinová transformace ==== [[wp>Discrete cosine transform]] * Při DFT reálného signálu vznikají komplexní koeficienty, transformace je v tomto případě redundantní (kvůli symetrii s //k// = 0), u DCT koeficienty redundantní nejsou (vhodnější pro kompresní účely) * Srovnávání signálu s různě roztaženými kosinusoidami * Výsledek je také nazýván spektrem, ovšem nikoliv symetrické (jako u DFT) * Pro analýzu obrazu se používá 2D DCT (série 1D) ==== Gaborova transformace ==== [[wp>Gabor transform]] * Využívána k extrakci příznaků (následná klasifikace, segmentace či detekce hran) * 2D Gaborova transformace udává, kolik energie nese obraz okolo daného místa na dané frekvenci v daném směru * Speciální případ krátkodobé FT * Gaborova transformace vzniká posouváním Gaussova okna při pevně zvoleném roztažení komplexní exponenciály ===== Integrální transformace ===== ==== Vlnková transformace ==== [[wp>Wavelet transform]] * Wavelet Transform umožňuje získat časově-frekvenční popis signálu. Její přirozenou aplikací je zjištění polohy a délky trvání daného jevu. * Uplatnění: extrakce příznaků, odstranění šumu nebo kompresi signálů * Může být spojitá, diskrétní, stacionární ===== Homografie ===== [[wp>Homography]] * Projektivita, kolineace, projektivní transformace * Vyjádření tramsformace mezi obrazy * Mapuje body z jednoho obrazu do druhého, vyjadřuje lineární transformaci //H// mezi obrazy. ===== Interpolační metody ===== Použití pro získání hodnoty obrazové funkce mimo naměřené diskrétní hodnoty. V případě barevného obrazu se provádí interpolace pro všechny barevné složky zvlášť. ^ [[wp>Nearest-neighbor interpolation]] ^ [[wp>Bilinear interpolation]] ^ [[wp>Bicubic interpolation]] ^ | {{http://upload.wikimedia.org/wikipedia/commons/c/c1/Nearest2DInterpolExample.png?300}} | {{http://upload.wikimedia.org/wikipedia/commons/1/16/BilinearInterpolExample.png?300}} | {{http://upload.wikimedia.org/wikipedia/commons/d/d5/BicubicInterpolationExample.png?300}} |