Képfeldolgozás laborjegyzet. Szilágyi László



Hasonló dokumentumok
A befogott tartóvég erőtani vizsgálatához III. rész

Összefüggések a marótárcsás kotrógépek elméleti és tényleges

Kábel-membrán szerkezetek

2. MECHANIKA-VÉGESELEM MÓDSZER ELŐADÁS (kidolgozta: Szüle Veronika, egy. ts.) II. előadás

~IIami ~ámbrtlő$ék JELENTÉS. a távfűtés és melegvízszolgáltatás támogatási és gazdálkodási rendszerének vizsgálatáról május hó 55.

Két példa lineárisan változó keresztmetszetű rúd húzása

I n n o v a t i v e M e t r o l o g y AXIOMTOO. Fejlődés a KMG technológiában. Axiom too manuális és CNC koordináta mérőgépek bemutatása

Az egyszeres függesztőmű erőjátékáról

ELMIB ZRT. FÖLDGÁZKERESKEDELMIÜZLETSZABÁLYZATA. l l I I BUDAPEST, SZEPTEMBER 1.

2. Közelítő megoldások, energiaelvek:

Kiváló teljesítmény kivételes megtakarítás

Harmonikus rezgőmozgás

+ 6 P( E l BAL)+ 6 P( E l K ZEJ>);

Mágneses jelenségek. 1. A mágneses tér fogalma, jellemzői

perforált lemezek gyártás geometria

2. Közelítő megoldások, energiaelvek:

TRANZISZTOROS RÁDIÓT

MILTON ROY VEGYSZERADAGOLÓ SZIVATTYÚK

ARCA TECHNOLOGY. Fali kazán család KONDENZÁCIÓS. Kis méretű Digitális, elektronikus vezérléssel SEDBUK BAND A

CLAS B FALIKAZÁN. Nagyfokú megbízhatóság

ELLENŐRZŐ KÉRDÉSEK LENGÉSTANBÓL: A rugóállandó a rugómerevség reciproka. (Egyik végén befogott tartóra: , a rugómerevség mértékegysége:

FALIKAZÁN BEÉPÍTETT TÁROLÓVAL CLAS B

Gerendák lehajlása: hibás-e a szilárdságtanon tanult összefüggés? Tudományos Diákköri Konferencia. Készítette: Miklós Zita Trombitás Dóra

Alfa Laval lemeztechnológia

Számítások. *Előadásanyagban nem szerepel. Kamat idővel egyenesen arányos Példa - Kamatos kamat egész évekre éven belül egyszerű kamat

--'-'--1 számú előterjesztés

J ~15-. számú előterjesztés

M M b tg c tg, Mókuslesen

A HŐMÉRSÉKLET MÉRÉSE

Kérelmezök vállalják a helyiségrész teljes felújítását, amennyiben azt kedvezményes 4 OOO Ft/m2/év bérleti díj megállapításával vehetik igénybe.

1. Az ezekhez tartozó. egyenlet megoldásai: k 360. forgásszögek a. Két különböz egységvektor van, amelyek els koordinátája

Nagyteljesítményű elektrolízis berendezések

Vogel - blokkszivattyúk LMN / LM sorozat

1. Feladatok rugalmas és rugalmatlan ütközések tárgyköréből

TESZTKÖNYV a hajóvezetõk részére. 2., javított kiadás

merevségének oldódásával és az mtézrnél!1yl

Castigliano- és Betti-tételek összefoglalása, kidolgozott példa

61o. l. Tartalmi összefoglaló. Budapest Főváros X. kerület. . számú előterjesztés

Épületek, helyiségek, terek főtése PAKOLE Kft. által gyártott és forgalmazott főtıberendezésekkel.

Király Zsófia, Zaupper Bence Miskolc, november 10. Élet-és nyugdíjbiztosítási ismeretek

Nagy Örs, BBTE, MIK Matematika-informatika szak, IV. év

Oktatási Hivatal. A 2012/2013. tanévi FIZIKA Országos Középiskolai Tanulmányi Verseny döntő fordulójának megoldása. I. kategória

(/ri. számú előterjesztés

Q~ számú előterjesztés

Parabola - közelítés. A megoszló terhelés intenzitásának felvételéről. 1. ábra

+ magasabb rend½u tagok. x=x0

Általános beállítások

ÉRTESITÚJE. ./k/!í / 11 A SOPRONI MAGY. KIR. ALLAMI FOREALISKOLA HARMINCHARMADIK AZ 1907/1908-IK ISKOLAI ÉVRŐL. l v. WALLNER IGNÁC DR.

Történetek Róma alapításáról és harcairól

Hőtágulás (Vázlat) 1. Szilárd halmazállapotú anyagok hőtágulása a) Lineáris hőtágulás b) Térfogati hőtágulás c) Felületi hőtágulás

1. Mérési példafeladat A matematikai inga vizsgálata


BÉKÉSCSABA MEGYE1 JOGÚ VÁROS. Békéscsaba, Szent István tér 7.

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

A Kormányzati Informatikai Fejlesztési Ügynökség évi elemi költségvetési beszámoló SZÖVEGES INDOKLÁSA

Salgótarján Megyei Jogú Város Polgárm estere. Javaslat stratégiai együttműködési megállapodás megkötésére

2004. évi XVIII. törvény. a szőlőtermesztésről és a borgazdálkodásról. I. Fejezet BEVEZET Ő RENDELKEZÉSEK. A törvény tárgya. Fogalommeghatározások

Pulzátor határok nélkül...

Gazdaságos kapcsolat: kondenzációs technika és napenergia-hasznosítás

KERÁMIAROST ERŐSÍTETT SZERELT GIPSZ VÁLASZFAL RENDSZER

A késdobálásról. Bevezetés

Bio-motorhajtóanyagok befecskendezési jellemz=inek optimálása Optimization of Injection Parameters for Biofuel Jet

rendelési kód típus leszorítás vágási magasság vágási hossz vágási kapacitás CM3206 normál 1,0 mm 320 mm

Budapest Főváros X. kerület Kőbányai Önkormányzat Alpolgármestere. I. Tartalmi összefoglaló

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

