Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
mgr-szz:in-gra:7-gra [2013/06/07 18:21] csilla8852 |
mgr-szz:in-gra:7-gra [2020/04/12 16:56] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ===== Zadání ===== | ||
+ | Zpracování rastrového obrazu. Histogram, ekvalizace podle histogramu. Prahování, redukce úrovní jasu (barev). Lineární a nelineární filtry. Detekce hran. Diskrétní Fourierova transformace při úpravách obrazu. Geometrické transformace obrazu, filtrování, převzorkování, vyhlazování. (PA010, PA171) | ||
+ | ===== Rastrový obraz ===== | ||
+ | Rastrový obraz je matice n x m pixelů (1 bit -> černobílý, monochromatický). | ||
+ | * indexový mód - hodnota pixelu je ukazatel do tabulky - barevné palety (color palette), např. gray scale | ||
+ | * true color, static gray - pixel obsahuje přímo hodnotu intenzity | ||
+ | * direct color - pixel ukazuje do 3 palet (R, G, B) | ||
+ | |||
+ | ===== Histogram ===== | ||
+ | Histogram kvantifikuje množství a frekvenci barev obsažených v obraze, tj. hodnota histogramu H pro index i odpovídá počtu pixelů v obraze, které mají intenzitu i. (Šedotónní obraz má 1 histogram, barevný 3) | ||
+ | Bílý bod je nejsvětlejší bod v histogramu, černý bod je nejtmavší. | ||
+ | Poznámka: Při fotografování -> technicky dobrý obraz využívá celou škálu intenzit. | ||
+ | |||
+ | ===== Změny histogramu ===== | ||
+ | |||
+ | Zvýšení/snížení jasu, změny kontrastu - pomocí korekční křivky přímo na histogramu. | ||
+ | |||
+ | ==== Ekvalizace histogramu ==== | ||
+ | Je to vyrovnání, změna jasu. Cílem je najít mapovací funkci, která rozloží hodnoty histogramu rovnoměrně. Ideálně histogram obsahuje všechny hodnoty zastoupené stejnou četností d = (n * m)/max, kde max je maximální intenzita pixelů v obraze s rozlišením n x m. Lze provádět i lokálně (např. v astronomii). | ||
+ | |||
+ | === Ekvalizace v barevném prostoru === | ||
+ | Buď se provádí na každém barevném kanálu odděleně, nebo se obraz převede do jiného barevného prostoru, např. YIQ. Použití: fotografie proti světlu nebo v šeru. | ||
+ | |||
+ | ==== Prahování (Thresholding) ==== | ||
+ | Jedna z metod binární segmentace\\ | ||
+ | Rozdělení jasové složky na 2 části a nahrazení jedinou hodnotou: | ||
+ | {{:mgr-szz:in-gra:threshold.png|}} | ||
+ | kde T je práh (nejčastěji je vhodné zvolit medián nebo 50 procent šedé). Prahováním se obraz (f) převede do binární reprezentace (g). | ||
+ | Ohraničené prahování: | ||
+ | i_n = | ||
+ | i pro 0 <= i < D | ||
+ | L pro D <= i < T | ||
+ | H pro T <= i < U | ||
+ | i pro U <= i <= max | ||
+ | |||
+ | Dělení: | ||
+ | * globální | ||
+ | * lokální | ||
+ | * dynamické/adaptivní | ||
+ | |||
+ | Jak najít vhodný práh automaticky? | ||
+ | * V bimodálním histogramu (2 lokální maxima): | ||
+ | {{:mgr-szz:in-gra:prah1.png|}} | ||
+ | * V unimodálním histogramu: | ||
+ | {{:mgr-szz:in-gra:prah2.png|}} | ||
+ | |||
+ | ==== Gama korekce ==== | ||
+ | CRT monitory -> nelineární časová odezva, ovlivňuje dithering | ||
+ | i' = i^(1/gamma), gamma = 2.5 +- 0.3 (závislá na typu obrazovky) | ||
+ | |||
+ | ===== Lineární a nelineární filtry ===== | ||
+ | Šum je nová informace, která byla k původní přidána pořizovacím zařízením nebo během transportu (aditivní vs. multiplikativní). Druh šumu se určuje podle frekvenční charakteristiky po Fourierově transformace. Bílý šum má frekvenční spektrum dokonale vyrovnané - matematická abstrakce | ||
+ | Typy: | ||
+ | * Poissonův (photon-shot noise) | ||
+ | * Aditivní - g=f+n, kde f je originální funkce, n šum | ||
+ | * Impulsní - př. sůl a pepř | ||
+ | {{:mgr-szz:in-gra:saltandpeppernoise.jpg|}} | ||
+ | |||
+ | |||
+ | ==== Odstranění šumu (Filtrace) ==== | ||
+ | Za šum jsou považovány velké změny intenzit v sousedících pixelů. Potlačí se buď konvolucí (lineární) nebo lokální statiskitou okolí pixelu (nelineární). | ||
+ | |||
+ | === Nelineární filtry === | ||
+ | |||
+ | Lokální statistika okolí pixelu | ||
+ | {{:mgr-szz:in-gra:lin_filter.png|}} | ||
+ | |||
+ | == Medián filter == | ||
+ | Není konvolucí! Vhodné pro odstranění impulsního šumu, avšak narušuje tenké čáry. Okolí nemusí být čtvercové. | ||
+ | {{:mgr-szz:in-gra:med.png|}} | ||
+ | y(i) = med(x_i-k, ... x_i, ... x_i+k) | ||
+ | |||
+ | Jinak: | ||
+ | Pro všechny pixely [i, j] v obrazu A | ||
+ | 1. Načti body z intervalu [i-k, j-k][i+k, j+k] do pole M délky l = (2k+1)^2 | ||
+ | 2. Seřaď pole M | ||
+ | 3. Výstupní obraz B[i,j] = M[(l-1)/2] | ||
+ | |||
+ | == Max filter == | ||
+ | y(i) = x(n) | ||
+ | |||
+ | == Min filter == | ||
+ | y(i) = x(1) | ||
+ | |||
+ | == Alpha trimmed mean filter == | ||
+ | {{:mgr-szz:in-gra:alphafilter.png|}} | ||
+ | |||
+ | |||
+ | === Lineární filtry === | ||
+ | |||
+ | == Konvoluce == | ||
+ | {{:mgr-szz:in-gra:convolution0.png|}} | ||
+ | {{:mgr-szz:in-gra:convolution.png|}} | ||
+ | g, h - konvoluční jádro (okno, které se posouvá po obraze) | ||
+ | |||
+ | Vlastnosti konvoluce: | ||
+ | (f*g)(i) = (g*f)(i) | ||
+ | ( (f*g)*h )(i) = ( f*(g*h) )(i) | ||
+ | (kernel separability) g je separabilní, pokud platí g = g_row * g_col^T | ||
+ | Konvoluce s 2D jádrem O(n²), konvoluce s 2 1D jádrami O(n). | ||
+ | |||
+ | Konvoluční teorém: | ||
+ | F(f*g) = F(f).F(g) | ||
+ | F(f.g) = F(f)*F(g) | ||
+ | F - Fourierova transformace | ||
+ | f, g - obrázky | ||
+ | |||
+ | == Obyčejné průměrování == | ||
+ | {{:mgr-szz:in-gra:ones.png|}} | ||
+ | |||
+ | Filtrace pomocí obyčejného průměrování ve Fourierově doméně odpovídá násobení funkcí, která odstraní frekvence vyšší než určitá hodnota (odřezání vysokých frekvencí - low-pass filtering, potlačení s váhou). | ||
+ | * Ideal Low-Pass Filter: H(u,v) = | ||
+ | 1 pro √(u²+v²) ≤ D0, | ||
+ | 0 pro √(u²+v²) > D0, | ||
+ | jedná se o válec s poloměrem D0 a výškou 1. | ||
+ | |||
+ | Ostření obrazu ve frekvennční doméně -> high-pass filtering | ||
+ | * Ideal High Pass Filter: H(u,v) = | ||
+ | 0 pro √(u²+v²) < D0, | ||
+ | 1 pro √(u²+v²) >= D0 | ||
+ | |||
+ | == Gaussův filter == | ||
+ | {{:mgr-szz:in-gra:gauss.png|}} | ||
+ | |||
+ | ===== Detekce hran ===== | ||
+ | Hrana (edge) v diskrétním obraze je výrazná změna intenzit sousedních pixelů, vysokofrekvenční informace. Je určena gradientem (vektor ukazující směr největšího přírůstku funkce): | ||
+ | ∇f(x,y) = (∂f(x,y)/∂x, ∂f(x,y)/∂y), velikost: |∇f(x,y)| = √(∂f(x,y)/∂x)² + (∂f(x,y)/∂y)² | ||
+ | |||
+ | |||
+ | ==== Založené na první derivaci ==== | ||
+ | |||
+ | === Robertsův operátor === | ||
+ | Detekuje především hrany se sklonem 45°. Možno rozdělit na 2 složky detekující hrany v na sebe kolmých směrech. | ||
+ | {{:mgr-szz:in-gra:roberts.png|}} | ||
+ | |||
+ | Aproximuje velikost gradientu (první derivace): | ||
+ | {{:mgr-szz:in-gra:roberts2.png|}} | ||
+ | |||
+ | === Sobelův operátor === | ||
+ | Aproximuje velikost gradientu (první derivace): | ||
+ | {{:mgr-szz:in-gra:sobel2.png|}} | ||
+ | {{:mgr-szz:in-gra:sobel.png|}} | ||
+ | |||
+ | === Canny hranový detektor === | ||
+ | Požadavky: | ||
+ | * Minimální počet chyb (musí být detekovány všechny hrany, nesmí být detekována místa, která hranami nejsou) | ||
+ | * Přesnost (poloha hrany musí být určena co nejpřesněji) | ||
+ | * Jednoznačnost (odezva na jednu hranu musí být jedna, nesmí docházet ke zdvojení) | ||
+ | |||
+ | Stručný postup: | ||
+ | - Eliminace šumu (Gaussovým filtrem) | ||
+ | - Určení gradientu (první derivace) | ||
+ | - Nalezení lokálních maxim (thinning) | ||
+ | - Eliminace nevýznamných hran (thresholding) | ||
+ | |||
+ | {{:mgr-szz:in-gra:canny.png|}} | ||
+ | |||
+ | Neprodukuje spojité hrany. | ||
+ | |||
+ | === Rothwell hranový detektor === | ||
+ | Stejný jako Canny, jenom krok thinning je modifikován, aby hrany byly spojité. Topologický přístup. | ||
+ | |||
+ | |||
+ | ==== Založené na druhé derivaci ==== | ||
+ | |||
+ | Hrany se nacházejí v nulových bodech (zero crossings) druhé derivace, to jsou maxima první d | ||
+ | erivace. | ||
+ | |||
+ | === Laplaceův operátor (Δ) === | ||
+ | Aproximuje druhou derivaci funkce. | ||
+ | {{:mgr-szz:in-gra:laplace.png|}} | ||
+ | |||
+ | Nevýhody: | ||
+ | * detekuje nejen maxima, ale i minima | ||
+ | * citlivý na šum | ||
+ | * nedetekuje orientaci hrany | ||
+ | Výhody: | ||
+ | * produkuje spojité hrany | ||
+ | * invariantní k otáčení o násobky 45° | ||
+ | * orientačně nezávislý | ||
+ | |||
+ | == Laplacian of Gaussian (LoG) == | ||
+ | 5 x 5 LoG: | ||
+ | {{:mgr-szz:in-gra:log_mask.png|}} | ||
+ | |||
+ | "Mexican hat": | ||
+ | {{:mgr-szz:in-gra:log_mexican_hut.png|}} | ||
+ | |||
+ | == Difference of Gaussians (DoG) == | ||
+ | Aproximuje LoG. | ||
+ | {{:mgr-szz:in-gra:dog.png|}} | ||
+ | Ideální poměr: σ1/σ2 = 1.6 | ||
+ | |||
+ | |||
+ | ==== (Template based edge detection) ==== | ||
+ | |||
+ | === Lineární === | ||
+ | {{:mgr-szz:in-gra:template_lin.png|}} | ||
+ | |||
+ | === Nelineární === | ||
+ | == Goodness-Of-Fit Test Based Edge De | ||
+ | tection == | ||
+ | {{:mgr-szz:in-gra:template_nelin.png|}} | ||
+ | |||
+ | ===== Diskrétní transformace ===== | ||
+ | |||
+ | ==== Fourierova transformace ==== | ||
+ | Slouží k převodu obrazu (z prostorové domény, I) do duálního prostoru (frekvenční domény, F) a zpět. Frekvenčná doména je obecně složením nekonečně mnoha sinusových signálů s různou amplitudou, které jsou různě fázově posunuté. | ||
+ | |||
+ | {{:mgr-szz:in-gra:ft1.png|}} | ||
+ | {{:mgr-szz:in-gra:ft2d.png|}} | ||
+ | k=0...N-1, n=0...N-1 | ||
+ | komplexní jednotka: i = √(-1) | ||
+ | Eulerova formule: e^(±i2πux) = cos(2πux) ± i sin(2πux) | ||
+ | Mějme bod o souřadnici u = Re(u) + i Im(u). Amplitudové spektrum funkce F(u) je |F(u)| = √(Re²(u) + Im²(u)), fázové spektrum φ(u) = atan(Re(u)/Im(u)). | ||
+ | {{:mgr-szz:in-gra:ft.png|}} | ||
+ | |||
+ | dualita: F ⇔ I | ||
+ | {{:mgr-szz:in-gra:ft2.png|}} | ||
+ | |||
+ | |||
+ | ==== FFT (Fast Fourier Transform) ==== | ||
+ | |||
+ | Důležité vlastnosti Fourierova transformace: | ||
+ | 1. Roztažení (stretch) funkce v prostorové doméně odpovídá opakování funkce (repetition) ve frekvenční doméně: | ||
+ | {{:mgr-szz:in-gra:ft3.png|}} | ||
+ | 2. Posun (shift) v prostorové doméně ovlivňuje jenom fázu: | ||
+ | {{:mgr-szz:in-gra:ft6.png|}} | ||
+ | |||
+ | {{:mgr-szz:in-gra:ft4.png|}} | ||
+ | {{:mgr-szz:in-gra:ft5.png|}} | ||
+ | |||
+ | Proveďme dělení dokud je možné, tj. dostaneme se k signálu délky jednoho bodu, který je stejný bod i ve frekvenční doméně: | ||
+ | {{:mgr-szz:in-gra:fft.png|}} | ||
+ | |||
+ | ====== Geometrické transformace obrazu ====== | ||
+ | Chceme transformovat vstupní obraz A na výstupní B. Geometrická transformace obrazu složeného z bodů [x,y] je funkce T(u,v) = [x(u,v), y(u,v)]. | ||
+ | * Dopředné mapování - procházíme pixely A, hledáme jejich umístění v obraze B (oblast) | ||
+ | * Zpětné mapování - procházíme pixely B, hledáme odpovídající oblasti v A | ||
+ | Separabilita: | ||
+ | Transformace je separabilní, pokud ji lze zapsat ve tvaru T(u,v) = F(u, G(v)). F a G jsou funkce jedné proměnné. Př. Fourierova transformace. | ||
+ | |||
+ | ===== Vzorkování (Sampling) ===== | ||
+ | |||
+ | Comb function (||| - shah): | ||
+ | {{:mgr-szz:in-gra:shah.png|}} | ||
+ | {{:mgr-szz:in-gra:shah2.png|}} | ||
+ | |||
+ | Vzorkování je proces převodu spojité funkce na diskrétní. | ||
+ | {{:mgr-szz:in-gra:sampling.png|}} | ||
+ | |||
+ | {{:mgr-szz:in-gra:sampling2.png|}} | ||
+ | == Nyquist-Shannon theorem == | ||
+ | Spojitou funkci je možné úplně zrekonstruovat pouze v případě, že signál je frekvenčně omezený (bandlimited) a vzorkovací frekvence je dvakrát větší než maximální frekvence signálu. | ||
+ | Při nesplnění těchto vlastností vzniká alias. | ||
+ | {{:mgr-szz:in-gra:sampling3.png|}} | ||
+ | |||
+ | ===== Rekonstrukce (Reconstruction) ===== | ||
+ | Inverzní proces ke vzorkování, konvoluce s low-pass filterem. Zrekonstuuje originální spojitý signál z diskrétních vzorků. | ||
+ | Rekonstrukční filtry: | ||
+ | * box - nejbližší soused | ||
+ | * tent - lineární interpolace | ||
+ | * kubický B-spline - kubická polynomiální interpolace | ||
+ | * Gaussian | ||
+ | * sinc | ||
+ | * Lanczos - omezený sinc | ||
+ | Plocha pod filtrem musí být jednotková, tj. ∫ h(t) dt = 1, kde h je rekonstrukční filter. | ||
+ | |||
+ | ===== Převzorkování (Resampling) ===== | ||
+ | {{:mgr-szz:in-gra:reconstruction.png|}} | ||
+ | |||
+ | ===== Lineární geometrické transformace ===== | ||
+ | |||
+ | == Posunutí (Translation) == | ||
+ | {{:mgr-szz:in-gra:translation.png|}} | ||
+ | == Otáčení (Rotation) == | ||
+ | {{:mgr-szz:in-gra:rotation.png|}} (clockwise) | ||
+ | == Změna měřítka (Scale) == | ||
+ | {{:mgr-szz:in-gra:scaling.png|}} | ||
+ | == Zkosení (Shear) == | ||
+ | {{:mgr-szz:in-gra:shear.png|}} | ||
+ | |||
+ | ===== Nelineární geometrické transformace ===== | ||
+ | |||
+ | == Warping == | ||
+ | viz otázku č. 13 | ||
+ | |||
+ | ====== Zdroj ====== | ||
+ | Žára, Beneš, Sochor, Felkel. Moderní počítačová grafika. Computer Press, Brno, 2004. ISBN: 80-251-0454-0 | ||
+ | David Svoboda : PA171 - Digital image filtering, slajdy. 2012. Fakulta informatiky, Masarykova Univerzita. Brno. |