Palágyi Kálmán Az oktató: SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék 6720 Szeged Árpád tér 2. 214-es szoba (tetıtér) (62) 546 197 palagyi@inf.u-szeged.hu www.inf.u-szeged.hu/~palagyi Kurzusanyagok Digitális képfeldolgozás (BSc) pub/digitalis_kepfeldolgozas Képfeldolgozás haladóknak (MSc) pub/kepfeldolgozas_haladoknak Feldolgozási módok Színes képek feldolgozása alkalmas színmodellre való áttéréssel skaláris (komponensenkénti) vektoros Áttérés alkalmasabb színmodellre Skaláris feldolgozás Red Green Blue T feldolgozás T -1 Red Green Blue Red Green Blue F R F G F B Red Green Blue Pl: RGB HSV 1
Vektoros feldolgozás Témakörök Red Green Blue F Red Green Blue Kvantálás Pont-operációk, hisztogram-transzformációk Szőrés, simítás Éldetektálás Szegmentálás Kódolás, tömörítés Kvantálás Kvantálás Egy true-color (3*8 bits/pixel, RGB) képen 256 3 =16777216 szín fordulhat elı. A színes képek kvantálásakor a cél az, hogy kevés színnel adjuk/jelenítsük meg a képeket számottevı minıségromlás nélkül. A kvantáláshoz meghatározandó: a színek egy részhalmaza (colormap, palette) és egy leképezés az eredeti színhalmazból az adott részhalmazba. Kvantálás példa Kvantálás példa true-color 16-szín 256-szín 16-szín 8-szín 4-szín 4-szín 2-szín 2
A kvantálás menete A kvantálás alapkategóriái 1. Végezzünk statisztikai elemzést az eredeti képre. 2. A statisztika alapján válasszuk ki a colormap-et. 3. Határozzuk meg valamennyi eredeti szín colormap-beli reprezentánsát (adjuk meg a leképezést, a CLUT-ot (color look-up table)). 4. Képezzük a kvantált képet. Az eredeti színtér régiókra bontása (ahol az egy régióba esı színeket a colormap ugyanazon színébe képezzük le) az alábbi 2 módon történhet: Uniform (képfüggetlen): az eredeti színteret egyforma mérető régiókra bontjuk. Nem uniform (képfüggı): az eredeti színtér felosztása függ a színek eloszlásától az adott képen. A kvantálás mint klaszterezés Uniform kvantálás példa Az RGB kocka felbontása 6*6*6=216 színre/régióra (Web-Safe Colors) Uniform kvantálás példa Uniform kvantálás példa 4 A true-color RGB kocka felbontása 8*8*4=256 színre/régióra (az R- és a G- komponens 3-3-bites, a B-komponens 2-biten ábrázolt) true-color 3-3-2 8 8 3
Uniform kvantálás példa Nem uniform kvantálás Center/Median Cut algoritmus true-color 3-3-2 1. Határozzuk meg a színtérben a képen elıforduló színek befoglaló téglatestét/dobozt. 2. Rendezzük a színeket a leghosszabb dobozoldal tengelye mentén. 3. Vágjuk szét az adott dobozt a mediánnál. 4. Ismételjük az eljárást a 2. lépéstıl, amíg el nem értük az elıre adott doboz-számot (pl. 256-ot). 5. Rendeljük minden dobozhoz az átlagszínét. Median Cut algoritmus 1. Median Cut algoritmus 2. befoglaló téglalap színtér medián Median Cut algoritmus 3. Median Cut algoritmus 5. doboz-1 doboz-2 átlagszín-1 átlagszín-2 4
Median Cut algoritmus példa Median Cut algoritmus példa 4-árnyalat truecolor 256szín 256-árnyalat Median Cut uniform További módszerek kvantálásra és a kvantálási hiba csökkentésére eredeti true-color uniform (8-szín) median cut (8-szín) Octree method Self-Organizing Map K-means Fast Adaptive Dissection Dithering, error diffusion halftoning Octree algoritmus példa truecolor Dithering Seurat 256szín 5
Dithering példa Dithering példa 256-szín 4-szín (diffusion dithering) 4-szín (pattern dithering) 4-szín (noise dithering) true-color dithered (256 colors) Dithering példa Error diffusion halftoning példa true-color 16-szín dithered (16-szín) Álszínezés Pont-operációk, hisztogram transzformációk Szürkeárnyalatos RGB: r (T R (r),t G (r),t B (r)) 6
Álszínezés Álszínezés Szürkeárnyalatos RGB: r (T R (r),t G (r),t B (r)) Szürkeárnyalatos RGB: r (T R (r),t G (r),t B (r)) Álszínezés Álszínezés CLUT (Color Look-up Table) monochrom sztereogramok és a vörös-cián szemüveg Stereogram Pont operáció példa eredeti transzformált függvény Nem változik a szín (hue), mivel mindhárom komponens ugyanúgy transzformált. 7
Invertálás / negálás (RGB) Invertálás / negálás (RGB) RGB RGB Invertálás / negálás (HSI) Pont operáció példa eredeti transzformált függvény Pont operáció példa Gamma korrekció eredeti transzformált függvény RGB 8
Hisztogram Hisztogram Hisztogram Hisztogram Hisztogram Hisztogram 9
Hisztogram kiegyenlítés Hisztogram kiegyenlítés eredeti sötét kép hisztogramkiegyenlítés egyenként az R-, a G- és a B-csatornákon hisztogramkiegyenlítés az YIQ-ra konvertált kép Y (lumiance) komponensén a HSV V-komponense alapján (képek és felhalmozott hisztogramjaik). HSV HSV Hisztogram kiegyenlítés Szőrés, simítás eredeti HSI kiegyenlítés a Saturation komponens alapján Konvolúció Simítás példa színes (RGB) kép: f = ( f R, f G, f B ) konvolúciós maszk: g = ( g R, g G, g B ) konvolvált kép: f * g = ( f R * g R, f G * g G, f B * g B ) eredeti RGB mindhárom komponens ugyanazon maszkkal simítva 10
Simítás példa Simítás példa eredeti HSI csak az Intensity komponens simított eredeti HSI mindhárom komponens ugyanazon maszkkal simítva Simítás példa Élesítés példa Kontrasztfokozás Laplace transzformációval: az RGB kép mindhárom komponensének simítása 5*5-ös átlagoló maszkkal - konverzió HSI-be - csak az Intensity simítása 5*5-ös átlagoló maszkkal - konverzió RGB-be különbségkép az RGB kép mindhárom komponensének transzformálása - konverzió HSI-be - csak az Intensity transzformálása - konverzió RGB-be különbségkép Mediánszőrés példa Éldetektálás eredeti zajos kép szőrt kép 11
Éltípusok a színes képeken Az élek a színes képeken is fontosak vizuális információt hordoznak. A színes képeken kétféle él különböztethetı meg: intenzitás-él (valamely irányban egy képpont környezetében az intenzitások jelentısen eltérnek), szín-él (valamely irányban egy képpont környezetében az színek jelentısen eltérnek, bár az intenzitásban nincs lényeges változás). Az éldetektálás alapmódszerei színes képeken Élek detektálása komponensenként/csatornánként, majd az egyes éltérképek kombinálása/fúziója. A szín és az intenzitás szeparálása, majd éldetektálás a szín- és intenzitás komponenseken, végül pedig az egyes éltérképek kombinálása/fúziója. Éldetektálás csatornánként kiindulási kép Éldetektálás csatornánként eredeti RGB kombinált élkép a három csatorna élképei élek az egyes színkomponenseken Éldetektálás csatornánként Szín és intenzitás szeparálása intenzitás eltávol volítása eredeti RGB a három élkép összege szín eltávol volítása 12
Éldetektálás a komponenseken Az élképek kombinálása átlagolás súlyozott átlagolás (a színmennyiségekkel) a domináns szín élképén lévı érték összegzés négyzetösszegek gyöke Éldetektálás példa Éldetektálás példa Szegmentálás Szegmentálás eredeti szegmentált kontúr 13
Szín-szeletelés Szín-szeletelés példa B B B G G G R R R A régió színtartományának kijelölése. Az RGB-kocka (0.7,0.15,0.2)-körüli 0.2 sugarú gömbtartomány intenzitásait az (1.0,0.0,0.0) pontba, a többit pedig a (0.5,0.5,0.5)-be viszi. Szegmentálás klaszterezéssel K-means klaszterezés A klaszterezés (clustering) a felügyelet nélküli tanulás (unsupervised learning) legfontosabb problémája, melynek feladata egy címkézetlen adathalmaz struktúrájának megtalálása, vagyis a klaszterek (hasonló elemek halmaza) megadása. Néhány módszere: K-means fuzzy C-means hierarchikus minimális költségő feszítıfa maximális/minimális vágás Az eljárás (J.B. MacQueen, 1967): 1. Adjunk meg K elemet kezdeti centroidokként (mint a klaszterek reprezentáns elemeit). 2. Minden elemet rendeljünk ahhoz a klaszterhez, melynek centroidjához a legközelebb esik. 3. Számoljuk újra a klaszterek centroidjait. 4. Ismételjük a 2. és a 3. lépést mindaddig, míg elmozdulnak a centroidok. K-means példa K-means példa a 8 klaszterezendı elem 1. lépés: a kezdeti centroidok megadása (K=3) 14
K-means példa K-means példa 2. lépés: hozzárendelés a centroidokhoz 3. lépés: új centroidok számítása K-means példa K-means példa 2. lépés: hozzárendelés a centroidokhoz 3. lépés: új centroidok számítása K-means példa K-means példa eredmény eredeti RGB a K-means eredménye (K=5) 15
K-means applet Arcdetektálás (Bakic, 1999) Az RGB színmodell helyett egy 2D normalizált színteret használnak: r=r/(r+g+b), g=g/(r+g+b). g az emberi bır b klasztere http://128.32.125.151/riot/applications/clustering/clustapplet.html r Arcdetektálás (Bakic, 1999) Kódolás, tömörítés eredeti kép osztályozott/címkézett képpontok a bır-szín modell szerint a bır-szín legnagyobb összefüggı komponense Egyszerő tömörítési trükkök A színmélység csonkolása példa a színmélység csökkentése (pl: (8,8,8) (3,3,2) ) a szín és az intenzitás szeparálásával durvább mintavételezés a színtartományban Kvantálás CLUT (color look up table) (pl: a 256 jellemzı 3*8-bites szín kiválasztása) true-color (8-8-8) 3-3-2 16
Durvább mintavételezés a színtartományban Áttérés indexelt képre példa truecolor 256- szín JPEG JPEG A színes képek tömörítésének algoritmusa: 1. konvertálás az YIQ vagy az YUV színtérbe (az intenzitás és a jobban tömöríthetı szín szeparálása, mivel a szem a fényességre jobban érzékeny) 2. DCT (a 8x8-as blokkok redundanciájának azonosítása) 3. kvantálás (egész osztás a kvantáló táblák paramétereivel veszteséges) 4. kódolás (Huffman veszteségmentes) JPEG példa JPEG GIF (PNG) veszteségmentes (84%-os tömörítés) veszteséges (96%-os tömörítés) veszteséges (99%-os tömörítés) színmélység: JPEG: 24 bits/pixel GIF: 8 bits/pixel (olcsóbb monitorokhoz) élmegırzés: JPEG: nagy tömörítési aránynál hajlamos az élek elkenésére, jó a fotókra GIF: különösen alkalmas grafikákhoz, vonalrajzokra tömörítési arány: JPEG: ~20:1 aránynál még nincs vizuális veszteség GIF: 3:1 arányt hoz az indexelés, amit az LZW ~5:1-re javít 17