64
Vizijski sustav za prepoznavanje oblika Matija Mintas I Izjava Ovime izjavljujem da sam ovaj rad izradio samostalno, koristeći navedenu literaturu i znanja stečena tijekom studija. Ujedno se zahvaljujem mentoru prof. Dr. Sc. Mladenu Crnekoviću na pruženoj stručnoj pomoći i mogućnosti da se bavim ovakvim zanimljivim zadatkom. U Zagrebu, lipanj 2006. Matija Mintas

Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

I

Izjava

Ovime izjavljujem da sam ovaj rad izradio samostalno, koristeći navedenu literaturu i znanja stečena tijekom studija.

Ujedno se zahvaljujem mentoru prof. Dr. Sc. Mladenu Crnekoviću na pruženoj stručnoj pomoći i mogućnosti da se bavim ovakvim zanimljivim zadatkom.

U Zagrebu, lipanj 2006.

Matija Mintas

Page 2: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

II

Sažetak

U ovom radu objašnjeno je rješenje računalnog vizijskog sustava za prepoznavanje karakterističnog skupa predmeta.

Računalni se vizijski sustav sastoji od ulaznog uređaja (kamere), računala i računalne aplikacije. Za ovaj rad razvijena je računalna aplikacija koja može prikupiti podatke sa ulaznog uređaja, obraditi dobivene podatke te spremiti te podatke u datoteku sa parametrima porebnim za spajanje s robotom. Aplikacija daje podatke o tipu predmeta, njegovom položaju, orijentaciji, boji, te sigurnosti sa kojom je predmet prepoznat.

Poseban je zahtjev kod izrade ovog rada bio učiniti aplikaciju čim robusnijom. Robusnost aplikacije znači čim manju osjetljivost na vanjske utjecaje koji mogu biti osvijetljenost, sjene, vrsta pozadine, kvaliteta kamere i slično.

Kao nastavak ovog rada omogućeno je spajanje s robotom koje bi kao rezultat omogućavalo inteligentno pronalaženje i manipulaciju sa zadanim objektima.

Page 3: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

III

Sadržaj

SAŽETAK II

UVOD 6

PREPOZNAVANJE OBJEKATA 6PREPOZNAVANJE TEKSTA (OCR) 6INTERPRETACIJA SCENE 6

RAČUNALNI VIZIJSKI SUSTAVI 7

PREUZIMANJE SLIKE 7PREDOBRADA 7PREPOZNAVANJE OBILJEŽJA 8POVEZIVANJE OBILJEŽJA 8

ULAZNI UREĐAJ 9

VRSTE KAMERA 9KARAKTERISTIKE KAMERE 10UVJETI RADA 12PREPOZNAVANJE OBJEKATA 13

TEHNIKE OBRADE SLIKE 14

UVOD 14SREDNJA VRIJEDNOST VIŠE SLIKA 14LOKALNO UOPĆAVANJE 14VARIJABILNO LOKALNO UOPĆAVANJE 15KORAČNO UVJETNO LOKALNO UOPĆAVANJE 15TRANSFORMACIJA MAKSIMALNO - MINIMALNO IZOŠTRAVANJE 15MEDIAN FILTAR 16MASKIRANJE NEIZOŠTRENOSTI 17NISKOPROLAZNO FILTRIRANJE 18VISOKOPROLAZNO FILTRIRANJE 18

DETEKCIJA RUBOVA I TEHNIKE PRONALAŽENJA GRANICA 19

UVOD 19GRANICE BINARNIH SLIKA 19DETEKCIJA RUBOVA SA DISKRETNIM RAZLIKOVANJEM 19CANNY DETEKCIJA RUBOVA 20PREWITT-OV DETEKTOR RUBOVA 22SOBELOV DETEKTOR RUBOVA 23KIRSCHOV DETEKTOR RUBOVA 23USMJERENA DETEKCIJA RUBOVA 24

Page 4: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

IV

TEHNIKE SEGMENTACIJE SLIKE 25

UVOD 25OPĆA SEGMENTACIJA 25POLUSEGMENTACIJA 25SEGMENTACIJA NA VIŠE NIVOA 26VARIJABILNA SEGMENTACIJA 26

PREPOZNAVANJE OBILJEŽJA I DETEKCIJA OBLIKA 27

UVOD 27PREPOZNAVANJE OBILJEŽJA UPOTREBOM KORELACIJE 27SUSTAV UDALJENOSTI 30TEHNIKA DEFORMACIJSKIH KONTURA 33DETEKCIJA LINIJA UPOTREBOM HOUGHOVE TRANSFORMACIJE 35

RAČUNALNA APLIKACIJA ZA PREPOZNAVANJE 36

UVOD 36ALATI ZA RAZVOJ APLIKACIJE 37PRIHVAT SLIKE 38PREDOBRADA SLIKE 39GRUPIRANJE OBJEKATA 41PREPOZNAVANJE OBJEKATA 43PREPOZNAVANJE BOJA 45PRIKAZ 46UPUTE ZA RAD S APLIKACIJOM 47INSTALACIJA 47ODABIR ULAZNOG UREĐAJA 47PREGLED SCENE I NAMJEŠTANJE POSTAVKI 47RAD PROGRAMA I SPREMANJE PODATAKA ZA RAD ROBOTA 48

ZAKLJUČAK 49

PRILOG – IZVORNI KOD APLIKACIJE ZA PREPOZNAVANJE 50

POPIS LITERATURE 64

Page 5: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

V

Popis slika i tabela

SLIKA 1 MEDIAN FILTER 16SLIKA 2 MASKIRANJE NEIZOŠTRENOSTI 17SLIKA 3 NISKOPROLAZNO FILTRIRANJE 18SLIKA 4 RUBNE TOČKE SA NJIMA DODIJELJENIM SMJEROVIMA 24SLIKA 5 PRIMJER UPOTREBE POLUSEGMENTACIJE 25SLIKA 6 METODA KORELACIJE - OBRAZAC "SPREMNIK ZA PLIN" 28SLIKA 7 METODA KORELACIJE - SCENA SLIKA TVORNICE IZ ZRAKA 28SLIKA 8 METODA KORELACIJE - PRIMJENA OBRASCA 28SLIKA 9 REZULTAT PRIMJENE METODE KORELACIJE 29SLIKA 10 REZULTAT METODE KORELACIJE - SAMO POTPUNO TOČNE VRIJEDNOSTI 30SLIKA 11 SUSTAV UDALJENOSTI - PRIMJER 30SLIKA 12 METODA UDALJENOSTI - SLOVO "C" 31SLIKA 13 METODA UDALJENOSTI - SLOVA "C" I "O" 31SLIKA 14 METODA UDALJENOSTI - SLOVA "C" I "O" UZ KLASIFIKACIJU 31SLIKA 15 A,B,C,D PRIMJENA TEHNIKE DEFORMACIJSKIH KONTURA 33SLIKA 16 PRIMJER TEHNIKE DEFORMACIJSKIH KONTURA U MEDICINI - MR 34SLIKA 17 APLIKACIJA - BORLAND DELPHI 37SLIKA 18 APLIKACIJA - KONTURE OBJEKATA 39SLIKA 19 APLIKACIJA - ODREĐIVANJE PRAGOVA 40SLIKA 20 APLIKACIJA - DOBIVENE KONTURE OBJEKATA 41SLIKA 21 APLIKACIJA - REZULTATI SEGMENTACIJE 42SLIKA 22 APLIKACIJA - SEGMENTIRANI OBJEKTI 43SLIKA 23 APLIKACIJA - KARAKTERISTIČNE TOČKE 44SLIKA 24 APLIKACIJA - PROVJERA GEOMETRIJSKIH DEFINICIJA 44SLIKA 25 APLIKACIJA - PRIKAZ REZULTATA 46SLIKA 26 APLIKACIJA 48

TABELA 1 APROKSIMACIJA GAUSSIAN FUNKCIJE 20TABELA 2 MASKE GAUSSIAN FUNKCIJE 21TABELA 3 MASKE PREWITT-OVOG DETEKTORA RUBOVA 22TABELA 4 MASKE SOBEL-OVOG DETKTORA RUBOVA 23TABELA 5 VRIJEDNOSTI TOČAKA KIRSCHOV-OVOG DETEKTORA RUBOVA 23

Page 6: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

6

Uvod

Tipični zadaci računalnog vizijskog sustava

Prepoznavanje objekata

Prepoznavanje prisutnosti poznatih objekata ili živih bića na nekoj slici sa uočavanjem pozicije objekata. Neki primjeri:

Pretraživanje određenih objekata u digitalnim slikama Prepoznavanje ljudskih lica i njihovih položaja na slici Detekcija objekata koji prolaze kroz proizvodni proces, npr. na

konvejeru, te njihova pozicija kao i položaj.

Prepoznavanje teksta (OCR)

Prepoznavanje teksta uzima slike ili neki već odštampani materijal ili rukopis i pretvara ga u računalni tekst kao što su ASCII ili Unicode. Prije su slike za obradu dobivane pomoću računalni skenera, dok je danas postupak toliko unaprijeđen da je moguće prepoznavati tekst i iz slika iz digitalnih kamera.

Interpretacija scene

Kreiranje modela sa neke slike ili video zapisa.

Page 7: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

7

Računalni vizijski sustavi

Tipični se računalni vizijski sustav može podijeliti u slijedeće podsustave.

Preuzimanje slike

Slika, ili sekvenca slika se preuzima pomoću određenog sklopovlja (kamere, radara, lidara ...). Često se sklopovlje mora kalibrirati prije uporabe kako bi se dobila kvalitetna slika.

Predobrada

U koraku predobrade, slika se obrađuje baznim operacijama obrade. Cilj je ovog koraka da smanjimo količinu „šuma“ na slici, tj. da odvojimo signal od šuma i da smanjimo sveukupnu količinu podataka.