7. BINER ELEGYEK GŐZ-FOLYADÉK EGYENSÚLYA; SZAKASZOS REKTIFI KÁLÁS JELLEMZÉSE

GEO-FIFIKA. Földtudományi ismeretterjesztõ füzet. 8. A Föld mélye. A kéregtõl a földmagig

El0CAZDASACI1~~ W.3:~~ Nt:POKTAT'AS. lll ISKOLÁINK A GAZDASÁGI KIÁLLIT ÁSON. XX. évfolyam. 4. szám. Gyöngyös, április.

A nagy adrenalin játék Marketingkommunikáció

Schöck Isokorb Q, Q-VV, QP, QP-VV típus

Radványi Gábor alpolgármester. Szabó László vezérigazgató. Tisztelt Képviselő-testület! Tárgy: Javaslat fedett jégpálya létesítésére

Adóreformok hatása a magyar gazdaságra egy általános egyensúlyi modellben 1

2002. október 29. normalizáltjai eloszlásban a normális eloszláshoz konvergálnak, hanem azt is, hogy a

Szabályozó áramlásmérővel

Az úttengely helyszínrajzi tervezése során kialakuló egyenesekből, átmeneti ívekből és körívekből álló geometriai vonal pontjait számszerűen pontosan

-40% 329Ft. 339Ft. 49Ft STABILIZÁLÁSA. Megsüllyedt épületek NYÁRI AKCIÓ SZUPER ÁRAKKAL. A meleg napokon hûsítse magát!

Fizika Országos Középiskolai Tanulmányi Verseny Harmadik fordulója a harmadik kategória részére 2006.

l_. számú előterjesztés

Amikor elektromos eszközt használ mindig kövesse a biztonsági előírásokat, ezzel csökkentve a tűz, áramütés és egyéb személyi sérülés veszélyét.

között december 16. napján kötött Támogatási Szerződés közös megegyezéssel történő megszüntetéséről

Nyugat-Magyarországi Egyetem Sopron. Doktori (Ph.D) értekezés tézisei

Lindab Coverline Szendvicspanelek. Lindab Coverline. Lindab Szendvicspanelek. Műszaki információ

Városi alkalmazkodás két magyar önkormányzatnál

A Parking Kft ÉVI ÜZLETI TERVE

Hatékony színes készülék munkacsoportok számára. Lexmark X950 sorozatú színes többfunkciós készülékek

Megkezdôdik a kemény munka

T AMOGATASI SZERZÓDÉS. "Eszaki Lipótváros megújítása" Azonosító szám : KM OP / A "'.,..,. ..,

