Kétdimenziós alakelemzés Digitális képelemzés alapvető algoritmusai 1 Alakelemzés alapfogalmai Csetverikov Dmitrij Eötvös Lóránd Egyetem, Budapest csetverikov@sztaki.hu http://vision.sztaki.hu Informatikai Kar 2 Terület alapú alakelemzési módszerek Invariáns alaknyomatékok Inerciatenzor és orientáció Az alaknyomatékok összefoglalója 3 Kontúr alapú alakelemzés Lánckód Alaktényező Görbület-elemzés Kétdimenziós alakelemzés tárgyai Alakelemzés feladatai Lapos objektumok 3D-s tárgyak vetületei Szegmentált bináris képek 2D-s alakzatok Görbék, zárt kontúrok Angolul: shape analysis Alakzatleírás számszerű leírások alakzat-sajátságok kiemelése (pl. sarkok) Alakzat-szegmentálás Alakzatillesztés Alakzat-felismerés Pozíció és orientáció meghatározása
Terület alapú és kontúr alapú módszerek Q alakzat pq-rendű centrális nyomatékai Egy 2D-s alakzatot kétféleképpen lehet reprezentálni az alakzat kontúrjával az alakzat teljes területével: belső résszel és kontúrral Terület alapú alakelemzési módszerek az alakzat teljes területén operálnak pontokat 2D-ben rendeznek támogatnak 2D-s lokális műveleteket számításigény az alakzat területétől függ Kontúr alapú alakelemzési módszerek az alakzat kontúrján operálnak pontokat a kontúr mentén rendeznek nem támogatnak 2D-s lokális műveleteket számításigény az alakzat kerületétől függ Folytonos eset µ pq = 1 (x x S C ) p (y y C ) q dx dy, p, q = 0, 1,... Q Diszkrét eset µ pq = 1 (x x S C ) p (y y C ) q, S : Q területe x,y Q Centrális: centroidhoz (súlyponthoz) képest definíálva x C = 1 S x, y C = 1 S x,y Q Angolul: shape moments y x,y Q Az alaknyomatékok információ-vesztessége Másodrendű invariáns nyomatékok: p + q = 2 Elméletileg, a nyomatékok megőrzik az alakinformációt. az alakzat visszaállítható az összes µ pq -ből A gyakorlatban kevés számú, kisebb rendű nyomatékot használnak számszerű alakzat-jellemzőként tipikusan, p + q 4 ez információ-vesztességgel jár a vesztesség nem kontrollálható A magasabb rendű nyomatékok mellőzésének oka zajérzékenységük. nagy p-re az x p deriváltja nagy x p felerősít zajt az x-ben Alacsonyabb rendű nyomatékokat viszont gyakran és hatékonyan alkalmaznak. Gyakran használják elforgatás-invariáns alakleírásra. Két invariáns jellemző definíálható: M cmp = 1 2π M ect = S µ 20 + µ 02, (µ 20 µ 02 ) 2 + 4µ 2 11 µ 20 + µ 02, ahol S a terület, és a centrális nyomatékok µ 20 = 1 S x,y Q (x x C ) 2, µ 11 = 1 S (x x C ) (y y C ) x,y Q
Kompaktság és excentricitás Alaknyomatékok invarianciája M cmp : kompaktság 0 M cmp 1 végtelen hosszú alakzatra 0 lemezre 1 angolul: compactness M ect : excentricitás 0 M ect 1 végtelen hosszú alakzatra 1 lemezre 0 angolul: eccentricity Invariancia folytonos esetben M cmp és M ect invariáns minden hasonlósági transzformációra. eltolás, elforgatás és izotrop skálázás (méretváltozás) Invariancia diszkrét esetben M cmp és M ect invariáns digitális rácson való eltolásra elforgatás-invariancia csak közelítő skálázás-invariancia csak közelítő Példa: Téglalap invariáns nyomatékai Téglalap nyomatékok változása növekvő k-ra S = 2a 2ka = 4ka 2 µ 20 = 4 S µ 02 = 4 S µ 11 = 1 S a ka 0 0 a ka 0 0 a ka a ka x 2 dx dy = k2 a 2 y 2 dx dy = a2 3 xy dx dy = 0 k 1 a méretek aránya 3 M cmp = 1 π y a x C, y C 0 ka x 6k k 2 + 1 6 πk, ha k 1 M ect = k2 1 k 2 + 1 1 2 k2, ha k 1 Növekvő k egyre hosszúkásabb téglalapot jelent. kompaktság csökken excentricitás nő Hosszú téglalapokat (k > 5) M ect nem különböztet meg. a görbe deriváltja kicsi Négyzetre (k = 1) M cmp 0.96 közel áll lemezhez de megkülönböztethető 1.0 0.8 0.6 0.4 0.2 M ect a ka M cmp 0.0 0 2 4 6 8 10 k
Gyűrű kompáktsága Az alaknyomatékok jelentése és robusztussága M cmp = k 2 1 k 2 + 1 ; M ect = 0 M cmp megkülönböztet gyűrűket, ha 1 < k < 4. Vastag gyűrűket (k > 5) M cmp nem különböztet meg. a görbe deriváltja kicsi Lyukas lemezre (k 1) M cmp 1.0 közel áll lemezhez (M cmp = 1) 1.0 M cmp 0.8 0.6 0.4 0.2 r kr 0.0 0 2 4 6 8 10 k Kompáktság a pontok radiális eloszlását mutatja. Lemezre M cmp = 1, gyűrűre M cmp 1. M cmp robusztus zajra és (diszkrét képen történő) elforgatásra. Excentricitás az alakzat elnyújtottságát mutatja. Lemezre és gyűrűre M ect = 0, vonalra M ect = 1 M ect kevésbé robusztus zajra és elforgatásra. Inerciatenzor Inerciatengelyek és orientáció µ 20, µ 02, µ 11 az I ij inerciatenzor elemei. Y θ X centroid, y I ij leírja objektum forgását a súlyponton átmenő tengelyek körül. x C C I ij a legjobban közelítő ellipszissel modellezi az alakzatot. Főtengely: az ellipszis hosszú tengelye az inercia minimális: I min Melléktengely: az ellipszis rövid tengelye az inercia maximális: I max M ect I max I min nagyobb excentricitás hosszabb ellipszis minor axis Y major axis θ X centroid x, y Pozíció: x C, y C Orientáció: a főtengely szöge, θ C C
Az orientáció meghatározása Az alaknyomatékok kiszámítása és kiterjesztése Az főtengely és az X tengely által bezárt szög θ = 1 2 arctan µ 02 µ 20 + (sign µ 11 ) π + πn, n = 0, 1 2µ 11 4 axiális mennyiség: modulo π Hosszúkás alakzatok esetén pontos. hosszabb ellipszis pontosabb orientáció becslés Kompakt, körhöz közeli alakzatok esetén pontatlan. numerikusan instabil, ha µ 02 µ 20 és µ 11 kicsi Nem definíált, ha az alakzatnak három vagy több szimmetriatengelye van. A nyomatékokat az alábbi adatstruktúrákban lehet kiszámítani: szegmentált kép (definíció szerint) szegmentált futam-hossz kód (kicsit bonyolultabb) lánckód (még bonyolultabb) Amikor p + q = 3, öt invariáns nyomaték-kombináció van. az alakzat aszimmetriáját tükrözik zajérzékenyek ritkábban használják, mint M cmp -t és M ect -t A nyomatékokat többféleképpen lehet kiterjeszteni. szürke és színes képekre affin-invariáns módon A nyomatékok alkalmazása Invariáns nyomatékok összefoglaló Viszonylag kis számú, egymástól jó elkülönülő alakzat felismerése. kb. 10 20 darab Előszelektálás nagy számú alakzat felismerése esetén a szóba jöhető jelöltek gyors kiválogatása pl. kontúrillesztés vagy más számításigényes eljárás elött Más alakjellemzőkkel kombinálva. Tipikus alkalmazások robot látás karakter felismerés affin-invariáns megfeleltetés Előnyök elforgatás- eltolás- és nagyítás-invariansak viszonylag egyszerűen kiszámíthatók különböző adatstruktúrákban meghatározhatók M cmp robusztus zajra és kisebb torzításra elég jól különböztetnek meg alakzatokat orientáció is meghatározható Hátrányok nem tükröznek lokális kontúrsajátságokat M ect és magasabb rendű nyomatékok kevésbé robusztusok az orientáció pontatlan vagy definiálatlan lehet
Bináris alakzat lánckódolása Bináris kép lánckódolása Kiválasztunk egy kezdő kontúrpixelt. Végigkövetjük az alakzat (összefüggő komponens) kontúrját. a végén visszatérünk a kezdőpontba Közben eltároljuk a lánckódokat. a következő kontúrpontra mutató vektor irányát diszkrét képen nyolc irány van Egy bináris alakzat lánckódja két részből áll: a kezdőpont koordinátái, (x 0, y 0 ) a következő kontúrpontra mutató irányok sorozata, {c 1, c 2,...} Bináris kép több összefüggő komponensból áll. Bináris kép lánckódját úgy kapjuk meg, hogy végigpásztázzuk a képet ha találunk egy körbe nem járt komponenst, körbejárjuk és lekódoljuk Bináris kép lánckódja az összes kontúr kódjából áll. benne lehetnek a belső kontúrok (lyukok) lánckódjai is a lyukokat külön kell megjelölni egymásba ágyazott komponensek is lehetnek angolul: nested Példa lánckódolásra: 8-összefüggő háttér Példa lánckódolásra: 8-összefüggő objektum 3 2 4 5 6 1 0 7 a nyolc lánckód x 0, y 0 0 0 1 7 1 6 2 6 3 5 3 5 4 komponens lánckódolása 3 2 4 5 6 1 0 7 a nyolc lánckód x 0, y 0 0 0 1 6 2 6 3 5 4 komponens lánckódolása 8-összefüggő háttér, 4-összefüggő komponens A kezdőpont az első olyan háttérpont, amelynek jobbra objektum szomszédja van. A komponenst kívül járjuk körbe. A kapott lánckódok: 1, 0, 0, 7, 6, 6, 5, 5, 4, 3, 3, 2, 1 4-összefüggő háttér, 8-összefüggő komponens A kezdőpont az első olyan objektumpont, amelynek balra háttér szomszédja van. A komponenst belül járjuk körbe. A kapott lánckódok: 0, 0, 6, 6, 5, 4, 3, 2, 1
Belső és külső kontúrok körbejárása Eltolt és elforgatott alakzat kódváltozása Kiválasztjuk a külső kontúrok körbejárási irányát. példánkban mindig jobbra fordulunk, óramutatóval megegyező irányban a terület pozitív lesz ha X jobbra, Y fölfelé mutat A belső kontúrok körbejárási iránya automatikusan ellenkező lesz példánkban óramutatóval ellentétes a terület negatív lesz ez körbejárás elvéből következik A terület előjeléből megtudjuk, hogy a kontúr külső-e vagy belső. Y X Külső és belső kontúrok egymásba ágyazva Eltolt alakzat futam-hossz kódjában minden futam kezdőpontját kell módosítani. a futamok hosszai nem változnak Eltolt alakzat lánckódjában csak a kezdőpontot kell módosítani. maguk a lánckódok nem változnak Elforgatott alakzat futam-hossz és lánckódját újra kell kiszámítani. változásuk csak triviális esetekben követhető Terület alapú alakreprezetációk felhasználása Kontúr alapú alakreprezetációk felhasználása Támogatják integrális alakjellemzők kiszámítását. pl. terület, nyomatékok to next run in code A B Támogatnak kontúrelemzést és egyes integrális alakjellemzők kiszámítását pl. görbület, kerület, terület, nyomatékok P Q De nem támogatnak kontúrelemzést. az A és B pont egymáshoz közel van a kontúron, de távol az RLC-ben run length coding De nem támogatnak lokális képműveleteket. az P és Q pont egymáshoz közel van a képen, de távol a kontúron chain coding
Alaktényező Alaktényező invarianciája és robusztussága Definíció: S terület, L kerület 0 F 1 Körszerűségnek is hívják. alaktényező: shape factor körszerűség: circularity F = 4πS L 2 Körszerűség, kompaktság mértéke körre F = 1 hosszú keskeny alakzatra F 1 a kontúr simaságát is tükrözi Invarianciá folytonos esetben invariáns minden hasonlósági transzformációra eltolás, elforgatás izotrop skálázás (méretváltozás) Invariancia diszkrét esetben invariáns digitális rácson való eltolásra elforgatás-invariancia csak közelítő skálázás-invariancia csak közelítő Függ a felbontástól. kontúrrészletek megjelenésével változik a kerület Viszonylag robusztus. zajos kontúrok esetén simítás vagy approximáció szükséges Különböző alakzatok alaktényezői Görbület definíciója F = 1 F = π 4 a 4a 4π 0.79 F = 25 0.5 Paraméterezett görbe C(p) = {x(p), y(p)} p egy paraméter x: {x, y(x)} s ívhossz: {x(s), y(s)} s C(s) θ ρ C(s) R 2R F = 1 3 0.33 F 1 F 1 Görbület κ = dθ ds = 1 ρ θ meredekség: tan θ = dy dx s ívhossz: ds 2 = dx 2 + dy 2 ρ érintőkör sugara görbületi sugár
Kis szótár A görbület meghatározása görbe: curve görbület: curvature meredekség, azaz érintő szöge: slope ívhossz: arc length érintőkör: osculating circle görbületi sugár: radius of curvature Tetszőleges {x(p), y(p)} paraméterezésre κ = x py pp y p x pp ( ) x 2 p + yp 2 3/2, x p = p x Az {x, y(x)} paraméterezésre y xx κ = ( ) 1 + y 2 3/2 x probléma, ha y(x) többértékű probléma függőleges érintőkkel: y x Az s ívhosszal paraméterezett folytonos görbékre x(s) és y(s) egyértékű x s és y s korlátos (1) A görbület tulajdonságai Görbületi jellemzők A görbület pozitív és negatív is lehet. az érintőkör a görbétől jobbra, balra is eshet A deriválás miatt a görbület zajérzékeny. Emiatt deriválás elött a görbét el kell simítani. Arre átlagszűrőket, tipikusan Gauss-szűrőket használnak. Növekvő σ-val történő Gauss-szűrés utáni görbület számítás görbületi scale-space-t eredményez. fokozatosan csökkenő részletesség mint élszűrésben Nagy görbületű pontok tipikusan, sarkok töréspontok Sarkok jelentőssége pontosan lokalizálhatók fontosak alak- és mozgáselemzésben fontosak az emberi látásban Görbületi nulla átmenetek (zero-crossing) inflexiós pontok kevésbé pontosan lokalizálhatók kevésbé fontosak az emberi látásban
Lánckód alapú görbület számítás nehézségei Egy megoldás ívhosszal paraméterezett görbékre Zajos képek zajos görbéket produkálnak. lánckód túlságosan "cikkcakkos" lehet A görbe diszkrétizálása diszkrétizálási hibákhoz vezet. Megjelennek nagyon keskeny részek. szélsőséges esetben önmagát érintő görbék Ezek a tényezők pontatlan görbületet és hamis sarkokat eredményezhetnek. Eltávolítjuk a zajt, elsimítjük a görbét. közben ügyelünk a potenciális sarkokra nem tesszük tönkre Szabályos s lépésenként újramintavételezzük az x(s), y(s) görbét. ehhez interpolációra van szükség Kiszámítjuk a görbületet az (1) képlet szerint, felhasználva az deriváltak közelítését x s x i+1 x i 1 2 s x ss x i+1 2x i + x i 1 s 2 Lánckód alapú sarokerősség k-koszinuszokkal Sarokdetektálás k-vektor szögváltozása alapján Beállítjük a skálaparamétert: k = 1, 2,... Kiszámítjuk a k-vektorokat a ik = (x i x i+k, y i y i+k ) b ik = (x i x i k, y i y i k ) Sarokerősségként felhasználjuk a k-koszinuszokat c ik = cos α ik = (a ikb ik ) a ik b ik, p i k b ik α ik a p p ik i i+k a b ik k-vektor komponensei (X ik, Y ik ) = (x i x i k, y i y i k ) Sarokerősség a k-vektor szögváltozása is lehet: θ ik = arctan (Y ik /X ik ) θ ik = θ i+1,k θ i 1,k A sarokerősségre alkalmazzuk non-maximumok elnyomását. NME, mint éldetektálásban i k θ ik b ik i 1 i i +1
Példák sarokdetektálásra kis k kis k nagyobb k Hamis detektálás is van amikor k kicsi zaj, diszkrétizálási hiba Sarkokat az NME miatt is elveszíthetünk. amikor k nagy