Ovaj se postupak obavlja koristeći različite metode obrade slike: Downsampling – smanjenje količine uzoraka/signala Segmentacija slike Transformacije kao Fourierova transformacija Procjena pokreta za lokalne regije na slici Procjena dispariteta na stereo slikama Višerezolucijske analize Upotreba digitalnih filtera

o Konvolucijao Korelacija

Page 8: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

8

Prepoznavanje obilježja

Cilj prepoznavanja obilježja je daljnje smanjivanje podataka na sustav obilježja, koji bi trebala biti otporan na smetnje kao što su utjecaji osvijetljenosti, poziciju kamere, šum i izobličenja.

Primjeri prepoznavanja obilježja:

o Detekcija rubova ili procjena lokalne orijentacijeo Prepoznavanje kutnih obilježjao Prepoznavanje geona ili drugih 3D primara (u 3D detekciji)o Prihvaćanje konturnih linija i eventualno zakrivljenosti

Povezivanje obilježja

Pri ovom se koraku ostvaruje veza između obilježja u dobivenom sustavu i obilježja poznatih objekata/modela u bazi modela. Povezivanje obilježja mora dovesti do konačne hipoteze.

Primjeri:o Metoda najmanjih kvadratao Hough-ova transformacijao Filtriranje čestica

Page 9: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

9

Ulazni uređaj

Kako bi računalo moglo dobiti podatke potreban nam je ulazni uređaj. Za prepoznavanje vrste objekta i njegove lokacije u industriji koriste se različita rješenja, zasad još prevladavaju konvencionalne metode. Ovisno o tipu objekata koriste se različiti jednostavni senzori – prekidači, ticala, vodilice isl.

Kako računala napreduju, tako su već odavno ušla u proizvodni proces i igraju aktivnu ulogu vršeći kontrolu nad procesom i kontrolirajući proizvodne strojeve.

Današnji nam razvoj računala omogućava da osim konvencionalnih senzora koristimo i napredne sustave koji vrše naprednu obradu podataka. Jedan od takvih sustava je i vizijski sustav.

Okosnica vizijskog sustava je ulazni uređaj, kamera. Postoje različite vrste kamera, koje već unaprijed filtriraju željenu vrstu podataka i tada se obradom tako dobivenih podataka mogu dobiti podaci o cijelom polju nama zanimljivih svojstava (npr. temperaturnim svojstvima.).

U ovom sam radu želio pokazati obradu podataka koje kao ulaz koristi jednu od najprimitivnijih (i najjeftinijih) kamera, kako bi prikazali koliko se računalnom obradom može dobiti čitav niz vrlo vitalnih podataka za industrijski proces čak i kada nam ulazni podatak nije precizan.

Vrste kamera

Za industrijski proces koriste se sofisticirane i uvjetima prilagođene kamere, takve kamere dat će nam vrlo jasnu i oštru sliku, pogotovo zbog savršenih uvjeta koji će se postići za rad takve kamere. Želimo li koristiti kameru u industrijskom procesu, prilagodit ćemo osvjetljenje, sjene i ostale moguće uzročnike grešaka. U ovom se radu takvi uzročnici baš namjerno izazivaju da se prikaže koliko se sve grešaka može otkloniti obradom podataka dobivenim kamerom na računalu.

Neki tipovi industrijskih kamera: Termalna kamera Klasična Industrijska CCD kamera Industrijski mikroskop

Page 10: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

10

Za potrebe se ovog rada koristi računalna web kamera, iako se takva (kao što se sa popisa može vidjeti) neće koristiti u industrijskom okruženju. Računalna web kamera daje sliku mnogostruko lošije kvalitete, te su izrađene različite deformacije slike i što je najbitnije – ne postoji dosljednost. To znači da u pravim uvjetima ne bi odabrali ovakav tip kamere, no za potrebe rada takva je kamera baš zato odgovarajuća – jer ćemo prikazati mogućnosti otklanjanja svih takvih grešaka računalnom obradom. Greške koje će nam se stalno pojavljivati zbog loše kvalitete kamere pojavile bi se i u pravim uvjetima, no u daleko manjem broju i manjim razmjerima.

Karakteristike kamere

Kao što je već napomenuto, računalne web kamere kvalitetom i dosljednošću slike daleko zaostaju za industrijskom kamerom kakvu bi koristili u pravom procesu prepoznavanja.

Neke od nama važnih obilježja kamere kao ulaznog uređaja su njezina rezolucija, mogućnost fokusiranja (izoštravanja) slike, osjetljivost (na svjetlost), te konzistentnost dobivenih slika.

Rezolucija kamere je broj dobivenih točaka na slici. Jasno je da će nam bolja kamera dati više točaka i tako će nam na slici biti jasniji objekti. Izražava se u količini točaka horizontalno i količini točaka vertikalno. Primjerice računalne web kamere efektivno daju tipično 320 točaka horizontalno i 240 točaka vertikalno. To nam daje ukupno broj od 320*240 = 76800 točaka po slici.

Mogućnost fokusiranja nam govori može li kamera izoštriti objekt na nekoj udaljenosti. Bolje kamere imaju mogućnost mijenjanja objektiva i ručnog ili automatskog izoštravanja. Računalne web kamere kao korištena obično nemaju mogućnosti izoštravanja ili imaju neko jeftino rješenje ručnog izoštravanja.

Osjetljivost na svjetlost je pokazatelj koliko osvijetljeni moraju biti objekti da bi kamera dala kvalitetnu sliku. Izražava se u luxima. Moderne kamere imaju vrlo niske vrijednosti te mogu raditi u vrlo mračnim uvjetima. Opet, računalna web kamera i ovdje ne daje dobre rezultate u uvjetima loše svjetlosti.

Page 11: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

11

Konzistentnost dobivenih slika neće biti navedena na specifikaciji kamere ali je nama u procesu prepoznavanja objekta vrlo važna karakteristika. Naime, mi pri prepoznavanju uzimamo neke vrijednosti na osnovu kojih želimo saznati obilježja objekata, no ako nam se te vrijednosti mijenjaju iz trenutka u trenutak, vrlo je teško doći do kvalitetnih rezultata. Tako će, primjerice – računalna web kamera snimajući isti objekt u istim uvjetima davati drugačije podatke o točkama iz trenutka u trenutak – to je situacija koju želimo izbjeći uzimanjem kvalitetnije kamere (ali za potrebe ovog rada odgovaraju takve greške kako bi prikazali da se računalnom obradom može sve to izbjeći).

Usporedba karakteristika industrijske kamere i računalne web kamere

Industrijska kamera Tipična Web USB kamera

Priključak FireWire 400 Mbps USBSenzor CCD CMOSRezolucija 640 x 480 320x240Optika Izmjenjiva Fiksna plastična lećaFokus Ručni/Autofokus FiksniBlenda Automatski/Ručno FiksnaGamma korekcija Podesivo Ne postojiBalans bijele boje Automatski/Ručno Softverski

Page 12: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

12

Uvjeti rada

U svakodnevnim je uvjetima slika koju bi dobili s kamere puna nama nepotrebnih podataka koji nam samo smanjuju pouzdanost prepoznavanja. Neki takvi nepotrebni podaci su sjene likova, različita osvijetljenost, te slične prijelazne pojave.

Kako bi povećali pouzdanost prepoznavanja, u interesu nam je smanjiti utjecaj neželjenih pojava na prepoznavanje.

Najveći problem svakakvo predstavlja rasvjeta, radi li se o usmjerenoj točkastoj rasvjeti, jasno je da ćemo imati jasne i kontrastne sjene. Dakle, ukoliko je moguće potrebno je postići indirektnu i difuznu svjetlost.

Druga mogućnost za poboljšanje uvjeta rada jest pozadina. Svijetla i sjajna pozadina dovesti će opet do neželjenih efekata. Bolji rezultate dobit ćemo korištenjem tamne i ne-sjajne pozadine.

Page 13: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

13

Prepoznavanje objekata

Postoji mnogo već poznatih algoritama kojom računalna aplikacija može obaviti prepoznavanje objekata. U ovom poglavlju biti će objašnjene tehnike koje se koriste za sve potrebne korake prepoznavanja objekata na nekoj sceni.

Cilj prepoznavanja objekata je locirati te objekte u nekoj sceni. Postoji nekoliko važnih pitanja koje se odnose na ovaj opći pojam:

Što podrazumijevamo kao objekt? Što je sve potrebno učiniti da bi nešto prepoznali kao objekt?

Konačni je cilj računalne vizije dizajnirati sustav koji bi bio sposoban analizirati scenu i odrediti koji su predmeti na sceni bitni objekti. Realno, konstruktor sustava mora definirati što to čini objekt. Možemo li kao objekt smatrati trokut, krug, auto, lice ...

Kako bi pronašao te objekte, sustav mora primijeniti neke tehnike o kojima je u ovom radu riječ. Te su tehnike stvorene kako bi tražile specifičan objekt. Općenito, te se tehnike moraju primjenjivati u slijedu, što znači da će računalna snaga imati veliki utjecaj na količinu različitih objekata koje možemo detektirati.

Page 14: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

14

Tehnike obrade slike

Uvod

Cilj obrade slike je poboljšati vizualni izgled slike, ili transformacija slike u oblik koji je bolje prilagođen za ljudsku interpretaciju ili računalnu analizu. Iako postoji mnogo metoda obrade slike, začudo, ne postoji jedinstvena teorija o obradi slike. To se može objasniti nedostatkom standarda o kvaliteti slike koji bi mogao poslužiti kao kriterij za algoritme obrade slike. Ovdje ćemo opisati nekoliko tehnika koje su se dokazali uspješnima.

Srednja vrijednost više slika

Kako bi povećali kvalitetu i robusnost ulaznog signala (slike) koristimo ovu metodu uzimanjem srednjih vrijednosti intenziteta više slika iste scene.

Lokalno uopćavanje

Lokalnim uopćavanjem se smanjuju varijacije u intenzitetu na lokalnoj razini. Ta se metoda sastoji od zamjene nivoa intenziteta u nekoj točci sa srednjim intenzitetom okoliša te točke.

