1/43
PŘEDZPRACOVÁNÍ v prostoru obrazů
Václav Hlaváč
Fakulta elektrotechnická ČVUT v Praze
katedra kybernetiky, Centrum strojového vnímání hlavac@fel.cvut.cz
http://cmp.felk.cvut.cz/∼hlavac
2/43
PŘEDZPRACOVÁNÍ OBRAZU, ÚVOD
Vstupem je obraz, výstupem je obraz.
Obraz se neinterpretuje.
CÍL
Potlačit zkreslení (např. korekce geometrického zkreslení díky zakřivenosti Země u družicového snímku).
Odstranění šumu.
Zvýšení kontrastu (jen pro prohlížení obrazu člověkem).
Zdůraznění charakteristik obrazu pro další zpracování, např.
nalézání hran.
3/43
TŘÍDĚNÍ METOD
PŘEDZPRACOVÁNÍ OBRAZU
podle velikosti okolí zpracovávaného pixelu
Operace Zpracovávané okolí
Transformace jasové stupnice Stejná pro všechny pixely Jasové korekce Jen okamžitý pixel
Geometrické transformace Teoreticky pixel,
prakticky malé okolí Lokální filtrace Malé okolí
Obnovení (restaurace) obrazu Celý obraz
4/43
TRANSFORMACE JASOVÉ STUPNICE
f(i) = g(i), i = 0, . . . , maximální jas.
255
0 255 g
f
Negativ
Zvýraznìní kontrastu Prahování
Logaritmická citlivost senzorů (≈ gama korekce).
HW realizace v zobrazovací kartě (např. ve VGA módu).
5/43
EKVALIZACE HISTOGRAMU Cílem je:
zvýšit kontrast úplným využitím jasové stupnice (pro pozorovatele – clověka),
jasově obraz normalizovat (např. pro automatické srovnávání).
0 50 100 150 200 250
0 500 1000 1500 2000 2500 3000 3500
0 50 100 150 200 250
0 500 1000 1500 2000 2500 3000 3500
histogram původního obrazu histogram po ekvalizaci
6/43
ZVÝŠENÍ KONTRASTU PO EKVALIZACI HISTOGRAMU
původní obraz zvýšení kontrastu
7/43
ODVOZENÍ EKVALIZACE HISTOGRAMU
Vstup: histogram H(p) vstupního obrazu s jasovou stupnicí p = hp0, pki.
Cíl: najít monotónní transformaci jasové stupnice q = T (p), aby výsledný histogram G(q) byl rovnoměrný pro celý výstupní
interval jasů q = hq0, qki.
k
X
i=0
G(qi) =
k
X
i=0
H(pi) .
Ekvalizovaný histogram ≈ rovnoměrnému rozdělení f = N2
qk − q0 .
8/43
ODVOZENÍ EKVALIZACE HISTOGRAMU (2)
Ideálně rovnoměrný histogram získáme pouze pro spojitý případ.
Z q q0
G(s) ds =
Z p p0
H(s) ds .
N2
Z q q0
1
qk − q0 ds =
Z p p0
H(s) ds . N2(q − q0)
qk − q0 =
Z p p0
H(s) ds .
q = T (p) = qk − q0 N2
Z p p0
H(s) ds + q0 . Diskrétní případ kumulativní histogram
q = T (p) = qk − q0 N2
p
X
i=p0
H(i) + q0 .
9/43
PSEUDOBARVA
Beze změny Spectrum
System (Windows) Black body
10/43
JASOVÉ KOREKCE
Nový jas f(i, j) závisí na poloze i, j vstupního obrazu g(i, j). Často multiplikativní model poruchy: f(i, j) = e(i, j) g(i, j). 2 postupy:
1. Opravné koeficienty získány snímáním etalonové plochy známého jasu c, např. při kompenzaci nerovnoměrného osvětlení (vypnout AGC!). Po sejmutí získáme
fc(i, j) = e(i, j) c ⇒ e(i, j) = fc(i, j) c
2. Proložení pozadí analytickou plochou a její odečtení od původního obrazu.
11/43
GEOMETRICKÉ TRANSFORMACE
Použití pro
• zvětšování, posouvání, pootáčení, zkosení 2D obrazů (tj. podle předem známé transformace).
• odstraňování geometrických zkreslení (geometrická transformace se často hledá z obrazů).
Stejné techniky se používají v teoretické mechanice, robotice, počítačové grafice.
Reprezentace pomocí homogenních souřadnic =⇒ lineární transformace vyjádřená maticemi.
12/43
GEOMETRICKÉ TRANSFORMACE VE 2D
Rozepíšeme vektorovou transformaci T do dvou složek x0 = Tx(x, y) , y0 = Ty(x, y) .
13/43
NUTNÉ 2 KROKY TRANSFORMACE KVŮLI DISKRÉTNÍMU RASTRU
Transformace souřadnic bodů počítá se nová poloha každého
bodu ve spojitých souřadnicích (reálná čísla), protože výsledek může být mimo rastr.
Problémy:
Část obrazu leží mimo obraz.
Transformace díky nutné aproximaci nejsou invertovatelné.
Aproximace jasové funkce hledá celočíselnou hodnotu jasu
v celočíselné pozici, která nejlépe odpovídá nově vypočítané neceločíselné poloze x0, y0.
14/43
TRANSFORMACE SOUŘADNIC BODŮ
Obvykle se x0 = Tx(x, y), y0 = Ty(x, y) aproximuje polynomem m-tého stupně.
x0 =
m
X
r=0
m−r
X
k=0
ark xr yk , y0 =
m
X
r=0
m−r
X
k=0
brk xr yk .
Vztah je lineární vzhledem ke koeficientům ark, brk ⇒ odhad metodou nejmenších čtverců.
Potřebné dvojice sobě odpovídajících (vlícovacích) bodů x, y a x0, y0.
15/43
BILINEÁRNÍ, AFINNÍ TRANSFORMACE SOUŘADNIC
Když se geometrická transformace v závislosti na pozici v obraze příliš náhle nemění, postačují aproximační polynomy nízkého
stupně m = 2 nebo m = 3. Bilineární transformace
x0 = a0 + a1x + a2y + a3xy , y0 = b0 + b1x + b2y + b3xy .
Ještě speciálnější je afinní transformace která zahrnuje v praxi potřebnou rotaci, translaci a zkosení.
x0 = a0 + a1x + a2y , y0 = b0 + b1x + b2y .
16/43
HOMOGENNÍ SOUŘADNICE
⇒ ZÁPIS MATICEMI
Homogenní souřadnice jsou obvyklé v teoretické mechanice, projektivní geometrii, počítačové grafice a robotice.
Základní myšlenkou je reprezentovat bod ve vektorovém prostoru o jednu dimenzi větším.
Bod [x, y]T se v homogenních souřadnicích vyjádří ve 3D vektorovém prostoru jako [λx, λy, λ]T, kde λ 6= 0.
Pro jednoduchost se obvykle používá jedno z nekonečně mnoha vyjádření [x, y, 1]T.
17/43
AFINNÍ TRANSFORMACE MATICOVĚ
Affinní zobrazení se po zavedení homogenních souřadnic vyjádří
x0 y0
1
=
a1 a2 a0 b1 b2 b0
0 0 1
x y
1
.
Souvislost s jazykem PostScript.
Složitější geometrické transformace (zkreslení) se aproximují tak, že se obraz rozdělí na menší obdélníkové podobrazy.
Pro každý z podobrazů se použije jednodušší geometrická transformace (např. afinní) odhadnutá z vlícovacích bodů.
18/43
APROXIMACE JASOVÉ FUNKCE
Transformované souřadnice x0, y0 leží mimo rastr. Máme jen informaci o vstupním obraze f(x, y) v celočíselných
vzorcích.
Také geometricky transformovaný obraz se má
reprezentovat maticí. Proto i zde máme předepsanou pravoúhlou vzorkovací mřížku.
Příklad: topografická představa.
Principiálně správnou odpověď poskytuje teorie aproximace.
Ze vzorků odhadneme spojitou funkci.
Obvykle se aproximuje polynomem.
19/43
DUÁLNÍ VYJÁDŘENÍ APROXIMACE
Aproximuje se jas ve vstupním obraze, který odpovídá jasu hledaného bodu x0, y0 ve výstupní mřížce.
Souřadnice bodů (x, y) ve vstupním obraze lze vypočítat invertováním vztahu (x0, y0) = T (x, y), tj.
(x, y) = T−1 (x0, y0) .
20/43
APROXIMACE JAKO 2D KONVOLUCE
Místo původně spojité obrazové funkce f(x, y) známe její vzorkovanou verzi gs(l ∆ x, k ∆ y).
Výsledkem aproximace (interpolace) je jas fn(x, y), kde index n rozlišuje jednotlivé interpolační metody. Jas lze vyjádřit jako
dvojrozměrnou konvoluci fn(x, y) =
∞
X
l=−∞
∞
X
k=−∞
gs(l ∆ x, k ∆ y) hn(x − l ∆ x, y − k ∆ y) .
Funkce hn je interpolační jádro.
Obvykle se používá interpolační jádro pokrývající jen malé okolí zpracovávaného bodu, aby se ušetřily výpočty. Vně tohoto okolí je hodnota jádra hn nulová.
21/43
APROXIMACE – NEJBLIŽŠÍ SOUSED
Přiřadí bodu (x, y) hodnotu jasu nejbližšího bodu gs v diskrétní mřížce.
h1(x, y) = gs(round (x), round (y)) .
h
0 0.5
-0.5 x
1
22/43
LINEÁRNÍ INTERPOLACE
Využije 4 body v okolí (x, y) a předpokládá a lineárně je
zkombinuje. Vliv každého ze čtyř bodů v lineární kombinaci je úměrný jeho blízkosti ke zpracovávanému bodu.
f2(x, y) = (1 − a)(1 − b) gs(l, k) + a(1 − b) gs(l + 1, k)
+b(1 − a) gs(l, k + 1) + ab gs(l + 1, k + 1) , kde l = round (x) , a = x − l ,
k = round (y) , b = y − k .
h2
-1 0 1 x
23/43
BIKUBICKÁ INTERPOLACE
Lokálně interpolován obrazovou funkci bikubickým polynomem z 16 bodů v okolí. 1D interpolační jádro (pro přehledné
zobrazení)
h3 =
1 − 2|x|2 + |x|3 pro 0 ≤ |x| < 1 ,
4 − 8|x| + 5|x|2 − |x|3 pro 1 ≤ |x| < 2 ,
0 jinde.
-0.1 0.2 0.4 0.6 0.8
2.0 -2.0
24/43
LOKÁLNÍ OPERACE PŘEDZPRACOVÁNÍ
Obvykle se nevyužívají specifické znalosti o obraze a charakteru poruch.
Dělení z hlediska použití:
1. Vyhlazování.
2. Hledání hran (gradientní operátory, ostření).
Dělení podle vlastností rovnic:
1. Lineární.
2. Nelineární.
25/43
STATISTICKÝ PRINCIP FILTRACE ŠUMU
Nechť je každý pixel obrazu zatížen náhodným aditivním šumem:
statistický nezávislým,
s nulovou střední hodnotou µ,
směrodatnou odchylkou σ.
Mějme i realizací, i = 1, . . . n. Odhad správné hodnoty je g1 + . . . + gn
n +
ν1 + . . . + νn
n .
Výsledkem je náhodná veličina s µ0 = 0 a σ0 = σ/√ n.
26/43
VYHLAZOVÁNÍ Z VÍCE OBRAZŮ BEZ ROZMAZÁNÍ
Předpoklady: n obrazů téže neměnné scény, u nichž lze předpokládat náhodné poruchy nezávislé na signálu.
Správné hodnota jasu: f(i, j) se odhaduje pro každý pixel
obrazu z náhodné populace tvořené pixely v téže pozici ve všech vstupních obrazech gk(i, j) např. obyčejným
průměrováním,
f(i, j) = 1 n
n
X
k=1
gk(i, j) .
Příklad: Potlačení tepelného šumu kamery u přesných měření.
Typicky se správná hodnota odhaduje asi z 50 obrazů.
27/43
PROBLÉM: POTŘEBUJEME FILTROVAT ŠUM Z JEDINÉHO OBRAZU
Nezbývá než spolehnout se na nadbytečnost údajů v obraze.
Sousední pixely mají převážně stejnou nebo podobnou hodnotu jasu.
Hodnotu jasu můžeme opravit na základě analýzy bodů v okolí. Použije se typický reprezentant z okolí nebo
kombinace několika hodnot.
Problém rozmazávání na jasových přechodech.
28/43
OBECNÁ LOKÁLNÍ FILTRACE
Správná hodnota (nová hodnota) se odhaduje z malého okolí.
Přístup je založen na představě, že se celý obraz systematicky (např. po řádcích) prochází. Kolem
reprezentativního bodu je zkoumáno malé okolí O, často malý obdélník (též okno).
Výsledek analýzy je zapsán do výstupního obrazu jako hodnota reprezentativního pixelu.
Vlastnosti filtru mohou být v každém pixelu obrazu jiné.
29/43
OPERÁTORY NEZÁVISLÉ NA POSUNU též prostorově invariantní filtry
Speciální případ lokální filtrace.
Vlastnosti filtru jsou ve všech polohách stejné.
Shoduje se s představou frekvenční filtrace (např.
Fourierova transformace), kdy působení filtru je prostorově omezené. Např. filtrace Gaussiánem s malým rozptylem.
30/43
LOKÁLNÍ LINEÁRNÍ PŘEDZPRACOVÁNÍ
Nová hodnota je vypočítána jako lineární kombinace hodnot obrazové funkce v okolí.
Připomínka: Linearita, tj. 2 vlastnosti: aditivita a homogenita.
U skutečných obrazů je předpoklad linearity narušen
• Hodnotu pixelu nelze vynásobit libovolným skalárem nebo výsledek součtu nemůže být jakýkoliv. Problém saturace díky omezenému rozsahu hodnot obrazové funkce, typicky h0, 255i.
• Problémy na okraji obrazu. Maska přesahuje.
31/43
DISKRÉTNÍ 2D KONVOLUCE
Příspěvek jednotlivých pixelů v okolí O je vážen v lineární kombinaci koeficienty h podle
g(x, y) = X
(m,n)
X
∈O
h(x − m, y − n) f(m, n) .
Konvoluční jádro h, též konvoluční maska.
Často se používá obdélníkové okolí O s lichým počtem řádků a sloupců, a tak může reprezentativní bod ležet uprostřed
konvoluční masky.
32/43
OBYČEJNÉ PRŮMĚROVÁNÍ
Průměrování v okolí 3 × 3
h = 1 9
1 1 1 1 1 1 1 1 1
.
Dvě varianty zvýraznění pixelů blíže středu masky
h = 1
10
1 1 1 1 2 1 1 1 1
, h = 1
16
1 2 1 2 4 2 1 2 1
.
33/43
OBYČEJNÉ PRŮMĚROVÁNÍ, PŘÍKLAD 1
Originál 256 × 256 Přidán umělý šum Průměrování 3 × 3
34/43
OBYČEJNÉ PRŮMĚROVÁNÍ, PŘÍKLAD 2
Originál 256 × 256 Přidán umělý šum Průměrování 7 × 7
35/43
SEPARABILNÍ FILTRY
Příklad: binomický 2D filtr rozměru 5 × 5 (prvek je součtem dvou předchozích čísel v Pacsalově trojúhelníku)
1 4 6 4 1
4 16 24 16 4 6 24 36 24 6 4 16 24 16 4
1 4 6 4 1
=
h1
h2
=
1 4 6 4 1
1 4 6 4 1 .
36/43
SEPARABILITA ⇒ ÚSPORA VÝPOČTŮ Rozměr konvoluční masky je 2N + 1.
g(x, y) =
N
X
m=−N
N
X
n=−N
h(x − m, y − n) f(m, n)
=
N
X
m=−N
N
X
n=−N
h(m, n) f(x + m, y + n)
=
N
X
m=−N
h1(m)
N
X
n=−N
h2(n) f(x + m, y + n)
37/43
SEPARABILITA ⇒ ÚSPORA VÝPOČTŮ 2
Pro náš 5 × 5 filtr potřebuje přímý výpočet 25 násobení a 24 sčítání pro každý pixel.
Při použití separabilního filtru stačí 10 součinů a 8 součtů.
Ještě výraznější by byla úspora v případě konvoluční filtrace 3D obrázku (např. z tomografu). Pro konvoluční jádro
rozměru 9 × 9 × 9 by na každý voxel bylo potřeba 729 součinů a 728 součtů
Pro separovatelný filtr stačí 27 součinů a 24 součtů na voxel.
38/43
OVĚŘENÍ SEPARABILITY A ROZKLAD Každý filtr s hodností 1 je separovatelný.
Rozklad pomocí singulárního rozkladu (SVD).
[u,s,v] = svd(A);
s = diag(s);
tol = length(A) * max(s) * eps;
rank = sum(s > tol);
if (rank == 1)
hcol = u(:,1) * sqrt(s(1));
hrow = conj(v(:,1)) * sqrt(s(1));
y = conv2(hcol, hrow, x, shape);
else
%Nonseparable stencil end
39/43
NELINEÁRNÍ VYHLAZOVÁNÍ
Cíl: omezit rozmazávání hran při vyhlazování.
1. princip: najít část okolí, ve kterém se jas kvalitativně nemění.
2. princip – robustní statistika: střední hodnota je špatným odhadem, pokud existují vychýlené hodnoty.
40/43
METODA ROTUJÍCÍ MASKY
V okolí 5 × 5 vyhledává homogenní část rotující maska 3 × 3. Celkem 9 poloh, 1 uprostřed + 8 na obrázku.
1 2 . . . 7 8
Z masek se vybere ta, kde má jas nejmenší rozptyl.
41/43
FILTRACE MEDIÁNEM
Medián = výběrový kvantil.
Nechť je x náhodnou veličinou. Medián M je hodnota, pro kterou je pravděpodobnost jevu x < M rovna jedné
polovině.
Výpočet mediánu je pro diskrétní obrazovou funkci jednoduchý. Stačí uspořádat vzestupně hodnoty jasu v lokálním okolí a medián určit jako prvek, který je uprostřed této posloupnosti.
Aby se snadno určil prostřední prvek, používají se
posloupnosti s lichým počtem prvků, typicky okolí 3 × 3,
5 × 5, atd.
Výpočet ještě urychlí skutečnost, že k nalezení mediánu stačí částečné uspořádání posloupnosti.
42/43
MEDIÁN, PŘÍKLAD
100 98 102 99 105 101 95 100 255 Aritmetický průměr = 117,2
Medián: 95 98 99 100 100 101 102 105 255
Robustní, protože snese až 50% vychýlených hodnot.
43/43
MEDIÁN, PŘÍKLAD HRADČANY
Originál 256 × 256 Přidán umělý šum Medián 3 × 3
Filtraci mediánem lze použít iterativně.
Hlavní nevýhodou filtrace mediánem v obdélníkovém okolí je to, že porušuje tenké čáry a ostré rohy v obraze.