Najbolj »računsko« poglavje predmeta: histogram, konvolucija, filtri, detektorji robov.
Daje izpitne naloge 4, 5, 6 in 7 — 80 od 500 točk, največ od vseh poglavij.
Cilj predobdelave razumevanje
Predobdelava se izvaja na najnižjem nivoju abstrakcije slike (tj. nivoju pikslov). Cilj:
popravljanje določenih degradacij v sliki (npr. neenakomerna osvetlitev scene, slab kontrast, šum, geometrijske deformacije);
poudarjanje določenih značilnosti slik, ki so pomembne za nadaljnjo obdelavo (npr. poudarjanje robov/oglišč).
Večjo učinkovitost dosežemo, če imamo vnaprejšnje znanje o sliki in tipu degradacije v sliki.
Spreminjanje kontrasta ključno
Najpreprostejše spreminjanje kontrasta je oblike $g' = \mathcal{F}(g)$, kjer je
$g$ — stara sivina piksla $p$, tj. $g = I(p)$;
$g'$ — nova sivina piksla $p$;
$\mathcal{F}$ — poljubna funkcija.
Funkcijo $\mathcal{F}$ imenujemo tudi točkovna operacija oz. operacija piksel-v-piksel.
V splošnem ne obstaja inverz funkcije $\mathcal{F}$ — informacija se lahko nepovratno izgubi.
A. Linearizacija sivin
na listu
Linearizacija
$$g' = \frac{Q}{\max - \min}(g - \min)$$
$\max$ in $\min$ — največja in najmanjša sivina, ki jo najdemo v sliki $I$;
$Q$ — teoretično maksimalna sivina po želeni transformaciji (npr. 15, 255, 4095);
linearizacija enakomerno raztegne sivine skozi celoten pas sivin (npr. na območje [0, 255]).
B. Histogram sivin
Histogram daje preprost pregled nad porazdelitvijo sivin v sliki. Je vektor, ki ima toliko
elementov, kot je teoretično maksimalna kontrastna ločljivost v sliki ($Q + 1$):
na listu
Histogram sivin
$$h = [h_0, h_1, \dots, h_Q]$$
kjer je $h_i$ število pikslov v sliki, ki imajo sivino enako $i$. Histograme prikazujemo kot
stolpične grafe.
Če je v histogramu težišče (večina pikslov) na levi strani (nizke sivine), je slika najverjetneje pretemna (in obratno).
V histogram sivin ni zajeta prostorska informacija (položaj piksla) — vsebinsko popolnoma
različni sliki lahko imata enak histogram sivin.
C. Izenačitev histograma naloga 4
Je postopek za avtomatsko spreminjanje kontrasta. Izboljša kontrast za sivine, ki so blizu
maksimumov v histogramu, ter zmanjša kontrast za sivine blizu minimumov.
na listu
Izenačitev histograma
$$g' = \frac{Q}{MN} \sum_{i=0}^{g} h_i$$
$MN$ — število pikslov v sliki;
$g'$ — nova sivina;
$h_i$ — $i$-ti element histograma.
Zgolj, če so vse sivine v sliki zastopane z istim deležem, je postopek izenačitve histograma
enak linearizaciji.
⚠️ Tri pasti pri nalogi 4
Vsota teče do vključno opazovane sivine $g$ — torej kumulativa, ne posamezen $h_g$.
$MN$ je število pikslov cele slike (pri 5×4 sliki je 20), ne število različnih sivin.
$Q$ je ciljna maksimalna sivina (naloga jo pove, npr. 255), ne največja sivina vhodne slike.
D. Prenosne funkcije sivin
Spreminjanje kontrasta definiramo s funkcijo v grafu:
na abscisi so vhodne vrednosti oz. sivine $g$ pred spreminjanjem;
na ordinati so izhodne vrednosti na intervalu $[0, 1]$;
novo sivino $g'$ dobimo tako, da izhodno vrednost pomnožimo z $Q$;
prenosne funkcije so lahko analitične (npr. $g' = \frac{1}{16}\sqrt{g}$) ali numerične.
Uporaba grafa: izberemo vhodno vrednost → odčitamo izhodno vrednost funkcije → izhodno vrednost pomnožimo z $Q$.
Izhodne vrednosti, ki so nad simetralo, pomenijo, da smo sliko posvetlili (in obratno).
Originalne prosojnice (str. 35–39)
Lokalne operacije oz. filtriranje slik ključnonaloge 5–7
Filter je sistem. Obnašanje diskretnega sistema je popolnoma opredeljeno z enotinim odzivom $H$
(ob pogoju, da je sistem linearen in pomično neodvisen — velja za večino realnih sistemov).
Filtriranje slik shematsko opredelimo tako, da novo vrednost piksla $p$ določimo kot funkcijo $\mathcal{F}$,
ki operira nad pikslom $p$ in njegovo okolico $O$:
Filtriranje
$$I'(p) = \mathcal{F}(O_p)$$
Kako filtriramo sliko?
Določimo obnašanje filtra
(a) izberemo velikost maske $H$ — s tem definiramo okolico piksla $O$. Maska je majhna
podslika, običajno pravokotne (kvadratne) oblike in lihih dimenzij (npr. 3×3, 5×7).
Najdemo tudi maske drugih oblik (križ, diskretiziran krog).
(b) določimo uteži znotraj maske $H$.
Izračunamo konvolucijo med masko $H$ in sliko $I$: $\;I' = I * H$
masko $H$ položimo na sliko $I$ tako, da je sredina maske poravnana s pikslom $p$;
izračunamo produkt med vsakim elementom maske in pripadajočim pikslom slike, ki se nahaja direktno pod tem elementom maske;
produkte seštejemo ter dobimo novo oz. filtrirano vrednost piksla $I'(p)$.
Celotno sliko filtriramo tako, da opisani postopek ponovimo za vsak piksel — običajno začnemo v levem
zgornjem kotu in nadaljujemo od leve proti desni ter od zgoraj navzdol.
⚠️ Nove vrednosti gredo v NOVO sliko
Pri filtriranju moramo nove vrednosti shranjevati v novo sliko
(pri točkovnih operacijah to ni bilo potrebno). Če bi računal »na mestu«, bi za sosede uporabljal že
filtrirane vrednosti in rezultat bi bil napačen.
Problemi
Piksli ob robu slike — del maske je zunaj slike $I$. Možne rešitve:
takšnih pikslov ne upoštevamo ⇒ velikost izhodne slike se zmanjša za velikost maske;
vrednost manjkajočih pikslov določimo kot 0 ali pa z ustrezno ekstrapolacijo sosednjih pikslov.
Po filtriranju so vrednosti pikslov realna števila in zunaj intervala [0, 255] —
možna rešitev: linearizacija + zaokroževanje.
Originalni prosojnici (str. 41–42)
Odstranjevanje šuma z lokalnimi operatorji nalogi 5–6
Imenujemo jih tudi operatorji glajenja (smoothing operators). Njihova slabost: zapacajo ostre
robove objektov v slikah.
A. Nizko sito (low-pass filter)
Prepušča nizke frekvence v slikah — to so velika področja s približno konstantnimi sivinami.
Visoke frekvence zaduši oz. odstrani — to so majhna področja nenadnih sprememb oz. detajlov.
Je lokalni operator, s katerim izračunamo povprečje v okolici piksla.
Maska vsebuje same 1 in je pomnožena z obratno vrednostjo števila enic v maski.
B. Visoko sito (high-pass filter)
Ima obratno funkcionalnost kot nizko sito: visoke frekvence prepušča, nizke pa duši.
$$H = \frac{1}{16}\begin{bmatrix}1&2&1\\2&4&2\\1&2&1\end{bmatrix} \qquad \text{in} \qquad
H = \frac{1}{10}\begin{bmatrix}1&1&1\\1&2&1\\1&1&1\end{bmatrix}$$
Če je standardni odklon $\sigma$ zelo majhen ($< 1$ piksel), potem glajenje praktično nima učinka.
Če je $\sigma$ velik, odstranimo veliko šuma, hkrati pa izbrišemo veliko detajlov (veliko
zamegljenje); pri velikih $\sigma$ je tudi velikost maske velika.
D. Mediani filter naloga 5
Ideja: trenutni piksel zamenjamo z vrednostjo mediane iz njegove okolice.
Filter je primeren za odpravljanje impulznega šuma (šum, kjer je deformiranih nekaj izoliranih
pikslov). Če je deformiranih več pikslov v okolici, moramo vzeti mediani filter večjih dimenzij kot 3×3.
Slabost: poškodujejo tanke linije in ostre robove v sliki. Problem delno rešimo z ustreznejšo
izbiro okolice (npr. okolica oblike križa je primerna za ohranjanje vertikalnih in horizontalnih linij).
Spadajo v skupino filtrov, ki sortirajo/rangirajo vrednosti pikslov in nato izberejo novo
vrednost (rank value filters) — primer: minimalni in maksimalni filter.
💡 Zakaj je mediana boljša od povprečja pri impulznem šumu
En sam piksel z vrednostjo 255 sredi področja z vrednostmi okoli 30 pri
povprečju premakne rezultat za ~25 sivin. Pri mediani pa ta piksel pristane na koncu
urejenega niza in na srednjo vrednost sploh ne vpliva. Zato mediani filter impulzni šum
odstrani, ne pa razmaže.
Originalne prosojnice (str. 43–46)
Detektorji robov ključnonaloga 7
Uporabljajo se za ugotavljanje nenadnih sprememb v funkciji intenzivnosti — pravi robovi so
piksli, kjer se ta funkcija nenadno in močno spremeni.
Slikovna funkcija $I$ je funkcija dveh spremenljivk (dveh koordinat v ravnini).
Spremembo slikovne funkcije popišemo z gradientom, ki kaže v smeri največje rasti slikovne funkcije.
Rob je lastnost, ki je pridružena vsakemu pikslu v sliki; določi se iz slikovne funkcije in okolice piksla.
Rob je vektorska spremenljivka, sestavljena iz dveh komponent:
velikost (jakost) roba — velikost gradienta;
smer roba — smer gradienta minus 90° (če smer 0° kaže proti vzhodu).
$\triangle x$ je običajno enak 1; podobno zapišemo parcialni odvod po $y$ in 2. odvode.
Če sliko $I$ obdelamo z detektorjem robov, dobimo sliko robov $E$ (edge image): vsak piksel v
tej sliki ima dve komponenti — velikost roba in smer roba.
A. Laplaceov operator
Približek za 2. odvod.
V sliki robov dobimo le velikost gradienta (smeri ne!).
Pravi robovi so tam, kjer je velikost roba velika!
⚠️ Eksaktna formula ali približek?
Naloga 7 izrecno pove »uporabimo eksaktno formulo«. To pomeni
$\sqrt{X^2+Y^2}$, ne $|X|+|Y|$. Približek $|X|+|Y|$ da vedno večji rezultat — z njim bi piksel
lahko napačno razglasil za pravi rob.
Originalne prosojnice (str. 47–50)
Preveri se
1Slika 5×4 ima 20 pikslov, histogram h = [2, 4, 3, 2, 3, 2, 3, 1]. V katero sivino se pri izenačitvi histograma preslika sivina 1, če je Q = 255?
Razlaga
Formula je $g' = \frac{Q}{MN}\sum_{i=0}^{g} h_i$ — vsota je kumulativna do vključno g = 1,
torej $h_0 + h_1 = 2 + 4 = 6$.
$g' = \frac{255}{20} \cdot 6 = 12{,}75 \cdot 6 = 76{,}5 \to \mathbf{77}$.
Odgovor a) je past za tiste, ki vzamejo samo $h_1$ namesto kumulative.
2Kaj je mediana okolice 3×3 z vrednostmi 1, 102, 46, 198, 66, 67, 208, 204, 37?
Razlaga
Urejeno: 1, 37, 46, 66, 67, 102, 198, 204, 208. Pri devetih vrednostih je mediana
peta po vrsti = 67.
Odgovor b) je past: mediana ni vrednost sredinskega piksla, ampak
srednja vrednost urejenega niza. Odgovor c) je past za povprečje (nizko sito).
3Sobelov operator da X = −366 in Y = 368. Je piksel »pravi« rob pri pragu > 500, če uporabimo eksaktno formulo?
Razlaga
$\sqrt{X^2 + Y^2} = \sqrt{133956 + 135424} = \sqrt{269380} \approx 519{,}0 > 500$ → je pravi rob.
Predznak $X$ pove le smer gradienta, na velikost ne vpliva, ker ga
kvadriramo. Če bi uporabili približek $|X| + |Y| = 734$, bi bil odgovor prav tako »da« — a pri drugih
številkah bi se odgovora razlikovala, zato naloga posebej pove, katero formulo uporabiti.