Page 15: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

15

Varijabilno lokalno uopćavanje

Za razliku od lokalnog uopćavanja, ova tehnika omogućava da veličina okoliša varira. To je poželjno za slike koje imaju veću degradaciju šuma u rubovima slike.

Ova tehnika je računalno zahtjevnija od lokalnog uopćavanja, te je pogodnija ako se varijacije u degradaciji šuma u različitim regijama slike mogu unaprijed odrediti statističkim ili drugim metodama.

Koračno uvjetno lokalno uopćavanje

Ovom se metodom smanjuje dodani šum u dijelovima slika bez izbjeljivanja rubova. Vrijednost se slike na lokaciji y, a(y), zamjenjuje se prosječnom vrijednošću okolišne točke y čije su vrijednosti aproksimativnojednake kao i a(y). Zatim se vrši šest takvih koraka dok slika ne udovolji odgovarajućoj vizualnoj kvaliteti.

Transformacija Maksimalno - Minimalno Izoštravanje

Ova će metoda izoštriti mutne granice i dovesti mutne sive nivoe u fokus. Također će ublažiti izolirane vrhove ili dna. To je također koračna tehnika koja uspoređuje maksimalne i minimalne vrijednosti u odnosu na središnje točke u malom okolišu.

Page 16: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

16

Median filtar

Median filtar je tehnika ublaživanja koja uzrokuje minimalno izobličenje rubova, uklonit će izolirane šiljke i maknuti fine linije. Ova tehnika uključuje zamjenu vrijednosti piksela svake točke u slici sa median vrijednosti piksela u okolici.

Slika 1 Median filter

Korištenjem median filtra, svaku ćemo točku zamijeniti median vrijednošću točaka u odabranoj okolici. Vrijednost mediana okolice je vrijednost u kojoj polovica vrijednosti okolice ima manje vrijednosti od vrijednosti medijana a druga polovica veće vrijednosti.

Page 17: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

17

Maskiranje neizoštrenosti

Uključuje stapanje visokofrekventnih komponenata slike sa niskofrekventnim komponentama slike kako bi dobili unaprijeđeni rezultat. Stapanje može izoštriti ili zamagliti izvornu sliku ovisno o proporciji svake komponente.

Slika 2 Maskiranje neizoštrenosti

Page 18: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

18

Niskoprolazno filtriranje

Niskoprolazno filtriranje je proces obrade slike kojim se naglašavaju visokofrekventene komponente slike uz Fourierovu transformaciju. Budući da su visokofrekventne komponente vezane sa oštrim rubovima – niskoprolazno filtriranje kao efekt ima ublažavanje slike.

Slika 3 Niskoprolazno filtriranje

Visokoprolazno filtriranje

Ovakvo filtriranje pojačava elemente rubova slike bazirano na činjenici da su rubovi i nagle promjene nijanse sive povezani s visokofrekventnim komponentama u Foruierovoj transformaciji slike.

Page 19: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

19

Detekcija rubova i tehnike pronalaženja granica

Uvod

Tehnika detekcije rubova vrlo je važan proces u velikom broju primjena obrade slike, kao, primjerice, segmentacije slika, prepoznavanje slova i analiza scena. Rub na slici je kontura po kojoj se naglo mijenja prag svjetlosti u veličini ili u broju promjena.

Granice binarnih slika

Granična je točka objekta u binarnoj slici točka čije susjedstvo presijecaobjekt. Metode koje koristimo su metode tanjenja. Ovakve transformacije mogu biti specijalno korisne kada se upotrebljavaju unutar drugih algoritama koji zahtijevaju lokaciju granice da izvrši svoj zadatak.

Detekcija rubova sa diskretnim razlikovanjem

Diskretno razlikovanje je tehnika lokalne obrade granica. Upotrebljava se kako bi izoštrili elemente ruba u slici sa diskretnim razlikovanjem u okomitom ili vodoravnom smjeru, ili kombinacijom istih.

Page 20: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

20

Canny detekcija rubova

Rubovi karakteriziraju granice i zbog toga su fundamentalni problem obrade slike. Rubovi na slici su područja sa velikim intenzitetom kontrasta. Canny detekcija rubova najznačajniji je dio predobrade jer značajno smanjuje količinu nama nepotrebnih podataka, Važno je prije takve obrade dobro balansirati svjetlinu, nijansu i kontrast. U ovom slučaju to je napravljeno spregom rezultata detekcije i namještanja pragova svjetline i kontrasta.

Canny detektor rubova poznat je kao optimalni detektor rubova. Namjera je bila unaprijediti mnoge već poznate detektore. Ovakav detektor rubova prvo uglađuje sliku kako bi se elimirao šum. Zatim se nalazi gradijent kako bi se osvjetlile regije sa velikim derivacijama. Nakon toga, algoritam se kreće tim područjima i briše sve pixele koji nisu na maksimumu. Polje gradijenata se sada još smanjuje histerezom.

Kako bi implementirali canny detektor moramo slijediti ove korake:

Prvi Korak

Filtrirati šum u originalnoj slici prije detekcije rubova. Ovdje se koristi Gaussian-ov filtar. Kada se izračuna prikladna maska, koristi se gaussian uglađivanje upotrebljavajući standardne metode. Što je veća širina Gaussian maske – manje je osjetljivost detektora na šum.

Tabela 1 Aproksimacija Gaussian funkcije

Page 21: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

21

Drugi Korak

Nakon uglađivanja slike i eliminacije šuma, želimo pronaći silinu rubova uzimajući gradijente slike. Sobel-operator obavlja 2D izmjeru gradijenata na slici. Na taj se način može pronaći silina ruba svake točke. Sobel-operator upotrebljava par 3x3 maski – jedna procjenjuje gradijent u x-smjeru a druga u y-smjeru.

Tabela 2 Maske Gaussian funkcije

Treći Korak

Pronalaženje smjera ruba je trivijalno kada su poznati gradijenti x i y . Doći će do grešaka kada god je suma od x jednaka nuli, zbog čega mora biti restrikcija kada dođe to takvog slučaja.

Četvrti Korak

Idući korak je povezivanje direkciju ruba sa smjerom koji može biti tražen u slici. Potrebno je naći u kojem ćemo od 4 smjera krenuti – horizontalno, uz pozitivnu dijagonalu, vertikalno ili uz negativnu dijagonalu.

Peti Korak

Kada imamo poznat smjer ruba, potrebno je napraviti potiskivanje nemaximuma. Upotrebljava se kretanjem uz rub kako bi se potisnula svaka vrijednost pixela za koju smatramo da nije rub. Na ovaj način dobiva se tanka linija u izlaznoj slici.

Page 22: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

22

Šesti korak

Konačno, upotrebljavamo histerezu da eliminiramo «razbijanje» konture koje izaziva fluktuacije ispod i iznad granica.

Prewitt-ov detektor rubova

Ovaj detektor rubova računa gradijent vektor u svakoj točci izvorne slike. Ciljna slika izračunata je veličinom gradijent vektora. Vrijednost kuta ruba, koji je jednak kutu koji gradijent čini sa vodoravnom osi, može se također dati svakoj točci izvorne slike.

Dvije se maske primjenjuju na izvornu sliku sa približnim gradijent vektorom. Jedna maska predstavlja parcijalnu derivaciju u donosu na x, a druga parcijalnu derivaciju u odnosu na y.

Tabela 3 Maske Prewitt-ovog detektora rubova

Page 23: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

23

Sobelov detektor rubova

Sobelov detektor ruba je nelinearna metoda proširenja rubova. To je jedna jednostavna varijacija diskretnog razlikovanja za proširenje rubova.

Tabela 4 Maske Sobel-ovog detktora rubova

Ovom metodom se naglašavaju horizontalni i vertikalni rubovi, za razliku od nagnutih rubova; relativno je neosjetljiva metoda za rubove koje nisu u osima.

Kirschov detektor rubova

Proces ove metode sastoji se od korištenja osam maski za svaku od točaka na slici kako bi se ustanovio kut, smjer te veličina ruba. Ako je a izvorna slika, za svaki a(i,j) dodijelit ćemo vrijednosti točaka za svih osam susjeda u smjeru kazaljke na satu.

Tabela 5 Vrijednosti točaka Kirschov-ovog detektora rubova

Page 24: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

24

Usmjerena detekcija rubova

Usmjerena detekcija je tehnika koja se temelji na upotrebi usmjerenih derivacija. Ona identificira točke na slici kao moguće elemente ruba i dodjeljuje im jednu od n direkcija smjera. Ovo se postiže usporedbom slike sa jednom od n/2 rubnih maski. Svaka maska može označavati 2 smjera. Točki se dodjeljuje smjer koji ima najveću vrijednost u masci.

Slika 4 Rubne točke sa njima dodijeljenim smjerovima

Page 25: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

25

Tehnike segmentacije slike

Uvod

Metoda pragova (threshold) je jedna od najjednostavnijih i najčešće upotrebljavanih tehnika u segmentaciji slike. Cilj je segmentirati sliku u nama značajne regije slike i maknuti sve regije koje smatramo nevažnim. Najjednostavnija tehnika upotrebljava jednostavan prag kako bi izolirala značajne objekte. Međutim, u mnogim slučajevima, ovakva nam jednostavna tehnika neće dati zadovoljavajući rezultat po cijeloj slici. Ovdje ćemo proučiti više takvih metoda.

Opća segmentacija

Ovom se metodom izoliraju značajni objekti čije su vrijednosti značajno veće od pozadine. Svaka se točka klasificira kao pripadajuća objektu ili pozadini. To se vrši s obzirom na neku vrijednost praga, dodjeljuje se pripadnost s obzirom upada li vrijednost točke unutar zadanog praga ili ne.

Ova je metoda efikasna kod jednoličnih pozadina. Problemi nastaju kad pozadina nije jednolična ili kad objekt i pozadina zauzmu jednaki red vrijednosti.

Polusegmentacija

