Képeldolgozás jól párhuzamosítható B. Wilkinson, M. Allen: Parallel Programming, Pearson Education Prentice Hall, nd ed., 005. könyv. ejezete alapján Vázlat A képeldolgozás olyan alkalmazási terület, amely számos lehetőséget biztosít párhuzamosításra Témakörök: Alacsonyszintű műveletek: simítás, hisztogram, éldetektálás Hough transzormáció egyenes detektáláshoz Képeldolgozás Képeldolgozás
Mi a képeldolgozás? A képeldolgozás a jeleldolgozás része, amely képekkel oglalkozik Célja: a kép minőségének javítása az ember, vagy további számítógépes eldolgozás számára Kép Képeldolgozás Jobb kép Képeldolgozás 3 Képeldolgozás nehézségei Hogyan tudjuk megérteni, kivenni a valóságot, vagy a valóság képét? Mi a nyitja a képek megértésének? Milyen ismeretet használunk a képek megértéséhez? Képeldolgozás 4 Képeldolgozás
Képek ábrázolása Képeldolgozás 5 Színes képek Képeldolgozás 6 Képeldolgozás 3
A digitális képeldolgozás szintjei A képek szg-es eldolgozását három szintre lehet osztani: alacsony, közép és magas szintű eladatok (low-level, middle-level, high-level) Low-level: mind az input mind az output kép Middle-level: az inputok általában képek, de az outputok a képekből nyert attribútumok (pl. egy objektum azonosítói a képen) High-level: a elismert objektumok együttesének érzékelése Képeldolgozás 7 Alacsonyszintű képeldolgozás A tárolt képen operál, hogy javítsa/módosítsa azt A kép képelemek (piel = picture element) kétdimenziós tömbje Számos alacsonyszintű képművelet az intenzitásokat (szürkeségi értékeket) manipulálja Képeldolgozás 8 Képeldolgozás 4
Számítási igény Tételezzünk el egy 04 04 pielből álló képet, ahol az intenzitást 8-biten tároljuk. Tárolási igény 0 byte ( Mbytes) Tegyük el, hogy minden pielen csak egy műveletet végzünk, ekkor 0 operációt kell végeznünk a képen. Ez kb. 0-8 mp/operáció, ami hozzávetőlegesen 0 ms. Valós idejű képeldolgozás esetén tipikusan 5-30 képet kell másodpercenként eldolgozni (ps). Tipikusan nem csak egyetlen operációt kell végezni a pieleken, hanem több és összetettebb unkciókat. Képeldolgozás 9 Pont alapú műveletek Olyan műveletek, ahol az output csak egy képponttól ügg. Küszöbölés: Egy bizonyos határnál (threshold) nagyobb intenzitású képpont értékéhez az egyik szélső értéket, ellenkező esetben a másik szélsőértéket rendeljük hozzá. Ha egy piel intenzitása i, akkor minden pielre: i ( i < threshold) i = 0; else i = ; Képeldolgozás 0 Képeldolgozás 5
Pont alapú műveletek Kontraszt nyújtás: Az intenzitás értékek tartományát széthúzzuk, hogy a részletek jobban érzékelhetőek legyenek. Adott egy piel intenzitása i az l - h tartományból, a kontraszt nyújtás során az H - L tartományba transzormáljuk az intenzitást ( ) H L = I i L ( ) h l Szürkeségi szint csökkentés: A kevésbé szigniikáns biteket elhagyjuk. Képeldolgozás Hisztogram Az egyes intenzitásokból hány darab van a képen Képeldolgozás Képeldolgozás 6
Hisztogram soros kód ahol a pieleket a p[][] tömb tárolja és a hist[k] vektor megmondja, hogy a k-ik intenzitásból hány darab van a képen. Egyszerű összegző tömb. Könnyen párhuzamosítható dekompozícióval. Képeldolgozás 3 Maszk alapú műveletek g(, y) = T[(, y)], T a szomszédos pieleken operál (lokális művelet) Képeldolgozás 4 Képeldolgozás 7
Maszk alapú műveletek Simítás (zajszűrés): Az intenzitás nagy változásait simítjuk el, a magasrekvenciás tartalom csökkentése Élesítés: A részletek kiemelése Képeldolgozás 5 Maszk használata Képeldolgozás 6 Képeldolgozás 8
Maszk Ablak alapú műveletekhez gyakran alkalmaznak n n méretű maszkot (n = 3, 5, 7, ) Képeldolgozás 7 Átlagoló szűrő Egyszerű simítási technika, ahol az ablakban lévő intenzitások átlaga az új intenzitás érték:, 4 = 0 3 9 4 5 6 7 8 Soros kód: Kilenc () lépés kell az átlag kiszámításához, n pielre 9n. Kompleitás: O(n). Képeldolgozás 8 Képeldolgozás 9
Párhuzamos átlagoló szűrő A műveletek száma redukálható négyre Elv, ami pontosításra kerül mindjárt Képeldolgozás 9 Párhuzamos átlagoló szűrő I. Képeldolgozás 0 Képeldolgozás 0
Párhuzamos átlagoló szűrő II. Képeldolgozás Medián szűrő Soros megvalósítás: A medián meghatározása érdekében rendezni kell a pielértékeket és a középsőt kell kiválasztani. Például 3 3-as esetben y 0, y, y, y 3, y 4, y 5, y 6, y 7, és y 8. A medián y 4. Az ötödik elemet kell kivenni a rendezés után. Pl. buborékos rendezésnél a műveletek (összehasonlítás és ha kell csere) száma: 8 7 6 5 4 = 30 lépés, azaz n pielre 30n művelet. Képeldolgozás Képeldolgozás
Közelítő medián szűrő Párhuzamos megvalósítás: Elsőként a soron belül hajtsunk végre három összehasonlítást és cserét: ahol jelenti, hogy hasonlítsd össze és cseréld el, ha a baloldali érték nagyobb, mint a jobboldali. Ezután oszlopokra vonatkozóan három lépés: Összesen hat lépés Mikor nem pontos? Képeldolgozás 3 Közelítő medián szűrő Képeldolgozás 4 Képeldolgozás
Súlyozó maszkok Gyakran nem egységnyi súlyúak a maszkelemek: w 0, w, w, w 3, w 4, w 5, w 6, w 7, és w 8. Az új intenzitás érték 4 :, 4 = w0 0 w w w3 3 w4 k 4 w5 5 w6 6 w7 7 w8 8 ahol /k skálázási tényező az intenzitás értékét állítja be és k nagysága gyakran a súlyok összegével egyezik meg. Képeldolgozás 5 Kereszt-korreláció 3 3-as súlyozó maszk használatával azaz a súlyozott összeg (w i i ) két üggvénynek ( és w) a (diszkrét) kereszt-korrelációja: w Képeldolgozás 6 Képeldolgozás 3
Maszkok Átlagoló Zajszűrő Felüláteresztő élesítő Képeldolgozás 7 Éldetektálás Ahol az intenzitásban jelentős változás van, ott található él. Kép deriváltja: (, y) ( ε, y) (, y) (, y) (, y ε ) (, y) = lim = lim ε 0 ε y ε 0 ε (, y) (, y ) ( y ) ( y) (, y ) (, y ) n m n, Δ Gradiens: grad ( ) = y m y, n m Δ Képeldolgozás 8 n m Képeldolgozás 4
Képeldolgozás 5 Képeldolgozás 9 Éldetektálás dierenciálással Intenzitás Első derivált Második derivált Képeldolgozás 30 Gradiens nagyság és irány Gradiens nagyság: Gradiens irány: Gradiens nagyságra más mérték: = y = y y arctan ), ϕ( y =
Éldetektáló maszkok A gradiens összetevőinek számolása: ( ) = 5 3 y A gradiens nagyság: = ( ) 7 y = = 7 5 3 Képeldolgozás 3 Prewitt operátor A gradiens összetevőinek számolása: = ) ( ) ( 0 5 3 8 = ) ( ) ( 0 7 8 y A Prewitt maszk: ( 6 ( 6 ) ) Képeldolgozás 3 Képeldolgozás 6
Prewitt éldetektor átlagolás Dierenciáló image irányban blurred szűrő irányban élek and [ 0 ] results 0 0 0 Átlagolás Dierenciálás image y irányban blurred Y irányban élek y [ ] and 0 results 0 0 0 Képeldolgozás 33 Sobel éldetektáló átlagolás Dierenciáló image blurred Élek irányban szűrő irányban and [ 0 ] results 0 0 0 Átlagolás Dierenciáló image Y irányban blurred szűrés y irányban élek y [ ] and 0 results 0 0 0 Képeldolgozás 34 Képeldolgozás 7
Képeldolgozás 8 Képeldolgozás 35 Sobel éldetektáló Image 0 0 0 0 0 0 * * y y Threshold Edges Képeldolgozás 36 Sobel éldetektáló y
Sobel éldetektáló = y Threshold =00 Képeldolgozás 37 Vonaldetektálás Képeldolgozás 38 Képeldolgozás 9
Vonaldetektálás Hough traóval Cél: Az (, y) képen találjuk meg a vonalakat és határozzuk meg azok egyenletét O(NNMM) nagyságrendű számítást kell elvégezni Képeldolgozás 39 Vonaldetektálás Hough traóval Főbb pontok: Konverzió paraméter térbe Az m és n paraméterek megtalálása Visszakonvertálás derékszögű koordinátákba Képeldolgozás 40 Képeldolgozás 0
Vonaldetektálás Hough traóval Kulcs: Használjuk a paraméterteret, ahol a bonyolult probléma az egyszerűbb lokális maimumok megtalálását jelenti Input: Bináris kép élpontokkal Küszöb Képeldolgozás 4 Hough transzormáció b = m y b ' = m' y b '' = m' ' y Képeldolgozás 4 Képeldolgozás
Vonalillesztés Vonal egyenlet y = m b m meredekség, b az y - metszéspon t Az (m, b) teret osszuk el egy ráccsal és minden cellához rendeljünk egy számlálót: c(m, b) kezdetben 0 értékkel Minden élpiel ismert koordinátáival Számoljuk ki b értékét minden lehetséges m mellett bi = y mj Növeljük meg a c(m i, b i )-t eggyel Keressük meg a lokális maimumokat a paraméter térben! Képeldolgozás 43 Hough traó: kvantálás Vonal detektálás maimum/klaszter keresésével a paraméter térben b m Függőleges vonalak esetén probléma m és b végtelen Képeldolgozás 44 Képeldolgozás
Hough transzormáció Polár koordinátás reprezentáció Egy egyenes minden pontjára θ és ρ állandó Bármely irányban numerikusan stabil leírás cosθ y sinθ = ρ Különböző θ konstans értékeke ρ i értékeinél különböző vonalakat szolgáltatnak Képeldolgozás 45 Akkumulátor tömb Képeldolgozás 46 Képeldolgozás 3
Algoritmus Készítsünk egy D (θ, ρ) számláló tömböt, a szög 0 és 80 ok között változik, a távolság maimum a kép átlója Nullázuk ki A θ szög lehetséges értékeit vegyük el Például 0 -os növekmények Minden élpontra Számoljuk ki ρ értékét az (A) egyenlettel Minden kiszámolt (θ, ρ) párra növeljük meg a számlálótömb értékét Keressük meg a lokális maimumokat Képeldolgozás 47 Vonaldetektálás θ ρ Képeldolgozás 48 Képeldolgozás 4
Vonaldetektálás - példa ideális zajos Nagyon zajos Képeldolgozás 49 Nehézségek Hogyan osszuk el a paraméter teret (θ, ρ)? nagy? Nem tudunk különbséget tenni vonalak között kicsi? A zaj hibákat eredményez Hány vonalat találunk? Melyik élpont melyik vonalhoz tartozik? A zaj miatt nehéz kielégítő megoldást találni Képeldolgozás 50 Képeldolgozás 5
Soros kód Képeldolgozás 5 Párhuzamosítás Mivel az akkumulátor tömb számítása üggetlen más összegzésektől, ezért párhuzamosítható: Az egész képre olvasási jog szükséges. Képeldolgozás 5 Képeldolgozás 6