Képfeldolgozási eljárások

Hasonló dokumentumok
Sergyán Szabolcs szeptember 21.

6. Éldetektálás. Kató Zoltán. Képfeldolgozás és Számítógépes Grafika tanszék SZTE (

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

Lineáris algebra 2. Filip Ferdinánd december 7. siva.banki.hu/jegyzetek

Véletlen jelenség: okok rendszere hozza létre - nem ismerhetjük mind, ezért sztochasztikus.

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Él: a képfüggvény hirtelen változása. Típusai. Felvételeken zajos formában jelennek meg. Lépcsős

Lineáris egyenletrendszerek

Permutációk véges halmazon (el adásvázlat, február 12.)

3. Szűrés képtérben. Kató Zoltán. Képfeldolgozás és Számítógépes Grafika tanszék SZTE (

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós

Lineáris leképezések. Wettl Ferenc március 9. Wettl Ferenc Lineáris leképezések március 9. 1 / 31

0,424 0,576. f) P (X 2 = 3) g) P (X 3 = 1) h) P (X 4 = 1 vagy 2 X 2 = 2) i) P (X 7 = 3, X 4 = 1, X 2 = 2 X 0 = 2) j) P (X 7 = 3, X 4 = 1, X 2 = 2)

Véletlen bolyongás. Márkus László március 17. Márkus László Véletlen bolyongás március / 31

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Feladatok a Gazdasági matematika II. tárgy gyakorlataihoz

Éldetektálás. Digitális képelemzés alapvető algoritmusai. Képi élek. Csetverikov Dmitrij. A Canny-éldetektor Az éldetektálás utófeldolgozása

3. el adás: Determinánsok

LINEÁRIS ALGEBRA (A, B, C) tematika (BSc) I. éves nappali programtervező informatikus hallgatóknak évi tanév I. félév

Abszolút folytonos valószín ségi változó (4. el adás)

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Határozott integrál és alkalmazásai

2. SZÉLSŽÉRTÉKSZÁMÍTÁS. 2.1 A széls érték fogalma, létezése

Végeselem modellezés alapjai 1. óra

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Lineáris algebra és a rang fogalma (el adásvázlat, szeptember 29.) Maróti Miklós

A KLT (Kanade Lucas Tomasi) Feature Tracker Működése (jellegzetes pontok választása és követése)

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

1. A k-szerver probléma

rank(a) == rank([a b])

A maximum likelihood becslésről

2. gyakorlat. A polárkoordináta-rendszer

Komplex számok. Komplex számok és alakjaik, számolás komplex számokkal.

Függvények határértéke, folytonossága

Szinguláris értékek. Wettl Ferenc április 3. Wettl Ferenc Szinguláris értékek április 3. 1 / 28

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Skalárszorzat, norma, szög, távolság. Dr. Takách Géza NyME FMK Informatikai Intézet takach/ 2005.

: s s t 2 s t. m m m. e f e f. a a ab a b c. a c b ac. 5. Végezzük el a kijelölt m veleteket a változók lehetséges értékei mellett!

Szinguláris értékek. Wettl Ferenc április 12. Wettl Ferenc Szinguláris értékek április / 35

Képfeldolgozás. 1. el adás. A képfeldolgozás m veletei. Mechatronikai mérnök szak BME, 2008

Lineáris algebra gyakorlat

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok

Lineáris egyenletrendszerek

Többváltozós, valós értékű függvények

Konjugált gradiens módszer

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

Gazdasági matematika II. vizsgadolgozat megoldása, június 10

1. Parciális függvény, parciális derivált (ismétlés)

(Independence, dependence, random variables)

25 i, = i, z 1. (x y) + 2i xy 6.1

Szélsőérték-számítás

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

Gazdasági matematika II. tanmenet

Struktúra nélküli adatszerkezetek

5 = hiszen és az utóbbi mátrix determinánsa a középs½o oszlop szerint kifejtve: 3 7 ( 2) = (példa vége). 7 5 = 8. det 6.

1. Példa. A gamma függvény és a Fubini-tétel.

Az egyenlőtlenség mindkét oldalát szorozzuk meg 4 16-al:

Gauss-eliminációval, Cholesky felbontás, QR felbontás

4. Jellemző pontok kinyerése és megfeleltetése

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

Matematika A2 vizsga mgeoldása június 4.

Mátrixok 2017 Mátrixok

Vektorok. Wettl Ferenc október 20. Wettl Ferenc Vektorok október / 36

Bázistranszformáció és alkalmazásai

Hajlított tartó elmozdulásmez jének meghatározása Ritz-módszerrel

Képfeldolgozás jól párhuzamosítható

Line aris f uggv enyilleszt es m arcius 19.

Numerikus integrálás

1. tétel. 1. Egy derékszögű háromszög egyik szöge 50, a szög melletti befogója 7 cm. Mekkora a háromszög átfogója? (4 pont)

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

First Prev Next Last Go Back Full Screen Close Quit

I. VEKTOROK, MÁTRIXOK

Kvadratikus alakok és euklideszi terek (előadásvázlat, október 5.) Maróti Miklós, Kátai-Urbán Kamilla

Matematika III előadás

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén

Problémás regressziók

Elméleti összefoglaló a Valószín ségszámítás kurzushoz

Vektorok, mátrixok, lineáris egyenletrendszerek

8. Egyenletek, egyenlőtlenségek, egyenletrendszerek II.

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

2. Halmazelmélet (megoldások)