Polusegmentacija je metoda opće segmentacije. Točke čije vrijednosti leže unutar zadane vrijednosti praga zadržavaju svoje originalne vrijednosti, dok vrijednosti točaka čije su vrijednosti izvan zadanog opsega se postavljaju u 0.

Slika 5 Primjer upotrebe polusegmentacije

Page 26: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

26

Segmentacija na više nivoa

Tehnike globalne i polusegmentacije vrše segmentaciju slike bazirano na činjenici da slika sadrži samo 2 tipa regija. Segmentacija na više nivoa je razvoj ove dvije tehnike koja omogućava segmentaciju točaka više klasa.

Primjerice, ako histogram slike ima 2 vrha, onda je moguće segmentirati sliku uz upotrebu dva praga. Ovi pragovi dijele sustav vrijednosti u dva neprekrivajuća skupa, a svaki se može povezati sa jedinstvenom vrijednosti u ciljnoj slici.

Varijabilna segmentacija

Nikakva vrijednost pragova ne može proizvesti dobre rezultate segmentacije u rasponu cijele slike. Zbog toga ova tehnika segmentacijeomogućuje upotrebu različitih vrijednosti pragova u različitim regijama slike.

Page 27: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

27

Prepoznavanje obilježja i detekcija oblika

Uvod

Ovo poglavlje pokriva dva povezana zadatka analize slike za detekciju predmeta. Jedna od najosnovnijih metoda detekcije značajnog objekta je prepoznavanje obilježja uz upotrebu predložaka. U prepoznavanju predložaka, uspoređuje se replika značajnog objekta sa svim predmetima na slici. Ako su obilježja predloška i predmeta na slici dovoljno bliska (tj. prelaze zadani prag), tada predmet možemo prepoznati da odgovara predlošku.

Houghova transformacija omogućuje različite metode za detekciju oblika koje se mogu opisati sustavima jednadžbi ili u tabličnom obliku. Primjeri oblika koji se mogu parametrizirati su linije, kružnice i elipse. Oblike koji se ne mogu parametrizirati možemo detektirati generaliziranom verzijom Houghove transformacije koja se poziva na postojeće podatke.

Prepoznavanje obilježja upotrebom korelacije

Prepoznavanje obilježja koristi se za lociranje objekata unutar veće slike. Predložak, koji predstavlja značajni predmet, je zapravo i sam slika. Zaključak o točnom prepoznavanju slike i predloška obično je dan u mjernom sustavu

gdje će vrijednost d biti mala kada su slika (a) i predložak (p) gotovo identični a velika kada se značajno razlikuju. Obično se koristi određeni prag koji određuje konačne lokacije i da li je riječ o dovoljno dobrom prepoznavanju.

Kako bi bila efektivna, ova metoda zahtijeva točan predložak. A čak i kada takav predložak postoji, svaka varijacija u veličini, obliku, orijentaciji i nijansama sivog značajnog objekta će recipročno utjecati na uspješnost prepoznavanja.

Page 28: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

28

Cilj ovakve tehnike uzorkovanja jest pronaći svaku instancu određenog objekta u sceni upotrebom određenog obrasca. Obrazac je slika objekta kakav nas interesira. Ovdje je izveden primjer spremnika za plin kao obrasca.

Slika 6 Metoda korelacije - Obrazac "spremnik za plin"

Ovakav obrazac je grupa vrijednosti točaka koje koreliraju sa objektom koji nas zanima. Primjerice, želimo pronaći sve spremnike na sceni tvornice.

Slika 7 Metoda korelacije - Scena slika tvornice iz zraka

Kako bi izvršili ovu zadaću, obrazac (slika spremnika) se primjenjuje na slici na takav način da će grupa točaka koje koreliraju sa obrascem biti bijela ili blizu bijeloj boji, dok će grupa točaka koje ne koreliraju sa obrascem biti suprotno – blizu crnoj ili crna. Na slici ispod možemo vidjeti kako izgleda obrazac primijenjen na sliku scene:

Slika 8 Metoda korelacije - Primjena obrasca

Page 29: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

29

Matematički primjena obrasca može se sažeti ovako:

c := a + o

Gdje je c izlazna slika, a je izvorna slika scene, a o je obrazac.

Rezultat primjene ovakve metode se vidi na slijedećoj slici:

Slika 9 Rezultat primjene metode korelacije

Valja primijetiti kako su lokacije 6 spremnika bijele, čime vidimo da metoda može biti uspješna kako bi pronašli spremnike. Međutim, postoje i drugi objekti na slici koje smo gotovo detektirali kao spremnike. Iako ti objekti nemaju jednaku sigurnost kao i sami spremnici, možemo ih pogrešno tumačiti kao spremnike.

Kako bi lokacije spremnika označili još jasnije, primjenjuju se nijanse pragova vrijednosti pixela, čime ćemo isključiti sve vrijednosti pixela koje nisu dovoljno bijeli. Rezultat je slijedeći.

Page 30: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

30

Slika 10 Rezultat metode korelacije - samo potpuno točne vrijednosti

Sada jasno vidimo lokacije spremnika.

Uzorkovanje upotrebom korelacije ima ograničenja. Zahtijeva točnu sliku željenog objekta baš onakvu kakva će se vidjeti i na slici. Također, promjene u orijentaciji i veličini objekta će jako utjecati na pronalaženje.

Sustav Udaljenosti

Upotreba sustava udaljenosti za prepoznavanje oblika je unaprijeđenje tehnike uzorkovanja. Sustav udaljenosti je sustav udaljenosti od točke do njezinih N najbližih susjednih točaka. Te točke su najbliži pixeli. Na slici ispod možemo vidjeti sustav udaljenosti za točku u slovu „a“.

Slika 11 Sustav udaljenosti - primjer

U ovom slučaju, mjerimo pet najbližih točaka od crne točke. Taj sustav udaljenosti određuje udaljenosti za svaku o točaka i opisan je sa DS(p), gdje su S1... točke koje čine slovo „a“, a S1.5... broj najbližih susjeda, dok je ptočka oko koje se računaju udaljenosti. Svaka točka ima svoje vlastite vrijednosti za DS, a usporedba između DS vrijednosti za točku p i neku drugu točku q se može upotrijebiti kako bi ustanovili je li q slična točki p.

Page 31: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

31

Povećavanje broja u sustavu udaljenosti će omogućiti razlikovanje točaka koje nas interesiraju, ali u nekim slučajevima to nam neće pomoći. To je posebice točno kad točke imaju iste lokalne karakteristike kao i željena točka ali zapravo nije ta točka.

Primjerice, pogledamo li slovo „c“, točke će biti detektirane i na slovu „o“ jer je slovo „c“ podskup od slova „o“.

Slika 12 Metoda udaljenosti - Slovo "c"

Slika 13 Metoda udaljenosti - Slova "c" i "o"

Očito je da će nam za točnu detekciju slova „c“ treba dodatne informacije. Te dodatne informacije možemo dobiti iz promatranja kako ljudsko oko primjećuje detalje. Obilježja su izvučena iz vizualnog korteksa od jednostavnih i složenih ćelija za detekciju linija i rubova, i sa završnim ćelijama za detekciju krajeva linija. Rezultat je klasifikacija najbližih susjeda kao konturne točke ili kraj linije.

Pomoću ovih informacijama možemo uočiti prekid u slovu „c“:

Slika 14 Metoda udaljenosti - Slova "c" i "o" uz klasifikaciju

Postoji više različitih tipova oznaka koje se mogu primijeniti, na ovoj listu su neke najčešće:

Kontura Kraj linije Spojnica

Page 32: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

32

Prototip oblika je sustav udaljenosti koji označava neki oblik. Ovaj koncept je sličan obrascu oblika iz metode uzorkovanja. Ovaj se prototip oblika testira s obzirom na sustav udaljenosti na neku sliku.

Ova se tehnika može proširiti na više od prepoznavanja slova upotrebom prototipova koji označavaju različite oblike. Tada slika prolazi kroz filtre svakog prototipa oblika te se rezultati uvjetuju sa „ILI“ kako bi dobili konačan rezultat. Uspjeh klasifikacije može se poboljšati sa ubacivanjem nekih karakteristika oblika, slično onome kako se moguoznačavati sustavi udaljenosti.

Neki od često upotrebljavanih karakteristika oblika su: Središta i zatvorene konture Završeci linija Točke grananja Točke visoke zakrivljenosti Točke križanja

Uz dovoljno prototipova, ova se metoda može nositi sa djelomičnim oštećenjima objekata kao i sa promjenama u orijentaciji i rotaciji. Prema tome, robusnija je od metode uzorkovanja.

Page 33: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

33

Tehnika Deformacijskih Kontura

Ideja je ove tehnike da postoji idealni model kontura ili model objekta kojeg želimo detektirati. Na slici se nalaze konture šahovske figure. Ovajmodel zatvorene konture definira sustav točaka. Unutar slike, sustav točaka ovog modela uspoređuje se sa drugom zatvorenom konturom, te – ako postoji prihvatljiva deformacija modela konture – možemo reći da je sličnost postignuta.

Slika 15 a,b,c,d Primjena tehnike deformacijskih kontura

Slike su samo primjeri kako radi ovaj algoritam. Kao što se može vidjeti na četvrtoj slici, ovaj algoritam ima probleme u slučaju da je pozadina scene sličnog intenziteta kao i sam objekt.

Page 34: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

34

Primjer iz prakse –kako se ova tehnika koristi na MR-u. Vidi se slika ljudskog mozga i područje označeno ovom tehnikom.

Slika 16 Primjer tehnike deformacijskih kontura u medicini - MR

Page 35: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

35

Detekcija linija upotrebom Houghove transformacije

Houghova transformacija je preslikavanje iz R2 u prostor funkcija. Od prve je formulacije (1962.) prošla kroz mnoge provjere koje su rezultirale u više generalizacija i mnogostrukim primjenama u računalnim vizijskim sustavima.