f (,j",--. szám ú előterjesztés

J szám ú előterjesztés. Budapest Főváros X. kerület Kőbányai Önkormányzat Alpolgármestere

steremtés Török Marianna

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

VÁLOGATOTT TRANZISZTOROS KAPCSOLÁSOK ll.

Ajánló. Tagozati vezetőségválasztás. Beszámol a felvételi bizottság. Gépjárműfelelősségbiztosítás

Alapvető rajzolási funkciók

BLUE ÚJ NÉV AZ AUTÓSZÁLLÍTÓK KÖZÖTT

Véget ér a tanév elsõ féléve

steremtés Török Marianna

= M T. M max. q T T =

!J i~.számú előterjesztés

Korpuszbútor hátfalrögzítő facsavarjainak méretezéséről

Átírás:

Képfedogozás aborjegyzet Sziágyi Lászó 2008

2

Képfedogozás aborjegyzet Tartaom:. gyakorat: Ismerkedés az OpenCV programcsomagga 2. gyakorat: Aritmetikai és geometriai műveetek képekke. A ROI hasznáata 3. gyakorat: Képminőség javítás egyszerű szűrők akamazásáva 4. gyakorat: A medián szűrő 5. gyakorat: Gradiensszámítás, ékeresés 6. gyakorat: Morfoógiai aapműveetek 7. gyakorat: Morfoógiai vázkeresés 8. gyakorat: Transzformációs szűrők 9. gyakorat: Hough transzformáció 0. gyakorat: Képek szegmentáása gobáis információ aapján (az FCM agoritmus). gyakorat: Képek régió aapú szegmentáása: a feosztás és egyesítés módszere 2. gyakorat: Egy egyszerű feügyet tanuású formafeismerő rendszer megvaósítása 3. gyakorat: Egy egyszerű feügyeet néküi tanuású formafeismerő rendszer megvaósítása 4. gyakorat: Laborvizsga 3

-2. gyakorat: Ismerkedés az OpenCV programcsomagga. Aritmetikai és geometriai műveetek képekke. A ROI hasznáata A gyakorat céja A cé az OpenCV programcsomag fiozófiájának esajátítása, meynek ismeretében a hagató könnyűszerre fog képeket kezeni a Visua C++ programkörnyezetben. Megismerkedünk a programcsomag hasznáatához szükséges beáításokka, ietve az OpenCV eemi fogamaiva, mint p. a képek kezeéséhez szükséges IpImage struktúra, vagy a NamedWindow abak. Eméeti áttekintés és a munka menete Az OpenCV egy szabadon hozzáférhető és teepíthető programcsomag, meynek hasznáatáva könnyedén hozzáférhetünk oyan adattípusokhoz, ameyet az egyszerű Visua C++ nem támogat. Iyen adattípus pédáu a bitmap vagy bármey egyéb képformátum. Az OpenCV programcsomag több könyvtárbó á, meyek közü a egfontosabbak a következők: CXCORE: ez a könyvtár tartamazza az aapvető adatstruktúrákat és műveeteket CV: ebben a könyvtárban taáunk meg számos képfedogozási műveetet HIGHGUI: ez a könyvtár tartamazza az OpenCV grafikus fehasznáói feüet (GUI) eemeit és az input/output műveeteket Amikor egy C++ programban az OpenCV könyvtárait kívánjuk hasznáni, eérhetővé ke tegyük a fordító számára a következő áományokat (a Visua C++ 6.0-ás verziójában a Options Directories menüpontban és a projekt beáításaiban, későbbi verziókban pedig csak a projekt beáításaiban ke babráni): Incude fájok: cxcore.h, cv.h, highgui.h Lib fájok: cxcore.ib, cv.ib, highgui.ib Továbbá a étrehozott C++ projekthez hozzá ke inkeni a fennebb emített.ib fájokat. Az OpenCV programcsomag kitűnően ieszkedik minden típusú VisuaC++ projekthez. Egy rossz tuajdonsága viszont van: a képek megjeenítését csak a saját abakaiban támogatja. Az egyszerűség kedvéért a aborgyakoratok keretében Windows32 Consoe Appication típusú projektekke fogunk dogozni, de egy komoyabb projekt esetében kipróbáhatjuk az MFC-hez vaó iesztést is. Nézzünk meg egy egyszerű programot: 4

A fenti program beovas egy képet a memóriába és megjeeníti egy abakban, majd vár egy gombnyomásra, meynek hatására a program véget ér, így a kép etűnik az abakka együtt. A program eső három sora azt jezi a fordítónak, hogy az OpenCV könyvtárait szeretnénk hasznáni a programunk megvaósításához. A main függvény öt utasításbó á: Az eső utasítás betöti az ama.bmp nevű fájt, mint intenzitásképet, a memóriába és étrehoz egy IpImage típusű struktúrát, ameyben később eérhetőek esznek a képnek az adatai. Ezt a struktúrát hozzárendei az image nevű mutatóhoz. A második utasítás étrehoz egy oyan Abak nevű abakot, mey automatikusan átméretezi magát a beé heyezett kép méretéhez, ietve a képernyő febontásához ieszkedően. Az abakot a nevén szóítjuk, amikor vaamiyen dogunk esz vee. A harmadik utasítás megmutatja a betötött képet a étrehozott abakban. A negyedik utasítás vár egy gombnyomásra. Az ötödik utasítás, C++ tagozatos jómunkásember módjára feszabadítja a kép áta efogat memóriát. Ha ezt nem tesszük meg, ez a programunk tökéetesen fog működni, de ha később sokka fontosabb pianatokban is efeejtjük feszabadítani a memóriát, abbó már könnyen ehet probéma (p. Out of memory üzenet). Ne feedjük: a képek átaában sok memóriát foganak! Egy egyszerű feadat: vaósítsunk meg egy mozifim effektust! Feadat: Tötsünk be két képet. Képzejük e, hogy egy mozifimben véget ér egy jeenet az eső képpe és következne a következő jeenet, ameyik a másik betötött képpe kezdődik. Jeenítsük meg egy abakban az átmenetet a két jeenet között, mégpedig úgy, hogy a képet nem egyszerűen ecseréjük, hanem fokozatosan tüntetjük (sötétítjük) e az esőt és hozzuk be heyette a másikat. A műveet, meyre szükségünk van, az a súyozott összeadás. Próbájuk ki, hány átmenetre van szükség ahhoz, hogy a szemünk foytonosnak higgye a vátozást. A súyozott összeadást végrehajtó utasítás a cvaddweighted(src,weight2,src2,weight2,bias,dst), az utasítás áta evégzett műveet pedig a dst = src*weight + src2*weight2 + bias. A ROI hasznáata Módosítsuk az eőző programot úgy, hogy a képnek csak a ba vagy a jobb odaát (feét) cseréjük e a mozi effektus hasznáatáva. Ehhez szükségünk esz a ROI (region of interest) hasznáatára. Az OpenCV a következő szabáyok szerint képes ROI-t hasznáni: Egy ROI mindig tégaap aakú Egy képen egyszerre maximum egy ROI ehet Ha ROI-t heyezünk egy képre, akkor az eőzőeg rajte evő ROI automatikusan megsemmisü A képre rá ehet tenni bármey oyan tégaap aakú ROI-t, meynek széessége és magassága egaább képpont, és nem óg ki a kép terjedemébő. Egy ROI-nak egy képre vaó ráheyezéséhez egyszer étre ke hozni egy CvRect típusú objektumot (p. CvRect r = cvrect(x,y,w,h)), aho a cvrect paraméterei sorra 5

a tégaap ba feső képpontjának vízszintes és függőeges tengey menti koordinátája, a tégaap széessége és magassága. Ha a CvRect típusú objektum étrejött, az átaa eírt méretű ROI-t a cvsetimageroi(image,r); utasítássa heyezzük rá az image pointer áta mutatott képre. Egy képrő a rajta evő ROI-nak az etávoításához nem ke ismerjük a ROI méretét. Csupán meghívjuk az aábbi utasítást: cvresetimageroi(image); A képen evő ROI-t e is ehet kérdezni a cvgetimageroi( ) utasítássa. Ezt az utasítást egyszerű fehasznáóként ritkán hasznájuk. 6

3. gyakorat: Képminőség javítás egyszerű szűrők akamazásáva A gyakorat céja Céunk megismerkedni a konvoúciós szűrők működéséve, hatásáva, hatékonyságáva, eőnyeive és hátrányaiva. Eméeti áttekintés és a munka menete Az egyszerű szűrők kategóriájába sorojuk a konvoúcióva számított, vagy más néven maszkos szűrőket, meyekke képminőség javítást kívánunk eérni. Egy konvoúciós szűrés megvaósításához három épésre van szükség:. Beírjuk egy tömbbe a maszk együtthatóit P. doube mask_data[9]={.,.,.,.,.2,.,.,.,.}; 2. Létrehozunk egy OpenCV-s mátrix típusú adatot a maszk együtthatóiva: P. CvMat mask = cvmat(3,3,cv_64fc,&mask_data); A fenti cvmat( ) utasítás paraméterei azt mutatják, hogy a maszk 3 sorbó és 3 oszopbó á, ietve 64 bites ebegőpontos adatokbó tevődik össze, egy csatornás mátrix esz minden maszk egycsatornás meyek a mask_data nevű vátozó címéné taáhatók a memóriában. 3. Megszűrjük a bemeneti képet a étrehozott maszkka: P. cvfiter2d(src,dst,&mask); A szűrést végrehajtó utasítás paraméterei: src a bemeneti kép, dst a kép ahova az eredmény kerü, &mask az akamazott maszk címe. Feadatok:. Vaósítsunk meg egy au áteresztő szűrőt, meynek maszkja 3x3 képpontbó á, a benne evő együtthatók egyformák. Akamazzuk egy jó éességű bemeneti képre a szűrőnket egymás után egaább 0 akaomma, minden szűrés után nézzük meg az eredményt. Ismétejük meg a szűrés sorozatot egy oyan képen, ameyet eőzőeg fehér és fekete képpontokka (só és bors jeegű zajja) fertőztünk meg. Nézzük meg, mennyire hatékonyan távoítja e a zajt az au áteresztő szűrő, és mekkora árat fizetünk a kép éességébő. Enné a feadatná az egymás utáni szűrések a korábbi szűrés eredményét szűrik tovább. 2. Vaósítsunk meg egy feü áteresztő szűrőt paraméterezhető maszkka. Legyen a maszk 0 k 0 k + 4k k 0 k 0, aho k>0. Szűrjünk meg egy homáyos fényképet ezze a feü áteresztő szűrőve, akamazzunk egyre nagyobb k értéket. Vigyázat, itt mindig az eredeti képet szűrjük, nem a korábbi szűrés eredményét. Áapítsuk meg, mekkora k értékre esz a kép a egjobb átvány a szemünknek. Természetesen ez függ a képtő és a szeméőtő egyaránt. Nézzük meg, mennyire zajos esz a kép nagy k érték esetén. 3. Építsük be a ROI hasznáatát a programjainkba. Pédáu készítsünk oyan képesapot, meynek a közepén egy jó kiéesített, széein pedig nagyon e van homáyosítva a kép. Aapanyagként hasznáhatjuk a közprédára adott heideberg.jpg képet, mey jeentős mértékű esőzés miatt megehetősen homáyosra sikerü. 7

4. gyakorat: A medián szűrő A gyakorat céja Céunk megismerkedni a medián szűrőve és a cvsmooth utasítás többi beépített szűrőjéve. Továbbá megvaósítunk egy saját medián szűrő verziót és ecsodákozunk azon, hogy az OpenCV megakotói mennyive gyorsabb megvaósítást hoztak össze. Eméeti áttekintés és a munka menete A medián szűrő minden fedogozandó képpont négyzet aakú, szimmetrikusan eheyezkedő szomszédságábó váasztja ki a medián intenzitású képpontot, és ennek a szomszédnak a színe esz az aktuáis képpont színe szűrés után. A medián eem egy hamazban nagyság szerint a középső. Tehát egy 3x3-as szomszédságga dogozó medián szűrő kienc darab nagyság szerint rendezett szám közü váasztja ki az ötödiket, az 5x5-ös 25 közü a 3-dikat, a 7x7-es 49 közü a 25-ödiket, stb. Az OpenCV-ben van egy beépített utasítás, meye simító szűrőket ehet végrehajtani. Ez az utasítás a cvsmooth( ). Hasznáata a következőképpen történik: cvsmooth(src,dst,cv_median,size) utasítás egy medián szűrőt vaósít meg, mey size*size méretű környezetben ügyködik. Magátó értetődő doog, hogy a size csak páratan szám ehet; cvsmooth(src,dst,cv_blur,size_x,size_y) utasítás egy au áteresztő szűrőt vaósít meg, mey egyenetes eoszású size_x*size_y méretű maszkka dogozik. A maszk nem köteezően négyzet aakú, de a méretei szintén páratan számok ke egyenek; cvsmooth(src,dst,cv_gaussian,size_x,size_y) utasítás egy au áteresztő szűrőt vaósít meg, mey size_x*size_y méretű maszkka dogozik, de a maszk együtthatói nem egyenetes eoszásúak, hanem egy haranggörbe szerint vannak eosztva. A maszk nem köteezően négyzet aakú, de a méretei szintén páratan számok ke egyenek. Vannak további ehetőségei a cvsmooth( ) utasításnak, de ezekke a aborgyakorat keretében nem fogakozunk. Feadatok:. Vaósítsunk meg egy egyszerű programot a medián szűrő hatásainak tanumányozására. Próbájuk ki az eőző gyakoratban hasznát só és bors jeegű zajja fertőzött kép szűrésének hatékonyságát. Áapítsuk meg, mire képes egy 3x3-as, egy 5x5-ös, egy 7x7-es szűrő ezen a téren. 2. Rajzojunk egy kétszínű képre egy cikkcakkos amőbát, majd szűrjük meg egymás után sokszor egy nagy méretű szomszédságga dogozó medián szűrőve (p. 2x2 vagy még nagyobb). Figyejük meg, hogyan vátoztatja a szűrés az amőba aakját. Házi feadat: Írjunk egy oyan programot, ameye 3x3-tó egaább 7x7-esig váasztható méretű szomszédságga dogozó medián szűrőt tudunk végrehajtani egy csatornás intenzitásképen. 8

Segítség: az image kép (x,y) koordinátájú képpontjának intenzitásához hozzáférhetünk UCHAR típusú adatként az image->imagedata[y*image->widthstep+x] tömbeem ovasásáva, vagy megvátoztathatjuk a képpont intenzitását az ugyanannak a tömbeemnek az írásáva. Mérjük meg, hányszor gyorsabban dogozik a beépített medián szűrő. 9

A gyakorat céja 5. gyakorat: Gradiensszámítás, ékeresés Céunk megismerkedni a egegyszerűbb gradiens számító ejárásokka, azok eredményéve. Továbbá megtekintjük az OpenCV beépített Canny szűrős ékereső programját. Eméeti áttekintés és a munka menete Jeen abor keretében visszatérünk a maszkos szűrőkhöz. Újabb maszkcsaádot fogunk kipróbáni, meye a kép gradiensét fogjuk kiszámítani küönböző irányokban. Tekintsük a következő maszkokat: M vp = 0 0 0 M vn = 0 0 0 M fp = 0 0 0 = 0 Ha ezekke a maszkokka megszűrünk egy képet, a következőket fogjuk átni: Bármiyen aapszínű képet szűrtünk meg, a gradiens kép aapszíne fekete esz, meyen viágosabb színű vonaak esznek jeen. Az eső két maszk akamazása esetén inkább a függőeges irányú vonaak esznek áthatóak, a második két maszk esetében főeg a vízszintes vonaak. Az eső két maszk áta feismert függőeges éek kiegészítik egymást: az eső maszk azokat az függőeges éeket teszi áthatóvá, ameyeknek a jobb odaán viágosabb régió van mint a baon, míg a második azokat, ameyeknek a jobb odaán van a sötétebbik régió. Ugyanez érvényes a másik két maszkra, egy kis módosítássa: a harmadik maszk azokat a vízszintes vonaakat teszi áthatóvá, meyek aatt viágosabb régió van mint fööttük. A negyedik maszk pedig a feü viágos au sötét esetben aktiváódik. A fenti magyarázat magyarázata: az OpenCV eggyakrabban hasznát kódoású képe nem táro negatív számokat. Az eső két maszk egymás inverze, tehát ha egy pozícióban az egyik pozitív értéket számo, akkor a másik biztos negatívat. A negatív értékek viszont nuában szaturáódnak, azaz etűnnek. Az iyen éeket az azonos irányú éeket detektáó másik maszk képében ke keresni. Mive a viágos szín intenzitása nagyobb mint a sötété, a viágosbó kivonva a sötétet kapunk egy pozitív azaz átható éet. Ezért van az, hogy az aső maszk a jobb odat viágos ba odat sötét esetben aktív és nem fordítva. Feadat Számítsuk ki egy kép gradiensét mind a négy maszkka. Nézzük meg mind a négy eredmény képet, majd adjuk össze (vagy átagojuk) az eső kettőt és a második kettőt, s nézzük meg az így kapott két képet. Az egyiken az összes függőeges és ahhoz közei irányú vonaat átni fogjuk, a másikon pedig a többnyire vízszinteseket, de mindet. Ha pedig ezt az utóbbi két képet is összeadjuk (vagy átagojuk), kapunk egy képet meyen az összes é jeen van. Megjegyzés: ezekke a maszkokka enyhén kedveztünk a függőeges és vízszintes vonaaknak a ferdékhez képest, a eghátrányosabban kezet irány a fő- és meékátó iránya, de a megküönböztetett figyeembe vétet szabad szemme nem nagyon ehet észrevenni. M fn 0 0 0

Észrevehetjük, hogy az így kapott éek többnyire nem vékonyak, érdemes őket kivékonyítani. Hogyan? Eső próbákozásként pédáu egy vágássa: az aacsony értékű gradienseket tüntessük e a képrő. Vannak kifinomutabb technikák is, p. a Canny szűrő áta akamazott non-maximum suppression, azaz a nem maximáis értékű éek enyomása. Ettő viszont szakadozottá tudnak váni az éek s utóag pótoni ke majd őket. Nézzük meg az OpenCV édetektáó pédaprogramját (edge.exe), meyben Canny szűrőt akamaz színes képekre. A küszöbérték vátoztatásáva beáíthatjuk, hogy miyen erősségű éek jeenéte kívánatos még a képen és meyeket ke enyomni.

A gyakorat céja 6. gyakorat: Morfoógiai aapműveetek Céunk megismerkedni a morfoógiai műveeteive, azok hasznosságáva és megvaósítóságáva OpenCV környezetben. Eméeti áttekintés Az aapvető morfoógiai műveetek evégzésére az OpenCV egy tejes utasításarzenát hozott étre. Kezdjük a egegyszerűbbe és haadjunk a kompikát utasítások feé:. Amennyiben egy egyszerű szűkítés (erózió) vagy tágítás (diatáció) az evégzendő műveet, és beérjük az aapértemezett 3x3-as méretű négyzet aakú strukúráó eem hasznáatáva, akkor nagyon egyszerű dogunk van. Az aábbi műveeteket ke iyenkor végrehajtani: cverode(src,dst,null,times); cvdiate(src,dst,null,times); aho a NULL azt jeöi, hogy nincs saját gyártmányú strukturáó eemünk, a times pedig egy természetes szám ami megmondja, hányszor akarjuk egymásután végrehajtani az adott műveetet. 2. Egy strukturáó eem étrehozása egy kicsit kompikátabb műveet: IpConvKerne* b=cvcreatestructuringeementex( size_x, size_y, origin_x, origin_y, shape); Az eső két paraméter a strukturáó eem méretét hivatott beáítani, a második kettő az origóját, a shape vátozó pedid az aakját. Ez utóbbi értéke ehet CV_SHAPE_RECT (tégaap vagy négyzet), CV_SHAPE_ELLIPSE (eipszis), vagy CV_SHAPE_CROSS (kereszt). Egy szimmetrikus szerkezetű strukturáó eem eső négy paramétere (2m+,2n+,m,n, ) ke egyen, aho m nemnegatív egész szám. 3. Ha készítünk egy saját strukturáó eemet, azt be ehet vetni akár az egyszerű szűkítés és tágítás műveetekné, akár a kompikátabbakná. Péda az egyszerű esetre: cverode(src,dst,b,2); cvdiate(src,dst,b,3); 4. Összetett morfoógiai műveetek végzésére van egy gyűjtőnevű utasítás: cvmorphoogyex(src,aux,dst,b,command,times); Magyarázatok az eddig ismereten paraméterekhez: Az aux egy ugyanoyan típusú és méretű kép, mint az src és dst. Legegyszerűbb kónozni egyet vaameyikbő. A command mondja meg, hogy miyen műveetet végzünk: ennek értéke ehet: o CV_MOP_OPEN vagy CV_MOP_CLOSE: ezek a nyitás és zárás műveetei: iyenkor a times azt mondja meg, hogy hányszor végezzük e eőbb az eső, majd a második műveetet. 2

o CV_MOP_GRADIENT: ez a műveet a tágított képbő vonja ki a szűkített képet. Egy- és többcsatornás intenzitásképekné ez egy gradiens számítási ev, ugyanis mindig az adott képpontnak (a strukturáó eemme azonos méretű) szomszédságában taát maximumbó vonódik ki a minimum érték, ez pedig eég jó jeemzi az adott képpont közeében evő intenzitásvátozást. Kis méretű strukturáó eem hasznáatáva akamas ékeresésre. o CV_MOP_TOPHAT és CV_MOP_BLACKHAT: az esőve sötét aapon evő viágos kukacokat, a másodikka viágos aapon evő sötét kukacokat ehet detektáni. A munka menete. Kíséretezzünk a morfoógiai aapműveetekke bináris és intenzitásképeken. Mutassuk ki a nyitás és zárás aakformáó hatását. 2. Nézzük meg egy intenzitáskép morfoógiai gradiensét, hasonítsuk össze a Sobe maszkka számított gradiensse. 3. Készítünk egy akamazást sötét és/vagy viágos kukacok feismerésére tophat vagy backhat transzformáció segítségéve. Ha ez nem jön össze, nézzünk meg egy kész verziót. 3

7. gyakorat: Morfoógiai vázkeresés A gyakorat céja Írjunk egy programot, mey megvaósítja a hit-or-miss transzformációt. Ennek segítségéve vaósítsunk meg egy vázkeresést bináris képeken. Eméeti áttekintés A hit-or-miss transzformáció nincs ekódova az OpenCV-ben: ha iyen műveetet akarunk végezni, meg ke írnunk a saját verziónkat. Lehet, hogy kissé assú esz, de nem nehéz megvaósítani. Az vázkeresés körbeégetéses módszerét szimuáó, a Goay L betűs maszkjait hasznáó módszert fogunk megvaósítani. Hozzávaók: Hit-or-miss transzformáció, Goay ábécé L maszkjai, egy bemeneti kép fekete aapon fehér tárgyakka. Bemeneti rajz: egy képre rajzojunk néhány aakzatot. Az aábbi képen még van sok fekete hey, szóva enné többet is ehet rajzoni. A kép széén ne egyenek fehér pontok... A Goay ábécé L maszkjaiva ke hit-or-miss transzformációt végezni mindaddig, amíg egy tejes cikusban (8 maszk kipróbáása az összes fehér képponton) nem taáunk egyeten etörendő pontot sem. Egy ehetséges megodás átható aább, csak cvreeaseimage( ) utasítások hiányoznak beőe. A fenti képre vaami iyesmi jön ki: 4

5

Amennyiben másik maszkcsaádot kívánunk akamazni, e ke cseréni a Goay konstanstábát, és máris működik Viszont az nem vázat fog számoni. 6

8. gyakorat: Transzformációs szűrők A gyakorat céja Megismerkedünk a Diszkrét Fourier Transzformáció segítségéve eérhető képminőség javító ejárásokka. Mive egy iyen program megvaósításához szükséges idő nem kompatibiis a abortevékenység időtartamáva, egy kész programot fogunk esettanumányként részetesen eemezni: egy 2007-es ketezésű dipomaterv keretében megvaósított ujjenyomat feismerő rendszert fogunk megtekinteni. Eméeti áttekintés és gyakorati munka A programrendszer három fő feadatot át e, meynek számos részfeadata is van. Ezeket részetezzük az aábbiakban: Egy interneten megtaáható adatbázisban szerepő ujjenyomatok képminőség javítása DFT és IDFT hasznáatáva o Feosztottuk az ujjenyomatot és szemetet tartamazó intenzitásképet kis (kb. 25x25 képpontnyi), egymást részben efedő négyzetekre. Ezekben a négyzetekben ún. huámmode segítségéve akarjuk megközeíteni a jeen evő vonaakat: ez azt fetéteezi, hogy minden kis négyzetben van egy domináns irányú vonuat. o Úgynevezett short term DFT transzformációt hajtottunk végre minden kis négyzet besejében. o A kapott Fourier komponensek között megkerestük a domináns értéket és egy rendkívü restriktív szűrést hajtottunk végre, ami minden egyéb komponenst jeentős mértékben enyomott. Időközben intenzitás és iránydiagrammok is készütek. o A szűrés után megmaradt frekvencia tartományú komponenseket visszaaakítottuk IDFT ejárássa. o A kapott ábrán végrehajtottunk egy vágást: így a DFT aapon történő szűrés végeredménye egy bináris kép. Jeegzetes pontok (eágazások és végződések) keresése morfoógiai módszerekke o A fejavított minőségű, bináris ujjenyomat képeken a sötét vonaakat kivékonyítottuk a vázkeresés módszeréve. o A vázkeresés eredményeként rövid tüskék is maradtak meg a tényeges vázon kívü, meyek a vázbó nőttek ki. Ezek etávoítására akamaztunk egy morfoógiai végződéskereső és JSzPL 2 -aapú módszert. o A tüskéktő megszabadított vázakon morfoógiai végződéskeresést és egy átaunk kidogozott morfoógiai eágazás keresést hajtottunk végre. o Így végüis kijeöhettük az adott ujjenyomaton a feismert jeegzetes pontokat. A megtaát jeegzetes pontok aapján egy kis adatbázisbó a eginkább hasonó ujjenyomat megtaáása o Rengeteg geometriai számítást és JSzPL-aapú inteigenciát akamaztunk az azonosításhoz Néhány ábrán szemétetjük a végzett műveetek rész- és végeredményét: Váradi Róbert műve 2 JSzPL = józan székey paraszt ogika 7

A STFT OpenCV utasításokka vaó evégzéséhez szükséges szinusz és koszinusz tábák Egy eredeti ujjenyomat, az ő fejavított verziója, ietve a részeredménynek számító vonuati, enregia és koherencia kép, vaamint a majdnem végeges rekonstruát kép A tüskék jeenéte, a tüskék etávoítása utáni áapot, ietve a feismert eágazások és végződések heye 8

Ugyanazon ujjenyomat két küönböző eforgatási pozícióban, ietve a megtaát és meg nem taát hasonóságok 9

9. gyakorat: Hough transzformáció A gyakorat céja Megvaósítunk egy Hough transzformációs ejárást a képen taáható, nagyjábó ismert méretű körök feismerésére. Eméeti áttekintés és gyakorati munka A Hough fée transzformáció egy oyan ejárás, meye egyeneseket, köröket és egyéb anaitikus egyenette rendekező aakzatokat ehet egy képen detektáni. Eőnye, hogy a szakadozott éek nem zavarják. Egyenes detektáása Hough transzformációva: Az egyenes anaitikai egyenete y=ax+b, vagy inkább poáris koordináták szerint x cos θ + y sinθ = r. Ez utóbbi képetben r az origóbó az egyeneshez húzott merőeges hossza, θ pedig a merőeges és az Ox tengey áta bezárt szög. Mindez e vot rajzova a tábán. Hough megfigyete, hogy ha az egyenest nem az xy síkban, hanem az r θ síkban ábrázoja, annak képe egyeten pont esz. Ebbő kiinduva akotta meg Hough az egyenes detektáásának agoritmusát. Ennek épései:. Az eredeti képen efuttatunk egy édetektáó agoritmust (p. Canny szűrő). Ez esz az eőfedogozás, meynek során kapunk egy képet, meyen sok szakadozott é esz. 2. Ferajzojuk az r θ síkot, és kvantájuk mindkét mennyiséget, p. az r távoságot képpontban, a θ szöget fokban. Ekészítünk egy 2-D tábázatot, meyben minden egyes rekesz (cea) egy adott r és egy adott θ kvantát értéknek fee meg. 3. Sorba vesszük az éeket tartamazó kép épontjait, és a rajta potenciáisan áthaadható összes egyenest (minden ponton keresztühaad 80 db egyenes, ha θ -t fokonként kvantátuk). Minden iyen egyenes Hough transzformátja egy pont esz. Minden iyen pont után az r θ síkban a neki megfeeő ceában eheyezünk egy markert. 4. Miután minden iyen éponton végigmentünk, megkeressük, hogy az r θ sík meyik ceájában van a egtöbb marker. Ennek a ceának megfeeő egyenes esz a egreevánsabb az eredeti képen a Hough transzformáció szerint. Amennyiben kör detektáása a céunk, akkor annak az egyenetébő induunk ki: 2 2 2 ( x a) + ( y b) = ρ = r, aho a és b meghatározza a kör közepét, ρ pedig a kör sugara. Ennek megfeeően a Hough transzformát sík heyett 3-D terünk esz, meynek dimenziói az a, b és r. Minden potenciáis körnek az eredeti síkban megfee egy pont a Hough transzformát térben, meynek koordinátái (a,b,r). Az ejárás evieg ugyanaz mint az eőbb, gyakoratiag abban küönbözik, hogy az édetektát kép épontjainak minden pontjára a potenciáisan jeen ehető összes kört ke figyeembe vennünk és transzformánunk a Hough térbe. A kvantát Hough tér ceái közü megint azt váasztjuk ki, meynek a egtöbb markere van. Ennek aapján be tudjuk rajzoni az eredeti képre a detektát, szakadozásoktó mentes kört. Ha egy adott sugarú kört keresünk, akkor a Hough térbő kihagyhatjuk az r dimenziót, s így csak ab síkunk esz. Feadat: Írjunk meg egy oyan programot, amey köröket keres a bemeneti képen. Fetéteezzük, hogy adott sugarú kört keresünk a képen. A bemeneti képre eőzetesen tényeg rajzojunk rá egy néhány, küönböző méretű képet. 20

0. gyakorat: Képek szegmentáása gobáis információ aapján A gyakorat céja Megvaósítunk egy gyors, hisztogram aapján működő gyors ejárást intenzitásképek szegmentáására. Eméeti áttekintés és gyakorati munka Jeen módszer céja, hogy a képen taáható N db képpontot ossza szét c db osztáy között úgy, és a c db osztáynak váasszon optimáis intenzitásértéket úgy, hogy a szétosztás optimáis egyen, azaz miné jobban megfeejen egy négyzetes kritériumfüggvény gobáis minimum értékének. Legyen c az osztáyok száma, indexként hasznáunk i-t vagy j-t; i,j= c. Legyen q az eredeti képben az intenzitásértékek száma, indexként hasznájuk a -et, = q. Legyen N a képpontok száma, indexként hasznájuk k-t, k= N. Legyen γ = [HIST(f)](), azaz az eredeti képbő az -e megegyező intenzitású képpontok száma. Jeöjük vi -ve az i-dik osztáyhoz tartozó prototípus színt, amit az agoritmus számo. Jeöjük ui -e az -e megegyező intenzitási képpontok i-dik osztáyhoz viszonyított fuzzy tagsági c függvényét. Érteemszerűen, definíció aapján: u i =, bármey = q esetén. Kötségfüggvényünket a következőképpen vesszük fe: i= J = c q i= = γ p ui ( v ) i 2, aho p egy konstans vaós szám, konvergencia érdekében p>. Ennek a kötségfüggvénynek a minimumát keressük, szükségünk van Lagrange szorzók bevezetésére, azaz c q q c = p [ 2 F γ ui ( vi ) ] + λ ui. i= = = i= Ennek az eső, dupa szummás tagja az eredeti kötségfüggvény, a második szummás tagja pedig egyérteműen NULLA, de a deriváásokná nagy szükségünk esz rá. Derivájuk a Lagrange mutipikátort u i és v i szerint, s a derivátakat egyenővé tesszük 0-va. δf p 2 = pγ ui ( vi ) λ = 0, δui innen azt kapjuk, hogy p 2 p λ u i = ( vi ). pγ c Ezek után a u i = fetéte segítségéve kiküszöböjük a λ értéket, s kapjuk azt, hogy i= 2 = c p vi u i. j= v j A másik derivátbó a következőket kapjuk: 2

22 ( ) = = = 0 ) ( 2 q i p i i v u v F γ δ δ = = = q p i q p i i u u v γ γ. Ezek után fogamazzuk meg az agoritmust:. Iniciaizáás: i v -ket egyenetesen szétszórjuk az kép intenzitás értéktartományában, az i u értékek kezdeti értéke egyen /c, hogy egyenetes egyen és eeget tegyen a fetéteeknek. 2. Kiszámítjuk a hisztogramját az eredeti képnek, megkapjuk a γ értékeit. 3. Kiszámítjuk a kötségfüggvény értékét. 4. Frissítjük a fuzzy tagsági függvények értékét: 2 = = c j p j i i v v u, aho i=...c, =...q. 5. Frissítjük az osztáyokhoz hozzárendet optimáis színek értékeit: = = = q p i q p i i u u v γ γ,, aho i=...c. 6. Kiszámítjuk újra a kötségfüggvény értéket, s ha jeentősen csökkent, akkor visszaugrunk a 4. pontra, küönben jön a 7. pont 7. Minden egyes = q szín esetében megvizsgájuk, hogy meyik i= c osztáyhoz viszonyított tagsági függvénye a egnagyobb. Ameyik a egnagyobb, abba az osztáyba fogjuk osztáyozni az iyen színű képpontokat. Eredmény: Egy mágneses rezonanciás agyi metszet, 256 szín, 3 osztáy esetén: Egy fénykép, 256 szín, 8 osztáy esetén:

. gyakorat: Képek régió aapú szegmentáása: a feosztás és egyesítés módszere A gyakorat céja Megvaósítunk egy régió aapú szegmentáást, meyet a feosztás és egyesítés módszeréve fogunk evégezni. Eméeti áttekintés és gyakorati munka Mindenek eőtt ki ke taáni egy homogenitási kritériumot, amive meg tudjuk áapítani a kép bármeyik fotjáró, hogy homogén-e. Kiinduásként négyzet aakú képet hasznáunk, meynek széessége és hossza 2 hatványa ke egyen (p. 256x256 képpont). Ha ennek a fetétenek nem fee meg a kép, akkor ki ke egészíteni au és/vagy jobb odaon. Ha ezek megvannak, akkor egy hierarchikus struktúrát, egy úgynevezett kvadrikus fát hozunk étre, ameyben nyivántarthatjuk a feosztás során keetkező régiókat. A feosztás agoritmus a következő: Megnézzük, hogy a tejes kép homogén-e? Ha igen, akkor a tejes kép egy régió, ha nem akkor vízszintesen és függőegesen kettévágjuk középen, és mind a 4 keetkező részt aávetünk ennek a homogenitási vizsgáatnak. Ameyik rész homogén, azt kinevezzük régiónak, ameyik nem homogén azt tovább bontjuk további 4 egyforma részre. Ezt mindaddig foytatjuk, amíg minden darabka homogén nem esz. Biztosan taáunk homogén részeket akkor, amikor a régió már csak egy képpontbó á (egy képpont önmagában garantátan homogén). A feosztás egy nagyon gyors műveet, az egyesítéshez viszonyítva az időtartam tejesen ehanyagoható. A feosztás során keetkező régiókat feírjuk egy istára. Az egyesítés a következő agoritmus szerint működik: A régiók istáján keresünk oyan régió párokat, ameyek szomszédosak. Ha taátunk szomszédos régiókat, megvizsgájuk a homogenitási kritérium segítségéve, hogy ha egyesítenénk őket, akkor együttesen homogének ennének-e? Ha igen, akkor egyesítjük őket. Ezután újabb szomszédos régió párost keresünk, stb Amikor végigjártuk a tejes istát és nem taátunk egyesíthető párost, akkor vége van az egyesítésnek. Utófedogozás: a nagyon kis méretű régiókat egyesítjük nagyobb szomszédaik közü azza, ameyikhez a eginkább ieszkednek homogenitás szempontjábó. Ez a módszer nem a gyorsaságáró híres, de jó minőségű szegmentáást végez, ezért érdemes vee fogakozni. Aább átható egy szegmentát szürkeáomány darabka egy MRI agyi fevétebő. 23

2-3. gyakorat: Egy egyszerű formafeismerő rendszer megvaósítása: feügyeette tanuó rendszer és feügyeet nékü tanuó rendszer A gyakorat céja Képi információbó kinyerhető jeemzővektorok osztáyozását vaósítjuk meg, feügyeette és feügyeet nékü tanuó rendszerre egyaránt. Eméeti áttekintés és gyakorati munka Tekintsük az aábbi képet: Ebben a képben megtaáható: a feső sorban 0 db béka, a középső sorban 0 db kacsa, az asó sorban pedig 0 db ufó. A képek egyeséve 54x54-es rekeszekben vannak eheyezve, mindegyik rekeszben egy képpontnyi vastagságú technoógiai keret veszi közre az 52x52 képpontnyi képeket. Ezeknek a képeknek egyenként ki ke nyerni a jeemzőiket és jeemzővektorba ke soroni. A javasot hat darab jeemző a három színcsatornához rendehető átagos intenzitás (µ R, µ G, µ B ) és az intenzitás négyzetes szórása (σ R, σ G, σ B ). Ezekek könnyűszerre ki ehet nyerni a nagy képre ráheyezve a kis képet kiváasztó ROI-t és efuttatva a cvavgsdv( ) utasítást. Az evégzendő osztáyozási feadat Feügyeette tanuó rendszer esetén tanítsunk meg egyeten perceptront (vagy egy komoyabb szerkezetű neuráis háózatot), hogy a feső két sorban evő 20 adatot heyesen osztáyozza. Ezek után eenőrizzük az osztáyozás heyességét a harmadik sor ufóiva, meyek közü eég sokat emberi szemme ránézésre be tudunk soroni. Kíséretezzük ki azt a minimáis mennyiségű jeemzőt, amey a feső két sor eemeit képes szétváasztani. Nem ke hozzá mind a 6 jeemző. Feügyeet nékü történő osztáyozáshoz vaósítsunk meg egy vagy több egyszerű kaszterező ejárást a kinyert jeemző vektorok hasonóság vagy küönbség aapján történő osztáyozásához. Javasot módszer a szekvenciáis kaszterezés (meynek küszöbértékéve számos kíséretet e ehet végezni), vagy az FCM (fuzzy c-means) vagy HCM (hard c-means) agoritmus. 24