(1 + (y ) 2 = f(x). Határozzuk meg a rúd alakját, ha a nyomaték eloszlás. (y ) 2 + 2yy = 0,

Parciális dierenciálegyenletek

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

0-49 pont: elégtelen, pont: elégséges, pont: közepes, pont: jó, pont: jeles

MATE-INFO UBB verseny, március 25. MATEMATIKA írásbeli vizsga

22. GRÁFOK ÁBRÁZOLÁSA

Numerikus módszerek 1.

Gyakorló feladatok. Agbeko Kwami Nutefe és Nagy Noémi

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

A mérési eredmény megadása

Keresztmetszet másodrendű nyomatékainak meghatározása

Bázistranszformáció és alkalmazásai 2.

Függvények Megoldások

Principal Component Analysis

Kétváltozós függvények differenciálszámítása

Átírás:

Képfeldolgozási eljárások BSc szakdolgozat írta: Kiss Martin Károly témavezet : Keszthelyi Gabriella Eötvös Loránd Tudományegyetem Természettudományi Kar Budapest, 205

Tartalomjegyzék. Bevezetés.................................. 2 2. Lineáris sz r k............................... 3 Konvolúció.................................. 3 Simítás..................................... 5 A kép szélein................................. 8 Néhány nemlineáris módszer......................... 0 Zaj....................................... 2 3. Éldetektálás................................. 4 Gradiens alapú élkeresés........................... 20 LoG élkeresés................................. 22 Canny élkeresés................................ 24 4. Harris sarokdetektálás.......................... 26 Alkalmazás.................................. 3 5. Matlab implementációk.......................... 32 i

Köszönetnyilvánítás Ezúton szeretnék köszönetet mondani témavezet mnek, Keszthelyi Gabriellának, hogy tanácsaival és útmutatásával segítette munkámat. Hálás vagyok, amiért segített összeszedni a szükséges szakirodalmat és segítette annak megértését. Valamint köszönöm családomnak és barátaimnak, akik kitartóan támogattak az egyetemi évek alatt. Külön szeretném megköszönni édesanyámnak a támogatását és segítségét ezen id szak alatt.

. Bevezetés Jól csak a szívével lát az ember. Ami igazán lényeges, az a szemnek láthatatlan." Antoine de Saint-Exupéry, A kis herceg Már a kis herceg óta tudjuk, hogy jól csak a szívünkkel látunk, manapság mégis a számítógépeinkt l várjuk el ugyanezt. Felmerül a kérdés, valóban képesek a számítógépek látni? Egyáltalán, mi az a számítógépes látás? Egy ilyen sokoldalú tudományágnak nagyon nehezen lehet olyan deníciót adni, amely vitathatatlan, ezért inkább azt érdemes megnézni, mivel foglalkozik. A számítógépes látás kapcsolatban áll, de nem ekvivalens, a fotogrammetriával, a képfeldolgozással és a mesterséges intelligenciával. Valamint, a számítógépes látás témaköre igen tág és sok ponton kapcsolódik egyéb tudományterületekkel. Továbbá, számos hasznos alkalmazással rendelkezik, néhány példa: orvosi képfeldolgozás, ipari min ségellen- rzés, robotika, katonai alkalmazások, mozgás rekonstrukciója és keresés képeket tartalmazó adatbázisokban, stb... Több ezer oldalnyi szakirodalom található a témában érdekl d k számára.. ábra. Egy virág képének részlete, valamint ez függvényként ábrázolva. Mi a továbbiakban képfeldolgozással, azon belül is él- és sarokkereséssel foglalkozunk. Az ember látása folyamatos, egybefügg en látjuk a körölöttünk lév világot, viszont a számítógép a fényképeket (videókat) nem tudja ily módon tárolni. Így létrehozták a digitális kép fogalmát, amely lényegében egy "táblázat" (vagy "mátrix"), melynek minden eleme egy-egy színt tartalmaz, amelyet egy egész számnak, vagy egészekb l álló számhármasnak feleltetnek meg. A táblázat egy elemét pixelnek nevezik. Ha számhármasokról beszélünk, például az RGB (red, green, blue, azaz piros, zöld, kék) kódolás esetén, és megszámozzuk a táblázat sorait és 2

oszlopait, akkor ez felfogható, mint egy f : N N R 3 függvény, vagyis a sorok és oszlopok megfelel elemeihez hozzárendelünk egy számhármast, amely megadja, hogy az adott pont színe mennyi pirosat, mennyi zöldet és mennyi kéket "tartalmaz" (például ha mindhárom érték minimális, vagyis 0, akkor fekete szín a pixel, vagy ha a kék érték minimális és a piros és a zöld érték maximális, ami általában vagy 255, akkor sárga szín a pixel). Nekünk az objektumok határainak megválasztásához általában nincs szükségünk színekre, csak egy szürke árnyaltra, azaz elég egy g : N N R függvény, amely felvett értékei a szürkének egy árnyalatát jelölik (példa:. ábra). Például 8 bitet használva le tudunk kódolni egy színt, itt az értékek egészek és 0-tól 255-ig mennek, ahol 0 a fekete és 255 a fehér színt jelöli, ezzel 256 árnyalatát adva a szürke színnek, matematikai számolásokhoz viszont egyszer bb egy olyan modellt alkalmazni, ami folytonos és 0 jelöli a fekete és jelöli a fehér színt. S t a legtöbb probléma esetén, folytonos értelmezési tartományt használva vezetjük be a megfelel függvényeket, majd ezután diszkretizáljuk. 2. Lineáris sz r k A képfeldolgozás során, általában nem egymástól függetlenül vizsgáljuk meg a pixelek tulajdonságait, hanem valamilyen küls megjelenés alapján, a pixelek egy csoportját gyeljük meg. Egy egyszer módszer, ha a pixel értékek súlyozott összegét használjuk. Különböz súlyokat használva a különböz célok elérésére. Például ennek segítségével tudjuk élesíteni a képünket, vagy eltávolítani a zajt, vagy kiemelni az éleket. A következ egyszer modellt fogjuk használni. Egy új mátrixot csinálunk, ugyanakkora méret t, mint az eredeti kép. Ezek után minden helyre, ebben az új mátrixban, egy súlyozott összegét írjuk a kép megfelel pixelét körülvev pixeleknek. Minden pixel esetén ugyanazt a súlyozást használva. Ezt az eljárást lineáris sz résnek nevezik (linear ltering). A mintát, ami alapján a súlyozott összeget vesszük, pedig kernelnek nevezik. Azt a folyamatot amikor egy képre alkalmazzák a kernelt, azt pedig konvolúciónak (convolution). Konvolúció Formálisan, a konvolúció g(i, j) = f(i u, j v)h(u, v)dudv 3

a folytonos esetben és g(i, j) = k,l f(k, l)h(i k, j l) = k,l f(i k, j l)h(k, l) a diszkrét esetben (ezt az esetet használjuk a gyakorlati alkalmazás miatt), ahol g a kapott új mátrix (kép), f az eredeti kép és h a kernel (természetesen a konvolúció m veletét bármely két tesz leges függvényen el lehet végezni). A szumma esetén, k és l értékét szándékosan nem választottuk meg, feltételezzük, hogy akkora a terjedelem, hogy minden nemnulla érték számításba kerül. Hasonlóan deniálhatjuk az dimenziós esetre is. Ekkor g(i) = f(i u)h(u)du a folytonos és g(i) = k f(i k)h(k) a diszkrét esetben. Egyszer bb jelölés: g = f h. A következ sorokban f, g és h egy-egy mátrixot jelöl, a pedig egy konstansot, ahol nincs külön jelölve, ott pontonként értelmezend a m velet. A konvolúció tulajdonságai közé tartozik, hogy kommutatív f g = g f, asszociatív LSI operátor, azaz lineáris (f g) h = f (g h), h (f + g) = h f + h g a(h f) = h (af) és eltolás-invariáns g(i, j) = f(i + k, j + l) (h g)(i, j) = (h f)(i + k, j + l). 4

Simítás A képeknek többnyire megvan az a tulajdonsága, hogy a pixelek hasonlóak a szomszédaikhoz. Azonban, ha a kép zajos volt, ez a tulajdonság elveszik. Zajnak tekinthetünk minden olyan dolgot, amellyel nem tudunk vagy nem akarunk dolgozni. Például a fényképez gép, amellyel dolgozunk pár helyen "halott" pixeleket rögzít, azaz a képt l függetlenül, ezeken a helyeken mindig fekete a kép. Ilyen esetekben természetes, ha megpróbáljuk a pixeleket az ket körülvev pixelek súlyozott átlagával helyettesíteni. Azt szeretnénk elérni, hogy a kapott kép egy defókuszált fényképre hasonlítson. Ezt a folyamatatot hívják simításnak (smoothing) vagy elmosásnak (blurring). 2. ábra. Egy kép konvolúciója az átlag sz r vel, balról jobbra haladva el ször az eredeti kép látható, majd a kép konvolúciója az átlag sz r vel, el ször 3 3, majd 5 5 és végül 0 0 méret kernelt használva. El ször nézzük az átlag sz rést, vagyis azt az esetet, ha az t körülvev pixelek mindegyikét azonos súllyal vesszük. Azaz, mondjuk (2k +) (2k +)-es blokkokat átlagolunk (ahol k =, 2,... ). Ez azt eredményezi, hogy az inputként kapott f képb l, a következ g(i, j) = (2k + ) 2 i+k j+k u=i k v=j k f(u, v) output keletkezik. Ez pontosan azt jelenti, mintha a képnek és annak a kernelnek vennénk a konvolúcióját, mely (2k + ) (2k + ) méret és minden eleme egyenl -gyel (és ezt megszorozzuk a megfel konstanssal). Például 3 3 esetben: 9 5

Ez a módszer azonban nem túl hatásos, nem a várt eredményt hozza. Vegyünk egy olyan képet, amely közepén egy darab -es van és minden más eleme 0. Ha ezt simítjuk az el z módszerrel, akkor egy négyzetet kapunk középen, melynek minden eleme ugyanakkora. Ez azonban nem az, amit a defókuszált fényképez gépek csinálnak. Egy olyan simítási eljárást akarunk, amely egy kis kört ad meg középen, mely a középpontól kifelé folyamatosan halványul és az árnyalatát csak a középponttól való távolság határozza meg. (3. ábra) 3. ábra. Forrás: []. Ezt jól modellezi a szimmetrikus Gauss-kernel G σ (x, y) = x 2 +y 2 2πσ 2 e 2σ 2. () σ-t szórásnak (standard deviation) szokták nevezni. Ez a kernel egy olyan súlyozott összeget eredményez, mely sokkal nagyobb súlyt fektet a középen lév pixelekre, mint a határon lév pixelekre. A simítás elnyomja a zajt úgy, hogy minden pixel a szomszédjára "hasonlít", viszont a mivel a távolabbi szomszédokat kisebb súllyal vettük, ezzel eleget tettünk annak, hogy a távoli szomszédok kevésbé befolyásolják ezt. A σ-t okosan kell megválasztani. Ha a szórás kicsi (kisebb, mint ), akkor a simításnak kis hatása lesz, mert nagyon kevés súlyt fektet az t körülvev pixelekre. Ennél nagyobbra választjuk a σ-t, akkor az átlag kiegyensúlyozottan a szomszédokra fókuszál. Ez egy jó közelítés lesz, a zaj nagyrésze el fog t nni, cserébe a kép egy kicsivel homályosabb lesz. Végül, ha túl nagyra választjuk az értéket, a kép részletei, amiket vizsgálni szerettünk volna, elt nnek a zajjal együtt. A gyakorlatban általában diszkrét kernelt használunk. Ez a következ képpen néz ki: h(i, j) = (i k ) 2 +(j k ) 2 2πσ 2 e 2σ 2, 6

4. ábra. A () helyen deniált Gauss függvény ábrázolva, σ = esetén. ahol h egy (2k + ) (2k + ) méret kernel (k =, 2,... ), ebben a formában még az elemek összege nem biztos, hogy lesz, így viszont lehet, hogy világosabb vagy sötétebb lesz a kép, tehát még leosztunk minden elemet, az összes elem összegével, így biztosan lesz az összeg. E m velet során ügyesen kell megválasztani σ értékét. Ha a σ túl kicsi, akkor csak egy elemnek lesz nemnulla (vagy nagyon kicsi) értéke. Ha a σ nagy, akkor pedig k-nak is nagyobbnak kell lennie, különben a súlyozásból kimaradnának olyan elemek is, amelyek jelent sen szerepeltek volna. A Gauss sz r nek jó tulajdonságai közé tartozik, hogy ha egy sz r nek vesszük a konvolúcióját egy másik sz r vel, akkor szintén Gauss sz r t kapunk: G σ G σ2 = G σ 2 +σ2 2 ez hasznos lehet, ha el ször nem voltunk elégedettek a simítás eredményével, mert egy nagyobb szórású simításra lenne szükségünk, akkor elég csak még egyszer simítani egy kisebbel, mert a paraméterek a fent leírt módon viselkednek, tehát nem kell az eredeti képhez visszatérnünk és azt simítani. A számítógépes felhasználás során elképzelhet az is, hogy egy nagyobb simítást, inkább több, kisebb szórású simítás eredményeként szeretnénk elérni, a jobb futásid érdekében. A konvolúció m velet elvégzéséhez K 2 m veletre (összeadás, szorzás) van szükség pixelenként, ahol K a mérete a kernelnek (szélessége vagy magassága). Ez 7

felgyorsítható azzal, ha a 2 dimenziós konvolúció helyett, egy dimenziós konvolúciót végzünk el vízszintesen, utána pedig egy dimenziós konvolúciót függ legesen, ehhez összesen 2K m veletre van szükség. Azokat a kerneleket, amelyekre ez megoldható szétválaszthatónak (separable) nevezzük. Például az átlag kernel szétválasztható: 9 = 3 [ ] 3 Most vizsgáljuk meg a Gauss kernelt. Szorzatra bontható a következ képpen: G σ (x, y) = ( ) ( ) x 2 +y 2 2πσ 2 e 2σ 2 = e x2 2σ 2 e y2 2σ 2 2πσ 2πσ Tehát felbontottuk egy olyan szorzatra melynek els tényez je csak x-t l, a második csak y-tól függ. Azon kernelek, amelyek ilyen módon szorzatra bonthatóak, szétválaszthatóak. dimenzióban ez is lesz a sz r nk, azaz dimenzióban: G σ (x) = 2πσ e x2 2σ 2 lesz a konvolúciós függvény. A 2 dimenziós Gauss sz rés tehát helyettesíthet két, dimenziós sz r alkalmazásával, el ször vízszintesen, majd függ legesen, minden pixelre. Általánosságban vannak numerikus módszerek annak eldöntésére egy kernelr l, hogy az szétválasztható-e vagy sem. Az egyik ilyen módszer a szinguláris felbontás. 2.. Tétel (Szinguláris felbontás). Legyen A R m n ekkor létezik U R m m, S R m n, V R n n, melyekre A = USV T, ahol U és V ortogonális mátrix, S pedig diagonális mátrix, nemnegatív számokkal a f átlóban, S f átlójában lév s i értékeket hívják A szinguláris értékeinek. A szinguláris értékeket csökken sorrendben szokás megadni, ez esetben az S mátrix egyértelm en meghatározható az A mátrixból. Tekintsük a kernelt, mint egy mátrixot és annak vegyük a szinguláris felbontását. Ha csak szinguláris érték nemnulla, akkor a kernel szétválasztható és ezt a szétválasztást meg is kapjuk a felbontásból. (B vebben a [2] könyvben megtalálható.) A kép szélein A képek, amikkel foglalkozunk, sajnos nem végtelen hosszúak és szélesek. Így amikor végrehajtjuk a konvolúciót a kép széleihez tartozó pixelek esetén olyan pixelekkel is vennünk kellene a súlyozást, amelyek nem léteznek. Többféleképpen is 8

megoldhatjuk ezt a problémát. Az egyik megoldás az, hogy olyan helyen nem végezzük el a konvolúciót, ahol a számítás során olyan pixelt használnánk, ami nem létezik. Azaz a kép széleit elhagyjuk, így viszont az output egy kisebb méret kép lesz. Többszöri konvolúció után a képméret jelent sen kisebb lesz, ami nem túl optimális. Másik megoldás, ha nem akarjuk, hogy a kép mérete kisebb legyen, akkor a kép körül, mint egy keret, új értékekkel töltjük fel a mátrixot. Annyival, hogy elvégezhet legyen a konvolúció a kép minden pixelére. Ezen folyamat végrehajtására többféle opciónk van, a következ kben az alábbi mátrixot fogjuk használni, minden esetben 2 széles keretet adunk neki: 2 3 4 5 6 7 8 9 Az egyik az, hogy minden extra értéket 0-nak választunk (zero-padding). Ez az egyik legegyszer bb módszer, lényegében egy fekete keretet ad a képnek (2. ábra), így konvolúció után az eredeti kép a széleken sötétebb lehet. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 0 0 0 4 5 6 0 0 0 0 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Az el z höz hasonló módszer, ha minden értéket egy konstans értéknek választunk. Ez pedig olyan mintha egy szürkeárnyalatot választanánk a kép keretének. Lehet az is, hogy minden hozzávett pixel értéke annyi, mint a hozzá legközelebb es eredeti pixel értéke. 2 3 3 3 2 3 3 3 2 3 3 3 4 4 4 5 6 6 6 7 7 7 8 9 9 9 7 7 7 8 9 9 9 7 7 7 8 9 9 9 9

További módszer, hogy az eredeti kép értékeit letükrözzük a kép széleire. 5 4 4 5 6 6 5 2 2 3 3 2 2 2 3 3 2 5 4 4 5 6 6 5 8 7 7 8 9 9 8 8 7 7 8 9 9 8 5 4 4 5 6 6 5 Az utolsó bemutatott módszert összeragasztásnak (wraparound ) nevezik. Ez azt csinálja, hogy mikor elérünk a kép jobb széléhez, a bal szélén lév értékt l kezdve másoljuk le a jobb szélre az értéket, ha pedig a bal széléhez, akkor a jobb szélét l kezdve másoljuk le az értékeket. Hasonlóan a fels - és alsó határon, illetve a sarkoknál. Így egy tóruszhoz hasonló szerkezetet kapunk. 5 6 4 5 6 4 5 8 9 7 8 9 7 8 2 3 2 3 2 5 6 4 5 6 4 5 8 9 7 8 9 7 8 2 3 2 3 2 5 6 4 5 6 4 5 Bár még többféle lehet ség is van, a dolgozat keretein belül ezeket nem ismertetem. A két megoldás közül szabadon eldönthetjük melyiket használjuk. A második el nye, hogy az eredeti mátrix méretével megegyez mátrixot kapunk, viszont ekkor olyan súlyokat használtuk a kép szélein lév pixelek kiszámításánál, amelyeket mi adtunk meg, így lényegében egy kicsit csaltunk. Néhány nemlineáris módszer Az összes eddig bemutatott simítási módszer lineáris volt, azaz a pixeleket valamilyen formában az ket körülvev pixelekkel súlyoztuk, minden esetben ugyanakkora súlyokkal. Vannak esetek, mikor nemlineáris sz rök használata célszer bb. Például ha van egy kép, amely valamelyik része majdnem teljesen egy árnyalatú (ég, tenger, f, fekete- vagy fehér háttér), de sajnos rögzítés során erre a részre egy teljesen más árnyalatú pixelek kerültek. Ekkor, ha valamilyen lineáris módszerrel 0

simítjuk, akkor is marad egy kis folt, azokon a helyeken, ahol a hibás pixelek voltak, csak az árnyalati különbség halványul. Vegyük a medián sz r t, amely kiválasztja a pixel adott környezetéb l a mediánt (rendezett sorban, páratlan számú elem esetén a középs, páros számú elem esetén a középs két elem átlaga) és azt írja a pixel helyére. Mivel ez csak pixel helyére egy másikat ír, vannak zajok, például a Gauss-zaj (amit a következ részben tárgyalunk), amelyeknél a lineáris sz r k használata jobb eredményre vezet. S t a medián sz r t költségesebb számolni is, mint a lineáris sz r ket. Jobb választás lehet az α-rendezett átlag, mely kiszámolja a környez pixelek átlagát kihagyva azon α százalékát, ahol a legkisebb illetve, a legnagyobb értékek vannak. Vehetünk még ezen kívül súlyozott mediánt is, amely el ször megsúlyozza a környez pixeleket a távolság szerint, majd így veszi a mediánt. A legnagyobb probléma (a nagyobb futásid mellett) az, hogy mindhárom sz r hajlamos lekerekíteni az éleket és sarkokat. A lineárisnál szintén öszetettebb sz r a bilaterális sz r ( bilateral lter ). Az alapötlet az, hogy ahelyett, hogy egy pixel számolásánál a környez pixelek x százalékát hagynánk el, ahelyett azokat hagyjuk el, amelyek nagyon különböznek a középs elemt l. Ekkor a létrejöv új kép pixelének értéke a súlyozott átlaga lesz a szomszédjainak, a következ módon: k,l f(k, l)w(i, j, k, l) g(i, j) = k,l w(i, j, k, l), ahol a w(i, j, k, l) súlyozási együttható. A w(i, j, k, l) esetén az (i, j) azt a pixelt jelöli, melyet éppen ki szeretnénk számolni, a (k, l) pedig az egyik szomszédja. Ennek az értéke két tényez b l áll össze. Az els a koordináták különbségéb l adódik d(i, j, k, l) = e (i k) 2 +(j l) 2 2σ d 2, ahol σ d paraméter, a második pedig a pixelértékek különbségéb l r(i, j, k, l) = e f(i,j) f(k,l) 2 2σr 2, ahol σ r paraméter és a norma a vektortávolság (a normás jelölésnek a színes képek sz résénél van nagyobb jelent sége). E kett szorzatából a következ súlyozási együtthatót kapjuk: w(i, j, k, l) = e (i k) 2 +(j l) 2 2σ 2 d f(i,j) f(k,l) 2 2σ 2 r. A módszer nagy el nye, hogy meg rzi az éleket, azonban hosszabb futási ideje van, mint az el z knek.

5. ábra. Bilaterális sz rés: (a) zajos lépcs él input, (b) a koordináták különbségéb l képzett sz r (domain), (c) a pixelértékek különbségéb l képzett sz r (range), (d) bilaterális sz r, (e) output, (f) 3D távolság a pixelértékek között; forrás: [2]. Zaj A zajról már írtam az el z részben, most kicsit b vebben ismertetem. A zajnak (noise) valamilyen modelljét szeretnénk megadni. Képfeldolgozásban zaj alatt a kép olyan adatait értjük, amelyb l nem tudunk információt kinyerni, vagy amelyb l nem akarunk információt kinyerni. Minden más adatot jelnek ( signal ) nevezünk. A következ kben két zaj modellt ismertetek. Az additív stacionárius Gauss zaj modellben minden pixel értékéhez egy értéket adunk hozzá, amelyet egymástól függetlenül ugyanazon a Gauss eloszlásból választjuk ki úgy, hogy a várható érték 0 legyen. A modell paramétere az eloszláshoz tartozó szórás. Ez a modell a fényképez gépek által okozott termál zajt kívánja modellezni. A zaj szintjét simítással szeretnénk csökkenteni, ha erre alkalmazzuk az átlag sz rést, akkor egy m m-es kernelt használva, a zaj szórása m-ed részére csökken. Ugyanis nézzük meg általánosságban, ha m 2 elemet átlagolunk mi történik, I i -vel (i =, 2,... m 2 ) jelöljük azon elemek halmazát amelyeket átlagoltunk és ekkor minden elem I i = s i + n i alakban áll el, ahol s i legyen a 2

tényleges érték és n i pedig a zaj. Ekkor legyen A = m2 m 2 feltéve, hogy n i i.i.d. és G(0, σ 2 ) eloszlású, ahol σ 2 a szórásnégyzetet jelöli, ebb l következik, hogy: E(A) = m2 m 2 i= I i i= s i A E(A) = m2 m 2 i= i= ( D 2 (A) = E[(A E(A)) 2 ] = E m 2 )2 n m 4 i = most vizsgáljuk meg a zajösszeg szórásnégyzetét: n i ( m 2 m E )2 n 4 i (2) ( m2 ) m 2 m 2 D 2 n i = D 2 (n i ) + 2 Cov(n i, n j ) = D 2 (n i ) = m 2 σ 2 i= i= i<j m 2 i= mivel a változók függetlenek, ezért a tagok páronként vett kovarianciája 0, másrészr l: ( m2 ) ( m 2 ( m 2 ))2 ( m 2 )2 D 2 n i = E n i E n i = E n i i= i= mivel minden n i várható értéke 0. Ezekb l azt kaptuk meg, hogy ( m 2 )2 E n i = m 2 σ 2 i= ezt behelyettesítve (2)-ba kapjuk, hogy: i= i= i= D 2 (A) = m 4 m2 σ 2 = σ2 m 2 Mivel a szórásnégyzet -szeresére változott, ezért a szórás -szeresre fog. Tehát m 2 m a zaj nem sz nt meg teljesen, csak tompult. Természetesen a Gauss sz rést is 3

szokták alkalmazni, de a medián sz r t nem, hiszen minden értékben van valamilyen elváltozás, így ezt nem csökkenti a medián sz r. A só és bors (salt and pepper ) zaj modellezi azokat a fényképez gépeket, amelyek bizonyos helyeken hibás pixeleket rögzítenek. Véletlenszer en kiválasztunk pixeleket és ezeket vagy a minimális, vagy a maximális értékre állítjuk be (azaz fehérre vagy feketére). Az eredmény úgy néz ki, mintha a képet "megszórtuk" volna sóval és borssal, innen kapta az elnevezését. Formálisan is deniálhatjuk: { I(h, k) ha x < l I sp (h, k) = i min + y(i max i min ) ha x l ahol I sp a zajjal szennyezett kép, I az eredeti kép, x [0, ] közé es véletlen szám (ez pixelenként eltér ), l az a paraméter amely meghatározza, hogy mennyire zajos a kép, és y pedig véletlenszer en választva 0 vagy (P (y = 0) = P (y = ) = 2 ). Ezt a zajt általában medián sz r vel szokták simítani. 6. ábra. Egy só és bors zajjal szennyezett kép, els esetben Gauss sz r t alkalmazva, második esetben pedig medián sz r t. 3. Éldetektálás A következ fejezetben az élekkel (edge) és az éldetektálással (edge detection) fogunk megismerkedni. Az élek egyenes vonalak, vagy görbék, amelyek mentén éles árnyalatváltozás van. Ez többféleképpen el fordulhat (7. ábra): Egy képen egy tárgy és a háttér mentén. () Felületi változások esetén, például egy szoba fényképénél a sarkoknál. (2) 4

Egy tárgynak vagy felületnek a mintája változik. zebrák csíkjai. (3) Például egy tetkó, vagy Egy tárgynak (embernek) az árnyéka. (4) 7. ábra. A különböz éltípusok; forrás: [3]. Az éleket a kialakulások szerint is rendezhetjük ( dimenziós metszettel ábrázolva): Lépcs (step) él két (közel azonos) árnyalatú régió közötti kontúr. A változás hirtelen, egyik pixelr l a másikra megy végbe. Ez a leggyakoribb élfajta. 8. ábra Rámpa (ramp) él hasonló a lépcs höz, csak a változás nem hirtelen, hanem folyamatosan pár pixel alatt megy végbe. 5

9. ábra Gerinc (ridge) él olyan, ahol az árnyalat hirtelen változik, de vissza is tér rövid id n belül az eredetihez. Leginkább vékony vonalak okozzák ezeket. A szélesebb gerinc éleket lehet két lépcs éllel modellezni. 0. ábra Tet (roof ) él hasonló a gerinchez, csak itt a változás lassan megy végbe és egyb l vissza is fordul. Ez a legritkább fajta, általában csak az el z felsorolásban említett felületi változás során megy végbe.. ábra Továbbá a következ fogalmak jól jellemzik az éleket: Él normális (edge normal ): (egység)vektor abba az irányba, amelybe a legnagyobb az intenzitásváltozás, mer leges az élre. Él irány (edge direction): (egység)vektor amely mer leges az élnormálra, így érint je annak a kontúrnak, amely az él része. Él pozíció (edge position vagy center ): azok a pozíciók a képen, ahol az él van. Többnyire ez egy bináris kép (0, érték, azaz 0 ahol nincs és ahol van). 6

2. ábra Él er sség (edge strenght vagy magnitude): lokálisan a kép kontrasztja a normális mentén. (Azaz a legnagyobb intenzitásváltozás mértéke helyenként.) Szeretnénk az árnyalatváltozásokat valamilyen értelemmel és jelent séggel felruházni. Sajnos ezt nehezen lehet deniálni, például egy tájképen, a fák levelei és a háttér között húzódó él, hogyan számít a fa határának? Az az eset is el fordulhat, mikor egy él semmilyen jelent séggel nem bír az adott kérdésben, például csak a kép rosszabb min sége miatt van éles változás. Azt sem tudjuk deniálni, hogy mekkora árnyalatváltozás esetében beszélhetünk élr l. A továbbiakban olyan élekre fókuszálunk, amelyeknél a árnyalatváltozás nagy, azaz a nagy gradiens er ssége (gradient magnitude) a szürkeérték függvényünknek. Mivel 2 dimenzióban van a kép, amivel dolgozunk, ezért a 2 dimenziós gradienst deniáljuk: 3.. Deníció (Gradiens). Vegyünk egy f : R 2 R függvényt. Ennek ( a függvénynek a gradiense az a vektormez, mely f : R 2 R 2 f ), hogy f =, f. x y 3.2. Deníció (Gradiens er ssége (magnitude)). Az el z ekben deniált gradiens er ssége: f = ( f x )2 + ( f y )2. 3.3. Deníció (Gradiens iránya (orientation)). Az el z ekben deniált gradiens iránya: θ = atan2( f, f y x ). Itt az atan2 függvény az arctan általánosítása 2 dimenzióra, a számítógépes nyelvekben használatos, alkalmas arra, hogy egy síkvektor y és x koordinátáiból (ügyelve a szokásoshoz képest fordított sorrendre) kiszámítsuk a vektor irányszögét (azaz, az X-tengellyel bezárt szögét), π és π (kis változtatással 0 és 2π) között: 3.4. Deníció. Az atan2 : R 2 R függvény amelyhez a standard arctan függvényt használjuk, melynek az értékkészlete ( π, π ), a következ : 2 2 7

atan2(y, x) = arctan( y ) x ha x > 0 arctan( y ) + π ha y 0, x < 0 x arctan( y ) π ha y < 0, x < 0 x π ha y > 0, x = 0 2 π ha y < 0, x = 0 2 nem deniált ha y = 0, x = 0 A következ kben valamilyen közelítést szeretnénk adni a parciális deriváltakra. Mivel mi a deriválás problémáját diszkrét pixeleken szeretnénk megoldani, ezért természetes a közelítés. A közelítést valamilyen véges különbségként ( nite dierence) szeretnénk felírni. Vegyük az f : R R függvénynek a Taylor-sorát az x helyen felírva a következ t kapjuk, ha az következ helyen nézzük: f(x + h) = f(x) + hf (x) + 2 h2 f (x) + 3! h3 f (x) +... (3) Itt természetesen h(> 0) értékét minél kisebbre szeretnénk választani.ezt átalakítva kapjuk a véges "el re" különbséget (nite forward dierence): f(x + h) f(x) h = f (x) + O(h) Most pedig nézzük a következ helyen: f(x h) = f(x) hf (x) + 2 h2 f (x) 3! h3 f (x) +... (4) Ezt átalakítva pedig megkapjuk a véges "hátra" különbséget (nite backward difference): f(x) f(x h) = f (x) + O(h) h Mindkét kapott kifejezés a deriváltat közelíti. Most vonjuk ki az (3) egyenletb l a (4) egyenletet. Ekkor a következ t kapjuk átalakítás után: f(x + h) f(x h) = 2hf (x) + 2 3! h3 f (x) +... f(x + h) f(x h) 2h = f (x) + O(h 2 ) Ezt véges centrális különbségnek (nite central dierence) nevezik. A legfontosabb, hogy ez egy jobb közelítés, mint az el z kett, mert itt a hibatag csak h 2 nagyságrend. Ezek alapján az x szerinti parciális deriváltra egy megfelel közelítés lenne, 8

ha ezt az el z különbséget vennénk úgy, hogy a h értékét -nek választanánk, hiszen ekkor egy elég jó közelítést adtunk, amelynél a pixel szomszédait használjuk (h most a képet jelöli): h x (i, j) = h h(i +, j) h(i, j) (i, j). x 2 Ez pontosan azt jelenti, hogy a képnek és a következ kernelnek vettük a konvolúcióját: [ ] 0 2 Hasonló gondolatmenettel jön ki, hogy az y parciális deriváltat jól közelíti: h y (i, j) = h h(i, j + ) h(i, j ) (i, j). y 2 Ezt pedig a következ kernellel való konvolúcióval kapjuk meg: 0 2 Az ilyen kerneleket, amelyekkel deriválást közelítünk, derivált sz r knek nevezzük. 3. ábra. A zaj hatása az élkeresésre, el ször az eredeti, majd Gauss zajjal szennyezett képre alkalmazzuk a Canny élkeresést. Vegyük észre azt, hogy ekkor az eredeti pixelek értékeit mindkét esetben valahogyan teljesen a szomszédaival helyettesítettük. Az a veszély áll fent, hogy ekkor a zaj nagyon befolyásolja majd az eredményt. Ha a rögzít készülékünk "halott" pixeleket is rögzít, akkor itt mindig feketék lesznek a pixelek és ez általában nagy változást eredményez, tehát a deriváltak is reagálni fognak rá. Ezért el ször valamilyen simítási módszerrel el kell simítanunk a zajt és csak utána végezhetünk 9

további m veleteket. Mivel azt szeretnénk, hogy a kapott élek az irányítástól ne függjenek, ezért célszer olyan simítási eljárást alkalmazni, amelynél a sz r értékeit, csak a középponttól való távolság határozza meg, azaz radiálisan szimmetrikus a középpontra (circularly symmetric). Ilyen sz r a Gauss sz r, mivel rengeteg el nye is van (szétválasztható, helyettesíthet több kisebb szórású sz r egymás utána alkalmazásával, stb... ) ezért általában ezt szokták alkalmazni. Gradiens alapú élkeresés A következ kben egy egyszer élkeresési módszert mutatok be, amely a gradiens er sségét használja. A következ lépésekb l áll:. Kiszámoljuk a gradiens vektort minden pixelre úgy, hogy vesszük a konvolúciót a vízszintes és függ leges derivált sz r kkel (simítást is végzünk, ha kell). 2. A gradiens er sséget kiszámoljuk minden pixelre. 3. Ha a gradiens er sség egy bizonyos általunk megadott küszöbértéknél nagyobb, akkor ott (lehetséges) él pont van. Tehát az els lépésben, ha simított képpel rendelkezünk, akkor veszünk egy derivált sz r t vízszintesen és függ legesen, ezután pedig továbblépünk a második pontra. Ha viszont simítást is szeretnénk végezni és utána meghatározni a deriváltat, akkor D (S I) = (D S) I, ahol D jelölje a (vízszintes vagy függ leges irányú) derivált sz r t, S a simítást végz sz r t és I az eredeti képet, a konvolúció asszociativitása miatt, el ször elvégezhetjük a simítósz r deriválását, majd utána ennek az egy kernelnek vesszük a konvolúcióját az eredeti képpel. Gauss sz r vel való simítás esetén a Gauss függvény (jelölje f(x, y)) parciális deriváltjai: f (x, y) = x x 2πσ 4 e f(x, y) = x 2 +y 2 2πσ 2 e 2σ 2 x 2 +y 2 2σ 2 és f y (x, y) = y 2πσ 4 e x 2 +y 2 2σ 2. Majd ezekb l képezzük a kernelt, amellyel a konvolúciót végezzük, ahhoz hasonlóan, ahogyan az eredeti Gauss függvényt is diszkretizáltuk. 20

4. ábra. A Gauss függvény parciális deriváltjai ábrázolva, el bb az x szerinti, majd az y szerinti derivált. Természetesen más kernelt is használhatunk, amellyel a simítást és a deriválást közelítjük. Egyik ilyen a Prewitt operátor, a vízszintes és függ leges derivált közelítést jelölje G x és G y, az eredeti képet jelölje I. Ekkor: 0 G x = 0 I és G y = 0 0 0 I 0 a konvolúciós kernelek szétválaszthatóak, a következ képpen: 0 0 = [ 0 ] 0 0 0 0 = 0 [ ] Mindkét esetben a szétválasztásban szerepl els sz r a deriváltat közelíti, a második pedig az átlagsz r t. Természetesen konstansokban eltér azoktól a sz r kt l amiket eddig bevezettünk, de ez számunkra nem baj, hiszen (mivel minden pixel ugyanannyira tér el) ezt a küszöbválasztásnál tudjuk korrigálni. Egy másik példa a Sobel operátor, az el z jelölésekkel élve: 0 2 G x = 2 0 2 I és G y = 0 0 0 I 0 2 2

a konvolúciós kernelek szintén szétválaszthatóak: 0 2 0 2 = [ 0 ] 2 0 2 0 0 0 = 0 [ 2 ] 2 Itt a szétválasztásokban szerepl els sz r k a deriváltat, míg a másodikak a Gauss sz r t közelítik. Ha az els lépést valamilyen módon elvégeztük, utána kiszámoljuk minden pixelre a gradiens er sséget, vagyis az (i, j) pixelhez tartozó gradienser sség: G(i, j) = G 2 x(i, j) + G 2 y(i, j) A harmadik lépéshez pedig vegyünk egy bináris képet ( B), a t küszöbérték szerint (ahol t egy konstans érték), azaz { ha G(i, j) > t B(i, j) = 0 ha G(i, j) t Ez egy egyszer módja az élkeresésnek, hátránya az, hogy a küszöbérték választása nagyban befolyásolja a kimenetet. Továbbá, hogy ez a módszer vastag éleket talál meg, azonban mi jobban szeretnénk egy pixel széles egymáshoz kapcsolódó kontúrokat. Ennek megoldása kés bb következik. LoG élkeresés Éles változások a szürkeérték függvényünkben az els deriváltak maximum-, illetve minimumhelyein jelentkeznek. Ez annak felel meg, mintha a második deriváltaknak keresnénk a nullátmeneteit. Ehhez 2 dimenziós esetben a Laplace operátort használjuk: 3.5. Deníció. Vegyünk egy f : R 2 R függvényt. Ehhez a függvényhez tartozó 2 dimenziós Laplace operátor az a f : R 2 R függvény, amelyre f = 2 f + 2 f. x 2 y 2 Szükségünk van a második deriváltak közelítésére, ezt szintén a Taylor-sorok segítségével közelítjük: f(x + h) = f(x) + hf (x) + 2 h2 f (x) + 3! h3 f (x) + O(h 4 ) 22

f(x h) = f(x) hf (x) + 2 h2 f (x) 3! h3 f (x) + O(h 4 ) Az el z 2 egyenletet összeadva kapjuk: f(x + h) + f(x h) = 2f(x) + h 2 f (x) + O(h 4 ) f(x + h) 2f(x) + f(x h) h 2 = f (x) + O(h 2 ) Ezekb l azt kaptuk meg, hogy az x szerinti második deriváltak közelíti az, hogy ha a képnek a következ kernellel vesszük a konvolúcióját: [ 2 ] az y szerinti második deriváltat pedig, a következ kernellel való konvolúcióval kapjuk meg: 2 A Laplace operátor ezek összegét használja, azaz (I az eredeti kép): [ ] 2 I + 2 I = [ 2 ] 0 0 + 2 I = 4 I 0 0 Olyan helyeket keresünk, ahol ezt a m veletet elvégezve (közel) 0 értékeket kapunk. Viszont azokban a régiókban, ahol a kép egy konstans értéket vesz fel szintén 0-t fog visszaadni ez a m velet, tehát csak azokat a helyeket választjuk, ahol a gradiens er sség is megfelel nagyságú volt. Mivel a második parciális deriváltakat használtuk, ezért a kép érzékeny a zajra, tehát érdemes simítani a képet el ször. Nagyon sok számítási munkát megspórolhatunk, ha a két m veletet egyszerre hajtjuk végre oly módon, hogy el bb képezzük a Gauss sz r Laplace operátorát, majd ezzel a módosított sz r vel végezzük el a konvolúciót. Ezt a sz r t hívják LoG (Laplacian of Gaussian) sz r nek (vagy LoG operátornak). Kiszámításához, vegyük a Gauss függvény parciális második deriváltjait: f(x, y) = x 2 +y 2 2πσ 2 e 2σ 2 2 f x (x, y) = x2 σ 2 2 2πσ 6 x 2 +y 2 e 2σ 2 Ezek összege adja a LoG operátort: és 2 f y (x, y) = y2 σ 2 2 2πσ 6 G σ (x, y) = x2 + y 2 2σ 2 e x 2 +y 2 2πσ 6 2σ 2. 23 x 2 +y 2 e 2σ 2.

Diszkretizálás után kapjuk a kívánt kernelt. Ezt a függvényt lehet két Gaussfüggvény különbségeként közelíteni, ezt DoG-nek (Dierence of Gaussians, megjegyzés: néhány helyen a DoG rövidítést a Derivative of Gaussian esetén használják, azaz a Gauss deriváltjára vonatkozik) szokták nevezni: G σ = G σ G σ2 a szétválaszthatóság a DoG esetén is fenáll, így ez a LoG egy hatékony implementációja a gyakorlatban. (5. ábra) 5. ábra. LoG (σ = esetén), valamint ennek DoG közelítése (σ = 2 és σ 2 = 2 ). Canny élkeresés A következ kben a Canny élkeres t mutatom be, valószín leg ez a leggyakrabban használt élkeres. Ha feltételezzük, hogy a kép Gauss zajjal szennyezett, és lépcs éleket keresünk, akkor vegyük a következ elvárásokat az élkereséssel kapcsolatban: jó detekció: a lehet legtöbb élet találja meg, jó lokalizáció: a megtalált él pontjai az él közepén helyezkedjenek el, kevés hamis találat: egy élet csak egyszer jelezzen és a megtalált élek között ne legyenek a zaj által okozott élek. John Canny talált egy folytonos, lineáris sz r t, amely maximalizálja ezeket a kritériumokat, sajnos nincs zárt alakja ennek az optimális sz r nek. Viszont jól közelíti a Gauss deriváltja, ennek segítségével megkeressük az x és y szerinti deriváltakat, majd kiszámoljuk a gradiens er sségét és irányát. Ezután megkeressük az élek középpontjait és a többi pontot elhagyjuk, ezzel megvékonyítva a kapott 24

éleket, majd kizárjuk a hamis találatokat hiszterézis küszöböléssel. A nem-maximumok elhagyásának (non-maximum suppression ) gondolata onnan ered, hogy élek ott vannak, ahol a gradiensnek lokális maximuma van, azonban különböz éleknél eltér lehet az az árnyalatváltozás, amelynek az él megjelenése köszönhet, így szükségünk lesz egy módszerre, ami ezen segít. A fentebb már ismertetett gradiens alapú élkeres sajnos nem tud olyan küszöböt találni, amely megtartja az éleket és a legnagyobb kontrasztú él mentén is csak az élközepeket találja meg, így a küszöbölés után olyan pontokat is megtartott az él mentén, amelyek nem az él közepén helyezkedtek el, ezzel megvastagítva az éleket. A módszer lényege az, hogy minden pixelre közelítjük a kiszámolt gradiens irányát 4 irány, vízszintes, függ leges és a két diagonális valamelyikével. Ezután az ez iránymenti két szomszédjával összehasonlítjuk a gradiens er sségeket, ezután, ha nem volt maximum, akkor nem lesz az él közepe, tehát elvetjük, ha volt a maximum, akkor megtartjuk. Ennek a módszernek másik megközelítése, ha nem a kiszámolt irányt közelítjük, hanem a képet folytonosnak tekintve interpoláció segítségével állapítjuk meg milyen értékekkel kell az összehasonlítást végezni (6. ábra, b vebben [] forrásban megtalálható). 6. ábra. A pontok a pixeleket jelölik, most éppen a q-ról szeretnénk eldönteni, hogy az él közepén helyezkedik-e el, sajnos a gradiens iránya nem megy át semelyik szomszédos pixelen sem, ezért interpoláció segítségével szeretnénk meghatározni a p és r helyen a gradiens er sséget, tipikusan, ezek az értékek lineáris interpolációval, esetünkben p és r bal és jobb oldali szomszédja segítségével, számolható, ezek után, ha a q-nál lév gradiens er sség nagyobb, mint p és r gradiens er ssége, akkor q élpont lesz; forrás: []. Ezután már csak a hiszterézis küszöbölés (hysteresis thresholding ) van hátra. Az optimális küszöbérték megtalálása (a gradiens alapú élkeresésnél is) mindig 25

problémát okozott, ha túl nagy a küszöb, rengeteg élet elveszthetünk, vagy szakadásokat okozhatunk, ha túl kicsi értéket választunk küszöbnek, akkor pedig sok olyan élet is találhatunk, amely eredetileg nem is volt él. Ezt a problémát próbálja orvosolni a hiszterézis küszöbölés azzal, hogy két küszöböt is megadunk, egy nagyobb és egy kisebb értéket, jelölje ezeket rendre H és L. Minden pont mely esetén a gradiens er sség kisebb, mint L, azt elvetjük, és minden pont melyre a gradiens er sség nagyobb, mint H, azt megtartjuk, ezeket nevezzük el er s élpontoknak. Azon pontokat, amely a kett közé esnek, nevezzük gyenge élpontoknak. Végeredményben azokat a pontokat tartjuk meg amelyek vagy er s élpontok voltak, vagy olyan gyenge élpontok, hogy valamilyen úton (szomszédos gyenge élpontok sorozatán) el tudunk jutni egy er s élpontba (ez természetesen nem jelentheti azt, hogy vastagodott egy él, mert ezt már a nem-maximumok elhagyása után alkalmaztuk). 7. ábra. Egy képen alkalmazva a különböz élkereséses algoritmusok. El ször Prewitt operátor segítségével, majd LoG és végül Canny élkereséssel. Nem cél a különböz módszerek egymással történ összehasonlítása, mert a kimenetet nagyban befolyásolja a különböz küszöbérték választások. 4. Harris sarokdetektálás A sarkokat (corner ) deniálhatjuk két él metszeteként, így azt gondolnánk, hogy az élkeres algoritmusok segítségével tudunk könnyen sarokpontokat is találni, azonban, mint láthattuk (8. ábra), az élkeres algoritmusok nem mindig m ködnek jól a sarkok körül. A sarokpontok megkereséséhez egy csúszóablakot fogunk használni, ezt vizsgálva ott lesz sarokpont, ahol az ablakot mozgatva bármely irányba, nagy változás tapasztalható a képfüggvény értékeinkben. Az ablakon belül nézve, három esetet különböztethetünk meg (9. ábra): 26

8. ábra. Látható, hogy az élkeres algoritmusok a sarkok körül nem mindig viselkednek úgy, ahogy elvárnánk (Canny). "sima" régió: nincs (vagy kevés) változás minden irányban, "él": nincs változás az él mentén, "sarok": jelent s változás minden irányban. 9. ábra. "Sima" régió, "él" és "sarok"; forrás: [6]. A Harris sarokkeres egy matematikai megközelítést ad arra, hogy melyik eset áll fent. Az ablak változása egy [u, v] eltolás hatására: E(u, v) = x,y w(x, y)[i(x + u, y + v) I(x, y)] 2, (5) ahol w(x, y) ablak (súly)függvény, például az ablakon belül, azon kívül 0 értéket vesz fel. Most írjuk fel a kétváltozós függvények Taylor-sorát az alábbi helyen: f(x + u, y + v) = f(x, y) + u f x + 2 f (x, y) + v (x, y)+ y ( u 2 2 f x 2 (x, y) + uv 2 f x y (x, y) + 2 f v2 y ) (x, y) 2 +... 27

Ez alapján egy els rend közelítés: f(x + u, y + v) f(x, y) + u f f (x, y) + v (x, y) x y ezt alkalmazzuk az (5) egyenletbe (jelölje I x és I y a parciális deriváltakat): E(u, v) = x,y x,y x,y w(x, y)[i(x + u, y + v) I(x, y)] 2 w(x, y)[i(x, y) + ui x (x, y) + vi y (x, y) I(x, y)] 2 w(x, y)(u 2 I 2 x(x, y) + 2uvI x (x, y)i y (x, y) + v 2 I 2 y(x, y)) Ha ezt átírjuk mátrix egyenletté, akkor azt kapjuk, hogy E(u, v) [ u v ] [ ] u M, v ahol M egy (2 2) mátrix: M = [ ] I w(x, y) x(x, 2 y) I x (x, y)i y (x, y) I x (x, y)i y (x, y) I 2. x,y y(x, y) A továbbiakban a kapott M mátrixot vizsgáljuk meg. Nézzük meg a különböz minták felett (ezek a minták az "ablakok"), mit kapunk, ha kiszámoljuk a deriváltakat, és ezután ábrázoljuk a kapott értékek eloszlását. Ezeket az eloszlásokat jól tudjuk a kapott értékekre illesztett ellipszisek méretével és alakjával jellemezni. Kapcsolat van az M mátrix sajátértékei és a kapott ellipszisek között, mégpedig észrevehetjük, hogy ott lesz "sarok", ahol mindkét sajátérték értéke nagy. 28

20. ábra. Él, sima és sarok; forrás: [6]. 2. ábra. A deriváltak, mint 2 dimenziós pontok ábrázolása, majd ellipszis illesztése; forrás: [6]. 22. ábra. M sajátértékei alapján osztályozás; forrás: [7]. 29

Ezek szerint, M sajátértékeivel jól jellemezhetjük a problémát. Azonban a sajátérték számítás a gyakorlatban költséges m velet, ezért Harris és Stephens a következ sarkosságot jellemz függvényt adta meg: R = det(m) k(trace(m)) 2 = λ λ 2 k(λ + λ 2 ) 2 itt k konstans, értéke k = 0.06. Itt determinánst és trace-t kell számolnunk, 2 2 esetben könnyen számolható, det(a) = a a 22 a 2 a 2 és trace(a) = a + a 22, ha A az alábbi mátrix: [ ] a a A = 2 a 2 a 22 A kapott függvény értékeire fogunk megfelel küszöbölést alkalmazni. Ha (pozitív) nagy R értéke ott sarok lesz, ha negatív és a gradiens er sség is megfelel en nagy, akkor élet találtunk, ha pedig R kicsi, akkor ott sem él, sem sarok nem lehet. (Megjegyzés: tehát ezt élek keresésére is használhatjuk!) Ezután még nemmaximum elhagyást is alkalmazunk. 23. ábra. Sarokkeresés. A Harris sarokdetektáló algoritmus összefoglalható a következ lépésekben:. Számítsuk ki az M mátrixot minden egyes képpont feletti ablakban és ebb l megkapjuk az R sarkossági jellemz t. 2. Keressük meg azokat a pontokat, amelyekre a sarkossági érték elegend en nagy (R > t, ahol t küszöbérték). 3. Tartsuk meg ezekb l a lokális maximumokat (vagyis nyomjuk el a nemmaximumokat). 30

Alkalmazás A képfeldolgozásban, valamint a számítógépes látás számos területén felmerül probléma egy látványról készült képpár közötti pont megfeleltetések megkeresése. Ehhez megbízható jellemz ket (feature), tipikusan sarokpontokat nyerünk ki a képekb l és ezeket megfeleltetjük egymásnak. Ennek a módszernek számos alkalmazása van, például: képek illesztése, 3D rekonstrukció, mozgáskövetés, objektumok azonosítása, stb... Egyik alkalmazása a panorámaképek készítése (24. ábra). Ezt a következ lépések segítségével tudjuk elkészíteni (két kép esetén):. Jellemz pontok keresése mindkét képen. 2. Kapott pontok megfeleltetése. 3. Megfeleltetések alapján a képpár összeillesztése. 24. ábra. Egy panorámakép készítése; forrás: [7]. 3

5. Matlab implementációk A gyakorlatban sok programmal tudunk képfeldolgozást végezni. A szakdolgozatomban szerepl képeket Matlab segítségével csináltam. A Matlab környezetben egyszer parancsokkal elvégezhetjük a szükséges m veleteket. imread () függvénnyel beolvashatjuk a megfelel formátumú (például.jpg vagy.tif ) képet, ezután az rgb2gray() függvénnyel tehetjük szürkeárnyalatú képpé, az egyszer bb kezelés érdekében, a képet érdemes az alapértelmezett uint8 típusról, double típusra átállítani az im2double() segítségével. A konvolúció m veletét az imlter () függvény segítségével tudjuk megvalósítani (vigyázat: a függvény alapméretezett beállítása a korreláció m veletet végzi, így külön be kell állítani paraméterként a konvolúciót), éleket az edge(), sarkokat pedig a corner () függvény segítségével kereshetünk, itt paraméterek segítségével kiválaszthatjuk a nekünk tetsz eljárásokat. A (módosított) képet pedig, az imshow () függvénnyel tudjuk megnézni. A következ kben három implementációt mutatok be: Gauss kernel, ahol a szigmát választhatjuk meg, a kernel mérete ennek függvényében változik: f u n c t i o n k=gaussk ( l ) szigma=l ; s z e l f=f l o o r (3 szigma ) ; [ x, y]= meshgrid( s z e l f : s z e l f, s z e l f : s z e l f ) ; t=exp ( (/(2 szigma ^2)) ( x.^2 + y. ^ 2 ) ) ; k=t /sum(sum( t ) ) ; Só és bors zaj alkalmazása képekre (az intenzitást választhatjuk meg): f u n c t i o n k=s a l t a n d p e p p e r ( img, l ) k=img ; f o r i =: s i z e ( k, ) f o r j =: s i z e ( k, 2 ) r=rand ; i f r>=l e=r a n d i ( [ 0, ] ) ; k ( i, j )=e ; end end end 32

Gradiens alapú élkeresés implementációja Prewitt operátor segítségével, a küszöbérték tetsz legesen megadható (megjegyzés:a t mátrix kihagyható lett volna és elég lett volna egyb l a k mátrixot számolni, ám néha jól jön, ha megvan határozva az a részlet, amely a gradiens er sséget számolja ki, mert máshol is felhasználható): f u n c t i o n k=prewitto ( img, t h r e s h ) x=[ 0 ; 0 ; 0 ] ; y=[ ; 0 0 0 ; ] ; imgx=i m f i l t e r ( img, x, ' conv ' ) ; imgy=i m f i l t e r ( img, y, ' conv ' ) ; t=z e r o s ( s i z e ( img, ), s i z e ( img, 2 ) ) ; f o r i =: s i z e ( t, ) f o r j =: s i z e ( t, 2 ) t ( i, j )= s q r t ( imgx ( i, j )^2+imgy ( i, j ) ^ 2 ) ; end end k=z e r o s ( s i z e ( img, ), s i z e ( img, 2 ) ) ; f o r i =: s i z e ( t, ) f o r j =: s i z e ( t, 2 ) i f t ( i, j )> t h r e s h k ( i, j )=; end end end 33

Irodalomjegyzék [] David A. Forsyth and Jean Ponce, Computer Vision: A Modern Approach, Prentice Hall 2002. [2] Richard Szeliski, Computer Vision: Algorithms and Applications, Electronic Draft 200 (http://szeliski.org/book/). [3] Stuart Russell and Peter Norvig, Articial Intelligence A Modern Approach, Second Edition, Prentice Hall 2003. [4] Emanuele Trucco and Alessandro Verri, Introductory Techniques for 3D Computer Vision, Prentice Hall 998. [5] Chris Harris and Mike Stephens, A combined corner and edge detector, Plessey Company plc. 988. [6] Robert Collins, Introduction to Computer Vision Lecture Notes Fall 2007 (http://www.cse.psu.edu/~rcollins/cse486/). [7] Kató Zoltán, Digitális képfeldolgozás El adásjegyzet 204 (http://www.inf.u-szeged.hu/~kato/teaching/digitaliskepfeldolgozastg/). 34