Ravna je linija u smislu Houghovog algoritma kolinearni sustav točaka. Kvaliteta se linije procjenjuje po broju točaka linije.

Direktan pristup pronalaženja ravnih linija bi proučio sve moguće ravne linije unutar zadanih točaka. Za svaku od n linija, moralo bi se provesti n-2 pokusa kolinearnosti. Takav bi pristup imao računalnu kompleksnost od n3. Houghova transformacija daje metodu koja smanjuje zahtjeve na računalne resurse.

Houghova transformacija preslikava h iz R2 u prostor sinusne funkcije, definirano sa:

Pogledajmo transformaciju 4 točke:

Svaka točka se preslikava u sinusnu funkciju pomoću Houghove transformacije. Ako točka leži na xy-ravnini parametriziranoj kao A0, njezin oblik kao sinusne funkcije će presijecati točku A0. Tako je moguće izbrojati točke koje leže na toj liniji. Ovo je baza Houghovog algoritma za prepoznavanje linija.

Page 36: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

36

Računalna aplikacija za prepoznavanje

Uvod

Za potrebe prepoznavanja oblika i boja napisan je računalni program koji koristi tehnike prepoznavanja opisane dosad. Cilj je napraviti robusnu aplikaciju za prepoznavanje oblika i boja karakterističnog skupa predmeta. Robusnost aplikacije uključuje čim manju osjetljivost aplikacije na vanjske utjecaje. Pod vanjske utjecaje podrazumijevamo različite šumove koje mogu prouzročiti svjetlost, sjene, pozadina, karakteristike kamere isl.

Page 37: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

37

Alati za razvoj aplikacije

Aplikacija je razvijena koristeći programski jezik Borland Delphi. Riječ je o programskom jeziku baziranom orijentiranom objektnom programiranju čiji se kod temelji na Pascal programskom jeziku. Prevođenjem izvornog koda dobiva se win32 aplikacija.

Slika 17 Aplikacija - Borland Delphi

Osim samog programskog jezika korišteni su i neki već gotovi alati za obradu slike, uz dozvolu g. Mitov-a, korištene su komponente iz VisionLab paketa za predobradu slike.

Page 38: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

38

Prihvat slike

Prihvat slike je omogućavanje kamere kako bi komunicirala sa računalnim programom. Za prihvat slike s kamere potrebno je koristiti drivere od kamere. Iako je ovakav sustav pouzdaniji, nažalost je vezan za određenu kameru i ne dozvoljava raznovrsnost primjene različitih kamera.

Kako bi eliminirali takav nedostatak korištena je komponenta Video For Windows. Ova komponenta omogućava korištenje svih ulaznih uređaja instaliranim na Windows računalnom operativnom sustavu. Tako je u ovom računalnom programu moguće korištenje ne samo nama poznate web kamere već i bilo kojeg drugog ulaznog uređaja kao što je npr. video kartica sa ulaznim uređajem, specijalne kamere koji imaju svoju video karticu i sl.

Page 39: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

39

Predobrada slike

Slika dobivena sa kamere za računalni program je matrica točaka sa mnogo različitih vrijednosti. Mi želimo kao konačni rezultat dobiti jasno prepoznate oblike i boje, što je nemoguće iz početne slike. Kako bi računalna aplikacija mogla početi sa procesom prepoznavanja prvo je potrebno napraviti korake predobrade slike.

Ovi su procesi olakšani zahvaljujući filtrima za obradu iz paketa VisionLab koji nam je omogućio da isprobamo već poznate algoritme za predobradu slike. Kroz proces isprobani su u prošlom poglavlju opisani algoritmi, te se za naš proces najpogodnijim pokazao Canny algoritam za pronalaženje rubova.

Na slici je prikazan rezultat rada Canny algoritma u našem računalnom programu za prepoznavanje:

Slika 18 Aplikacija - Konture objekata

Kao što se jasno vidi iz slike, dobili smo rubove, ili konture objekata. Prednost ovog algoritma jest vrlo velika robusnost s obzirom na osvjetljenje, pozadinu, te sjene samih objekata što se pokazao kao velik problem za ostale algoritme.

Page 40: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

40

U prošlom je poglavlju opisan rad ovog algoritma, znamo da je potrebno zadati određene pragove na temelju kojih će ovaj algoritam odlučivati o detekciji rubova. U programu već su unaprijed zadani pragovi, ali ostavljena i mogućnost namještanja u slučaju velikih odstupanja osvjetljenosti scene.

Slika 19 Aplikacija - Određivanje pragova

Nakon obavljenog ovakvog procesa predobrade napravljen je velik korak u smjeru prepoznavanja objekata.

Page 41: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

41

Grupiranje objekata

Kada jednom imamo konture objekata obavljen je velik dio procesa predobrade. Međutim s ovakvom slikom još uvijek ne možemo započeti s prepoznavanjem objekata. Ono što još uvijek nije definirano jesu granice objekata. Naime, računalnom programu još uvijek ne može biti jasno je li na slici jedan objekt ili više njih.

Slika 20 Aplikacija - Dobivene konture objekata

Započnemo li prepoznavanje sa ovakvom slikom, računalna će aplikacija smatrati sve bijele točke dijelom jednog objekta.

Znači, prije procesa prepoznavanja moramo definirati granice svakog objekta. Taj ćemo zadatak obaviti u prošlom poglavlju opisanom metodom segmentacije. Ovdje će rješenje biti varijabilna segmentacija koja se koristi već dobivenim podacima iz Canny algoritma.

Page 42: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

42

Rezultati segmentacije prije prikazane scene:

Slika 21 Aplikacija - Rezultati segmentacije

Kao što je prikazano, računalni program će uz pomoć algoritama za segmentaciju moći odvojiti koje točke pripadaju kojem objektu, te će biti jasno koliko se objekata nalazi na slici.

U ovom ćemo koraku početi sakupljati informacije o objektima. U toku izvođenja samog algoritma, računalni program će početi i stvarati tablice o objektima. Svaka od točaka na slici biti će pripojena jednom od objekata, te ćemo tako dobiti tablicu točaka za svaki objekt.

S ovakvim informacijama možemo krenuti u prepoznavanje objekata.

Page 43: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

43

Prepoznavanje objekata

Postoje mnoge, u prošlom poglavlju opisane, metode za prepoznavanje objekata. Za ovaj računalni program iskušano je više metoda.

Od najznačajnijih istaknuo bih rad s Houghovom transformacijom za detekciju linija. Ova metoda, iako vrlo složena, u našem je slučaju dala nezadovoljavajuće rezultate. Prvi problem javio se kad je dobiven velik broj linija za svaku od linija na slici. To je otklonjeno traženjem sličnih koeficijenata smjera i odreska na ordinatnoj osi. Idući problem se javio s nemogućnošću određivanja gdje koja od linija pripada gdje sam zaključio da će ova metoda biti preosjetljiva te je odbačena kao moguće rješenje.

Metode uzorkovanja odbacili smo već unaprijed u teoretskom dijelu ovog rada, te sam pokušao iskoristiti metodu udaljenosti.

Promotrimo li segmentirane objekte iz karakterističnog skupa

Slika 22 Aplikacija - Segmentirani objekti

postaje očigledno kako svaki od oblika iz karakterističnog skupa ima na rubovima segmentiranog dijela drugačije odsječke. Na temelju ove spoznaje napravljen je jednostavan algoritam za prepoznavanje karakterističnog skupa. Riječ je o metodi koja se djelomično oslanja na metodu udaljenosti, ali je jednostavnija zahvaljujući već unaprijed poznatom skupu uzoraka.

Princip rada je potražiti slijedeće slučajeve za različite objekte: Krug – karakteristične točke nalaze se na svim središtima

kvadrata granice objekta Trokut – dvije od četiri točke na kvadratu granica objekta biti će

na istim koordinatama, tj. riječ je o istoj točci Pravokutnik/kvadrat – karakteristične točke neće odgovarati

nijednom od prethodnih slučajeva

Ova metoda pokazala se vrlo efektivna u većini slučajeva, no pojavilo se nekoliko posebnih slučaja kada su objekti krivo detektirani. Riječ je o slučaju kvadrata takve orijentacije da njegove karakteristične točke na

Page 44: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

44

kvadratu granice objekta odgovaraju krugu, znači nalaze se na središtima kvadrata granice objekta.

Slika 23 Aplikacija - Karakteristične točke

Kako se naš algoritam temelji na činjenici na kružnica posjeduje baš te karakteristične točke, ovu anomaliju nemoguće je izbjeći. Zbog toga smo pribjegli korištenju dodatnog algoritma kako bi potvrdili radi li se o zadanom objektu.

Opet ćemo potvrdu našeg prepoznavanja tražiti u geometriji predmeta. Već je rečeno da je skup predmeta prepoznavanja unaprijed zadan, pa tako možemo i tražiti geometrijsku potvrdu radi li se o nekom od tih predmeta.

Karakteristične točke predmeta, kao i središte već poznajemo, za potvrdu nalaze li se točke prepoznatog oblika na stvarnom predmetu potražit ćemo usporedbom. Upotrijebimo li poznate geometrijske definicije (za krug, kvadrat i trokut), možemo slijediti bridove i vidjeti leži li svaka od točaka naše konture na zamišljenom liku prepoznatog tipa

Slika 24 Aplikacija - Provjera geometrijskih definicija

Ovakvom metodom potvrdit ćemo pretpostavku o kojem se obliku radi. Ovdje uvodimo novi pojam, pojam sigurnosti. Sigurnost prepoznavanja nekog objekta jesti broj točaka na konturi koja odgovara geometrijskom opisu objekta za koji pretpostavljamo da smo ga prepoznali, izražen u postocima.

Na ovaj način obavljamo provjeru, a zapravo je riječ o još jednoj metodi prepoznavanja objekata (baziranoj na istim karakterističnim točkama). Ukoliko se pokaže da je sigurnost za neki drugi tip objekta iz karakterističnog skupa veća nego sigurnost za tip objekta koji smo pretpostavili prvom metodom (kao u slučaju sa kvadratom specifične orijentacije), reći ćemo da je

