Odstranˇ en´ı geometrick´ ych zkreslen´ı obrazu Vstupn´ı obraz pro naˇse u ´lohy z´ısk´av´ame pomoc´ı optick´e soustavy tvoˇren´e objektivem a kamerou. Dle optick´ ych parametr˚ u objektivu mohou v z´ıskan´em obraze nastat geometrick´a zkreslen´ı zp˚ usoben´a jeho optikou. Jedn´ım z nejzn´amˇejˇs´ıch zkreslen´ı je zkreslen´ı typu fisheye, kter´e vznik´a u ˇsiroko´ uhl´ ych objektiv˚ u s extr´emnˇe malou ohniskovou vzd´alenost´ı. Dalˇs´ımi typy zkreslen´ı jsou barel a polˇst´aˇr. Tato zkreslen´ı jsou, spolu s nezkreslen´ ym obrazem, zn´azornˇena na obr´azku 1
Obr´azek 1: Nezkreslen´ y obraz, zkreslen´ı typu barel (barrel) a polˇst´aˇr (pincushion) Zkreslen´ı typu barel je zp˚ usobeno vlastnost´ı ˇsiroko´ uhl´ ych objektiv˚ u, kter´a zapˇr´ıˇciˇ nuje vˇetˇs´ı zvˇetˇsen´ı stˇredu obrazu neˇz jeho okrajov´ ych ˇca´st´ı. Podle v´ ysledn´eho efektu je tak´e odvozen n´azev deformace. Polˇst´aˇrov´ y efekt je deformac´ı inverzn´ı. Pokud bychom obraz, ve kter´em je nˇejak´ y typ zkreslen´ı, podrobili napˇr´ıklad detekci pohybu v obraze, v´ ysledn´a detekce by trpˇela chybou, kdy r˚ uzn´e ˇca´sti takov´ehoto obrazu by pro objekt pohybuj´ıc´ı se konstantn´ı rychlost´ı vykazovaly rychlost objektu promˇenlivou a to v z´avislosti na m´ıˇre zkreslen´ı. Z takov´ ychto d˚ uvod˚ u je ˇza´douc´ı, aby bylo na zkreslen´em obrazu pˇred aplikov´an´ım nˇejak´e operace nejprve provedeno odstranˇen´ı tohoto geometrick´eho zkreslen´ı. V n´asleduj´ıc´ı ˇca´sti pop´ıˇseme princip odstranˇen´ı geometrick´eho zkreslen´ı, moˇznost jeho ruˇcn´ıho nastaven´ı a nakonec metodu, kter´a automaticky najde nezkreslen´ y obraz z p˚ uvodn´ıho deformovan´eho obrazu. 1
0.1
Popis metody odstranˇ en´ı zkreslen´ı
Zkreslen´ı typu barel nebo polˇst´aˇr jsou tzv. radi´ aln´ı zkreslen´ı. Nejjednoduˇsˇs´ım zp˚ usobem jak namodelovat takov´eto zkreslen´ı je pomoc´ı posunu souˇradnic obrazu. Necht’ q¯ = (xn , yn )T reprezentuje nezkreslen´e souˇradnice, zat´ımco q = (xd , yd )T reprezentuje souˇradnice pozorovan´e (tedy souˇradnice v deformovan´em obraze). Kaˇzd´e radi´alnˇe symetrick´e zkreslen´ı m˚ uˇze b´ yt aproximov´ano pomoc´ı Taylorova polynomu ve tvaru: φ(r2 ) = 1 + K1r2 + K2r4 + . . . ,
(1)
kde r2 = x¯2 + y¯2 a K1, K2, . . . jsou koeficienty radi´aln´ıho zkreslen´ı. Aby byly koeficienty nez´avisl´e na velikosti vstupn´ıho obrazu, jsou souˇradnice x¯, y¯ bezrozmˇern´e. Nav´ıc pro zachov´an´ı radi´aln´ı symetrie mus´ıme pˇresunout poˇca´tek souˇradnicov´eho syst´emu do stˇredu obrazu. Souˇradnice poˇzadovan´ ych vlastnost´ı obdrˇz´ıme snadno s pomoc´ı n´asleduj´ıc´ıho pˇredpisu: x¯ = xnR−cu y¯ = ynR−cv ,
(2)
p yˇska kde R = c2u + c2v a souˇradnice stˇredu obrazu cu = w/2, cv = h/2 ( w je ˇs´ıˇrka a h v´ obrazu). V´ yslednou transformaci pˇrechodu ze souˇradnic xn , yn rekonstruovan´eho obrazu do souˇradnic xd , yd p˚ uvodn´ıho deformovan´eho obrazu lze zapsat n´asleduj´ıc´ı rovnic´ı: xd xn − c u cu −1 2 = φ (r ) + . (3) yd yn − c v cv Postupnˇe proch´az´ıme v´ ystupn´ı obraz po jednotliv´ ych pixelech (xn , yn )T a vypoˇc´ıt´av´ame souˇradnice koresponduj´ıc´ıho pixelu v n´am zn´am´em vstupn´ım deformovan´em obraze (xd , yd )T . Z´ıskan´e souˇradnice jsou obecnˇe re´aln´a ˇc´ısla, takˇze mus´ıme zvolit vhodnou interpolaci. Jednoduchou interpolaci nejbliˇzˇs´ım sousedem doc´ıl´ıme pˇrijateln´eho v´ ysledku. Pro kvalitnˇejˇs´ı v´ ystup je nutn´e vyuˇz´ıt interpolaci biline´arn´ı. V´ ysledek dosaˇzen´ y pomoc´ı popsan´e metody je zobrazen na obr. 2.
0.2
Popis metody aplikace zkreslen´ı
V praxi exituj´ı u ´holy, kde chceme do obrazu, kter´ y obsahuje nˇejak´e geometrick´e zkreslen´ı, vloˇzit nov´e objekty. Takov´ yto postup je bˇeˇznˇe vyuˇz´ıv´an v poˇc´ıtaˇcov´e grafice, kdy jsou do nasn´ıman´eho filmu vkl´ad´any nov´e objekty, napˇr. vizu´aln´ıch efekt˚ u, virtu´aln´ıch postav, apod. Ve sv´e podstatˇe jde tedy o postup opaˇcn´ y k dˇr´ıve popsan´e metodˇe. D˚ uvodem takov´ehoto postupu je to, ˇze jednou nasn´ıman´ y (kino)film m´a jednou provˇzdy dan´e rozliˇsen´ı. Poˇc´ıtaˇcem generovan´ y obsah vˇsak m˚ uˇzeme renderovat i ve velmi vysok´em rozliˇsen´ı a takov´ yto obraz pak vkl´adat do p˚ uvodn´ıho (geometricky zkreslen´eho) obrazu. T´ımto zp˚ usobem je kvalita vstupn´ıho (kino)filmu zachov´ana. 2
Obr´azek 2: P˚ uvodn´ı zkreslen´ y obraz (vlevo), obraz po odstranˇen´ı radi´aln´ıho zkreslen´ı (vpravo)
ˇ sen´ı taK aplikaci zkreslen´ı je nutn´e naj´ıt inverzn´ı mapov´an´ı funkce g −1 z rovnice 3. Reˇ kov´eto transformace vˇsak nen´ı moˇzn´e naj´ıt analyticky a proto je nutn´e vyuˇz´ıt numerick´eho ˇreˇsen´ı. V z´asadˇe je c´ılem naj´ıt zkreslen´e souˇradnice (xd , yd )T k nezkreslen´ ym souˇradnic´ım T (xn , yn ) . D´ale v´ıme, ˇze xd xn , (4) =g yd yn kde g = φ(r2 ). Rovnice iteraˇcn´ıho algoritmu podle metody Newton-Raphson bude vypadat n´asledovnˇe:
xd yd
(j+1)
=
xd yd
(j)
−1 ∂g (xd , yd )(j) − (j) ∂ (xd , yd )
g
xd yd
(j)
−
xn yn
!
.
(5)
Kvalita v´ ysledku je z´avisl´a na dvou faktorech: poˇctu iterac´ı a poˇca´teˇcn´ı inicializaci. K dosaˇzen´ı dobr´eho v´ ysledku zpravidla postaˇc´ı 5 iterac´ı, zat´ımco k dosaˇzen´ı pˇresn´eho v´ ysledku m˚ uˇze b´ yt potˇreba i 30 iterac´ı. Jako poˇca´teˇcn´ı podm´ınku (xd , yd )T je s u ´spˇechem moˇzno pouˇz´ıt hodnotu (0, 0)T . Tento iteraˇcn´ı algoritmus je vˇsak nutno prov´adˇet pro kaˇzd´ y pixel a proto je tento postup ˇcasovˇe n´aroˇcn´ y.
0.3
Automatick´ a kalibrace
Kdybychom chtˇeli nastavovat koeficienty radi´aln´ıho zkreslen´ı ruˇcnˇe, jistˇe bychom z´ahy pˇriˇsli na to, ˇze je tato operace pomˇernˇe n´aroˇcn´a na pˇresnost a ˇcas uˇzivatele, kter´ y ji prov´ad´ı. Existuje nˇekolik metod, kter´e si kladou za c´ıl automatickou kalibraci zm´ınˇen´ ych parametr˚ u. Vˇetˇsina takov´ ych metod vyˇzaduje bud’ obrazy kalibraˇcn´ı mˇr´ıˇzky nebo referenˇcn´ıho objektu, 3
u nˇejˇz jsou zn´ame rozmˇery. V praxi jsou vˇsak takov´eto obrazy nedostupn´e a je tˇreba postupovat jin´ ym zp˚ usobem. V n´asleduj´ıc´ıch odstavc´ıch si pop´ıˇseme metodu, kter´a vych´az´ı z jednoduch´eho pˇredpokladu a poskytuje kvalitn´ı v´ ysledky. Z´akladn´ım principem je tvrzen´ı, ˇze pˇr´ım´e linie ve sn´ıman´e sc´enˇe by mˇely b´ yt pˇr´ım´e i ve v´ ysledn´em (nezkreslen´em) obraze. Algoritmus, kter´ y vyuˇz´ıv´a tohoto tvrzen´ı, se t´eˇz anglicky naz´ yv´a plumb line. Jednotliv´e kroky algoritmu narovn´av´an´ı je moˇzno popsat n´asledovnˇe: 1. Uˇzivatel ve zkreslen´em obraze vyznaˇc´ı nˇekolik bod˚ u tvoˇr´ıc´ı ˇca´ru, kter´a ve sc´enˇe tvoˇr´ı pˇr´ımku, 2. algoritmus hled´a takov´e koeficienty radi´aln´ıho zkreslen´ı, pˇri kter´ ych jsou body co moˇzn´a nejv´ıce v pˇr´ımce, 3. pro nalezen´e koeficienty se aplikuje postup, kdy se kaˇzd´ y bod zkreslen´eho obrazu prom´ıt´a do obrazu bez zkreslen´ı.
0.3.1
Hled´ an´ı koeficient˚ u radi´ aln´ıho zkreslen´ı
Hled´an´ı koeficient˚ u radi´aln´ıho zkreslen´ı je opˇet prov´adˇeno iteraˇcn´ım algoritmem. Pseudok´od algoritmu je pops´an n´ıˇze: step = 0.1 threshold = 1.0e-4 while !good: error minus = test( param - step ) error here = test( param ) error plus = test( param + step ) if error here is smallest: step /= 2 if error minus is smallest: param -= step if error plus is smallest: param += step if step < threshold: good = True Funkce test transformuje uˇzivatelem definovan´e body podle aktu´aln´ı hodnoty koeficientu. Podle velikosti chyby, kter´a je vr´acena funkc´ı test, pak algoritmus upravuje parametr tak, aby ve v´ ysledku postupnˇe narovn´aval uˇzivatelem definovanou lomenou ˇca´ru do pˇr´ımky. Funkce test po transformaci bod˚ u jimi proloˇz´ı pˇr´ımku pomoc´ı metody nejmenˇs´ıch ˇctverc˚ u,
4
kter´a je pops´ana d´ale. N´aslednˇe funkce vrac´ı sumu vzd´alenost´ı vnitˇrn´ıch bod˚ u definovan´e lomen´e ˇca´ry od proloˇzen´e pˇr´ımky. Tato chyba je definov´ana n´asleduj´ıc´ım vzorcem: Xq Err = d2i , (6) i
kde di je vzd´alenost bodu od pˇr´ımky.
Proloˇ zen´ı pˇ r´ımky mnoˇ zinou bod˚ u pomoc´ı metody nejmenˇ s´ıch ˇ ctverc˚ u Mˇejme mnoˇzinu n bodu (xi , yi ), (i = 1, 2, . . . , n). Chceme naj´ıt takovou pˇr´ımku y = ax + b, kter´a nejl´epe prokl´ad´a zadanou mnoˇzinu bod˚ u. Mus´ıme proto naj´ıt parametry a, b, kter´e nejl´epe ˇreˇs´ı pˇredeterminovanou soustavu rovnic. y1 b 1 x 1 a1 b 2 x 2 a2 y 2 (7) .. .. = .. . . . . yn b n x n an
Pro jednoduchost si popiˇsme, jak m˚ uˇzeme koeficienty odpov´ıdaj´ıc´ı zad´an´ı nal´ezt pomoc´ı n´asleduj´ıc´ıch dvou rovnic: P P P n ( xy) − ( y) ( x) , (8) a= P P n ( x2 ) − ( x)2 P P P P X X 1 ( y) ( x2 ) − ( x) ( xy) 1 b= y −a x = . (9) P P n n n ( x2 ) − ( x)2
Pomoc´ı takto z´ıskan´ ych koeficient˚ u a, b si vytvoˇr´ıme pˇr´ımku, se kterou budeme d´ale pracovat.
0.3.2
Odstranˇ en´ı zkreslen´ı pomoc´ı koeficient˚ u z´ıskan´ ych autokalibrac´ı
V t´eto chv´ıli jiˇz zn´ame koeficienty radi´aln´ıho zkreslen´ı. Je nutn´e si uvˇedomit, ˇze takto z´ıskan´e koeficienty nelze pouˇz´ıt pro transformaci uvedenou v odstavci 0.1. M˚ uˇzeme vˇsak prov´est transformaci opaˇcnou, tedy ze souˇradnic (xd , yd )T zkreslen´eho obrazu do souˇradnic (yn , yn )T obrazu nedeformovan´eho. K takov´e transformaci pouˇzijeme n´asleduj´ıc´ı vztah: xn cu xd − c u = + φ(r2 ). (10) yn cv yd − c v Opˇet postupnˇe proch´az´ıme vstupn´ı obraz po jednotliv´ ych pixelech (xd , yd )T a vypoˇc´ıt´av´ame souˇradnice koresponduj´ıc´ıho pixelu v n´am nezn´am´em v´ ystupn´ım nedeformovan´em obraze T (xn , yn ) . Takto z´ıskan´ y v´ ystup vˇsak trp´ı t´ım, ˇze nˇekter´ ym pixel˚ um ve v´ ystupn´ım obraze nebude pˇriˇrazena funkˇcn´ı hodnota ze vstupn´ıho obrazu. Tento jev m˚ uˇzeme odstranit tak, 5
Obr´azek 3: P˚ uvodn´ı zkreslen´ y obraz s uˇzivatelem definovanou lomenou ˇca´rou (vlevo), obraz po odstranˇen´ı zkreslen´ı pomoc´ı automatick´e kalibrace (vpravo)
ˇze bud’ pouˇzijeme metodu popsanou v odstavci 0.2 nebo m˚ uˇzeme vyuˇz´ıt jednoduch´eho triku v podobˇe supersamplingu. V takov´em pˇr´ıpadˇe budeme vstupn´ı deformovan´ y obraz proch´azet ne po cel´ ych pixelech, ale po jejich ˇca´stech (subpixelech). V takov´em pˇr´ıpadˇe je vˇsak nutn´e vstupn´ı barevnou hodnotu opˇet interpolovat pomoc´ı biline´arn´ı interpolace. V´ ysledek popsan´e metody s nakreslenou kalibraˇcn´ı lomenou ˇca´rou je zobrazen na obr. 3.
0.4
Zad´ an´ı u ´ lohy
1. Implementujte probl´em korekce radi´aln´ıho zkreslen´ı metodou popsanou v odstavci 0.1. Koeficienty upravujte ruˇcnˇe dokud nedoc´ıl´ıte v´ ysledku zobrazen´eho v pˇr´ıkladu. 2. Nadefinujte nˇekolik bod˚ u v p˚ uvodn´ım zkreslen´em obraze. Naimplementujte autokalibraˇcn´ı metodu popsanou v odstavci 0.3. V´ ystupn´ı obraz s odstranˇen´ ym zkreslen´ım vytvoˇrte pomoc´ı supersamplingu ze vstupn´ıho obrazu. 3. Autokalibraˇcn´ı metodu doplˇ nte tak, aby vyuˇz´ıvala iteraˇcn´ı metodu aplikace zkreslen´ı z odstavce 0.2.
6