Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OCR using Supported vector Machine

285 views

Published on

Master thesis on optical character recognition using supported vector machine. I have used an openCV image processing library.

Published in: Technology
  • Be the first to comment

OCR using Supported vector Machine

  1. 1. REPUBLIKA E SHQIPËRISË UNIVERSITETI I TIRANËS FAKULTETI I SHKENCAVE TË NATYRËS DEGA: INFORMATIKË Mikrotezë për mbrojtjen e gradës “Master i Shkencave” (MSC) Tema: “Detektimi i numrave në imazhe duke përdorur Supported Vector Machine si algoritëm i inteligjencës artificiale” Punoi Udhëhoqi Kejvi DOKO Dr. Olti QIRICI (________________) (________________) Tiranë, më _____/_____/_________
  2. 2. Faqe | 2 Tabel Përmbajtie Mirënjohje....................................................................................................................................... 5 Abstrakt........................................................................................................................................... 6 Dallimi i Numrave............................................................................................................................ 7 Histori e Shkurtër ........................................................................................................................ 7 Mjete dhe programe ................................................................................................................... 8 Përpunim Dixhital i Imazhit............................................................................................................. 9 Teknika e propozuar (Paraprocesim Imazhi)............................................................................. 11 Detektimi i kontureve dhe Vijave.............................................................................................. 15 Algoritmi Canny Edge ............................................................................................................ 18 Barazimi i Histogramës.............................................................................................................. 25 Histograma ............................................................................................................................ 25 Teknika e barazimit të histogramës ...................................................................................... 29 Kufizimi i Kontureve .................................................................................................................. 30 Binarizimi i Imazheve................................................................................................................. 30 Detektim i ngjyrës dominante (K-Means)................................................................................. 34 K-Means (Algoritem Grupimi) ............................................................................................... 37 Filtra Morfologjik .......................................................................................................................... 43 Erosion....................................................................................................................................... 44 Dilatation................................................................................................................................... 45 Algortimat Machine Learning ....................................................................................................... 46 Supported Vector Machine....................................................................................................... 46 Funksione të ndryshëm KERNEL................................................................................................ 51 Avantazhet dhe Disavatazhet e SVM ........................................................................................ 52 Avantazhet............................................................................................................................. 52 Disavantazhet ........................................................................................................................ 52 Rezultatet...................................................................................................................................... 53 Kufizime dhe përmirësime............................................................................................................ 56 Aplikime të mundshme................................................................................................................. 57 Bibliografi...................................................................................................................................... 58
  3. 3. Faqe | 3 Tabela e Figurave Figure 1 Shembull Numrash në Imazh.......................................................................................... 11 Figure 2 Detektime Fallco ............................................................................................................. 12 Figure 3 Eleminimi i Detektimeve Fallco....................................................................................... 12 Figure 4 Zona e izoluar e imazhit.................................................................................................. 12 Figure 5 Zona e izoluar e imazhit e binarizuar.............................................................................. 12 Figure 6 Zona e izoluar e imazhit pas Mbylljes............................................................................. 13 Figure 7 Matrica e Trainimit ......................................................................................................... 14 Figure 8 Rrjedha e procesit të detektimit të numrave ................................................................. 15 Figure 9 Detektimi i Kontureve dhe Vijave (a).............................................................................. 16 Figure 10 Detektimi i Kontureve dhe Vijave (b)............................................................................ 16 Figure 11 Brinjë më shkalle ideale................................................................................................ 18 Figure 12 Imazhi Fillestar.............................................................................................................. 20 Figure 13 Imazhi i Zbutur .............................................................................................................. 20 Figure 14 Imazhi i Zbutur .............................................................................................................. 21 Figure 15 Madhesit e Gradientit................................................................................................... 21 Figure 16 Drejtimi i Gradientëve................................................................................................... 22 Figure 17 Vlerat e Gradientëve..................................................................................................... 23 Figure 18 Pas anullimit të jo-maksimumeve................................................................................. 23 Figure 19 Brinjët pas eleminimit të jo-maksimumeve.................................................................. 24 Figure 20 Segmentim i dyfishtë .................................................................................................... 24 Figure 21 Segmentim i Dyfishtë.................................................................................................... 25 Figure 22 Ndjekja e brinjëve ......................................................................................................... 25 Figure 23 Imazhi rezultant ............................................................................................................ 25 Figure 24 Shembull Histogramë.................................................................................................... 26 Figure 25 Transformimi i histogramës.......................................................................................... 29 Figure 26 Shembull binarizimi statik në imazhe të botës reale.................................................... 33 Figure 27 Majtas- Segmentim me Vlerë të Mesatarizuar. Djathtas- Segmentim Gausian........... 34 Figure 28 Imazh më background më të erret se shkrimi.............................................................. 35 Figure 29 Binarizimi i Imazhit........................................................................................................ 35 Figure 30 Imazhi pasi është aplikar algoritmi kmean ................................................................... 36 Figure 31 Histograma e Imazhit pas KMean................................................................................. 37 Figure 32 K mesataret fillestarë janë gjeneruar në mënyrë të rastësishme. Tregohen më ngjyra si në figurë..................................................................................................................................... 40 Figure 33 K grupet janë krijuar duke shoqëruar çdo vrojtim më mestaren më të afërt. Paraqitja është një diagram Voronoi. .......................................................................................................... 40 Figure 34 Centroid për çdo k grup bëhet mesatarja e re. ............................................................ 40 Figure 35 Hapat 2 dhe 3 përsëriten deri sa arrihet konvergjenca................................................ 41 Figure 36 Imazh më 2 kanale ngjyre për ilustrim ......................................................................... 42 Figure 37 Kuntizimi i Vektorëve të ngjyrave në qeliza Voronoi duke përdorur k-means............. 42
  4. 4. Faqe | 4 Figure 38 Imazhi Binar I dhe Filtri H.............................................................................................. 44 Figure 39 Shembull Operacioni Erozioni....................................................................................... 45 Figure 40 Shembull Operacioni Dilitacioni.................................................................................... 45 Figure 41a) Fqinjët më të Afërt b) Pemët e Vendimit c) Rjetat Neurale ...................................... 46 Figure 42 Diagrama për SVM ........................................................................................................ 47 Figure 43 Shpjegim i teoremës Lagranzh...................................................................................... 49 Figure 44 Shtimi i një dimensioni per te zgjidhur rastin linerisht të pa ndashëm........................ 52 Figure 45 Rast Linearisht i Pandashem......................................................................................... 52 Figure 46 Testimi Nr 1................................................................................................................... 55 Figure 47 Testimi Nr 2................................................................................................................... 55 Lista e Tabelave Table 1 Ndyshimi i histogramës me ndryshimin e kontrastit....................................................... 27 Table 2Testimet dhe Rezultatet.................................................................................................... 54 Table 3 Numri 1 më probleme...................................................................................................... 56
  5. 5. Faqe | 5 Mirënjohje I jam shumë mirënjohës çdo personi që ka kontribuar në realizimin e këtij projekti. Ky projekt ka qënë për mua një experiencë unike. Njohuritë dhe eksperienca e marë në këtë projekt do më shërbejne mua dhe kolegëve të mi që ta cojnë zhvillimin e kësaj teme në një nivel tjetër. Gjatë punës për këtë projekt kam lexuar dhe kam thelluar njohuritë e mia mbi teknologji të reja dhe punime shkencore që janë realizuar nga univerisitet dhe kompanitë më prestigjoze në botë. Gjej rastin ti shpreh falenderim dhe mirënjohje pedagogut dhe udhëheqësit tim shkencor Dr. Olti Qiricit, për mbështetjen, këshillat, orientimin dhe udhëheqjen shkencore në realizimin e këtij punimi. Të fundit po jo më pak të rëndësishmit, dua të falenderoj familjen time dhe miqtë për mbështetjen morale, insipirmin dhe kurajon pa të cilët përfundimi i ketij projekti më sukses do të ishte thuajse i pamundur.
  6. 6. Faqe | 6 Abstrakt Ky punim është i fokusuar në detektimin e numrave në imazhe dixhitale ose fotografi të botës reale duke përdorur SVM1 (ang: Support Vector Machine) si algoritëm i inteligjencës artificiale. Krahas këtij algortimi në këtë punim tregohen të gjitha teknikat dhe hapat e paraprocesimit të imazhit që duhen ndjekur më qëllimi që faza e trajnimit dhe faza detektimit të numrava të jetë sa më e sukseshme. Në këtë punim është propozuar një teknik orgjinale për detektimin e imazheve si dhe janë shpjeguar më detaje hapat në të cilat duhet të kalojë një imazh përpara se ti jepet klasifikuesit. Ndër teknikat që janë përodorur mund të përmend detektimin e kontureve, binarizimin e imazheve, detekmin e ngjyrës dominante etj. Pasi imazhi ka kaluar në të gjitha fazat e paraprocesimit bëhet trajnimi i SVM më imazhe të gjeneruara në forme dixhitale, duke i dhënë për çdo numër 7 imazhe përfaqësuese në fonte dhe pamje të ndryshme. Më perfundimin e trajnimit, klasifikuesi i SVM është gati për të bërë detektimin e numrave. 1 SVM (ang: Support Vector Machine) algoritëm i inteligjencës artificiale, propozuar nga Vladimir N. Vapnik dhe Alexey Ya. Chervonenkis
  7. 7. Faqe | 7 Dallimi i Numrave Histori e Shkurtër Njohja optike e karaktereve (ang: OCR) konsiston në konvertimin e imazheve të teksteve të shkruara më dorë ose të printuara, në tekst të kuptueshëm nga kompiuterat, të ekstraktuara nga imazhe të skanuara ose të fotografuara. Përdoret gjerësisht si një formë për futjen e të dhënave nga dokumentat e printuara siç mund të jënë pasaporta, fatura, karvizita etj. Është një mënyrë shumë e përdorshme për dixhitalizimin e të dhënave më qëllim që të mund të përpunohen më pas në mënyre dixhitale. Njohja optike e karaktereve është një fushë e gjerë kërkimore duke aplikuar machine learning 2 , inteligjencë artificiale, të mësuarit njohës dhe imazheria kompiuterike. Versionet e vjetra duhej të trajnoheshin më imazhe për çdo karakter dhe mund të procesonin një shkronje në një kohe. Sistemet e sotme më të avancuara mund të procesojne disa imazhe njëkohëshit dhe mund të detektojnë grupe shkronjash në të njëjtën kohë. Saktësia dhe gama e elementëve strukturorë që mund të detektojne është bërë gjithnje e më madhe. Aplikimet më të mëdhja të këtyre teknologjive kanë qënë në zhvillimin e telegrafisë dhe krijimin e paisjeve për personat më aftësi të kufizuara të shikimit që të kënë mundesi të lexojnë dhe të perceptojnë botën përreth tyre. Për herë të parë në 13 Janar 1976 u krijua nga Ray Kurzweil një paisje që mund të lexonte karakteret për të personat më aftësia të kufizuara të shikimit. Shpikja e kësaj paisje erdhi së bashku më shpikjen e sintetizuesit zanor. Në ditët e sotme më futjen e paisjeve portabël si smartphone, tablet, google glasses etj aplikimi i këtyre teknologjive është bërë dhe më i përhapur dhe më i nevojshem. Ndër aplikimet më të përhapura janë: 2 Machine Learning: Disiplinë e inteligjencës artificiale që tenton të trajnojë dhe të mësojë sistemet kompiuterike ashtu siç mesojnë njerzit.
  8. 8. Faqe | 8 1. Futjen e të dhënave për dokumenta biznesi 2. Njohje automatike e numrit të targave të makinave 3. Ekstraktimi i të dhënave të kartëvizitave dhe shtimi i tyre në listën e kontakteve 4. Realizimi më i shpejtë i versioneve tekst për dokumentat e printuar 5. Realizimin e kërkimit mbi dokumenta të skanuara ose të printuara 6. Konvertimi i shkrimit të dorës në kohe reale në shkronja dixhitale (pen computing) 7. Mbrojtia e sistemeve CAPTCHA nga botet3 (Ndërtimi i CAPTCHA të cilat nuk mund të njihen nga OCR) 8. Ndërtimi i teknologjive asistuese për personat e verbër Mjete dhe programe Për realizimin e kësaj detyre kam përdorur disa software dhe disa librari që ndihmojnë në realizimin e kësaj detyre: 1. Adobe Photoshop CS6 2. Microsoft Visio 2016 3. Google Sketch Up LayOut 4. Visual Studio 2015 5. ImageJ 6. OpenCV Paisje: 1. Nikon D3200 2. Nexus 6P 3. HP ProBook 4740s, 8GB Ram, Core i5 3230M 2.6 GHz 3 Bot: Software autonom të ndërtuar me një qellim specifik që tenton të imitojë sjelljen njerëzore duke naviguar në website dhe sisteme të ndryshme me qellim vjedhje informacioni, mbledhje të dhenash etj.
  9. 9. Faqe | 9 OpenCV është një ankronim për Open Source Computer Vision Library, është një librari që përmban funksione për përpunimin kompiuterik të imazheve. Është zhvilluar nga Intel dhe tashmë menaxhohet nga Willow Garage. Libraria ofron funksionet në platforma të ndryshme ku përfshihen Windows, Android, Free BSD, Maemo, iOS, OpenBSD, Linux dhe Mac OS. Libraria në momentin e shkrimit të këtij dokumenti ka arritur në versionin 3.0.1. Fokusi kryesor i librarisë është procesimi në kohë reale i imazheve dhe implementimi i algoritmave të inteligjencës artificiale. Duke përdorur këtë librari në mund të përmirësojmë koston e llogaritjeve dhe të marim inisiativen drejt aplikacioneve që përdorin në mënyrë intensive procesorin. Fushat ku mund të përdoret OpenCV janë njohja e fytyrave, OCR, identifikimi i objekteve, ndjekja e lëvizjes, njohja e gjesteve etj. OpenCV gjithashtu përfshin librari për mësimin statistik të makinave që mbështët fushat e mësipërme. Emrat e funksioneve që mbështësin këtë librari janë pemet e vendimit, klasifikuesi naiv i Bayes, k-fqinjet më të afërt, rrjetat neurale, support vector machine e shumë të tjerë. Libraria është shkruar në gjuhe C dhe për shkak të ndërfaqes në C është e portueshme në platforma të ndryshme. Për të rritur përdorshmërine e kësaj librarie janë krijuar shumë klasa ndihmëse (ang: wrapper) në gjuhë të ndryshme si C#, Pyhon, Ruby dhe Java. Imazhet që janë përdorur për testime janë imazhe të gjeneruar në mënyrë dixhitale nëpërmjet Adobe Photoshop ose janë shkrepur nga aparati dixhital. Imazhet e përdoruara për trajnim janë krijuar nga unë duke përdorur Adobe Photoshop. Në imazhet e ndërtuara për trainim janë vendosur të gjithë numrat në disa fontë të ndryshme që ta trajnoi klasifikuesin për një gamë sa të më të gjerë numrash. Përpunim Dixhital i Imazhit Ka shumë teknika që përdoren në njohjen e tekstit dhe numrave në vecanti. Shumica e këtyre teknikave bazohen në ekstraktimin e karakteristikave nga imazhi. Ekstraktimi i këtyre karakterisktikave bazohet mbi percaktimin e disa karakteristikave primitive dhe aplikimi i tyre në
  10. 10. Faqe | 10 të gjithë imazhin në shkalle të ndryshme zmadhimi dhe rrotullimi. Kjo teknikë ka disa probleme të dukshme: 1. Kohë e madhe procesimi Në përdorimin e kësaj teknike imaxhi konsiderohet si një matricë më pika (piksel). Numrat që duam të detektojmë në një imazh mund të jenë karahasimisht shumë të vogla ose shumë të mëdha në lidhje më dimensionet e vetë imazhit. Gjithashtu numrat mund të jene të vendosur në kënde të ndryshme gjë e cila e bën shumë të vështirë dhe të kushtueshme në terma procesimi. Supozojme se kemi zgjedhur një klasifikues Supported Vector Machine ose një rrjet neural. Ky klasifikues është trajnuar më një bashkësi trajnimi ku janë dhënë disa shembuj numrash në një madhësi të caktuar. Për të detektuar numrat duhet që të skanojme imazhin nga e majta në të djathtë dhe nga lartë, poshtë. Kjo zone e imazhit duhet të rishkallëzohet në madhesin e mostrave të pvrdorura gjatë procedurës së trajnimit. Zona e imazhit i jepet klasifikuesit që të bëj klasifikimin. Problemi qëndron në faktin që imazhi duhet skanuar në mënyre iterative duke zmadhur zonën e skanimit gjë që zgjat shumë kohën e procesimit. Një problem tjetër që lind më këtë teknike është fakti që imazhi duhet skanuar për të gjitha simbolet e mundshme dhe në të gjitha pozicionet e mundshme gjë që do të donte një kohe shumë të madhe. Përdorimi i ksaj teknike për shkak të kohës së gjatë të procesimit e bën të pamundur përdorimin e saj në imazhe që transmetohen në kohe reale. 2. Detektime fallco Për shkak të mënyrës iterative të funksionimit të ketij algoritmi zona e skanimit mund të ndodhi që të kapi disa herë të njëjtin numër dhe kjo do bëj që klasifikuesi të kalasifikoje atë si një numër më shumë se 1 herë. Eleminimi i këtyre dublikave është shumë kompleks dhe shumë i kushtueshëm në terma kohor.
  11. 11. Faqe | 11 Figure 1 Shembull Numrash në Imazh Teknika e propozuar (Paraprocesim Imazhi) Në vijim do e shpjegoj shkurtimisht një përafrim që unë kam zgjedhur ndaj këtij problemi. Problemi kryesor i prezantuar më siper qëndronte në faktin se algoritmi duhet të bridhte një numër shumë të madh herësh për të detektuar vetite e çdo numri. Për të percaktuar sa më shpejtë zonat e imazhit që mund të përmbanin numra aplikohet një algoritëm për detektimin e vijave dhe të kontureve. Në fund të aplikimit të kësaj faze kemi perfituar elementët strukturor që formojnë një vije ose një kontur. Pasi janë detektuar konturet dhe vijat të cilët mund të jenë të formave dhe permasave të ndryshme në imazh, për të punuar më lehtë gjejmë drejtekendeshin më të madh që perfshin secilin prej këtyre elementëve. Për shkak të formës së tyre algoritmi për detektimin e vijave dhe kontureve mund të detektoje pjesë të vecanta në numrave si konture ose si vija më vete si në shembullin më poshte:
  12. 12. Faqe | 12 Figure 2 Detektime Fallco Figure 3 Eleminimi i Detektimeve Fallco Si mund të shikoni në figurën nr.2 algoritmi për detektimin e kontureve ka detektuar edhe pjesën e brendshme të numrit 8 dhe 9 si konture dhe vija të pavarura. Eleminimi i këtyre dublikatave realizohet bazuar mbi mbivendosjen e sipërfaqeve dhe mbi masën e mbulimit. Pas perfundimit të hapit të parë kemi listën e pjesëve të imazhit që pretendohet të jenë numra. Çdo element i kësaj liste duhet të kovertohet në një imazh të binarizuar duke e konvertuar ate imazh në formatin bardhë e zi. Për të bërë këtë binarizim përdoret një filtër Gaussian që bën një binarizimi pothuajse të pavarur nga teprica apo mungesa e ndricimit të imazhit. Figure 4 Zona e izoluar e imazhit Figure 5 Zona e izoluar e imazhit e binarizuar
  13. 13. Faqe | 13 Duket qartë që pas procesit të binarizimit kemi një numër të qartë dhe paraqitur sakte por ende procesi nuk është i perfunduar. Në imazhin e perftuar ka disa mbetje (artifakte) që mund të dëmtojnë procesin e detektimit të numrit. Për të shmangur çdo pasaktësi të mundëshme mbi imazhin e figures 5 aplikojmë një operacion mbyllje. Operacioni i mbylljes tenton të largojë nga imazhi struktura të vogla duke aplikuar njeri pas tjetërit në këtë radhe një operacion dilitacioni dhe një operacion erozioni. Në përfundim të operacionit të mbylljes nga imazhi janë larguar të gjitha mbetjet (artifaktet) dhe është gati që të kalojë në fazën përfundimtare të procesimit për të percaktuar se çfarë numri është ky imazh. Imazhi rishkallezohet në dimensione fikse (30 𝑝𝑖𝑥𝑒𝑙 × 45 𝑝𝑖𝑥𝑒𝑙 ) për të siguruar një mënyrë uniforme të analizimit të tyre dhe i jepet si parameter algoritmit të mësuarit të makinës (ang: Machine Learning Algorithm). Të gjithe hapat e përmendur më siper bëjnë pjese në fazën pergatitore ose faza e para procesimit. Në keto hapa siç sqaruam dhe më siper vecohen dhe pastrohen elementët më me interes për procesin tonë. Në fazën e dytë bëhët trainimi i algoritmit të mësuarit të makines më një bashkësi trainimi dhe testimi i tij më rastet individuale. Në fazën përfundimtare bëhet trajnimi i klasifikuesit. Përcaktohet një bashkësi trajnimi më 7 përfaqësues për çdo klasë. Elementët e bashkësisë së trainimit janë imazhe në formatin jpg më dimensione të fiksuara (30 𝑝𝑖𝑥𝑒𝑙 × 45 𝑝𝑖𝑥𝑒𝑙 ) dhe gjithashtu të binarizuara. Klasifikuesi që kam zgjedhur është një SVM i cili ofrohet nga libraria OpenCV në formën e një funksioni. Imazhet e bashkësis së trajnimit ruhen në një matric trajnimi në formën e mëposhtme: Figure 6 Zona e izoluar e imazhit pas Mbylljes
  14. 14. Faqe | 14 Figure 7 Matrica e Trainimit Për të përfunduar trainimin e klasifikuesit duhet që për çdo imazh të bashkësis se trainimit të përcaktojmë dhe një shënjues pra të tregojme kuptimin që ka për në ky imazh. Pra nëse bashkësia e trainimit ka 5 imazhe përfaqësuese për çdo numër nga 0-9 atëhere klasifikuesi duhet të mari si parametër një matricë 1D ku çdo imazhi i vihet në korrespondencë një numër. Kjo matricë përcakton dhe bashkësin e klasave të klasifikuesit. Klasifikuesi ndërton aq klasa sa janë edhe element në matricën e shenjuesve.
  15. 15. Faqe | 15 Eleminimi i Duplikatave Detektim i Vijava dhe Kontureve Kufizimi i Zonave me Interes 1 Binarizimi i Imaxheve Ripermasimi i Zonave te Interesit Operacion Mbyllje Operacion DiletationiOperacion Erozioni Trajnimi i SVM Parashikimi i SVM Rezultati Barazuesi i Histogramës 2 Detektimi i Ngjyrës Dominante 3 Inverto Ngjyrat PO JO 6 45 Figure 8 Rrjedha e procesit të detektimit të numrave Detektimi i kontureve dhe Vijave Një nder fazat e perpunimit të imazhit gjate detektimit të tekstit në përgjithësi dhe i numrave në vecanti është detektimi i kontureve dhe vijave. Vijat dhe konturet e detektuara janë zona interesi për algoritmin tonë. Në një mënyrë të ngjashme funksionon edhe sistemi pamor tek njeriu. Siç mund ta keni venë re ju mund të dalloni pa medyshje një objekt vetëm më disa vija në formën e një karikature. Vijat janë zona të cakuara të imazhit ku ka ndryshime të ndjeshme të intensitetit në një drejtim të caktuar. Sa më i fort të jetë ky ndryshim aq më e qartë është që kemi të bëjmë më një vijë.
  16. 16. Faqe | 16 Figure 9 Detektimi i Kontureve dhe Vijave (a) Figure 10 Detektimi i Kontureve dhe Vijave (b) Ka disa teknika që përdoren për detektimin e vijave dhe të kontureve: 1. Detektim i vijave bazuar mbi gradient 2. Dektimi i vijave bazuar mbi filtra a. Operatorët Prewitt dhe Sobel b. Operatori Roberts c. Operatori Kompas 3. Detektektimi i vijave bazuar mbi derivatin e dytë a. Operatori Canny Matematikisht madhësia që tregon madhësin e ndryshimit në lidhje më distancën hapsinore është derivati i pare i funksionit. Mbi këtë teknikë bazohet edhe modeli i pare i detektimit të kontureve (Detektim i vijave bazuar mbi gradientin). Supozojmë se funksioni që jep intensiteitin në imazhin 𝐼 më funksionin𝑓(𝑥). Duke marë derivatin e parë 𝑓′(𝑥) = 𝑑𝑓 𝑑𝑥 (𝑥). Derivati i parë është i pa përcaktuar për një funksion diskret 𝑓(𝑢) dhe duhet një metode për ta vlerësuar këtë. Derivati i parë i një funksioni të vazhdueshëm mund të interpretohet si vija tangenete më funksionin në ate pike. Një përafrim i mire për të vlerësuar këtë tangjente në një funksion diskret është të vendosim një vije të drejtë mes vlerave fqinje të funksionit 𝑓(𝑢). Kjo aplikohet në drejtimin vertikal dhe atë horizontal.
  17. 17. Faqe | 17 Ky derivat i parë mund të përafrohet nëpërmjet një filtri linear më komponente horizontale 𝐻 𝑥 𝐷 = [−0.5 0 0.5] dhe komponente vertikale 𝐻 𝑦 𝐷 = [ −0.5 0 0.5 ]. Për detektimin e vijave dhe të kontureve përdoren operatorët e vijave. Ndër operatorët më të njohur janë Perwitt dhe Sobel. Janë shumë të ngjajshëm me njeri tjetrin në mënyrën e funksionimit. Operatorët Prewitt dhe Sobel përdorin filtra linear që aplikohen në tre vija dhe kolona fqinje njëkohësisht për të asnjëanësuar ndjeshmërin nga zhurmat që mund të këtë një operator ndryshimi. 𝐻 𝑥 𝑃 = [ −1 0 1 −1 0 1 −1 0 1 ] 𝐻 𝑦 𝑃 = [ −1 −1 −1 0 0 0 1 1 1 ] Gjithashtu edhe filtri Sobel ka të njëjtën strukturë perveç ndryshimit të peshave në linjen e mesit. 𝐻 𝑥 𝑃 = [ −1 0 1 −2 0 2 −1 0 1 ] 𝐻 𝑦 𝑃 = [ −1 −2 −1 0 0 0 1 2 1 ] Një problem kryesor më teknikat që kemi prezantuar më siper është fakti që ato mund të detektojne vetëm vija që janë plotësisht horizontale ose plotësisht vertikale duke neglizhuar shmangie minimaliste. Një operator tjetër për detektimin e vijave është operatori i Kompas. Ndërtimi i filtrave linear për detektimin e brinjëve ka një ane negative: Sa më fortë që përgjigjet filtri në strukturat e birnjëve
  18. 18. Faqe | 18 aq më e ndjeshme bëhet ajo ndaj orientimit. Për të zgjidhur këtë problem nuk ndërtohen një cift filtrash të gjerë për dy drejtime por ndërtohen një bashkësi e madhe filtrash më orientime të ndara ngushtë që prodhojnë keto 8 filtra ku orientimet janë të ndarë me 45° . Teknika që është përdorur për të detektuar konturet në këtë implementim është Canny Edge Detection Algorithm. Algoritmi Canny Edge Qëllimi i detektimit të brinjëve dhe kontureve është në pergjithësi për të reduktuar në mënyrë të ndjeshme sasinë e informacionit në imazh por duke ruajtur vetitë strukturore të imazhit për procesime të mëtejshme. Ekzistojnë shumë teknika dhe algoritma siç kemi diskutuar më sipër por ndër më të përdorshmit është algoritmi i ndërtuar nga Jonhn F. Canny (JFC).Ky është një ndër algoritmat standart që përdoren në fushën kerkimore edhe pse është shumë i vjeter. Qëllimi i JFC është të ndërtoj një algortitëm që është optimal në përputhje më kriteret e mëposhtme: 1. Detektimi: Duhet të maksimizohet probabiliteti i detektimit të brinjëve të verteta ndërsa probabiliteti i detektimeve false (pika jo në brinjë) duhet të minimizohet. Kjo i korrespondon maksimizimit të raportit sinjal / zhurmë. 2. Lokalizimi: Brinjët e detektuara duhet të jenë sa më afer brinjëve të vërteta. 3. Numri i përgjigjeve: Nuk duhet që për një brinjë të vërtet të detektohet më shumë se 1 brinjë. Figure 11 Brinjë më shkalle ideale
  19. 19. Faqe | 19 Me formulimin matematik që i është bërë ketij algoritmi ai është optimal për një klas të caktuar brinjësh që njohura si brinjë më shkalle ideale (ang: step edges). Marim një imazh për test për të demonstruar mënyrën e funksionimit të algorimitmit Canny. Detektimi i kontureve është një fazë e rëndesishme në rastin e përcaktimit të pozës së objektit. Imazhi në këtë rast është paraprocesuar siç përshkruhet më poshtë:  Përcaktohet Zona e Interesit që perfshin vetëm zonën e objektit dukë hequar pjesët e tjera të panevojshme të imazhit.  Konvertimi i imazhit në shkallë të grisë për të bërë më të thjështë përllogaritjet.  Shtrirja e histogramës, që imazhi të përdori të gjithë shkallën gri. Ky hap mund të mos jetë i nevojshëm por përfshihet që të asnjëanësoj rregullimin automatik të dritës që bëhet nga aparati fotografik. Algoritmi Canny për detektimin e brinjëve kalon në 5 hapa të ndarë: 1. Zbutja ( ang: Smoothing) përdoret për të larguar zhurmën nga imazhi 2. Gjetja e gradientëve: Brinja duhet të shënohet atje ku magnituda e gradientit është më madhë 3. Eleminimi i jo maksimumeve (ang: Non-maximum suppression): vetëm maksimumet lokale do të shënohen si brinjë. 4. Pragje të Dyfishta (ang: Double Thresholding): Brinjët potenciale përcaktohen nga pragjet, segmentimi. 5. Ndjekja e brinjëve më “hysteresis”: Brinjët finale përcakohen dukë eleminuar të gjithë brinjët që nuk janë të lidhura tek një brinjë e dukshme. Zbutja (ang Smoothing) Është e sigurt që të gjitha imazhet e marë nga aparatet dizhitalë kanë një sasi të caktuar zhurme. Për të parandaluar që kjo zhurmë të detektohet gabimisht si brinjë, zhurma duhet të reduktohet. Prandaj imazhi në fillim zbutet dukë aplikuar një filtër Gausian që është një filter linear. Kerneli i filtërit Gausian më devijim standart 𝜎 = 1.4 është si më poshtë:
  20. 20. Faqe | 20 𝐵 = 1 159 [ 2 4 5 4 2 4 9 12 9 4 5 4 2 12 9 4 15 12 5 12 9 4 5 4 2 ] Figure 12 Imazhi Fillestar Figure 13 Imazhi i Zbutur Filtri i mësipërm është një filtër linear me madhësi 5x5 dhe më “hot spot” vlerën 15 që është dhe qëndra e filtrit. Llogaritja e Gradientit Algoritmi Canny gjen një brinjë në ate zonë të imazhit ku intensiteti i shkallës gri ndryshon më shumë. Këto zona gjenden duke përcaktuar gradientin e imazhit. Gradienti për çdo pixel në një imazh të zbutur llogaritet duke aplikuar atë që njihet si operatori Sobel. Hapi i pare është të përcaktohet gradienti në drejtimin x dhe y respektivisht duke aplikuar kernel-at e treguar më poshtë: 𝐾 𝐺𝑥 = [ −1 0 1 −2 0 2 −1 0 1 ]
  21. 21. Faqe | 21 𝐾 𝐺𝑦 = [ 1 2 1 0 0 0 −1 −2 −1 ] Magnituda e gradientit (njihet ndryshe dhe fortësia e brinjës) mund të përcaktohet si një distancë Euklidiale duke aplikuar ligjin e Pitagorës të trëguar në ekuacionin e më poshtëm. Ndonjë herë mund të thjështësohet duke aplikuar distancën e thjështë të Manhatan-it për të reduktuar kompleksistetin e llogaritjeve. Distanca e Euklidit është aplikuar mbi imazhin test. Fortësia e brinjëve të llogaritura janë karahasuar më imazhin e zbutur. |𝐺| = √ 𝐺𝑥 2 + 𝐺 𝑦 2 |𝐺| = |𝐺𝑥| + |𝐺 𝑦| ku 𝐺𝑥 dhe 𝐺 𝑦 janë gradientët sipas drejtimit x dhe y përkatësisht. Është e dukshme nga figura e mëposhtëme, që një imazh i madhësive të gradientit shpesh tregon brinjët në mënyrë shumë të qartë. Megjithatë brinjët janë shpesh të gjera dhe nuk tregojnë ekzaktësisht pozicionin ku janë brinjët. Për të bërë te mundur për të përcaktuar këtë, duhet të përacaktohet drejtimi i brinjës dhe të ruhet si në ekuacion e mëposhtëm. 𝜃 = arctan ( |𝐺 𝑦| |𝐺𝑥| ) Figure 14 Imazhi i Zbutur Figure 15 Madhesit e Gradientit Madhësia e gradientëve në një imazh të zbutur që tregohen në figuren (14) dhe (15) si dhe drejtimi i tyre përcaktohet duke aplikuar operatorin e Sobel-it
  22. 22. Faqe | 22 Anullimi i Jo-Maksimumeve (ang: Non-Maximum Suppression) Qëllimi i këtij hapi është të konvertojë brinjët e “zbutura” në imazhin e madhësive të gradientit në brinjë të “theksuara”. Kjo realizohet duke ruajtuar të gjitha maskimumet lokale në imazhin e gradientëve dhe duke fshirë të gjitha të tjerat. Algoritmi është për çdo pixel në imazhin e gradintëve. 1. Përafrim i drejtimit të gradientit 𝜃 në 45o më të afërt, në lidhje më përdorimin e 8 fqinjëve të lidhur më të. 2. Krahaso fortësin e brinjës në pixel aktual më fortësin e brinjëve të pixel më drejtim të gradientit pozitiv dhe negativ. Nëse drejtimi i gradientit është Veri (𝜃 = 90°), krahasoje më pixel më drejtim Veri dhe Jug. 3. Nëse fortësia e brinjës e pixel korent është më e madhja ruaj vlerën e fortësis se brinjës përndryshe hiqe (anulloje). Një shembull i thjeshtë për anullimin e jo-maksimumeve tregohet në shembullin e mëposhtëm. Pothuajse të gjithë pixel kanë një drejtim të gradientit nga Veriu. Ato janë krahasuar më pixel sipër dhe poshtë tyre. Pixel që rezultojnë të jenë maksimal pas krahasimit markohen më konture të bardha. Të gjithe pixel-at e tjerë eleminohen. Figure 16 Drejtimi i Gradientëve Ilustrimi i eleminimit të jo-maksimumeve. Fortësia e brinjëve është shënuar edhe si numër edhe si ngjyrë, kurse drejtimi i gradientit është shënuar më shigjetë. Pixel-at rezultant janë shënuar më të bardhë.
  23. 23. Faqe | 23 Figure 17 Vlerat e Gradientëve Figure 18 Pas anullimit të jo-maksimumeve Anullimi i jo-maksimumeve. Pixel-at e brinjëve janë ruajtur vetëm aty ku gradienti ka maksimum lokal. Pragëzim (Segmentim) i dyfishtë Pixel-at e brinjëve që ngelen pasi aplikohen anullimi i jo-maksimumeve janë ende të markuar më fortësin e tyre pixel për pixel. Shumë prej këtyre do të jenë brinjë të vërteta në imazh por disa prej tyre mund të jenë shkaktuar nga zhurmat ose nga variacioni i ngjyrave p.sh për shkak të një siperfaqje të ashpër. Mënyra më e thjeshtë për ti ndarë këto do të ishte të përdorje një vlerë kufitare, kështu që vetëm brinjët më fortësi mbi një nivel të caktuar do të ruheshin. Algoritmi Canny për detektimin e brinjëve përdor një segmentim të dyfishtë. Pixel-at e brinjëve më fortësi më të madhe se një vlerë e sipërme maksimale markohen si brinjë të forta, pixel-at e brinjëve më vlerë më të vogël se një vlerë e poshtmë minimale do të eleminohen dhe pixel-at e birnjëve me fortësi më të vogël se vlera e sipërme maskimale dhe më e madhe se vlera e poshtme minimale shënohen si brinjë të dobta. Efekte të segmentimit të dyfishtë më vlera 20 dhe 80 mbi imazhin e fundit janë si më poshte:
  24. 24. Faqe | 24 Figure 19 Brinjët pas eleminimit të jo-maksimumeve Figure 20 Segmentim i dyfishtë Në imazhin e dytë brinjët e forta janë shënuar më të bardhë kurse brinjët e dobta janë shënuar më gri. Brinjët më vlerë më të vogël se dy kufijtë janë eleminuar. Ndjekja e brinjëve më “hysteresis” Brinjët e forta janë interpretuar si “brinjë të sigurta” dhe mund të përfshihen direkt në imazhin final të brinjëve. Brinjët e dobëta përfshihen vetëm dhe vetëm në qoftë se ato janë të lidhuara më një brinjë të fortë. Logjika është që sigurisht zhurmat dhe variacionet e vogla janë të pazakonta të rezultojnë në një brinjë të fortë (më një rregullim të kujdeshëm të vlerave kufitare). Brinjët e forta do të jenë (pothuajse) gjithmonë për shkak të brinjëve të vërteta në imazhin orgjinal. Brinjët e dobta mund të jenë për shkak të brinjëve të vërteta në imazh ose për shkak të zhurmave ose variacioneve të ngjyrave. Në rastin e dytë këto lloje duhet të jenë të shpërndara në gjithë imazhin në mënyrë pothuajse të njëtrajtshme. Në rastin e brinjëve të dobta që janë brinjë të vërteta në imazh në shumicën e rasteve janë të lidhura direkt më një brinjë të fortë. Ndjekja e brinjëve mund të implementohet nëpërmjet analizës BLOB (Objekte Binare të Mëdha) (ang: Binary Large Object). Pixel të brinjës që janë të ndare nga BLOB-e të lidhura më fqinjesi më
  25. 25. Faqe | 25 8 fqinjë. BLOB-et që përmbajne të paktën një pixel të një brinjë të fortë ruhen, BLOB-et e tjera eleminohen. Efektet e ndjekjes se brinjëve tregohen më poshtë: Figure 21 Segmentim i Dyfishtë Figure 22 Ndjekja e brinjëve Figure 23 Imazhi rezultant Imazhi në mes tregon brinjët e forta më të bardhë, brinjët e dobta të lidhura më brinjë të forta më blu dhe brinjët e tjera të dobta më të kuqe. Barazimi i Histogramës Histograma Histograma pëdoret për të përshkruar në mënyrë statistikore dhe lehtësisht te interpretueshme një imazh. Nga histograma është e lehtë të përcaktohen probleme të caktuara në një imazh, për shëmbull mund të përcaktosh lehtësisht nëse një imazh është i ekspozuar siç duhet vëtëm duke parë histogramën. Histogramat janë një mjet shumë i rëndësishme edhe si mjet investigues për të kuptuar cfarë operacionesh janë aplikuar mbi një imazh. Histograma në përgjithësi është frekuenca e shpërndarjeve, dhe histograma e imazheve përshkruan frekuencën e vlerave të intensitetit për një imazh. Le të konsiderojmë një imazh me shkallë gri me thellësi te kanalit (q) dhe dimensione (U) dhe (V). Intensiteti i nje pixel 𝐼(𝑢, 𝑣) ∈ [0 − 2 𝑞 ]. Histograma e një imazhi të tillë do të kishte 𝐾 = 2 𝑞 rekorde. Çdo rekord individual i histogramës percaktohet si: ℎ(𝑖) = 𝑛𝑢𝑚𝑟𝑖 𝑖 𝑝𝑖𝑥𝑒𝑙 𝑛ë 𝑖𝑚𝑎𝑧ℎ𝑖𝑛 𝐼 𝑞ë 𝑘𝑎 𝑖𝑛𝑡𝑒𝑛𝑠𝑖𝑡𝑒𝑡 𝑖
  26. 26. Faqe | 26 Në mënyre më formale mund të shprehet: ℎ(𝑖) = 𝑐𝑎𝑟𝑑 {(𝑢, 𝑣)|𝐼(𝑢, 𝑣) = 𝑖}4 Figure 24 Shembull Histogramë Duke qënë se histograma nuk ruan asnjë informacion mbi pozicionin se ku gjendet çdo pixel individualisht nga histograma nuk mund të nxirret asnjë informacion mbi organizimin hapsinor të pixel. Në histogram përshkruhen probleme qe vijnë gjatë marjes së imazhit, siç janë ato që përfshijnë kontrastin, rangun dinamik si dhe aritfaktet që vijnë si pasojë e procesimit të imazhit hap pas hapi. Histogramat përdoren shpesh për të përcaktuar nësë një imazh po përdor siç duhet rangun e intensitetit duke ekzaminuar madhësin dhe uniformitetin e shpërndarjes së histogramës. Ekspozimi Histograma i bën problemet klasike të ekspozimit menjëherë të dukshme. Për shembull kur në një histogram kemi një zonë të caktuar pothuajse të papërdorur dhe pjesën tjetër të mbi ngarkuar kemi të bëjmë me një imazh të ekspozuar dobët. Kontrasti 4 card përcaktohet si numri i elementëve në një bashkësie
  27. 27. Faqe | 27 Kontrasti kuptohet se si rangu i vlerave të intensitetit përdoret në mënyre efektive në një imazh të dhënë, që është diferenca mes vlerës maksimale dhe minimale të pixel-ave të imazhit. Një imazh me kontrast të plotë pëdor të gjithë rangun e vlefshëm të intensitetit nga a=amin ... amax=0 ... K-1 (zeza deri tek e bardha). Table 1 Ndyshimi i histogramës me ndryshimin e kontrastit Si ndikohet histograma nga ndryshimet e kontrastit: kontrast i ulët | kontrast normal | kontrast i lartë Rangu Dinamik Rangu dinamik i një imazhi, në parim, kuptohet si numri i pixel-ave me vlera unike në imazh. Në rastin ideal, rangu dinamik kompenson të gjitha K vlerat e papërdorura, në këtë rast gjithë rangu është plotësisht i përdorur. Kur një imazh ka nje rang kontrasti të vlefshme a=aulët ... alartë, me amin<aulët dhe alartë<amax dhe maksimumi i rangut të mundshëm arrihet kur të gjitha vlerat që shtrihen në atë rang janë përdorur. Imazhet me një rang dinamik të gjerë janë më të preferueshme pasi vuajnë më pak pasojat e procesimit dhe kompresimit të imazhit.
  28. 28. Faqe | 28 Llogaritja e histogramës ne rastin kur imazhi ka vetëm një kanal është një detyrë e thjeshtë pasi mjafton te marim 256 numërues për një imazh me thellësi kanali 8 bit dhe të bredhim gjithë imazhin duke numeruar pixel-at individual. Në rastin e imazheve me ngjyra, zakonisht me tre kanale R (ang: Red - Kuqe), G (ang: Green- Gjelber) B (ang: Blue – Blu) histograma mund të realizohet në dy forma. Mund të realizohet histograma për çdo kanal në mënyrë individuale që është praktikisht një histogram për një imazh më një kanal. Mund të realizohet një histogram duke marë mesataren e vlerave për çdo kanal ku çdo kanal ka peshë të barabartë ose ndonjë prej kanaleve ka peshë më të madhe dhe në këtë rast do bëhet një mesatare e peshuar. Histograma Kumulative Histograma kumulative që derivohet nga histograma e zakonshme është e përdorshme në rastet kur performojmë operacione të caktuara si për shembull barazimin e histogramës. Histograma kumulative përcaktohet si më poshte: 𝐻(𝑖) = ∑ ℎ(𝑗) 𝑖 𝑗=0 𝑝ë𝑟 0 ≤ 𝑖 < 𝐾 Në veçanti një vlerë H(i) është shuma e të gjitha vlerave h(j) për 𝑗 ≤ 𝑖 në histogramën e zakonshme. Në mënyrë rekurzive do ta përcaktonim: 𝐻(𝑖) = { ℎ(0) 𝑝ë𝑟 𝑖 = 0 𝐻(𝑖 − 1) + ℎ(𝑖) 𝑝ë𝑟 0 < 𝑖 < 𝐾 } Histograma kumulative është një funksion monoton rritës me një vlerë maksimale: 𝐻(𝐾 − 1) = ∑ ℎ(𝑗) 𝐾−1 𝑗=0 = 𝑀 ∙ 𝑁 që është numri total i pixel në imazhin me lartësi N dhe gjerësi M.
  29. 29. Faqe | 29 Teknika e barazimit të histogramës Shpesh imazhet e fotografuara në mjedise reale kanë probleme më kontrastin pasi janë të ekspozuara keq ndaj dritës. Ka zona që kanë marë shumë ndricim ose që quhen të “mbi ekspozuara” ose janë të “nën ekspozuara” dhe shfaqen në imazh si zona të errta. Po të shohim histogramën e një imazhi të tillë do të vëm re se pjesa më e madhe e pixel janë të përqëndruar në një zonë të ngushtë të histogramës. Barazimi i histogramës është një metodë në procesimin e imazheve për rregullimin automatik të kontrastit duke përdorur histogramën e imazhit. Figure 25 Transformimi i histogramës Kjo metode përgjithsisht rrit kontrastin e përgjithshëm në shumë imazhe, vecanërisht kur të dhëna të rëndësishme të imazhit shfaqen më vlera të afërta të kontrastit. Përmes ketij rregullimi, intensitetet mund të shpërndahen më mire në histogram. Kjo teknike lejon që zona të caktuara të imazhit më nivel të ulët kontrasti që të marin një vlerë më të lartë të kontrastit. Barazimi i Histogramës e realizon këtë duke rishpërndar në mënyrë efektive vlerat më frekuente të intesistetit. Kjo metodë është më e përdorshme në imazhe më background5 dhe foreground6 që janë të dy ose të zbardhuar ose të errët. Në vecanti kjo metodë përdoret për të marë një pamje të të mire në imazherin mjekësore (rreze x). Gjithashtu mund të marim detaje më të mira nga fotografitë që janë pak ose shumë të ekspozuara. Avantazh i kësaj teknike qëndron në faktin që është një 5 Background: Element i imazhit që gjendet më afër planit të imazhit. 6 Foreground: Ajo pjesë e imazhit që gjendet pas subjektit kryesor.
  30. 30. Faqe | 30 teknikë e drejtpërdrejte. Në teori nqs funksioni i histogramës dihet mund të meret histograma origjinale. Llogaritjet nuk janë shumë intensive. Një disavantash i kësaj teknike është fakti që shepesh kjo teknike mund të diskriminojë. Ajo mund të rrisë intensitetin e zhurmës në background duke zvogëluar intensitetin e sinjalit të vlefshëm.Në imazherin shkencore ku lidhja hapsinore është më e rëndesishme se intensiteti i imazhit, raporti i vogel mes sinjalit dhe zhurmes zakonisht pengon detektimin pamor. Barazimi i histogramës zakonisht prodhon efekte jo realiste të fotografi megjithatë kjo është shumë e rëndesishme për imazherin shkencore si imazheri termale, satelitore. Gjithashtu barazimi i histogramës mund të sjelli efekte të padëshiruara kur aplikohet mbi imazhe më thellësi kanali të ulët. Nëse për shembull do të aplikohet mbi një imazh më shakllë gri më thellësi të kanalit 8 bit do të reduktoje dhe më tej variacionet e ngjyrës gri. Në rastin e detektimit të tekstit kjo teknikë aplikohet mbi imazhe më një thellësi të kanalit 24-bit që janë gjeneruar nga një aparat fotografik profesional (Nikon D3200) dhe këto efekte nuk vihen re. Teknika e barazimit të histogramave është e përshtatshme të aplikohet në imazhe më thellësi të kanalit mbi 16 bit. Kufizimi i Kontureve Në mënyrën si është ndërtuar alogritmi për detektimin e numrave nuk na intereson në mënyrë të veçant brinja apo konturi i detektuar. Ajo çka na intereson është drejtkëndëshi më i vogël që përfshin gjithë konturin. Kjo bëhet më qëllim që procesi i vlerësimit nga SVM të jetë sa më thjeshtë pasi dhe elementët e bashkësis së trajnimit që janë përdorur për të trajnuar SVM janë imazhe drejtëkëndëshe më dimensione dhe rezolucion të fiksuar. Binarizimi i Imazheve Për të rritur saktësin e detektimit të numrave në imazhe është më e përshtatshme të punohet më imazhe të binarizuara. Keto imazhe janë bardhë e zi dhe elementet (konturet dhe brinjët) janë shumë më të theksuara. Aplikimi i një procesi binarizimi ose quantizimi të rangut të vlerave të intensitetit në 2 intensitete të mundshme prodhon disa probleme në imazh (ang: image artifacts). Këto probleme eleminohen duke përdorur filtrat morfologjik. Libraria OpenCV ofron disa mënyra për të realizuar procesin e binarizimit apo kuantizimit të vlerave. Në thelb të procesit të binarizimit qëndron vendosja e vlerave të intensitetit të imazhit
  31. 31. Faqe | 31 në një rang të caktuar dhe vlerat që nuk bien në këto kufij bëhen 0. Kjo nuk është një detyrë e lehtë kur kemi të bëjmë më imazhe të botës reale në të cilat mund të këtë zhurma të ndryshme, shpërndarje të pabarabartë të ndricimit etj. OpenCV ofron mënyrën statike për binarizimin e imazheve. Këto teknika zbatojne të njejtin rregull mbi të gjithë pixel-at e imazhit dhe njihen si binarizim i fiksuar (statik). 1. Segmentim Binar (ang: Threshold Binary): Në këtë rast përcaktohet një vlerë që njihet si vlerë kufitare ose vlerë prag dhe për të gjitha vlerat më të mëdha se kjo vlerë vendoset një vlerë maksimale përndryshe vendoset 0. a. 𝑃𝑖𝑥𝑒𝑙 𝑅𝑒𝑧𝑢𝑙𝑡𝑎𝑡 (𝑥, 𝑦) = { 𝑉𝑙𝑒𝑟ë 𝑀𝑎𝑘𝑠𝑖𝑚𝑎𝑙𝑒 𝑁𝑞𝑠 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) > 𝑃𝑟𝑎𝑔 0 𝑃ë𝑟𝑛𝑑𝑟𝑦𝑠ℎ𝑒 } 2. Segmentim Binar (Invertuar): Funksionon në të njëjtën mënyre si Segmentimi Binar por anasjelltas. Matematikisht shprehet: a. 𝑃𝑖𝑥𝑒𝑙 𝑅𝑒𝑧𝑢𝑙𝑡𝑎𝑡 (𝑥, 𝑦) = { 0 𝑁𝑞𝑠 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) > 𝑃𝑟𝑎𝑔 𝑉𝑙𝑒𝑟𝑎 𝑀𝑎𝑘𝑠𝑖𝑚𝑎𝑙𝑒 𝑃ë𝑟𝑛𝑑𝑟𝑦𝑠ℎ𝑒 }
  32. 32. Faqe | 32 3. Segmentim më Kufizim: Kontrollon nësë intensisteti i një pixel është më i madh se një kufij i sipërm atëherë në vend të atij pixeli vendoset vlerë e kufirit përndryshe lihet e pandryshuar. a. 𝑃𝑖𝑥𝑒𝑙 𝑅𝑒𝑧𝑢𝑙𝑡𝑎𝑡 (𝑥, 𝑦) = { 𝑃𝑟𝑎𝑔𝑢 𝑁𝑞𝑠 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) > 𝑃𝑟𝑎𝑔 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) 𝑃ë𝑟𝑛𝑑𝑟𝑦𝑠ℎ𝑒 } 4. Segmentim më 0: Kontrollon nese intentisiteti i një pixel është më i madh se kufiri atëherë e lë atë pixel të pa ndryshuar përndryshe e bën 0. a. 𝑃𝑖𝑥𝑒𝑙 𝑅𝑒𝑧𝑢𝑙𝑡𝑎𝑡 (𝑥, 𝑦) = { 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) 𝑁𝑞𝑠 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) > 𝑃𝑟𝑎𝑔 0 𝑃ë𝑟𝑛𝑑𝑟𝑦𝑠ℎ𝑒 } 5. Kufizim më 0 i invertuar: Funksion në të njëjtën mënyrë si Segmentimi më 0 por anasjelltas. a. 𝑃𝑖𝑥𝑒𝑙 𝑅𝑒𝑧𝑢𝑙𝑡𝑎𝑡 (𝑥, 𝑦) = { 0 𝑁𝑞𝑠 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) > 𝑃𝑟𝑎𝑔 𝑃𝑖𝑥𝑒𝑙 𝑂𝑟𝑖𝑔𝑗𝑖𝑛𝑎𝑙 (𝑥, 𝑦) 𝑃ë𝑟𝑛𝑑𝑟𝑦𝑠ℎ𝑒 }
  33. 33. Faqe | 33 Duket qartë dhe nga formulimi i këtyre teknikave të segmentimit që ato sillen njësoj pavarsisht nga mënyra e shpërdarjes së ndricimit. Kjo bën që teknikat e përmendura më sipër japin rezultate të dobëta në imazhe të botes reale. Për të marë një binarizim më të mire të imazhit na duhet një teknikë që të bëj një vlerësim bazuar mbi vlerën e intensitetit të ndricimit që ka marë një zonë e caktuar e imazhit krahasur më një zonë tjetër të imazhit. Për këtë përdoret një teknikë që quhet segmentim adaptiv i imazhit (ang: adaptive image thresholding). 1. Segmentim më Vlerë të Mesatarizuar: Kjo teknikë nuk përdor një vlerë pragu për të gjithë imazhin ashtu si në shembujt e mësipërm. Kjo teknike ndërton një vlerë kufitare bazuar mbi mesatarën e vlerave fqinje. Duke përdorur vlerën e gjeneruar aplikon për ate zonë një segmentues binar. Figure 26 Shembull binarizimi statik në imazhe të botës reale
  34. 34. Faqe | 34 2. Segmentim Gaussian: Funksionon në mënyre të ngjashme më Segmentimin e më vlerë të mesatarizuar por në këtë rastë vlera prag llogaritet në formën e një mesatare të peshuar ku peshat janë vlera të një “dritareje gausiane” (ang: Gaussian Window). Pesha e pixel- ave në këtë rast sa vjen dhe rritet duke u afruar afër qëndrës së dritares. Figure 27 Majtas- Segmentim me Vlerë të Mesatarizuar. Djathtas- Segmentim Gausian Ky është rezultati kur përdorim segmentim adaptiv dhe duket qartë që cilesia e segmentimit është shumë më e mirë se në rastin e pare. Detektim i ngjyrës dominante (K-Means) Një tjetër problem që duhet zgjidhur gjate fazës se paraprocesimi të imazhit është mënyra se si është printuar imazhi. Problemi lind gjatë fazës se binarizimit për vetë mënyrën se si funksionin kjo teknike. Imazhi i mëposhtëm paraqet një numër të printuar nëpërmjet kontrastit që krijon më background. Në këtë rast numri është paraqitur më ngjyrë të bardhë kurse background është më ngjyrë blu. Procesi i binarizimit tenton të konvertoj imazhin në dy ngjyra kryesore, në rastin tonë në të bardhe dhe të zezë si dhe të theksojë detaje që janë të rendësishme për procesin duke berë një segmentim të imazhit.
  35. 35. Faqe | 35 Figure 28 Imazh më background më të erret se shkrimi Figure 29 Binarizimi i Imazhit Klasifikuesi jonë është trajnuar më imazhe në të cilat numrat janë të paraqitur më ngjyrë të zezë dhe background është më ngjyrë të bardhë. Binarizimi i imazheve që kane background më të errët se ngjyra që është përdorur për shkrimin e tekstit do të prodhonte një imazh të binarizuar që ka background të zi dhe shrkrmin të bardhe. Një imazh të tillë nuk mund ta përdorim për të testuar klasifikuesin tonë pasi nuk do ishte në gjëndje ta detektonte numrin në të dhe kjo për shkak të kompozimit të gabuar të imazhit. Një mënyre e thjeshtë për të zgjidhur këtë problem është të bëhet një invertim i ngjyrave dhe në këtë rast do të marim një imazh më kompozimin e duhur. Që të bëjmë një invertim të ngjyrave duhet që paraprakisht të marim një vendim nëse imazhi është një imazh i kompozuar në mënyrë të gabuar apo jo. Për të bërë këtë duhet që të kuptojme se cilat janë dy ngjyrat më dominante në imazhin që po analizojmë. Kjo nuk është dicka e thjeshtë për tu bërë pasi kemi të bëjmë më imazhe që janë të fotografuar dhe ngjyrat shfaqen më reflekse të ndryshme dhe në nivele të ndryshme intensisteti për shkak të sasisë së ndricimit që kanë marë gjatë momentit të shkrepjes së fotografisë.
  36. 36. Faqe | 36 Për ta thjështëzuar problemin dhe për të zvogëluar numrin e përllogaritjeve e konvertojmë imazhin në shkalle gri. Kjo na jep mundësin që të analizojmë intensitetin e një kanalin dhe jo të 3 kanaleve si do të ishte në rastin e një imazhi më ngjyra. Duhet të bëjmë një grupim të vlerave të intensiteteve të imazhit më qellim që të nxjerrim 2 vlerat që përsëriten më shumë dhe të bejme një riparaqitje të imazhit më keto dy vlera të intensitetit. Ajo cka marim është një imazh që ka dy lloje pixel-ash; pixel që janë në background dhe pixel që janë në foreground. Për gjenerimin e këtij imazhi aplikohet algoritmi k-means për të cilin do flasim në vijim. Figure 30 Imazhi pasi është aplikar algoritmi kmean Pasi kemi ndërtuar imazhin e mësipërm duhet të ndërtojmë histogramën e këtij imazhi për të kuptuar numrin e pixel-ave që janë më ngjyrën e pare dhe numrin e pixel që janë më numrin e dyte. Rezultati i histogramës së imazhit të mësipërm është si në grafikun e mëposhtem: Vihet re që kemi dy piqe, njera është për vlerën 80 të intensitetit më 18950 pixel dhe vlera e dyte është për intensitetin 192 më 6880 pixel.
  37. 37. Faqe | 37 Figure 31 Histograma e Imazhit pas KMean Nga rezultati i histogramës duket qartë që kemi të bëjmë më një imazh që pjesa më e madhe e imazhit është më e errët se pjesa më çelur e imazhit. Pjesën më të madhe e ze background ateherë mund të themi më një siguri të mirë që kemi të bëjmë më një imazh që duhet invertuar. Duket qartë që pjesa më të vështirë në këtë zgjidhje është grupimi i vlerave dhe fluktacioneve të intensitetit të imazhit dhe grupimi i tyre në dy ngjyra të vetme dhe riparaqitja e këtij imazhi më këto dy ngjyra. Për të realizuar këtë ne përdorëm K-Means. K-Means (Algoritem Grupimi) K-Means është një metodë për kuntizimin e vlerave të vektorëve, është përdorur më pare në procesimin e sinjalit, në analizat e grupuara në data mining. Grupimi k-means synon të particionojë n vëzhgime në k grupe ku çdo vëzhgim është pjese e grupit më afërsinë më të madhe, duke shërbyer si një prototip (përfaqësues) për grupin. Kjo rezulton në ndarjen e hapsirës së të dhëanve në qeliza Voronoi.
  38. 38. Faqe | 38 Problemi është i vështirë në përllogaritje (NP-Fortë); megjithëse ka algoritma heuristik që përdoren më shpesh dhe konvergjojnë shpejtë në një optimum lokal. Këto janë zakonisht të ngjajshme më algoritmat për maksimizimin e pritshmërive për kompozimet e shpërdarjeve Gaussiane nëpërmjet një përafrimi të rafinuar që përdoret nga të dy algoritmat. Gjithashtu ata të dy përdorin qëndrën e grupit për të modeluar të dhënat; megjithatë k-means tënton të gjejë grupe më shtrirje hapsinore të krahasueshme, kurse mekanizmi i maksimizimit të pritshmerive i lejon grupet që të kenë forma të ndryshme. Ky algoritëm ka një lidhje të dobët më klasifikuesin k-fqinjet më të afërt, një algoritëm i inteligjencës artificiale dhe shpesh konfuzohen më njeri tjetrin. Klasifikuesi k-fqinjet më të afërt trajnohet bazuar mbi bashkësin e trajnimit duke e copëzuar bashkësin e të dhënave në grupe. Ky klasifikues i trajnuar tashmë mund të përdoret për të përcaktuar një input të ri, se në cilën prej grupeve bën pjesë. Përshkrim Supozojmë se kemi një bashkësi vorjtimesh (𝑥1, 𝑥2, 𝑥3, 𝑥4 … 𝑥 𝑛) ku çdo vrojtim është një vektor d-dimensional më vlera reale, k-means synon të particionojë n vrojtimet në 𝑘(≤ 𝑛) bashkësi 𝑆 = {𝑆1, 𝑆2, 𝑆3 … , 𝑆 𝑘} që të minimizoje shumën e katrorëve brenda grupit (ang: WCSS: Within Cluster Sum of Squares)(shuma e funksionit të distancës nga çdo pikë në grup në qendrën e grupit). Më fjalë të tjera objektivi është të gjejmë: 𝑎𝑟𝑔 = min 𝑠 ∑ ∑‖ 𝑋 − 𝜇𝑖‖2 𝑥∈𝑆 𝑖 𝑘 𝑖=1 ku 𝜇𝑖 është mesatarja e pikave në 𝑆𝑖. Algoritmi Algoritmi më i njohur përdor një teknike përmirësimi iterative. Për shkak të gjithë përfshirjes është quajtur shpesh k-means; I janë referuar edhe ndryshe si algoritmi i Lloyd-it, vecanërisht në komunitetin e shkencave kompiuterike.
  39. 39. Faqe | 39 Marim bashkësin e k-menas 𝑚1 (1) , 𝑚2 (1) … , 𝑚 𝑘 (1) algoritmi procedon duke alternuar nepërmjet 2 hapave: Hapi i Vlerëdhënies: Vendose çdo vrojtim në një grup mesatarja e të cilit jep jo më shumë se shuma e katrorëve të grupit. Duke qënë se shuma e katrorëve është distancë Euklidiane, kjo është intuitivisht e mesmja më e afert. 𝑆𝑖 (𝑡) = {𝑥 𝑝: ‖𝑥 𝑝 − 𝑚𝑖 (𝑡) ‖ 2 ≤ ‖𝑥 𝑝 − 𝑚𝑗 (𝑡) ‖ 2 ∀ 𝑗, 𝑖 ≤ 𝑗 ≤ 𝑘} ku 𝑥 𝑝 i vendoset ekzaktësisht një 𝑆(𝑡) , edhe pse mund ti vendoset dy ose më shumë prej tyre. Hapi i Perditesimit: Llogarit mesataren e re për të qënë centroidi i vrojtimeve në grupin e ri. 𝑚𝑖 (𝑡+1) = 1 |𝑆𝑖 (𝑡) | ∑ 𝑥𝑗 𝑥 𝑗∈𝑆𝑖 (𝑡) Algoritmi ka konvergjuar në momentin kur vlerëdhënia nuk ka ndryshuar. Duke qënë se të dy hapat përmirësojnë objektivin WCSS, dhe ekziston një numër i fundëm i ndarjeve të tilla, algoritmi duhet të konvergjojë në një optimum lokal. Nuk garantohet nga ky algoritem që optimumi global është arritur. Algoritmi shpesh herë paraqitet si vendosja e objekteve në grupin më të afërt bazuar mbi distancën. Algoritmi standart synon të minimizoje objektivin WCSS dhe kjo vlerëdhënie bëhet bazuar mbi “shumën më të vogël të katrorëve” që është ekuivalente më vlerëdhënien bazuar mbi distancën më të vogël Euklidieane. Përdorimi i funksioneve të tjera të distancës veç (katrorëve) distancës Euklidiane mund të bëj që algoritmi të mos konvergjojë. Metodat e Inicializimit Metodat më të njohura që përdoren për të inicializuar janë “Forgy” dhe “Random Partition”. Metoda Forgy zgjedh në mënyrë të rastësishme 𝑘 vrojtime nga bashkësia e të dhënave dhe i
  40. 40. Faqe | 40 përdor ato si të mesme fillestare. Metoda “Random Partition” në fillim i vendos në mënyrë të rastesishme çdo vrojtimi një grup dhe më pas vazhdon në hapin e përditëtsimit, duke llogaritur mesataren fillestare për të qënë centroid i grupit më pikat të përcaktuara në mënyrë të rastësishme. Metoda “Forgy” tenton të shpërndaj mesataren filletare, ndërkoh “Random Partition” i vendos ato afër qëndrës së bashkësis së të dhënave. Figure 32 K mesataret fillestarë janë gjeneruar në mënyrë të rastësishme. Tregohen më ngjyra si në figurë. Figure 33 K grupet janë krijuar duke shoqëruar çdo vrojtim më mestaren më të afërt. Paraqitja është një diagram Voronoi. Figure 34 Centroid për çdo k grup bëhet mesatarja e re.
  41. 41. Faqe | 41 Figure 35 Hapat 2 dhe 3 përsëriten deri sa arrihet konvergjenca Duke qënë se është një algoritëm heuristik nuk ka ndonjë garanci që do të konvergjojë në një optimum global dhe rezultati mund të varet nga cluster fillestar. Duke qënë se algoritmi është shumë i shpejte është zakonshme që të ekzekutohet disa herë më kushte të ndryshme fillestare. Gjithsesi algoritmit k-menas në rastin më të keq do ti duhet shumë kohë që të konvergjoje: në vecanti është treguar se ekziston një bashkësi pikash edhe në 2 dimensione ku k-means i duhet një kohë eksponenciale që është 2Ω(𝑛) për të konvergjuar. Nga eksperienca duket që bashkësi të tilla nuk shfaqen shpesh dhe në shumicën e rasteve koha e konvergjimit të algoritmit k-menas është polinomiale. Kompleksiteti Në lidhje më kompleksitetin e llogaritjeve, të gjesh zgjidhjen optimale të një problem grupimi k- means për vrojtime më d dimensione ka keto implikime:  Kemi një problem NP-Fortë në hapsira Euklidiane më d dimensione edhe kur kemi 2 grupe.  Kemi një problem NP-Fortë për një numër të përgjithshëm grupesh k edhe në plan  Nësë k dhe d (dimensioni) janë të fiksuar, problemi mund të zgjidhet ekzaktësisht në kohën 𝑂(𝑛 𝑑∙𝑘+1 log 𝑛) ku n është numri i rekordeve që duhet të grupohen. Në përgjithësi janë përdorur shumë algoritma heuristik si algoritmi i Lloyds.
  42. 42. Faqe | 42 Aplikime të k-means K-Means në vecanti kur përdor heuristika si algoritmi Lloyd-it është shumë i thjeshtë për tu implementuar dhe aplikuar edhe në të bashkësi të dhënash të mëdhaja. Për këtë arsye është përdorur në fusha të ndryshme duke përfshirë ndarje e tregut, imazherin kompiuterike, statistika gjeografike, astronomi dhe agrikulture. Shpesh është përdorur si hap paraprocesimi për algoritma të tjerë, për shembull për të gjetur një konfigurim fillestar. Kuantizimi i Vektorëve Figure 36 Imazh më 2 kanale ngjyre për ilustrim Figure 37 Kuntizimi i Vektorëve të ngjyrave në qeliza Voronoi duke përdorur k-means K-Means ka orgjinën nga procesimi i sinjalit dhe ende gjen përdorim në këtë domain. Përdoret në grafikën kompiuterike, kuantizimin e ngjyrave për të zvogëluar lloje të ngjyrave që mund të shfaqen në një imazh. Analizë Grupi Në analizën e grupi k-means përdoret për të copëzuar të dhënat e hyrëse në k grupe. Një limitim që ka algoritmi në keto raste është se nuk mund të aplikohet funksioni i distancës mbi të dhëna që nuk janë numerike.
  43. 43. Faqe | 43 Filtra Morfologjik Filtrat morfologjik sillen më mënyrë më të kontrolluar ndryshe nga filtrat linear të cilet veprojnë në mënyrë krejt të rastësishme. Shpesh herë na duhet që të eleminojme nga një imazh pjesë të imazhit që janë shumë të vogla dhe të panevojshme. Teknika që aplikohet për heqjen e këtyre pjesëve nga imazhi njihet si “Ngjesh dhe Zgjero” (ang: Shrink and Let Grow). Procesi kalon në disa faza: 1. Të gjitha strukturat e imazhit në mënyrë iterative zvogëlohen duket hequr një shtresë të një trashësie të caktuar rreth kontureve. 2. Mbas çdo iteracioni strukturat bëhen më të vogla deri sa vetëm struktura e madhe ngelet. 3. Strukturat e ngelura zgjerohen duke i shtuar një shtresë të një trashësie të caktuar. 4. Struktura e madhe është rikthyer pothuajse në madhësin e saj fillestare. Për këtë na duhen dy operacione. Operacioni i Ngjeshjes ku duhet që strukturave tiu hiqet një shtresë më pixel nga zona rrethuese dhe një operacion Zgjerimi që duhet të shtoi një shtresë më pixel në zonën rethuese. Për të dy operacionet përcaktohet kutpimi i dy pixel që të jenë fqinjë. Kemi dy lloje fqinjësish: 1. Fqinjësi 4-she ( Një pixel është fqinj më pixel në drejtimin veritikal dhe horizontal) 2. Fqinjësi 8-she (Një pixel është fqinj më pixel në drejtimin veritial, horizontal dhe atë diagonal.) Ashtu si dhe në filtrat linear ku kemi një matricë më koeficiente, në filtrat morfologjikë vetitë e filtrit specifikohen në matricën e strukturimit që për imazhet binare vlerat e tij do jenë 1 ose 0.
  44. 44. Faqe | 44 𝐻(𝑖, 𝑗) ∈ {0,1} Hot spot edhe këtë radhë është qëndra e sistemit koordinativ por ndryshe nga rasti i filtrave linear jo gjithmon është në atë pozicion. • • • • • Për të bëre një parashtrim më të qarte të operacioneve morfologjike duhet që paraprakisht të bejme një shpjegim në lidhje më Imazhet binare. Për një imazh binar 𝐼(𝑢, 𝑣) ∈ {0,1} bashkesia e pikave të imazhit shprehet si më poshte: 𝑄𝐼 = {𝑝(𝑢, 𝑣)| 𝐼(𝑝) = 1} Paraqitja e imazhveve binare si pika bashkësie na mundëson që të shprehim operacione bazike si veprime të thjeshta bashkësish. Invertimi i Imazheve Binare 𝑄𝐼 = 𝑄𝐼 ̅̅̅ = { 𝑝 ∈ ℤ2 |𝑝 ∉ 𝑄𝐼} Bashkimi I dy imazheve 𝑄𝐼1∨𝐼2 = 𝑄𝐼1 ∪ 𝑄𝐼2 Translacioni ( vector d) 𝐼 𝑑 ≡ {( 𝑝 + 𝑑)|𝑝 ∈ 𝐼} Erosion Erozioni është pothujse operacionin i anasjelltë i Dilitacionit. Erozionin i përcaktuar në formatin e bashkësive është si më poshtë: 𝐼 ⊝ 𝐻 ≡ {𝑝 ∈ ℤ2 |(𝑝 + 𝑞) ∈ 𝐼, 𝑝ë𝑟 𝑐𝑑𝑜 𝑞 ∈ 𝐻} Figure 38 Imazhi Binar I dhe Filtri H
  45. 45. Faqe | 45 Një pozicion p ruhet në rezultatin 𝐼 ⊝ 𝐻 nqs dhe vetem nqs kur elementi H vendoset në pozicionin p mbahet plotesisht në pixel-at e dukeshëm në imazhit origjinal. 𝐼 ⊖ 𝐻 ≡ {(1,1)} 𝑠𝑒𝑝𝑠𝑒 (1,1) + (0,0) = (1,1) ∈ 𝐼 ∧ (1,1) + (1,0) = (2,1) ∈ 𝐼 Dilatation Dilitacioni është një operacion morfologjik që i korrespondon konceptit tonë intuitivë në lidhje më “zgjerimin”. Dilitacioni mund të shprehet duke përdorur notatcionin e bashkësive si më poshtë: 𝐼⨁𝐻 ≡ {(𝑝 + 𝑞)|𝑝𝑒𝑟 𝑐𝑑𝑜 𝑝 ∈ 𝐼, 𝑞 ∈ 𝐻} Në mënyrë alternative operacioni i dilitacionit mund të shikohet si një element strukturor i H që replikohet në çdo pixel të dukshëm të imazhit i ose anasjelltas, imazhi replikohet në çdo element të dukshëm të H. Figure 40 Shembull Operacioni Dilitacioni Figure 39 Shembull Operacioni Erozioni
  46. 46. Faqe | 46 𝐼 ≡ {(1,1), (2,1), (2,2)}, 𝐻 ≡ {(0,0), (1,0)} 𝐼⨁𝐻 = { (1,1) + (0,0), (1,1) + (1,0), (2,1) + (0,0), (2,1) + (1,0), (2,2) + (0,0), (2,2) + (1,0) } Algortimat Machine Learning Supported Vector Machine Supported Vector Machine është një teknik klasifikimi nga më të përparuarat. Ky algoritëm u krijua nga Vladimir N. Vapnik dhe Alexey Ya. Chervonenkis. Krijuesit e këtij algoritmi sugjeruan krijimin e një kalsifikuesi jo linear që tenton të maksimizojë marxhinat e hiperplanit. Ky lloj përafrimi njihet si “widest street approach” pra ndërtimi i një “vije” që siguron ndarjen e maksimale. Në themel të çdo problemi klasifikimi qëndron pyetja: Si mund të ndahet një hapsirë në kufij vendimi? Disa nga teknikat e propozuara më siper do të bënin një ndarje të hapsirës si më poshte: Figure 41a) Fqinjët më të Afërt b) Pemët e Vendimit c) Rjetat Neurale Në rastin e SVM kemi një situatë tjetër. Supozojmë se kemi shëmbullin e mësipërm dhe duam të gjejmë një mënyrë për të ndarë shembujt pozitiv nga ata negative:
  47. 47. Faqe | 47 Duhet të përcaktojmë nëse shembulli i ri (u), i panjohur gjendet në anën e majtë apo në anën e djathtë të hiperplanit. Marim një vektor 𝑤⃗⃗ pingul më mesoren e hiperplanit dhe projektojmë vektorin 𝑢⃗ mbi vektorin 𝑤⃗⃗ dhe kontrollojmë nqs projeksioni është në anën e majtë apo në të djathtën. 𝒘⃗⃗⃗ ∙ 𝒖⃗⃗ ≥ 𝑪 𝒘⃗⃗⃗ ∙ 𝒖⃗⃗ + 𝒃 ≥ 𝟎 (1) Problemi qendron në faktin që ka shumë vektor 𝑤⃗⃗ të tille pasi mund të jene më gjatesi të ndryshme dhe duhet të percaktohet dhe vlera e b. Për të gjetur dy vlera të tilla të vetme duhet të vendosim disa kufizime sa i takon rregullave të vendimit. 𝒘⃗⃗⃗ ∙ 𝑿+ ⃗⃗⃗⃗⃗ + 𝒃 ≥ 𝟏 𝒘⃗⃗⃗ ∙ 𝑿− ⃗⃗⃗⃗⃗ + 𝒃 ≤ 𝟏 (2) Figure 42 Diagrama për SVM
  48. 48. Faqe | 48 Keto ekuacione qendrojnë për shembujt që janë në kufijtë e hiperplanit. Për lehtësi matematikore po prezantojme një variabel të ri 𝑌𝑖: 𝑌𝑖 = { −1 𝑝𝑒𝑟 𝑠ℎ𝑒𝑚𝑏𝑢𝑗 𝑛𝑒𝑔𝑎𝑡𝑖𝑣 +1 𝑝𝑒𝑟 𝑠ℎ𝑒𝑚𝑏𝑢𝑗 𝑝𝑜𝑧𝑖𝑡𝑖𝑣 Bazuar mbi këtë variabël sistemi ekuacionit (2) mund të rishkruhet si më poshte: { 𝑌𝑖 ∙ (𝑤⃗⃗ ∙ 𝑥𝑖⃗⃗⃗ + 𝑏 ) ≥ 1 𝑌𝑖 ∙ (𝑤⃗⃗ ∙ 𝑥𝑖⃗⃗⃗ + 𝑏 ) ≥ 1 Siç mund të shihet është një ekuacion i vetëm: 𝑌𝑖 ∙ (𝑤⃗⃗ ∙ 𝑥𝑖⃗⃗⃗ + 𝑏 ) ≥ 1. Ky ekuacion mund të rishkruhet si më poshte: 𝑌𝑖 ∙ (𝑤⃗⃗ ∙ 𝑥𝑖⃗⃗⃗ + 𝑏) − 1 ≥ 0 . Një kufizim tjetër që vendoset është për vlerat që ndodhen në kufijtë e kanalit: 𝒀𝒊 ∙ (𝒘⃗⃗⃗ ∙ 𝒙𝒊⃗⃗⃗ + 𝒃 ) − 𝟏 = 𝟎 (3) Ky algoritëm tenton të maksimizojë gjerësin e hiperplanit (kanalit). Gjerësin e kanalit e shprehim si një relacion mes kufijëve të kanalit. 𝑾𝑰𝑫𝑯𝑻 = (𝒙+⃗⃗⃗⃗ − 𝒙−⃗⃗⃗⃗ ) ∙ 𝒘⃗⃗⃗ ‖𝒘⃗⃗⃗ ‖ (4) Madhësia 𝑤⃗⃗ ‖𝑤⃗⃗ ‖ është vektori njësi mbi të cilin do projektohet diferenca e vektorëve nga ku llogaritet gjerësia e kanalit. Duke u bazuar në ekuacionin (3) dhe (4) mund të rishkruajmë ekuacionin (4). 𝑾𝑰𝑫𝑯𝑻 = (𝒙+⃗⃗⃗⃗ − 𝒙−⃗⃗⃗⃗ ) ∙ 𝒘⃗⃗⃗ ‖𝒘⃗⃗⃗ ‖ = 𝑤⃗⃗ ∙ 𝑥+⃗⃗⃗⃗ − 𝑤⃗⃗ ∙ 𝑥−⃗⃗⃗⃗ ‖𝒘⃗⃗⃗ ‖ Për shembujt që janë në kufijt e kanailit shkruhet ekuacioni (3): 1. Shembujt Pozitiv: 𝑌𝑖 = 1 → (𝒘⃗⃗⃗ ∙ 𝒙+⃗⃗⃗⃗ + 𝒃 ) − 𝟏 = 𝟎 → (𝒘⃗⃗⃗ ∙ 𝒙+⃗⃗⃗⃗ ) = 𝟏 − 𝒃
  49. 49. Faqe | 49 2. Shembujt Pozitiv: 𝑌𝑖 = −1 → (𝒘⃗⃗⃗ ∙ 𝒙−⃗⃗⃗⃗ + 𝒃 ) − 𝟏 = 𝟎 → −(𝒘⃗⃗⃗ ∙ 𝒙−⃗⃗⃗⃗ ) = 𝟏 + 𝒃 Pra pikërisht kjo është shprehja që duhet të maksimizojme. Por mund të maksimizojme edhe 1 ‖𝑤⃗⃗ ‖ ose mund të minimizojme ‖𝑤⃗⃗ ‖ ose mund të minimizojmë madhësin ‖𝑤⃗⃗ ‖2 2 . Të gjitha këto transformime bëhen për të bërë më të thjeshtë zgjidhjen, për lehtësi matematike. Problemi që shtrohet është i tillë, duhet të minimizojmë një madhësi pra duhet të gjejmë ekstremumet si dhe duhet të respesktojme disa kufizime që kemi vendosur. Për këtë perdoret teorema Koeficientet e Lagranzhit (ang: Lagrange Multipliers Theorem). Teorema e Lagranzh zvendëson funksionin dhe kufizimet që janë vendosur në një funksion të vetem ndaj të cilit nuk duhet të kujdesemi për të respektuar kufizimet. 𝑾𝑰𝑫𝑯𝑻 = (𝒙+⃗⃗⃗⃗ − 𝒙−⃗⃗⃗⃗ ) ∙ 𝒘⃗⃗⃗ ‖𝒘⃗⃗⃗ ‖ = 𝒘⃗⃗⃗ ∙ 𝒙+⃗⃗⃗⃗ − 𝒘⃗⃗⃗ ∙ 𝒙−⃗⃗⃗⃗ ‖𝒘⃗⃗⃗ ‖ = 𝟏 + 𝒃 + 𝟏 − 𝒃 ‖𝒘⃗⃗⃗ ‖ = 𝟐 ‖𝒘⃗⃗⃗ ‖ (5) Figure 43 Shpjegim i teoremës Lagranzh
  50. 50. Faqe | 50 Nqs kemi në funksion 𝑓(𝑥1, 𝑥2, 𝑥3 … 𝑥 𝑛) dhe një kufizim 𝑔(𝑥1, 𝑥2, 𝑥3 … 𝑥 𝑛) 𝑎𝑡𝑒ℎ𝑒𝑟𝑒 𝑘𝑟𝑖𝑗𝑜ℎ𝑒𝑡 𝑓𝑢𝑛𝑘𝑠𝑖𝑜𝑛𝑖: 𝐹(𝑥1, 𝑥2, 𝑥3 … 𝑥 𝑛, 𝜆1, 𝜆2, 𝜆3 … 𝜆 𝑚) = 𝑓(𝑥1, 𝑥2, 𝑥3 … 𝑥 𝑛) − ∑ 𝜆 𝑘 ∙ 𝑔 𝑘(𝑥1, 𝑥2, 𝑥3 … 𝑥 𝑛) 𝑚 𝑘=1 Në rastin që po studiojmë funksioni i Lagranzhe ndërtohet si më poshtë: 𝐿 = ‖𝑤⃗⃗ ‖2 2 − ∑ 𝜆𝑖 ∙ (𝒘⃗⃗⃗ ∙ 𝒙𝑖⃗⃗⃗ + 𝑏) − 1 𝑛 𝑖=1 Nga Analiza Matematike dimë që ekstremumet e një funksioni gjenden duke llogaritur derivatin e parë të tij. Në këtë rast do llogarisim derivatet e pare në lidhje më 𝒘⃗⃗⃗ dhe 𝑏. 𝜕𝐿 𝜕𝑤 = 𝒘⃗⃗⃗ − ∑ 𝛼𝑖 ∙ 𝑦𝑖 ∙ 𝑥𝑖 𝑛 𝑖=1 = 0 ≡ 𝒘⃗⃗⃗ = ∑ 𝛼𝑖 ∙ 𝑦𝑖 ∙ 𝑥𝑖 𝑛 𝑖=1 𝜕𝐿 𝜕𝑏 = ∑ 𝛼𝑖 ∙ 𝑦𝑖 𝑛 𝑖=1 = 0 Ky është një problem optimizimi kuadratik. Zvendesojme në ekuacionin e Lagrananzhe ekuacionin 𝒘⃗⃗⃗ = ∑ 𝛼𝑖 ∙ 𝑦𝑖 ∙ 𝑥𝑖 𝑛 𝑖=1 . 𝐿 = 1 2 ∙ (∑ 𝜆𝑖 ∙ 𝑦𝑖 ∙ 𝑥𝑖 𝑛 𝑖=1 ) ∙ (∑ 𝜆𝑗 ∙ 𝑦𝑗 ∙ 𝑥𝑗 𝑛 𝑗=1 ) − ∑ 𝜆𝑖 ∙ 𝑦𝑖 ∙ 𝑥𝑖 ∙ ∑ 𝜆𝑗 ∙ 𝑦𝑗 ∙ 𝑥𝑗 𝑛 𝑖=1 𝑛 𝑖=1 − ∑ 𝜆𝑖 ∙ 𝑦𝑖 ∙ 𝑏 𝑛 𝑖=1 + ∑ 𝜆𝑖 𝑛 𝑖=1 𝐿 = ∑ 𝜆𝑖 𝑛 𝑖=1 − ∑ ∑ 𝜆𝑖 ∙ 𝜆𝑗 ∙ 𝑛 𝑗=1 𝑛 𝑖=1 𝑦𝑖 ∙ 𝑦𝑗 ∙ 𝑥𝑖 ∙ 𝑥𝑗
  51. 51. Faqe | 51 Nga kjo trajtë e ekuacionit të Lagranzhe duket qartë që problem i optimizimit varet drejt për drejt nga shembujt e bashkësis se trainimit. Rregull i vendimit ndërtohet si më poshte: ∑ 𝜆𝑖 ∙ 𝑛 𝑖=1 𝑦𝑖 ∙ 𝑥𝑖 ∙ 𝑢⃗ + 𝑏 ≥ 0 ⟹ 𝑆ℎ𝑒𝑚𝑏𝑢𝑙𝑙 𝑃𝑜𝑧𝑖𝑡𝑖𝑣 ⊕ ∑ 𝜆𝑖 ∙ 𝑛 𝑖=1 𝑦𝑖 ∙ 𝑥𝑖 ∙ 𝑢⃗ + 𝑏 ≤ 0 ⟹ 𝑆ℎ𝑒𝑚𝑏𝑢𝑙𝑙 𝑁𝑒𝑔𝑎𝑡𝑖𝑣 ⊖ Funksione të ndryshëm KERNEL Ka disa raste kur supported vector machine nuk mund të jap një zgjidhje përfundimtare kjo për shkak të konfigurimit të shembujve. Keto raste janë raste linearisht të pandashme. Në këtë rast duhet të shohim në një prespektive tjetër, pra duhet të shtojmë një dimension tjetër. Në shembujt që kemi duhet të shtojme dhe karakteristike tjetër më qellim që të mund ti ndajme ato shembuj. Na duhet një funksion që të bëj transformimin nga një hapsirë në një hapsirë më një dimension më shumë. Supozojmë se ekziston një transformim i tillë 𝜙(𝑥𝑖) . Në nuk na intereson transformimi 𝜙(𝑥𝑖) në na duhet madhësia Κ(𝑥𝑖 ∙ 𝑥𝑗) = 𝜙(𝑥𝑖) ∙ 𝜙(𝑥𝑗) Funksionet kernel më të perhapur janë: LINEAR (𝑈⃗⃗ ∙ 𝑉⃗ + 1) 𝑛 EKSPONENCIAL 𝑒 −|𝑥 𝑖−𝑥 𝑗| 𝜎
  52. 52. Faqe | 52 Përdorimi dhe zgjidhja e këtyre funksionve kernel është pjesa më e vështirë e SVM. Për pjesën më të madhe të aplikimeve përdoret një kernel polinomial. Në rastin e klasifikimit të tekstit më e pershtatshme është një kernel linear pasi ka një numër të madh dimensione karakteristikash. Avantazhet dhe Disavatazhet e SVM Avantazhet Ka një numër të madh avantazhesh perdorim i një klasifikuesi SVM. Këta lloje klasifikuesish janë shumë efektiv kur kemi të bëjme më hapsira të mëdha dimensionale. Gjithashtu në rastet kur numri i dimensioneve bëhet shumë më i madhë se numri elementëve trajnuese pikerisht është momenti për të përdorur SVM. SVM është shumë performante në përdorimin e memories pasi përdor një pjesë të shembujve të trajnimit. Disavantazhet Një disavantazh për SVM është rasti kur numri i vetive është shumë më i madh se numri i shëmbujve në raste të tilla SVM do të këtë një performancë të ulët. Një problem tjetër më svm është rasti kur kemi të dhëna jo të zakonshme si p.sh vargje karakteresh ose struktura të dhënash si pemët. Ky algoritëm gjithashtu nuk bën vlerësime probabilitare dhe për pasoje këto vlerësime duhet të bëhen në mënyrë indirekte. Figure 45 Rast Linearisht i Pandashem Figure 44 Shtimi i një dimensioni per te zgjidhur rastin linerisht të pa ndashëm
  53. 53. Faqe | 53 Rezultatet Algoritmi i propozuar është trajnuar dhe ka vlerësuar një bashkësi trajnimi më 70 imazhe që përmbanin 10 numra nga 0 – 9 më fonte dhe paraqitje të ndryshme. Keto imazhe shembull janë krijuar nga unë në Adobe Photoshop CS6. Imazhet e bashkësis së tarjnimit kanë dimensione 30 x 45 pixel dhe kanë një kanal ngjyre, me shkalle gri. Për të krijuar imazhet e bashkësis së trajnimit janë përdorur këto fonte: 1. Arial 2. Hobo Std 3. Berlin Sans FB Demi 4. Calibri 5. Peoplar Std 6. Ravie 7. Paypyrus Për të testuar korrektësin e algoritmit janë mare imazhe të ndryshme test. Këto imazhe janë marë nga burime të ndryshme. Imazhet janë marë nga burimet e mëposhtme:  Janë marë në mënyrë të rastësishme në web.  Janë gjeneruar në Adobe Photoshop CS6  Janë fotografi7 të botës reale të realizuara nga unë. Kompiuteri që është përdorur për të ekzekutuar algoritmin është HP ProBook 4740S:  CPU: Intel Core i5 - 3230M @2.6 GHz  RAM: 8 GB  SSD SanDisk Ultra II 7 Fotografite janë realizuar duke perdorur nje aparat fotografik dixhital (Nikon D3200) si dhe nje aparat mobile (Huawei Nexus 6P)
  54. 54. Faqe | 54 Algoritmi funksionon më imazhe në formate të ndryshme .jpg, .png, .bmp kjo dhe për vetë lehtësinë që të jep libraria e OpenCV. Imazhet që përdoren nga ky algoritëm kanë rezolucion nga 400 x 500 deri në 6016 x 4000. Algoritmi arrin ti përpunoj imazhet në një kohe relativisht të shpëjte kjo dhe në varësi të numrit të zonave të interesit8 që gjenden në atë imazh edhe pse rezolucioni i imazhit mund të jetë shumë i lartë. Në mënyrë që të vlerësojme sa më saktë algoritmin e propozuar duhet të bëjmë disa vlerësime matematikore dhe sasiore. Shkalla e Gabimit: përcaktohet si numri i detektimeve false në një imazh pjestuar më numrin total të detektimeve. 𝑆ℎ𝐺 = 𝑁𝑢𝑚𝑟𝑖 𝑖 𝐷𝑒𝑡𝑒𝑘𝑡𝑖𝑚𝑒𝑣𝑒 𝐹𝑎𝑙𝑠𝑒 𝑁𝑢𝑚𝑟𝑖 𝑇𝑜𝑡𝑎𝑙 𝑖 𝐷𝑒𝑡𝑒𝑘𝑡𝑖𝑚𝑒𝑣𝑒 ∙ 100% Detektimet false janë struktura që janë detektuar si një numër por që nuk është ai numër. Numri total i detektimeve është shuma totale e detektimeve të mara. Gjate ketij studimi janë zhvilluar shumë testime duke provuar algoritmin mbi grupe të caktuara të domain të numrave për të përcaktuar si si ndikon bashkësia e trainimit mbi rezultatet dhe përafrimet që bën algoritmi. Algoritmi u testuar më 34 imazhe që ishin numra 1,3,4,6 por të paraqitur në fonte dhe pozicione të ndryshme. Rezultatet ishin si më poshte: Table 2Testimet dhe Rezultatet Testi Nr Numri Total i Numrave Numra të detektuara Gabim Numra të Detektuara Sakte Shkalla e Gabimit (%) Shkalla e Suksesit 1 34 5 29 14.7 85.3 2 34 2 32 5.8 94.2 8 Zona interesi (ang: ROI Region of Interes) janë ato struktuara të imazhit për e cilat jemi duke kerkuar. Në këtë raste janë zonat më numra.
  55. 55. Faqe | 55 Figure 46 Testimi Nr 1 Figure 47 Testimi Nr 2 Duke studiuar më vëmendje bashkësin e trajnimit dhe rastet në të cilat algortimi kishte gabuar arrita të kuptoj arsyen pse algortimi për një numër të caktuar rastesh nuk kishte arrituar të detektonte më saktësi numrin e duhur. Nga rezultatet bie në sy që algoritmi ka gabuar në 29, 85% 5, 15% Analiza e imazheve për numrat 1 , 3 , 4 , 6 Sukses Deshtim 32, 94% 2, 6% Analiza e imazheve për numrat 1 , 3 , 4 , 6 Sukses Deshtim
  56. 56. Faqe | 56 detektimin e numrit 1. Imazhet e numrave 1 që nuk mund të detektoheshin kishin numrin 1 të ngjitur djathas dhe pa pjesen e poshtme të 1 si në tabelen 2. Table 3 Numri 1 më probleme Në bashkësinë e trajnimit nuk gjendej asnjë imazh që të kishte numërin 1 në një konfigurim të ngjashëm që algoritmi ta përdorte për tu trajnuar. Mbas shtimit në bashkësin e trajnimit të një imazhi më konfigurimin e 1 në një forme të ngjashme saktësia e algoritmit u përmirësua më 9%. Kufizime dhe përmirësime Natyrisht që ka disa limitime në algortimin që kam propozuar për detektimin e numrave. Keto limitime lindin nga mënyra e kompozimit të imazhit të fotografuar ose të gjeneruar. Në rastet kur imazhi është shumë i errët ose shumë i ndritshëm është shumë e vështire të ekstraktohen numrat nga imazhi. Problem tjetër sjellin dhe rastet kur kemi superpozim të numrave, pra kemi disa numra të vendosur njëri mbi tjetrin gjë që e bën shumë të veshtirë dallimin mes tyre. Ky aplikim mund të zhvillohet akoma më tej më njohjen e shkronjave gjë që do ta kompletonte funksionin e një OCR9 . Një aplikim i tille do bënte të mundur detektimin dhe kuptimin e plotë të teksteve. Algoritmi i propozuar deri më tani detekton dhe njeh vetëm tekstet e printuara në formë dixhitale. Në të ardhmen mendoj ta zgjeroj këtë kërkim duke ndertuar një algoritëm që të mund të detektojë dhe kuptoje dhe tekstin e shkruar më dorë. Kjo përben një sfidë të vertetë teknike për vetë variacionet që ka mënyra e të shkruarit në njerëz të ndryshëm. 9 OCR (Optical Character Recognition) Njohje Optike e Karaktereve
  57. 57. Faqe | 57 Aplikime të mundshme Zgjidhje të tilla kanë shumë përdorime në fusha të ndryshme të industrise dhe nder to mund të përmendim: 1. Marje automatike e të dhënave në dokumenta biznesi si për shembull pashaporta, fatura, dokumenta banke etj. 2. Njohje automatike e targave të makinave 3. Nxjerrje automatike e informacioneve kryesore për dokumentat e sigurimeve. 4. Ekstraktimi i informacioneve nga kartevizitat. 5. Konvertim në versione teksti të editueshëm nga dokumentat e printuara. 6. Ndërtimi i sistemeve për mbrojtjen ndaj sistemeve robotike (CAPTCHA) 7. Teknologji ndihmëse për personat e verbër ose më shikim të dëmtuar. Duket qartë që kjo zgjidhje ofron shumë aplikime të ndryshme por ajo që mua më intereson më shumë dhe që ka një imapakt më të madh në shoqëri janë aplikimet mjekësore. Një algoritëm që është në gjendje të lexoje tekstin do ishte një ndihmë shumë e madhe për personat më mungesë ose më shikim të dëmtuar. Tekstet e gjeneruara prej këtij algoritmi mund ti transmetohen përdoruesit nepërmjet audios ose nepërmjet alfabetit të tyre special. Integrimi i kësaj teknologjie në një shakllë të gjerë ose bërja e saj mobile do ju jepte më shumë akses këtij grupi shoqëror në tregun e punës si dhe do ti integronte ata më lehtë në jetën shoqërore të vendit. Kjo është filozofia ime për teknologjine dhe shkencën në përgjithësi, nqs nuk është në funksion të njerzve atëherë nuk ka asnjë vlerë.
  58. 58. Faqe | 58 Bibliografi [1] Sergei Azernikov. Sweeping solids on manifolds. In Symposium on Solid and Physical Modeling, pages 249–255, 2008. [2] John Canny. A computational approach to edge detection. Pattern Analysis and Machine Intelligence, IEEE Transactions on, PAMI-8(6):679–698, Nov. 1986. [3] F. Mai, Y. Hung, H. Zhong, and W. Sze. A hierarchical approach for fast and robust ellipse extraction. Pattern Recognition, 41(8):2512–2524, August 2008. [4] Thomas B. Moeslund. Image and Video Processing. August 2008. [5] Optical Charater Recognition https://en.wikipedia.org/wiki/Optical_character_recognition#Applications [6] Principlas of Digital Image Processing – Fundamentals Techniques [7] Learning OpenCV- OReilly [8] Thresholding. Bryan S. Morse, Brigham Young University, 1998–2000 [9] MIT OpenCourseWare http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-034-artificial-intelligence-fall-2010/ [10] Support Vector Machines: Patrick H. Winston https://www.youtube.com/watch?v=_PwhiWxHK8o&index=4&list=PLMfKZLNucVwqKNaknw6T 4p0fJPSn5EN4x [11] Pattern Recognition: K-Menas Algorithm and Hierarchical Clustering. Indian Statistical Institute, Kolata [12] Edge and Corner Detection: UC Davis University https://www.youtube.com/watch?v=P35WsRDnTsU&list=PLMfKZLNucVwqKNaknw6T4p0fJPSn 5EN4x&index=9 [13] Nearest Neighbors: Patrick H. Winston https://www.youtube.com/watch?v=09mb78oiPkA&index=2&list=PLMfKZLNucVwqKNaknw6T4 p0fJPSn5EN4x [14] OpenCV API Reference http://docs.opencv.org/2.4/modules/refman.html [15] Histogram Equalization: Computer Vision: Algorithms and Applications By Richard Szeliski [16] Advances in K-means Clustering: A Data Mining Thinking By Junjie Wu

×