Page 45: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

45

napravljena pogreška u prvoj metodi prepoznavanja i uvažiti drugu pretpostavku.

Prepoznavanje boja

Prepoznavanje boja ostavljeno je kao konačni proces, kako bi bili sigurni da znamo gdje se koji objekt nalazi.

Nakon provedenog segmentiranja i prepoznavanja poznata nam je pozicija objekata, njegove karakteristične točke kao i središte. Sve što je potrebno učiniti jest potražiti vrijednosti piksela u središtu.

Programski paket delphi daje nam RGB vrijednosti, tj. vrijednosti za crvenu, zelenu i plavu boju u nekoj točci, analizom ovih vrijednosti dobivamo boju objekta.

Analizom ovih vrijednosti možemo ustanoviti o kojoj se boji radi:

if (r1>g1+20) and (r1>b1+20) then boja:='Crveno'; if (g1>r1+20) and (g1>b1+20) then boja:='Zeleno'; if (b1>r1+20) and (b1>g1+20) then boja:='Plavo'; if (r1>220) and (g1>220) and (b1>220) then boja:='Žuto'; if (r1>252) and (g1>252) and (b1>252) then boja:='Bijelo';

Kako bi dobili na robusnosti, prepoznavanje u jednoj točci nas ne zadovoljava nego program uzima još dodatne 2 proizvoljne točke unutar objekta te računa srednju vrijednost. Na ovaj način dodatno je smanjena mogućnost greške.

Page 46: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

46

Prikaz

Računalna snaga današnjih osobnih računala može izvoditi vrlo zahtjevne zadaće. Iako je rad sa slikama vrlo zahtjevan, prosječno računalo može u sekundi obaviti mnogo operacija.

U testiranim uvjetima računalo je obavljalo sve navedene operacije s brzinom od 5 i više sličica u sekundi. Ovakav rad dovoljno je brz da možemo smatrati da aplikacija radi u realnom vremenu tj. prikazuje nam svoj rad na video zapisu koji se kreće u realnom vremenu. Aplikacija će na video zapis dodati podatke o prepoznatim predmetima, njihovoj boji i lokaciji.

Slika 25 Aplikacija - Prikaz rezultata

Page 47: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

47

Upute za rad s aplikacijom

Instalacija

Računalni program za prepoznavanje zove se PREP. Prije početka rada s ovim računalnim programom potrebno je instalirati paket VisionLab. Riječ je o paketu baznih alata za predobradu slike koju ovaj program koristi.

Osim ovog paketa, sve što PREP zahtijeva jest ulazni uređaj (kameru) sa koje će preuzeti sliku scene. PREP je projektiran tako da može raditi sa bilo kakvim ulaznim uređajem koji ima Windows driver, tj. vidljiv je Video For Windows kontroli. Znači programu ulazni uređaj može biti bilo kakva ispravno instalirana usb kamera, ali i neka druga kartica sa video ulazom (na koju ćemo spojiti klasičnu analognu kameru).

Odabir ulaznog uređaja

Pri prvom korištenju programa bitno je odabrati ulazni uređaj i eventualno namjestiti njegove postavke, pogotovo ako imamo više ulaznih uređaja instaliranih na računalu.

Namještanje ulaznog uređaja vrši se pritiskom na tipku Kamera, koja se nalazi u Video izborniku.

Pregled scene i namještanje postavki

Početak rada programa bilo bi dobro započeti da Video izbornikom. Ovdje možemo pokrenuti preuzimanje slike sa ulaznog uređaja i pregled scene.

Program će nam prikazati slijed predobrade, segmentacije i prepoznavanje, te možemo odlučiti o pragovima canny algoritma, te brzini prepoznavanja u sličicama po sekundi.

Page 48: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

48

Rad programa i spremanje podataka za rad robota

Kad smo jednom namjestili sve potrebne postavke, možemo započeti sa prepoznavanjem. Prebacimo li se na izbornik Prepoznavanje, možemo pritisnuti tipku Prepoznavanje.

Ovdje će započeti proces prepoznavanja oblika sa svim zadanim postavkama, te će nam program spremati podatke o prepoznavanju za kasnijespajanje robota.

Kada smo zadovoljni prikupljenim podacima pritiskom na tipku Spremiprogram će spremiti podatke o sceni u robot.csv datoteku..

Slika 26 Aplikacija

Page 49: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

49

Zaključak

Već smo rekli da su računala već odavno ne samo ušla u proizvodni proces, već vrše i kontrolu samog procesa. U početku su ulazni parametri dolazili sa jednostavnih senzora, dok danas sve više koristimo napredne sustave kao što je i primjer vizijskog sustava obrađenog u ovom radu. Vizijski će nam sustav obraditi sliku nekog dijela procesa, a na računalnom je programu najzahtijevniji dio – obrada takvog ulaznog podatka i pravilna interpretacija slike.

Okosnica ovog rada bila je izrada takve računalne aplikacije, koja će prikazati rad vizijskog sustava. Tokom izrade računalne aplikacije opisane su sve poteškoće vezane za predobradu slike, pronalaženja granica predmeta, izlučivanja bitnih karakteristika do samog prepoznavanja.

Računalni programi slični ovom danonoćno pružaju informacije za upravljanje robotima u mnogim modernim industrijskim procesima. Dapače, uvjeti dobivanja slike u takvim industrijskim procesima su dovedeni do najviše razine, kao i kvaliteta ulaznih kamera. Znači, računalna aplikacija razvijena za ovaj primjer mora se baviti mnogo većom količinom nepravilnosti nego što bi to bilo u industrijskim uvjetima.

Page 50: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

50

Prilog – Izvorni kod aplikacije za prepoznavanje

unit prep;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtDlgs, ExtCtrls, Math, ComCtrls, GraphicFilters, Rotation, OleCtrls, jpeg, VLCommonFilter, VLCanny, VLGenericFilter, VLDSCapture, VLCommonDisplay, VLImageDisplay, VLCapture, VLFixedFilter, VLUniformNoise, VLBoxFilter, VLHoughLines, VLFindContours;

type TForm1 = class(TForm) PageControl1: TPageControl; VLGenericFilter1: TVLGenericFilter; VLCanny1: TVLCanny; VLCapture1: TVLCapture; VLFindContours1: TVLFindContours; TabSheet1: TTabSheet; Image4: TImage; Image1: TImage; TabSheet2: TTabSheet; Label1: TLabel; Label2: TLabel; Image2: TImage; Edit1: TEdit; VLImageDisplay3: TVLImageDisplay; VLImageDisplay2: TVLImageDisplay; Button2: TButton; Button1: TButton; Edit2: TEdit; VLImageDisplay1: TVLImageDisplay; ExitButton: TButton; ButtonGetImage: TButton; TrackBar1: TTrackBar; VLImageDisplay4: TVLImageDisplay; Button3: TButton; Label3: TLabel; Label9: TLabel; Label8: TLabel; Label6: TLabel; Label7: TLabel; Label11: TLabel;

Page 51: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

51

Label13: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label4: TLabel; Label5: TLabel; Label10: TLabel; Label12: TLabel; Button4: TButton; UpDown1: TUpDown; Label15: TLabel; Edit3: TEdit; Button5: TButton; Memo1: TMemo;

procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ExitButtonClick(Sender: TObject); procedure VLGenericFilter1ProcessData(Sender: TObject; InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer; var SendOutputData: Boolean); procedure ButtonGetImageClick(Sender: TObject); procedure VLGenericFilter2ProcessData(Sender: TObject; InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer; var SendOutputData: Boolean); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure VLFindContours1Contours(Sender: TObject; Contours: TVLContours); procedure TrackBar1Change(Sender: TObject); procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure Button5Click(Sender: TObject);

private { Private declarations } _StartDir:string; // kutevi CX1,CY1, CX2,CY2, CX3,CY3, CX4,CY4:integer; public { Public declarations } end;

type TRGBArray = array[0..32767] of TRGBTriple;

Page 52: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

52

PRGBArray = ^TRGBArray;

var Form1: TForm1; brojac,poz: integer; linkut,linudalj,lindup: Array of Real; duzine : array of array of real;

implementation

{$R *.dfm}

// procedure za oznacavanje prepoznatih likova na pocetnoj slici ///////////////procedure DrawTrokut(Bitmap:TBitmap; x1,y1,x2,y2,x3,y3,xT,yT,num:integer);begin Bitmap.Canvas.Brush.Style:=bsClear; Bitmap.Canvas.Pen.Color:=clFuchsia; // teziste Bitmap.Canvas.MoveTo(xT,yT-2); Bitmap.Canvas.LineTo(xT,yT+3); Bitmap.Canvas.MoveTo(xT-2,yT); Bitmap.Canvas.LineTo(xT+3,yT); // bridovi Bitmap.Canvas.Polygon([point(x1,y1),point(x2,y2),point(x3,y3)]); // redni broj Bitmap.Canvas.Font.Color:=clFuchsia; Bitmap.Canvas.TextOut(x1,y1-15,inttostr(num));end;

procedure DrawPravokutnik(Bitmap:TBitmap; x1,y1,x2,y2,x3,y3,x4,y4,xT,yT,num:integer);begin Bitmap.Canvas.Brush.Style:=bsClear; Bitmap.Canvas.Pen.Color:=clFuchsia; // teziste Bitmap.Canvas.MoveTo(xT,yT-2); Bitmap.Canvas.LineTo(xT,yT+3); Bitmap.Canvas.MoveTo(xT-2,yT); Bitmap.Canvas.LineTo(xT+3,yT); // bridovi Bitmap.Canvas.Polygon([point(x1,y1),point(x2,y2),point(x3,y3),point(x4,y4)]);

Page 53: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

53

Bitmap.Canvas.Font.Color:=clFuchsia; Bitmap.Canvas.TextOut(x1,y1-15,inttostr(num));end;

procedure DrawKrug(Bitmap:TBitmap; x1,y1,x2,y2,x3,y3,x4,y4,xT,yT,num:integer);begin Bitmap.Canvas.Brush.Style:=bsClear; Bitmap.Canvas.Pen.Color:=clFuchsia; // teziste Bitmap.Canvas.MoveTo(xT,yT-2); Bitmap.Canvas.LineTo(xT,yT+3); Bitmap.Canvas.MoveTo(xT-2,yT); Bitmap.Canvas.LineTo(xT+3,yT); // brid Bitmap.Canvas.Ellipse(x4,y1,x2,y3);

Bitmap.Canvas.Font.Color:=clFuchsia; Bitmap.Canvas.TextOut(x1,y1-15,inttostr(num));

end;

// pretvaranje HUE kuta u boju /////////////////////////////////////////////////function HueToColor(Hue:integer):string;begin case Hue of 0..25: Result:='Crvena'; 35..70: Result:='Zuta'; 100..170: Result:='Zelena'; 175..270: Result:='Plava'; 300..360: Result:='Crvena'; end;end;

////////////////////////////////////////////////////////////////////////////////// Zatvori program i pocisti memoriju //////////////////////////////////////////////////////////////////////////////////procedure TForm1.ExitButtonClick(Sender: TObject);begin Form1.Close;end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFree;end;

Page 54: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

54

procedure TForm1.VLGenericFilter1ProcessData(Sender: TObject; InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer; var SendOutputData: Boolean);begin // Capture Image. InBuffer.Data().ToBitmap( Image1.Picture.Bitmap ); // Update Screen.// Image1.Refresh();end;

procedure TForm1.ButtonGetImageClick(Sender: TObject);begin brojac := 0; VLCapture1.Enabled := True; Memo1.Clear;end;

procedure TForm1.VLGenericFilter2ProcessData(Sender: TObject; InBuffer: IVLImageBuffer; var OutBuffer: IVLImageBuffer; var SendOutputData: Boolean);begin InBuffer.Data().ToBitmap( Image4.Picture.Bitmap );end;

procedure TForm1.Button1Click(Sender: TObject);begin VLCapture1.ShowVideoSourceDialog();end;

procedure TForm1.Button2Click(Sender: TObject);begin Edit1.Text := FloatToStr(VLCanny1.HighThreshold); Edit2.Text := FloatToStr(VLCanny1.LowThreshold); brojac := 999; UpDown1.Enabled := False; VLCapture1.Enabled := True;end;

procedure TForm1.Button4Click(Sender: TObject);begin VLCanny1.HighThreshold := StrToInt(Edit1.Text); VLCanny1.LowThreshold := StrToInt(Edit2.Text);end;

procedure TForm1.VLFindContours1Contours(Sender: TObject; Contours: TVLContours);var

Page 55: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

55

I,J,K,L,LJ,N,O,X1,Y1,X2,Y2,Xs,Ys,pogtocka,R1,G1,B1,sigurnost : Integer; M,B,dist1,udalj,udaljd, sigkvadrat, sigkrug, sigtrokut : Real; ABitmap,BBitmap : TBitmap; T1,T2,T3: TPoint; tip,boja : string; linije : array of array of real; tocke : array of array of TPoint; polja : array of TRect; Clr: TColor;

begin ABitmap := TBitmap.Create(); ABitmap.Width := 320; ABitmap.Height := 240; BBitmap := TBitmap.Create(); BBitmap.Width := 320; BBitmap.Height := 240; L:=0; LJ:=0; O:=0; SetLength(polja,100); SetLength(tocke,50,500); label3.Caption := 'Nema predmeta'; label11.Caption := 'Nema predmeta'; label13.Caption := 'Nema predmeta'; label16.Caption := 'Nema predmeta'; label17.Caption := 'Nema predmeta'; label18.Caption := 'Nema predmeta'; label4.Caption := 'Nema predmeta'; label5.Caption := 'Nema predmeta'; label10.Caption := 'Nema predmeta'; label12.Caption := 'Nema predmeta';

for I := 0 to Contours.Count - 1 do begin BBitmap.Assign(Image1.Picture.Bitmap); if Contours[ I ].BoundRect.Left<>1 then if (Contours[ I ].BoundRect.BottomRight.x - Contours[ I ].BoundRect.TopLeft.x > 30 ) then if (Contours[ I ].BoundRect.BottomRight.y - Contours[ I ].BoundRect.TopLeft.y > 30) then begin O:=O+1; tocke[O,490].X := Contours[ I ].Count; polja[O]:=Contours[ I ].BoundRect; if( Contours[ I ].ContourType = ctOuter ) then ABitmap.Canvas.Pen.Color := clGreen else ABitmap.Canvas.Pen.Color := clBlue; for J := 0 to Contours[ I ].Count - 1 do

Page 56: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

56

begin if( J = 0 ) then begin ABitmap.Canvas.MoveTo( Contours[ I ][ J ].X, Contours[ I ][ J].Y ); x1 := Contours[ I ][ J ].X; y1 := Contours[ I ][ J ].Y; tocke[O,495].X:=0;tocke[O,495].Y:=0; tocke[O,496].X:=0;tocke[O,496].Y:=0; tocke[O,497].X:=9999;tocke[O,497].Y:=9999; tocke[O,498].X:=9999;tocke[O,498].Y:=9999; end else begin ABitmap.Canvas.Pen.Color := clGreen; x2:=Contours[ I ][ J ].X; y2:=Contours[ I ][ J ].Y; ABitmap.Canvas.LineTo( x2, y2 ); tocke[O,J]:=Contours[ I ][ J ]; if (x2 > tocke[O,495].x) then tocke[O,495]:= Point(x2,y2); if (y2 > tocke[O,496].y) then tocke[O,496]:= Point(x2,y2); if (x2 < tocke[O,497].x) then tocke[O,497]:= Point(x2,y2); if (y2 < tocke[O,498].y) then tocke[O,498]:= Point(x2,y2);

end; end; end; end;

ABitmap.Canvas.Pen.Color := clRed; ABitmap.Canvas.Brush.Style := bsClear; BBitmap.Canvas.Pen.Color := clRed; BBitmap.Canvas.Brush.Style := bsClear;

ABitmap.Canvas.Font.Color:=clBlack; BBitmap.Canvas.Font.Color:=clBlack; L:=0; Label8.Caption := IntToStr(O); Memo1.Lines.Append('Šifra, Tip, Boja, Pozicija x, Pozicija y, Sigurnost'); for I := 1 to O do begin ABitmap.Canvas.Rectangle(polja[I]); BBitmap.Canvas.Rectangle(polja[I]); ABitmap.Canvas.TextOut(polja[I].TopLeft.x,polja[I].TopLeft.y-12,'Predmet'+IntToStr(I));

Page 57: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

57

ABitmap.Canvas.ellipse(Round(tocke[I,495].x-2),Round(tocke[I,495].y+2),Round(tocke[I,495].x+2),Round(tocke[I,495].y-2)); ABitmap.Canvas.ellipse(Round(tocke[I,496].x-2),Round(tocke[I,496].y+2),Round(tocke[I,496].x+2),Round(tocke[I,496].y-2)); ABitmap.Canvas.ellipse(Round(tocke[I,497].x-2),Round(tocke[I,497].y+2),Round(tocke[I,497].x+2),Round(tocke[I,497].y-2)); ABitmap.Canvas.ellipse(Round(tocke[I,498].x-2),Round(tocke[I,498].y+2),Round(tocke[I,498].x+2),Round(tocke[I,498].y-2)); Xs:=Round((polja[I].TopLeft.x+polja[I].BottomRight.x)/2); Ys:=Round((polja[I].TopLeft.y+polja[I].BottomRight.y)/2); ABitmap.Canvas.ellipse(Round(Xs-2),Round(Ys+2),Round(Xs+2),Round(Ys-2)); Clr := BBitmap.Canvas.Pixels[Xs, Ys]; R1:=GetRValue(Clr); G1:=GetGValue(Clr); B1:=GetBValue(Clr); Clr := BBitmap.Canvas.Pixels[Xs+5, Ys+5]; R1:=Round((R1+GetRValue(Clr))/2); G1:=Round((G1+GetGValue(Clr))/2); B1:=Round((B1+GetBValue(Clr))/2); Clr := BBitmap.Canvas.Pixels[Xs-5, Ys-5]; R1:=Round((R1+GetRValue(Clr))/2); G1:=Round((G1+GetGValue(Clr))/2); B1:=Round((B1+GetBValue(Clr))/2); ABitmap.Canvas.TextOut(polja[I].TopLeft.x,polja[I].TopLeft.y-24,'R:'+IntToStr(R1)+' G:'+IntToStr(G1)+' B:'+IntToStr(B1)); tip:='KVADRAT';

if (sqrt(sqr(tocke[I,495].x-tocke[I,496].x) + sqr(tocke[I,495].y-tocke[I,496].y))<7) then begin T1:=point(Round((tocke[I,495].x+tocke[I,496].x)/2),Round((tocke[I,495].y+tocke[I,496].y)/2)); T2:=tocke[I,497]; T3:=tocke[I,498]; tip:='TROKUT'; end; if (sqrt(sqr(tocke[I,495].x-tocke[I,497].x) + sqr(tocke[I,495].y-tocke[I,497].y))<7) then begin T1:=point(Round((tocke[I,495].x+tocke[I,497].x)/2),Round((tocke[I,495].y+tocke[I,497].y)/2)); T2:=tocke[I,496];

Page 58: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

58

T3:=tocke[I,498]; tip:='TROKUT'; end; if (sqrt(sqr(tocke[I,495].x-tocke[I,498].x) + sqr(tocke[I,495].y-tocke[I,498].y))<7) then begin T1:=point(Round((tocke[I,495].x+tocke[I,498].x)/2),Round((tocke[I,495].y+tocke[I,498].y)/2)); T2:=tocke[I,496]; T3:=tocke[I,497]; tip:='TROKUT'; end; if (sqrt(sqr(tocke[I,496].x-tocke[I,497].x) + sqr(tocke[I,496].y-tocke[I,497].y))<7) then begin T1:=point(Round((tocke[I,496].x+tocke[I,497].x)/2),Round((tocke[I,496].y+tocke[I,497].y)/2)); T2:=tocke[I,495]; T3:=tocke[I,498]; tip:='TROKUT'; end; if (sqrt(sqr(tocke[I,496].x-tocke[I,498].x) + sqr(tocke[I,496].y-tocke[I,498].y))<7) then begin T1:=point(Round((tocke[I,496].x+tocke[I,498].x)/2),Round((tocke[I,496].y+tocke[I,498].y)/2)); T2:=tocke[I,495]; T3:=tocke[I,497]; tip:='TROKUT'; end;

if(sqrt(sqr(tocke[I,497].x-tocke[I,498].x) + sqr(tocke[I,497].y-tocke[I,498].y))<7) then begin T1:=point(Round((tocke[I,497].x+tocke[I,498].x)/2),Round((tocke[I,497].y+tocke[I,498].y)/2)); T2:=tocke[I,495]; T3:=tocke[I,496]; tip:='TROKUT'; end;

if (tocke[I,495].y > ys-10) and (tocke[I,495].y < ys+10) and (tocke[I,497].y > ys-10) and (tocke[I,497].y < ys+10) and (tocke[I,496].x > xs-10) and (tocke[I,496].x < xs+10) and

Page 59: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

59

(tocke[I,498].x > xs-10) and (tocke[I,498].x < xs+10) then tip:='KRUG';

//TRAZIMO sig KRUG if (tip = 'KRUG') or (tip = 'KVADRAT') then begin udaljd:=Round((polja[I].BottomRight.x-polja[I].TopLeft.x)/2); pogtocka:=1; for J := 0 to tocke[I,490].X - 1 do begin udalj:=sqrt(sqr(xs - tocke[I,J].x)+sqr(ys -tocke[I,J].y)); if (udalj >= udaljd-2) and (udalj <= udaljd+2) then pogtocka:=pogtocka+1; end; sigkrug:=(pogtocka/tocke[I,490].X)*100; end;// TRAZIMO sig KVADRAT// if (tip = 'KVADRAT') then begin pogtocka:=1; if tip = 'KVADRAT' then begin ABitmap.Canvas.MoveTo(tocke[I,495].x,tocke[I,495].y); ABitmap.Canvas.LineTo(tocke[I,496].x,tocke[I,496].y); ABitmap.Canvas.LineTo(tocke[I,497].x,tocke[I,497].y); ABitmap.Canvas.LineTo(tocke[I,498].x,tocke[I,498].y); ABitmap.Canvas.LineTo(tocke[I,495].x,tocke[I,495].y); end; if (tocke[I,495].x-tocke[I,496].x)<> 0 then m:=(tocke[I,495].y-tocke[I,496].y)/(tocke[I,495].x-tocke[I,496].x) else m:=0; b:=tocke[I,495].y-m*tocke[I,495].x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then pogtocka:=pogtocka+1; if (tocke[I,496].x-tocke[I,497].x)<> 0 then m:=(tocke[I,496].y-tocke[I,497].y)/(tocke[I,496].x-tocke[I,497].x) else m:=0; b:=tocke[I,496].y-m*tocke[I,496].x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then

Page 60: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

60

pogtocka:=pogtocka+1; if (tocke[I,497].x-tocke[I,498].x)<> 0 then m:=(tocke[I,497].y-tocke[I,498].y)/(tocke[I,497].x-tocke[I,498].x) else m:=0; b:=tocke[I,497].y-m*tocke[I,498].x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then pogtocka:=pogtocka+1; if (tocke[I,498].x-tocke[I,495].x)<> 0 then m:=(tocke[I,498].y-tocke[I,495].y)/(tocke[I,498].x-tocke[I,495].x) else m:=0; b:=tocke[I,498].y-m*tocke[I,498].x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then pogtocka:=pogtocka+1; sigkvadrat :=(pogtocka/tocke[I,490].X)*100; end;

// TRAZIMO sig TROKUT if (tip = 'TROKUT') then begin pogtocka:=1; begin ABitmap.Canvas.MoveTo(T1.x, T1.y); ABitmap.Canvas.LineTo(T2.x, T2.y); ABitmap.Canvas.LineTo(T3.x, T3.y); ABitmap.Canvas.LineTo(T1.x, T1.y); end; if (T1.x-T2.x)<> 0 then m:=(T1.y-T2.y)/(T1.x-T2.x) else m:=0; b:=T1.y-m*T1.x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then pogtocka:=pogtocka+1; if (T2.x-T3.x)<> 0 then m:=(T2.y-T3.y)/(T2.x-T3.x) else m:=0; b:=T2.y-m*T2.x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then pogtocka:=pogtocka+1; if (T3.x-T1.x)<> 0 then m:=(T3.y-T1.y)/(T3.x-T1.x) else m:=0; b:=T3.y-m*T3.x; for J := 0 to tocke[I,490].X - 1 do if (tocke[I,J].y>m*tocke[I,J].x+b-3) and (tocke[I,J].y<m*tocke[I,J].x+b+3) then

Page 61: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

61

pogtocka:=pogtocka+1; sigtrokut :=(pogtocka/tocke[I,490].X)*100; end;

if tip = 'TROKUT' then sigurnost := Round(sigtrokut); if tip = 'KRUG' then sigurnost := Round(sigkrug); if tip = 'KVADRAT' then sigurnost := Round(sigkvadrat);

if (tip='KVADRAT') and (sigkrug>sigkvadrat) then begin tip:='KRUG'; sigurnost:=Round(sigkrug); end; if (tip='KRUG') and (sigkvadrat>sigkrug) then begin tip:='KVADRAT'; sigurnost:=Round(sigkvadrat); end; if (tip='KVADRAT') and (sigtrokut>sigkvadrat) then begin tip:='TROKUT'; sigurnost:=Round(sigtrokut); end;

ABitmap.Canvas.TextOut(polja[I].TopLeft.x,polja[I].BottomRight.y,tip);

if (r1>g1+20) and (r1>b1+20) then boja:='Crveno';// if (r1<210) and (g1>210) and (b1<210) then boja:='Zeleno'; if (g1>r1+20) and (g1>b1+20) then boja:='Zeleno';// if (r1<210) and (g1<210) and (b1>210) then boja:='Plavo'; if (b1>r1+20) and (b1>g1+20) then boja:='Plavo'; if (r1>220) and (g1>220) and (b1>220) then boja:='Žuto'; if (r1>252) and (g1>252) and (b1>252) then boja:='Bijelo'; BBitmap.Canvas.TextOut(polja[I].TopLeft.x,polja[I].TopLeft.y-12,'Predmet'+IntToStr(I)); BBitmap.Canvas.TextOut(polja[I].TopLeft.x,ys,boja); BBitmap.Canvas.TextOut(polja[I].TopLeft.x,ys-12,tip);

Page 62: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

62

if i =1 then label3.Caption := 'Predmet 1: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =2 then label11.Caption := 'Predmet 2: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =3 then label13.Caption := 'Predmet 3: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =4 then label16.Caption := 'Predmet 4: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =5 then label17.Caption := 'Predmet 5: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =6 then label18.Caption := 'Predmet 6: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =7 then label4.Caption := 'Predmet 7: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =8 then label5.Caption := 'Predmet 8: '+tip+'Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =9 then label10.Caption := 'Predmet 9: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; if i =10 then label12.Caption := 'Predmet 9: '+tip+' Boja: '+boja+' Pozicija: x='+IntToStr(xs)+' y='+IntToStr(ys)+' Sigurnost: '+IntToStr(sigurnost)+'% '; Memo1.Lines.Append('Predmet '+IntToStr(i)+','+tip+','+boja+','+IntToStr(xs)+','+IntToStr(ys)+','+IntToStr(sigurnost)+'% '); end; VLImageDisplay1.DisplayBitmap( ABitmap ); VLImageDisplay4.DisplayBitmap( BBitmap ); ABitmap.Free(); BBitmap.Free();end;

procedure TForm1.TrackBar1Change(Sender: TObject);begin VLCanny1.HighThreshold := TrackBar1.Position; VLCanny1.LowThreshold := Round(TrackBar1.Position/2); Edit1.Text := FloatToStr(VLCanny1.HighThreshold); Edit2.Text := FloatToStr(VLCanny1.LowThreshold);end;

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

Page 63: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

63

begin VLCapture1.FramesPerSecond:=UpDown1.Position;end;

procedure TForm1.Button5Click(Sender: TObject);begin if FileExists(_StartDir+'robot.csv') then DeleteFile(_StartDir+'robot.csv'); Memo1.Lines.SaveToFile(_StartDir+'robot.csv');end;

end.

Page 64: Izjava - Ruđer Bošković Institute · slika 11 sustav udaljenosti - primjer 30 slika 12 metoda udaljenosti - slovo "c" 31 slika 13 metoda udaljenosti - slova "c" i "o" 31 slika

Vizijski sustav za prepoznavanje oblika Matija Mintas

64

Popis Literature

[1] Handbook of Computer Vision Algorithms in Image Algebra by Gerhard X. Ritter; Joseph N. Wilson, CRC Press, CRC Press LLC, 1996

[2] Amit, Yali; 2D Object Detection and Recognition Models, Algorithms, and Networks; The MIT Press, Cambridge Massachusetts, 2002

[3] Ritter, Gerhard & Wilson, Joseph; Computer Vision Algorithms in Image Algebra; CRC Press LLC, Bocca Ratton Florida, 2001

[4] http://en.wikipedia.org/wiki/Computer_vision

[5] David A. Forsyth and Jean Ponce (2003). Computer Vision, A Modern Approach, Prentice Hall. ISBN 0-12-379777-2.

[6] Horst Haußecker, Computer Vision and Applications, A Guide for Students and Practitioners, Academic Press, 2000