Genkendelse af landmarks



Relaterede dokumenter
Danmarks Tekniske Universitet

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

Opgaver om koordinater

Evaluering af Soltimer

Vejledning i brug af Gym-pakken til Maple

Danmarks Tekniske Universitet

Kasteparabler i din idræt øvelse 1

Bevægelses analyse med SkillSpector. Version 1.0 Sidste opdatering: 14/

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Skriftlig eksamen i Datalogi

Dokumentation af næsehorn der jager giraf der kører på en motorcykel

Billedbehandling. Processering af digitale billeder

Michael Jokil

Højere Teknisk Eksamen maj Matematik A. Forberedelsesmateriale til 5 timers skriftlig prøve NY ORDNING. Undervisningsministeriet

Eksempel på logistisk vækst med TI-Nspire CAS

Opgaver hørende til undervisningsmateriale om Herons formel

Rygtespredning: Et logistisk eksperiment

Dokumentation af programmering i Python 2.75

Optimale konstruktioner - når naturen former. Opgaver. Opgaver og links, der knytter sig til artiklen om topologioptimering

IFC Egenskaber. Mohammad Hussain Parsianfar s BYG DTU

DANMARKS TEKNISKE UNIVERSITET

GRAFIK & BILLEDEBEHANDLING

Lodret belastet muret væg efter EC6

Grønland. Matematik A. Højere teknisk eksamen

Geometri i plan og rum

Tallene angivet i rapporten som kronologiske punkter refererer til de i opgaven stillede spørgsmål.

Online billede filtrering

Rapport Bjælken. Derefter lavede vi en oversigt, som viste alle løsningerne og forklarede, hvad der gør, at de er forskellige/ens.

IDAP manual Analog modul

Mandelbrot smartphone applikation

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

Adobe Elements Lektion 2

P2-projektforslag Kombinatorik: grafteori og optimering.

Maple 11 - Chi-i-anden test

Første møde med skærmbilledet i After Effects 6,5 PRO Lidt om animering

Elements Lektion 3. Tosafoto Adobe Photoshop kursus

Maple på C-niveau. Indsættelse i formler

Grafisk Tekniker Digitalprint

DTU M.SC. SKRIFTLIG EKSAMEN Reviderede Spørgsmål

Opgaver til Maple kursus 2012

Stabilitet af rammer - Deformationsmetoden

Procedurer og funktioner - iteration og rekursion

Løsning af skyline-problemet

Lineære modeller. Taxakørsel: Et taxa selskab tager 15 kr. pr. km man kører i deres taxa. Hvis vi kører 2 km i taxaen koster turen altså

Reduktion af observationer med sort-hvid CCD kamera med påkoblet filterboks

Brug af de danske koordinatsystemer

Regneark II Calc Open Office

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Studieretningsprojektet i 3.g 2007

Redigering af Billeder i Picasa. Enkle forbedringer og justeringer.

På opdagelse i Mandelbrot-fraktalen En introduktion til programmet Mandelbrot

Armeringsstål Klasse A eller klasse B? Bjarne Chr. Jensen Side 1. Armeringsstål Klasse A eller klasse B?

Side 1 af 7

DM507 Algoritmer og datastrukturer

Rettevejledning, FP9, Prøven med hjælpemidler, endelig version

Deskriptiv statistik. Version 2.1. Noterne er et supplement til Vejen til matematik AB1. Henrik S. Hansen, Sct. Knuds Gymnasium

Navn :..Læreren... Underskrift :... Bord nr. :... Ogave Svar

AT-1. Oktober 09 + December 10 + November 11. CL+JW. Stenhus. side 1/5

Hvad er matematik? C, i-bog ISBN L&R Uddannelse A/S Vognmagergade 11 DK-1148 København K Tlf: info@lru.

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

6. Regression. Hayati Balo,AAMS. 1. Nils Victor-Jensen, Matematik for adgangskursus, B-niveau 1

Billedbehandling med GIMP

Det sprogpædagogiske kørekort 2012/2013 Modul 7 Billedbehandling

DDD Runde 2, 2015 Facitliste

Projekt - Valgfrit Tema

Bordfodbold. Morten M. Lindahl, s Morten Laursen, s Jens S. Olsen, s011498

Talrækker. Aktivitet Emne Klassetrin Side

Løsning af møntproblemet

Årsplan for matematik 4.kl udarbejdet af Anne-Marie Kristiansen (RK)

Intoduktion til Billedbehandling F13. Statistisk Grænseværdiafskæring. Segmentering

Hermed vejledning i hvordan man lægger billeder ind til brug for hjemmesiden.

for matematik på C-niveau i stx og hf

Fig. 1 Billede af de 60 terninger på mit skrivebord

Kvadrant - instrumentbeskrivelse og virkemåde

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Faglige delmål og slutmål i faget Matematik. Trin 1

Vejledende årsplan for matematik 5.v 2009/10

Autonome robotsystemer Kursus 31385

HTX, RTG. Rumlige Figurer. Matematik og programmering

Matematik, basis. Undervisningen på basisniveau skal udvikle kursisternes matematikkompetencer til at følge undervisningen

Lærervejledning Modellering (3): Funktioner (1):

Dynamisk programmering

T A L K U N N E N. Datasæt i samspil. Krydstabeller Grafer Mærketal. INFA Matematik Allan C

GEOMETRI I PLAN OG RUM

Abstrakte datatyper C#-version

VEJLEDNING TIL PRINTUDLÆG

Funktioner generelt. for matematik pä B- og A-niveau i stx og hf Karsten Juul

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Søren Christiansen

Matematik 3. klasse Årsplan

i tredje sum overslag rationale tal tiendedele primtal kvotient

Allan C. Malmberg. Terningkast

Prepress Serigrafi Grafisk Tekniker Grundforløb. Opgave 3: T shirt i flere farver

Dynamisk programmering

Kapitel I til Grafisk design. Kromatisk/akromatisk opbygning af gråkomponenten

Transkript:

Genkendelse af landmarks AM/AMP23 - Billedbehandling og -analyse Michael Vestergaard Jessen (051280) Jimmy Alison Jørgensen (301179) Vejleder: Ivar Balslev Mærsk Mc-Kinney Møller intituttet for Produktionsteknologi Syddansk Universitet - Odense 1. Juli 2004

Indhold 1 Indledning 3 1.1 Problemformulering........................... 3 1.2 Kravspecifikation............................ 3 2 Analyse 5 2.1 Landmark struktur........................... 5 2.1.1 Unikt id i Elipser........................ 5 2.1.2 Unikt id i firkanter....................... 6 2.2 Firkant detektering........................... 7 3 Design 8 3.1 Design af landmark........................... 8 3.2 Oversigt................................. 8 3.3 Adaptive Threshold........................... 9 3.4 Kant segmentering........................... 10 3.5 Detektion af firkanter.......................... 10 3.6 Tilpasning af grid til perspektiv..................... 11 3.7 Identificering af landmark........................ 12 4 Implementation 14 4.1 Adaptive Threshold........................... 14 4.2 Kant segmentering........................... 15 4.3 Detektering af firkanter......................... 15 4.4 Tilpasning af grid til perspektiv..................... 17 4.5 Identificering af landmark........................ 18 5 Test og evaluering 19 5.1 Detektering............................... 19 5.1.1 Rotation............................. 19 5.1.2 Perspektiv............................ 19 5.1.3 Størrelse............................ 22 5.2 Lokalisering............................... 23 5.3 Kompleksitet.............................. 23 6 Konklusion 26 A Indhold af CD 28 2

Kapitel 1 Indledning Denne rapport er vedlagt på CD en i PDF format, hvis billeder eller grafer skulle være utydelige. Yderligere er grafer, testdata, kildekode og billeder vedlagt på denne CD. 1.1 Problemformulering Et landmark kan benyttes til at udlede information om 3D postionerne i et billede. Billedanalyse kan identificere landmarks og udlede dennes position udfra et reference punkt. Et sådan system kan benyttes til kalibrering og navigering af kamera. Der ønskes designet et landmark mønster som kan overgå det eksisterende design benyttet på MIP, se figur 1.1. Ved overgå forstås at landmarket kan genkendes ved ringere opløsninger. Et program til genkendelse af landmarket skal implementeres og ved testning skal funktionalitet og præcision påvises. Figur 1.1: Eksisterende design af landmark 1.2 Kravspecifikation 1. Ved vinkler ned til 30 grader mellem landmark planet og kamera-vektoren skal det være muligt at udføre identificering. 3

Kapitel 2 Analyse Dette afsnit vil dokumentere analysen af problemet formuleret i afsnit 1. Afsnittet opridser ideer til strukturer af landmarks, strategier og metoder til genkendelse heraf, samt kendte og brugte metoder. 2.1 Landmark struktur Stukturen af landmarket er kritisk, da denne har stor betydning for kompleksiteten af systemet. Generelt ønskes et hurtigt system dvs. hurtig genkendelse af landmarket. Det er derfor oplagt at vælge en simpel landmark struktur således genkendelsen ikke bliver for kompleks. Elipser, trekanter og rektangler er typiske eksempler på simple strukturer. 1. Et landmark skal kunne genkendes hurtigt. 2. Identificering af flere landmarks i et billede kræver at hvert landmark har et unikt mønster. F.eks kan identificering foretages ved antallet af blobs inden i landmarket. I dette projekt har vi valgt at fokusere på landmarks som elipser og rektangler. Ved sammenligner af de to strukturer er der egenskaber som både taler for og imod. For det første er elipsen ikke rotations invariant, hvilket firkanten delvist er. Fordelen ved dette ligger i at man ikke skal stille yderligere strukturer til rådighed for at gøre strukturen rotations invariant. Informationen ligger nemlig allerede i strukturen. Ulempen kan være at detekteringen bliver det mere kompleks. 2.1.1 Unikt id i Elipser En elipse har ikke nogen orientering. Figur 2.1 viser hvordan rotation af et eliptisk landmark ikke har betydning for identificeringen. Antallet af blobs i elipsen kunne bruges til id. Dette er simpelt men størrelsen af elipsen vil stige hurtigt som antallet af unikke landmarks stiger. Se figur 2.2. Denne metode er derfor begrænset til meget få unikke landmarks, omkring 6-8 stk. Desuden vil naturligt forekomne elipser i et billede også blive genkendt hvis ikke der stilles krav til positionen af blobs i elipsen. Istedet kunne man benytte en struktur inden i elipsen til at orientere denne, hvorefter positionen og antallet af blobs i elipsen kan benyttes til at udgøre det unikke id. I 5

KAPITEL 2. ANALYSE 2.1. LANDMARK STRUKTUR Figur 2.1: elipserne a og b er ens. c og d er ens. Figur 2.2: En simpel metode til at give eliptiske landmarks et unikt id. figur 2.3 bruges en bid af osten til orientering og hver blob i elipsen udgør et bit i et binært mønster. Antallet af kombinationer kan da beskrives ved 2 n, hvor n er antallet af blobs. Denne metode er hensigtmæssig hvor et stort antal kombinationer er ønsket uden de store tab i størrelse. Ulempen er at man skal kunne skelne ostestrukturen fra de øvrige blobs, hvilket kan blive komplekst når landmarket bliver mindre. Figur 2.3: Elipsen orienteres og et binært mønster bruges til at angive det unikke id. 2.1.2 Unikt id i firkanter Firkanter er i sig selv delvist rotations invariante. Det kan man overbevise sig om ved at rotere en firkant for derefter at sammenligne denne med den ikke roterede firkant. Det vil være muligt at se forskel på disse med mindre rotationen er foretaget med multiplum af π 2. Strukturer i firkanter til beskrivelse af deres id, kan bygges op på samme måde som for elipser. Dog ville en udnyttelse af firkantens delvise retningsorientering kunne spare en for osten diskuteret i forrige afsnit. Barcodes eller Data matrix har været omkring i et stykke tid. Disse er typisk firkantede med en eller anden form for detekterings mulighed som f.eks. en L formet kant. Figur 2.4 viser 2 eksempler på 2D barcodes. 6

KAPITEL 2. ANALYSE 2.2. FIRKANT DETEKTERING Figur 2.4: Eksempler på 2D barcodes. 2.2 Firkant detektering En fremgangsmåde kunne være at finde hjørner i billedet. Hvis fire hjørner passer sammen, danner disse en rektangel. 3 typisk brugte metoder til hjørne genkendelse er testet i [2]. Alghoritmerne presenteret var PLESSEY, SUSAN 1 og WANG-BRADY. De blev alle testet op imod en lokal 1D Hough metode, hvor parameter ligningen var: x sin(θ) + y cos(θ) = 0 (2.1) Metoden benytter et vindue af en passende pixel størrelse til at definere et lokalt koordinatsystem hvor centrum pixel er (0, 0). Hvis centrum af vinduet er placeret over et hjørne vil 1D Hough transformationen være istand til at detektere 2 lige linjer. Testen fandt SUSAN som den hurtigste hvorefter WANG-BRADY og den lokale 1D Hough metode kom. Alle fire undtagen PLESSEY metoden viste sig egnede til realtime systemer. SUSAN, WANG-BRADY og PLESSEY metoderne har den ulempe at de ikke finder informationer omkring hjørne orientering samt hjørne vinkel. Dette er vigtige informationer når vi ønsker at detektere firkanter som sammenhængende hjørne punkter. Istedet for at detektere hjørner direkte kunne man dele metoden op således man først fandt linierne i et billede. Hvorefter man beregnede hjørnerne som skæringer mellem linierne. Linie detektering kan gøres effektiv nok til at bruges i realtime systemer. Litteratur [3] tester 7 forskellige metoder til at finde linier i et billede. Standard Hough transform er klart den ringeste af de 7 metoder. Hvorimod Burns eller gradient Hough metoden klarer sig rimelig godt. 1 SUSAN og PLESSEY alghoritmerne er beskrevet i detalje i [4] 7

Kapitel 3 Design 3.1 Design af landmark I analyse afsnittet blev gennemgået nogle mulige design af landmarks. Valget er faldet på et kvadratisk landmark indeholdende et mønster i form af en bitmatrice. Mønsteret angiver det unikke id af et landmark ved hjælp af en binære værdi, hvor en plads i matricen svarer til 1 ved et sort felt og 0 ved hvid. Design af et sådan landmark er vist på figur 3.1(a), hvor de 2 sorte felter til venstre og det hvide (tomme) felt øverst til højre er nødvendige for at sikre orientationen af mønsteret. De resterende felter angiver hver deres bitnummer. (a) Landmark design med 6 bit (b) Landmark med id 21 Figur 3.1: Et eksempel på et mønster er vist på figur 3.1(b), hvor id et er udregnet ved: 3.2 Oversigt 2 0 + 2 2 + 2 4 = 21 (3.1) Figur 3.2 viser det flow vi har i vores program. Som det kan ses har vi valgt en traditionel bottom-up kontrol strategi til problemet. Først preprocesseres billedet med en 8

KAPITEL 3. DESIGN 3.3. ADAPTIVE THRESHOLD adaptiv threshold algoritme. På det binære billede udføres segmentering ved simpel kant detektering. Hvert segment eller region defineres ved en liste af kant punkter. For hvert segment som findes i billedet udføres linie detektering. En standard Hough eller gradient Hough metode benyttes til linie detekteringen. De segmenter hvis linie antal ikke er 4 filtreres fra her. Hjørnerne beregnes udfra liniernes ligninger. Igen filtreres de segmenter fra hvis antal af hjørne ikke er 4. En simpel tilpasning af hjørnerne foretages udfra det binære billede. En firkant er nu detekteret og der skal undersøges om denne er et landmark. En 5 5 matrice transformeres over i firkanten og for hver celle undersøges på det binære billede hvorvidt denne er sort eller hvid. Identificering foretages og segmenter hvor usikkerheden er høj filtreres fra. Figur 3.2: Flow 3.3 Adaptive Threshold Vi får som input et grayscale billede, hvor det er nødvendigt at konvertere dette til et binært billede for senere at kunne blobdetektere. Dette gøres ved hjælp af adaptive thresholding, der iterativt finder en fornuftig thresholdværdi. Den optimale thresholdværdien findes ved hjælp af følgende formler: T 1 = 1 2 [ c=t0 c=0 T 0 = c=c max c=0 c=t 0 ch(c)/ c=0 c=c max ch(c)/ H(c) + c=0 c=c max c=t 0+1 H(c) (3.2) c=c max ch(c)/ c=t 0+1 ] H(c) (3.3) hvor T 0 er den gennemsnitlige gråtoneværdi af pixelerne i billedet. H er histogrammet for billedet. T 0 findes ved at summere antallet af en bestem gråtoneværdi, H(c), ganget med dennes gråtoneværdi, c og dele med summen af antallet af hver enkelt gråtoneværdi. T 1 kan bedst beskrives ved øvre og nedre middelværdi hvor T 0 er værdien der deler øvre og nedre. T 0 er den værdi der skal bruges når værdien af T 1 findes, som er en god værdi til adaptive threshold. For at gøre værdien bedre kan formlen for 9

KAPITEL 3. DESIGN 3.4. KANT SEGMENTERING T 1 bruges igen, hvor T 0 erstattes af T 1 fundet i iterationen før. Alle pixels med værdier over thresholdværdien T 1 gøres hvide og dem under gøres sorte i det endelige billede. 3.4 Kant segmentering Vi har valgt at udføre segmentering på det binære billede. Vi ønsker at finde samtlige punkter i den ydre kontur af segmentet. Vi søger i det binære billede indtil vi lander på en 8-connected ydre kant pixel. Dvs. en pixel hvor tre kriterier er opfyldt: 1. Den har en sort nabo pixel dvs. 8-connected nabo. 2. Den er hvid. 3. Den er ikke blevet besøgt før. Herefter følger vi konturen rundt på 8-connectede ydre kant pixeler og afmærker dem som besøgt. Når der ikke er flere eller vi er nået tilbage til den første pixel er et segment defineret og segmentet forsøges genkendt som landmark af de næste faser. Hvis segmentet er et landmark markeres alle pixels i landmark segmentet som besøgt og søgningen fortsætter hvor den slap, indtil alle pixels er blevet besøgt. 3.5 Detektion af firkanter Vi har valgt at basere vores firkantdetektor på liniedetektering. Udfra kendskabet af linier i billedet kan hjørnerne på firkanterne beregnes. I tidligere faser er billedet blevet delt ind i regioner hvor informationer om kanter er tilgængelige. Ved at benytte firkant detektering på kanten af regionen alene spares en del beregninger. Som liniedetektor er Burns metode valgt, se afsnit 2.2. og g y. Gra- For hver kant pixel p = (x, y) i billedet beregner vi gradienterne: g x dienterne og p benyttes i ligning 3.4 til at beregne θ som igen benyttes i ligning 3.5 til at beregne s. θ = tan2 1 ( g y, g x ) (3.4) I tilfælde hvor g x er nul, dvs. lodret linie, evaluerer θ til π 3 π 2 eller 2 pga. division med nul. s = x sin(θ) + y cos(θ) (3.5) For hvert beregnet parametersæt (θ, s) inkrementeres Hugh space med en værdi beregnet i ligning 3.6. ( g/ y)2 + ( g/ x) 2 (3.6) Linierne i billedet vil findes som de mest markante maksima i houghspace. Hvis der findes fire linier for en region, er dette et potentielt landmark og skæringer mellem disse linier beregnes ved ligning 3.7. x = y = sin(θ 2 ) s 1 sin(θ 1 ) s 2 cos(θ 2 ) sin(θ 1 ) + cos(θ 1 ) sin(θ 2 ) cos(θ 2 ) s 1 cos(θ 1 ) s 2 cos(θ 2 ) sin(θ 1 ) + cos(θ 1 ) sin(θ 2 ) (3.7) 10

KAPITEL 3. DESIGN 3.6. TILPASNING AF GRID TIL PERSPEKTIV Hvis der beregnes fire skæringer har vi fundet et potentielt landmark og der skal laves en identifikation af denne. Lokale maxima i houghspace findes ved threshold. En for lille threshold vil resultere i at for mange linier detekteres. En for stor vil resultere i for få linier. Den korrekte threshold værdi er variende og er især afhængig af dimensionerne på regionen og den maksimale værdi i houghspace. F.eks. vil en aflang firkant afbilledet i houghspace havde to meget kraftige og to forholdsvist svage lokale maxima, mens et kvadrat vil havde fire næsten lige kraftige lokale maxima. I første tilfælde er en lavere threshold værdi nødvendig i forhold til andet tilfælde. Det har vist sig at beregning af threshold værdien udfra ligning 3.8 giver gode resultater. t val = h max (0.75 h max 2500 abs(dim height dim width ) dim height + dim width ) (3.8) hvor h max er den maksimale værdi fundet i houghspace og dim er dimensionen af den rektangel som omslutter regionen. At forvente at kun 4 linier detekteres hver gang ville være naivt. Derimod kan det forventes at de fleste af de detekterede linier ligger meget tæt på hinanden.ved at sortere linierne med θ som vægt vil grupper af linier som egentlig kun beskriver en linie komme til at ligge indenfor samme smalle interval. Grupperne kan nu let approksimeres til en linie, ved gennemløb af den sorterede liste. 3.6 Tilpasning af grid til perspektiv Når vi har fundet en kandidat til et landmark, tilpasser vi et grid til perspektivet af den fundne kandidat. Grid et angiver afgænsningen af de forskellige felter. Fordelen ved at transformerer grid et fremfor selve billedet, der indeholder kandidaten, er at transformationen af et billede vil tage meget længere tid end at transformerer de få punkter et grid består af. Derudover kan information gå tabt under transformering af et billede. Fremgangsmåden er at transformere et kvadratisk grid over i en vilkårlig firkant (kvadrat med perspektiv transformation), der er beskrevet af de 4 hjørnepunkter kandidaten har. En koordinat tranformation kan repræsenteres ved en 3x3 matrix, der transformerer kilde koordinater (x, y, 1) over i destination koordinaterne (x, y, w). Dette er opstiller herunder: x y w = m 0,0 m 0,1 m 0,2 m 1,0 m 1,1 m 1,2 m 2,0 m 2,1 m 2,2 x y 1 (3.9) hvor w kan bruges hvis der skal transformeres tilbage (ved at dele x og y med w). Dette har vi dog ikke behov for, og transformationen af koordinater kan opskrives som følger: x = m 0,0 x + m 0,1 y + m 0,2 y = m 1,0 x + m 1,1 y + m 1,2 (3.10) Med en transformationsmatrix er det muligt at perspektivere et grid, og dermed tilpasse det til et landmark i et billede. Figur 3.3 viser et landmark med et pålagt tranformeret grid. Bitmatricen i dette landmark er nu veldefineret, og det unikke id kan udledes. Mere om dette i afsnit 3.7. 11

KAPITEL 3. DESIGN 3.7. IDENTIFICERING AF LANDMARK Figur 3.3: Landmark med grid 3.7 Identificering af landmark Med et perspektivtransformeret grid lagt ned på et landmark er det muligt at aflæse om hvert felt er sort eller hvidt. Grid et afgænser hvert felt, og ud fra denne afgrænsning kan bitværdien for hvert felt udledes. Ved at aflæse hver pixel i et felt og afgøre om der er flest sorte eller hvide kan en position i en matrice svarende til positionen i grid et sættes til enten hvid eller sort. Det kan ikke forventes at alle pixels i et felt har samme farve, og derfor må man acceptere en vis fejl, og f.eks. godkende et felt som hvidt, hvis der er 60% hvide pixels. Betragt figur 3.3, hvor følgende matrix kan opstilles: hvid hvid hvid sort sort hvid sort hvid sort Denne matrix skal dog ikke godtages jævnfør orientations-sikring fra afsnit 3.1. Der er dog imidlertidig ikke noget galt med dette landmark, da det blot er roteret. Hvis en opbygget farve-matrix ikke bliver godkendt i første omgang er det nødvendigt at rotere denne og forsøge igen. Ved en rotation med uret opnås følgende matrix: sort sort hvid hvid sort hvid sort hvid hvid (3.11) Denne kan godtages da position (1, 1) og (3, 1) i matricen er sorte og position (1, 3) er hvid. Det unikke id kan nu beregnes ved at betragte de satte bits, dvs.: sorte felter sorte felte brugt til orientations-sikring Id et kan nu udregnes på følgende måde: n=s id = 2 bitnr[n] s = antal satte bit (3.12) n=0 hvor bitnummeret er givet som følger jf. figur 3.1(a), på side 8: sort bit3 hvid bit0 bit2 bit5 sort bit1 bit4 12

KAPITEL 3. DESIGN 3.7. IDENTIFICERING AF LANDMARK Id for matricen i ligning 3.11 kan nu beregnes: id = 2 2 + 2 3 = 12 hvilket er det korrekte id for dette landmark. Et landmark kan være roteret på en sådan måde så en enkelt rotation af matricen ikke er tilstrækkelig. Det er muligt at skulle rotere op til 3 gange, hvorefter alle mulige rotationer vil være gennemgået. Hvis der efter 3 rotationen endnu ikke er fundet id kan det pågældende landmark ikke genkendes. 13

Kapitel 4 Implementation Vi vil i dette kapitel beskrive implementationen af et program til genkendelse af landmarks, som beskrevet i forrige kapitel. Vi har valgt at foretage implementationen i Java, og har brugt et allerede eksisterende billedebehandlings framework til repræsentation af billeder og GUI. Vi har brugt JIU - The Java Imaging Utilities, hvor mere information omkring dette kan findes på http://jiu.sourceforge.net/. Ud over GUI en har vi også brugt nogle enkelte funktioner, hvor der i de senere afsnit vil blive gjort opmærksom på disse når de bruges. Vi vil gennemgå implementationen af følgende dele: Adaptive Threshold Kant segmentering Gradient Hough og standard Hough til detektion af firkanter Perspektivering af grid Identifikation af landmark 4.1 Adaptive Threshold Implementationen af adaptive threshold er placeret i filen ThresholdUtil.java, hvor thresholdværdien udregnes ved hjælp af ligning (3.2) og (3.3). Fremgangsmåden er vist i algoritme 1. Algoritme 1 Adaptive Threshold Require: image is Grayscale 1: hist create histogram from image 2: calculate T 0 using equation (3.2) 3: error 1 4: while large error do 5: calculate T 1 using equation (3.3) 6: error abs(t 1 T 0 ) 7: T 0 T 1 8: threshold image using T 0 14

KAPITEL 4. IMPLEMENTATION 4.2. KANT SEGMENTERING Histogrammet laves ved at benytte klassen Histogram1DCreator fra JIU, der kan generere et histogram ud fra et gråtonebillede. T 0 bruges i udregningen af T 1 og sættes derfor lig T 1 i hver iteration, så den er opdateret og kan bruges i næste iteration. Der itereres til et fixpunkt for thresholdværdien opnås, dvs. at værdien ikke ændrer sig betragteligt i løbet af 2 efterfølgende iterationer (når error bliver meget lille, f.eks. 10 10 ). T 0 fra ligning (3.2) og algoritme 1 udregnes som vist i algoritme 2, hvor en for-løkke summerer henholdsvis c H(c) og H(c). Ved at dividere disse fås T 0. Algoritme 2 Beregn T 0 1: sum, histsum 0 2: for i = 0 to maximum histogram value (255) do 3: sum sum + hist[i] 4: histsum histsum + hist[i] 5: T 0 sum / histsum T 1 fra ligning (3.3) og algoritme 1 udregnes som vist i algoritme 3, hvor summeringen igen foregår ved hjælp af for-løkker. Her er udregningen delt op i en high og low del, hvor T 0 bruges som opdeling af high og low. En for-løkke bruges til at beregne low ved at køre fra 0 til T 0, og en anden for-løkke beregner high ved at køre fra T 0 til den maximale histogramværdi. Ud fra high og low beregnes T 1. Algoritme 3 Beregn T 1 1: sum, histsum 0 2: for i = 0 to T 0 do 3: sum sum + hist[i] 4: histsum histsum + hist[i] 5: low sum / histsum 6: sum, histsum 0 7: for i = T 0 to maximum histogram value do 8: sum sum + hist[i] 9: histsum histsum + hist[i] 10: high sum / histsum 11: T 1 1 (low + high) 2 4.2 Kant segmentering I afsnit 3.4 blev design af kant detekteringen gennemgået. Algoritme 4 beskriver i pseudo kode hvordan kant detekteringen implementeres. Metoden eksekveres serielt med resten af faserne. Dvs. hver gang en region er detekteret gemmes tilstanden i current (linie 9 og 10) og regionen retuneres for derefter at blive transformeret og genkendt af de næste faser. Når den pågældende region enten er blevet kaseret eller identificeret, genoptages søgningen af regioner fra current. Kant segmenteringen er implementeret i filen BorderExtract.java. 4.3 Detektering af firkanter To metoder til detektering af firkanter er blevet implementeret. Disse er baseret på standard Hough metoden (STH) og Gradient Hough(GH) metoden, og er implementeret i filerne HughUtil.java og GradientHugh.java. 15

KAPITEL 4. IMPLEMENTATION 4.3. DETEKTERING AF FIRKANTER Algoritme 4 Kant segmentering Require: biimage - is a bilevel image Require: current - is a point that indicates the current position 1: for y = current.y to biimage.height do 2: for x = current.x to biimage.width do 3: if Point (x, y) is not visited AND is white AND is Border then 4: r create a new region 5: add (x, y) to r.border 6: while r has unvisited points p do 7: add p s 8-connected unvisited border points to r.border 8: mark these as visited 9: current.x x 10: current.y y 11: return region 12: mark (x, y) as visited 13: current.x 0 14: return null Metoderne har en del til fælles. Begge benytter en mapping over i Houghspace 1 og begge søger efter lokale maxima i Houghspace for at identificere linier. Den eneste forskel ligger i hvordan Houghspace inkrementeres. Standard Hough algoritmen er vist i 5, hvor inkrementering foretages med værdien 1. I Gradient Hough algoritmen 6 benyttes beregnede gradient informationer udfra gråtone billedet til at indeksere Houghspace. Dette resulterer i en mindre kompleks algoritme dvs. hurtigere. Algoritme 5 Standard Hough metode Require: it - an iterator of border points Require: bounds - a bounding rectangle of the border Require: steps - the resolution of the angle in Houghspace 1: N max value for s 2: Houghspace create new steps N matrix 3: for points it do 4: for step = 0 to steps do 5: calculate θ then s 6: increment Houghspace in (θ, s) by 1 7: lines transform lokal maxima in Houghspace to lines Algoritme 6 Gradient Hough metode Require: grayimage - the blurred original image Require: it - an iterator of border points Require: bounds - a bounding rectangle of the border 1: N max value for s 2: Houghspace create new steps N matrix 3: for points it do 4: calculate θ from gradient information then s 5: increment Houghspace in (θ, s) by ( G x )2 + ( G y )2 6: lines transform lokal maxima in Houghspace to lines Linierne findes som lokale maxima i Houghspace. Vi foretager en threshold af Houghspace hvor threshold værdien er afhængig af den maximale værdi i Houghspace og dimensionen af regionens bounding rectangle, som beskrevet i afsnit 3.5. 1 Gradient Hough benytter et float Houghspace hvorimod standard Hough benytter et integer 16

KAPITEL 4. IMPLEMENTATION4.4. TILPASNING AF GRID TIL PERSPEKTIV Grupperingen af linier foretages på den sorterede liste som vist i algoritme 7. Betingelsen groups with på linie 4 realiseres ved at en linie har et vinkel interval omkring sig. Hvis en anden linie findes i dette interval kan en gruppering findes sted. Algoritme 7 Gruppering og valg af linier Require: set - a set of detected lines sorted by θ 1: lines create list 2: last F IRST (set) 3: for l set in order do 4: if l groups with last then 5: last avg(last, l) 6: else 7: add last to lines 8: last l 9: add last to lines 10: return lines 4.4 Tilpasning af grid til perspektiv Tilpasning af grid til et landmark med perspektiv er implementeret i Grid.java og TransformUtil.java. Et grid objekt indeholder en matrice med punkter, der angiver krydsningspunkterne i et grid, som angivet herunder: matrix[1][1] matrix[1][2] matrix[1][n] matrix[2][1] matrix[2][2]..... matrix[n][1] matrix[n][n] Punkterne er pixels i et billede, hvorved man kan transformere disse punkter direkte og derved angive opdeling af felterne i et landmark. Kanten af et landmark bliver også delt op i felter, da transformeringen derved gøres mere simpel (hjørnerne af et grid kan transformeres direkte over på et potentielt landmark). Ved oprettelse af et grid objekt angives startpunktet, hvor matrix[1][1] sættes til dette pixelpunkt. Ydermere angives pixelstørrelse mellem hvert punkt, svarende til størrelsen af hvert felt, f.eks. antal pixels mellem matrix[1][1] og matrix[1][2]. Desuden angives antallet af felter der ønskes, svarende til n 1. Opbygningen foretages som i algoritme 8. Algoritme 8 Grid konstruktion matrix array of array of point of length n of length n for y = 0 to n do for x = 0 to n do px startpoint + x * size of field py startpoint + y * size of field matrix[x][y] point(px,py) Der opbygges et kvadratisk grid, der kan transformeres alt efter hvilke hjørner der er fundet for et landmark, og alt efter hvordan det landmark er roteret og/eller set i perspektiv. 17

KAPITEL 4. IMPLEMENTATION 4.5. IDENTIFICERING AF LANDMARK Til selve transfomering, som foretages i TransformUtil.java, bruger vi klassen PerspectiveTransform fra Java Advanced Imaging (JAI) API 2. Denne klasse har en metode, getquadtoquad, der ud fra 2 vilkårlige firkanter kan oprette et PerspectiveTransform objekt. Dette objekt angiver transformeringsmatricen, der transformerer den første firkant over i den anden på følgende måde: (x 0, y 0 ) (x 0, y 0) (x 1, y 1 ) (x 1, y 1) (x 2, y 2 ) (x 2, y 2) (x 3, y 3 ) (x 3, y 3) Ved at lade grid ets hjørner udgøre den første firkant og hjørnerne fra den detekterede firkant udgøre den anden, gives transformeringsmatricen til transformering af grid over i det potentielle landmark. Alle punkterne i grid et kan nu transformeres over i nye punkter, der passer til landmark ets rotation og perspektiv. 4.5 Identificering af landmark Identificering af et potentielt landmark sker ved at undersøge om felterne, defineret af et transformeret grid, er sorte eller hvide. Dette er implementeret i filen Recognize.java, hvor metoden getlandmarkid tager et binært billede og et grid som input og returnerer et id, eller -1, hvis der ikke kunne bestemmes et id. Metoden er beskrevet i algoritme 9 Algoritme 9 Metoden getlandmarkid Require: image is binary and grid is transformed matrix array of array of boolean of length grid. size of length grid.size for x = 0 to grid.size do for y = 0 to grid.size do blackness if blackness < 0.5 then matrix[x][y] white else if blackness 0.5 then matrix[x][y] black while matrix not rotated correctly do rotate matrix if rotated more than 3 times then return 1 calculate id using equation (3.12) number of black pixels in gridfield[x][y] number of pixels in gridfield[x][y] 2 http://java.sun.com/products/java-media/jai/ 18

Kapitel 5 Test og evaluering I dette kapitel vil vi teste det implementeret system, samt evaluere resultater af de test vi udfører. Vi har udført tests udfra tre aspekter: Detektering: Alle landmarks i et billede burde detekteres hvor vinklen mellem landmark planet og kamera-vektoren er over 30 grader. Kan dette krav opfyldes af systemet? Hvor lav en vinkel kan opnås og ved hvor lave opløsninger kan detekteringen foretages? Lokalisering: Landmarks burde detekteres så tæt på deres egentlige position som overhoved mulig. Hvor tæt på den rigtige position bliver landmarks detekteret og har rotation eller perspektiv indflydelse på denne fejl? Kompleksitet: Hastighed er en af de væsentligste krav til real tid systemer som ved f.eks. applikationer indenfor robotnavigering. Hvor hurtig er systemet? Kan systemet benyttes til real-tid applikationer? 5.1 Detektering Vi tester i dette afsnit forskellige aspekter inden for detektion af landmarks. Vi undersøger om vi kan detektere roterede landmark, hvor lille en vinkel mellem landmarkplan og kamera-vektor vi kan opnå, og hvor små landmarks vi kan genkende. 5.1.1 Rotation I denne test vil vi undersøge om det er muligt at genkende et landmark når dette er roteret. Vi benytter et billede hvor et landmark er roteret 0, 90, 180 0g 270 grader. Vi har brugt landmark nummer 12, og billedet med de roterede landmarks kan findes på cd en i billeder/nr12 rotated.jpg Det ses på figur 5.1(b) at alle rotationer genkendes som nummer 12, hvilket er korrekt. Det er altså muligt at genkende roterede landmarks. 5.1.2 Perspektiv Vi ønsker i denne test at undersøge om vi kan genkende landmarks med perspektiv. Vi vil undersøge hvor godt vi kan genkende landmarks alt efter hvor lille vinklen bliver mellem kamera og det plan, hvor landmarks er placeret. 19

KAPITEL 5. TEST OG EVALUERING 5.1. DETEKTERING (a) Input (b) Resultat Figur 5.1: Rotation Vi lægger ud med en vinkel på 40 grader, hvor resultatet kan ses på figur 5.2. Som input er filen billeder/perspektiv/40grader.jpg på vedlagte cd anvendt. De resterende tests i dette afsnit benytter ligeledes billeder fra samme bibliotek på cd en, hvor filnavnet stemmer overens med antal grader. Ved 40 grader genkender vi alle landmarks Figur 5.2: 40 grader i billedet, samt det korrekte id til hver landmark. Det samme gælder for 35 grader på figur 5.3, hvor alle landmarks igen detekteres korrekt. Figur 5.3: 35 grader Ved 30 grader begynder det at blive vanskeligt, som det kan ses på figur 5.4, hvor det landmark der befinder sig længst væk ikke bliver identificeret. Den bliver detekteret 20

KAPITEL 5. TEST OG EVALUERING 5.1. DETEKTERING som en firkant, men bliver afvist under identificeringen. Dette skyldes at kanten på landmarket begynder at blive så tyndt, at det ikke længere genkendes som sort. Figur 5.4: 30 grader Det samme problem opstår ved 25 grader, som det ses på figur 5.5. Igen er der problemer med det landmark der ligger længst væk Figur 5.5: 25 grader Når vi når helt ned på de 20 grader begynder identificeringen at fejle ved nogle flere landmarks, som det ses på figur 5.6. Figur 5.6: 20 grader Når identifikationen fejler ved nogle landmarks ved 20 grader skyldes det at vinklen nu er så lille, at perspektiveringen bliver for stor og felterne i de forskellige landmarks 21

KAPITEL 5. TEST OG EVALUERING 5.1. DETEKTERING bliver for små til at kunne blive genkendt som enten sort eller hvid. 5.1.3 Størrelse Vi tester hvor små landmarks vi kan detektere med billedet billeder/nummer12size.jpg. Input og resultat kan ses på figur 5.7 (a) Input (b) Resultat Figur 5.7: Størrelse Ud over billede output skrives følgende til standard out: id: 12, Boundsize: 129.0 x 217.0, Position: (109.07,109.85) id: 12, Boundsize: 90.0 x 152.0, Position: (112.11,301.34) id: 12, Boundsize: 64.0 x 109.0, Position: (111.42,437.58) 22

KAPITEL 5. TEST OG EVALUERING 5.2. LOKALISERING id: 12, Boundsize: 40.0 x 64.0, Position: (116.74,544.73) id: 12, Boundsize: 33.0 x 55.0, Position: (113.42,613.58) id: 12, Boundsize: 27.0 x 44.0, Position: (112.56,675.44) id: 12, Boundsize: 20.0 x 32.0, Position: (111.33,720.10) id: 12, Boundsize: 14.0 x 21.0, Position: (111.16,755.41) Det ses at det mindste landmark der detekteres i dette billede er på 14x21 pixels, hvor denne størrelse er bredde gange højde af den rektangel der omgiver landmark et og ikke bredde og højde af selve landmark et. 5.2 Lokalisering Som beskrevet ovenfor, ønsker vi at teste hvor godt vi kan bestemme positionen af et landmark i et billede. Til dette lejnede vi 9 landmarks op på en lige linie og foretog 3 forsøg hvor centrum af hver detekteret landmark blev udskrevet. Et plot af samtlige beregnede landmark centrum burde give en ret linie, såfremt vores detektering er og positions beregning er 100% nøjagtig. I de følgende tests er tendensligninger blevet plottet og Pearsons produkt er angivet for at beskrive afvigelserne fra landmark centrum til tendensligningen. I alle 3 tests er opstillingen bestående af et papir hvorpå figur 5.8 er printet, samt et kamera. I alle tests er papiret blevet roteret en 5-6 gange for at undersøge påvirkningen af rotering på lokaliseringen af landmarks. Figur 5.8: Opstilling benyttet i test1, test2 og test3 Figur 5.9 viser resultatet fra test1. Hver serie i plottet tilhører et testbillede angivet i nederste højre hjørne. Test 1 er udført på billeder med forholdsvist små landmarks uden perspektiv. Som det fremgår af Pearsons produkt i tendensligningerne er lokaliseringen meget god og kun i tilfældet hvor vinklen er næsten lodret er produktet under 0.997. I test 2 figur 5.10 blev størrelsen af hvert landmark fordoblet i forhold til test 1 og stadig ingen perspektiv. Dette bevirkede en endnu bedre lokalisering med undtagelse af den næsten vandrette linie, som blev dårligere sammenlignet med test 1. I sidste test, se figur 5.11, blev perspektiv tilføjet og lokaliseringen viste sig at være bedre end ved nogen af de forrige forsøg. Alle billeder brugt til testen er at finde på vedlagt CD i biblioteket billeder/lokalisering. 5.3 Kompleksitet Et antal tests er udført hvor tiden for kørslen af landmark detektering er målt på standard hough og gradient hough metoden. Der er testet på to billedtyper: konstruerede billeder og kamera billeder. For at kunne lave en sammenligning er opløsning af billede 23

KAPITEL 5. TEST OG EVALUERING 5.3. KOMPLEKSITET Figur 5.9: Test 1, lokalisering af landmarks Figur 5.10: Test 2, lokalisering af landmarks og antallet af detekterede landmarks taget med i tabellerne nedenfor. Rigtige Billeder: Billede Opløsning Tid STH #STH Tid GH #GH test1.jpg 320x240 2625 52 125 49 2.jpg 320x240 2438 32 109 29 60grader.jpg 619x231 3360 9 156 8 3.jpg 640x480 5094 45 609 39 6.jpg 640x480 5828 0 203 0 Konstruerede billeder: Billede Opløsning Tid STH #STH Tid GH #GH nummer12size.jpg 237x844 953 8 156 7 Size6BitTest.JPG 468x495 1047 13 188 11 full6bittemplate1.jpg 921x611 4922 24 469 24 full6bittemplateall.jpg 921x1656 12704 64 1593 64 24

KAPITEL 5. TEST OG EVALUERING 5.3. KOMPLEKSITET Figur 5.11: Test 3, lokalisering af landmarks Der er ingen tvivl om at selv med modifikationer vil STH ikke egne sig til realtids kørsel. Derimod kan GH godt komme i betragtning. 25

Kapitel 6 Konklusion Vi har foretaget en analyse af problemstillingen, og har udviklet et landmarkdesign, der først og fremmest har mange kombinationsmuligheder, hvor der med et design med 6 bit kan være 64 muligheder. Vi har implementeret et program der kan detektere disse landmarks i billeder, også selv om disse måtte være set i perspektiv, samt være roteret. Vi har undersøgt hvor lille en vinkel vi kan have mellem landmarkplanen og kamera-vektoren før detekteringen begynder at fejle, og vi har næsten kunne opnå kravet om de 30 grader. Lidt mere tid til finpusning af programmet ville kunne løse dette. Vi har desuden undersøgt hvor god positionsbestemmelsen af landmarks i billeder er, hvor det viste sig at den var god. Til detektion af firkanter har vi implementeret 2 forskellige metoder, Standard Hough og Gradient Hough, hvor en test på kørselhastighed viste at Gradient Hough var meget bedre end standard. Dog var standard Hough generelt bedre til at finde landmarks, men dette opvejer dog ikke den enorme ekstra tid der blev brugt. Med lidt finpudsning vil Gradient Hough kunne finde flere landmarks. Vi har desuden følgende overvejelser til hvorledes vi kan forbedre programmet: Vores implementation er afhængig af et Threshold af billedet. Dette giver anledning til en del upræcis detektering, da alt hvad der bruger det thresholdede billede er underlagt begrænsningerne af threshold metoden. Istedet burde de enkelte faser hente informationer i gråtonebilledet. Dette gælder især for: region kant detektering, hjørne detektering og identificer landmark faserne. Optimeringer på region kant detekteringen kunne foretages: Hastighed kunne vindes hvis de regioner med komplekse strukturer dvs. ikke firkant strukturer, blev filtreret fra i region detekterings fasen. Filtreringen kunne f.eks. foretages på simple curvature descriptorer. Detektering af regioner udfra gråtone-informationer istedet for binær informationer. I billeder hvor lysstyrke og kontrast er varierende bliver en del landmarks threasholdet væk. Dette kunne forbedres ved at kigge på gråtone informationer. Implementationen af metoden i identifiserings fasen fejler ofte ved meget små opløsninger 20x20 pixel. Det viste sig at man ved en 200% forstørring af landmarket næsten kunne halvere denne grænse. En implementation af denne forstørring ved meget små opløsninger ville resultere i bedre genkendelse af små landmarks. 26

Litteratur [1] Milan Sonka, Vaclav Hlavac og Roger Boyle: Image Processing, Analysis, and Machine Vision, Second edition, ISBN: 0-534-95393-X [2] Fei Shen og Han Wang: A local edge detector used for finding corners http://www.ntu.edu.sg/home/hw/icics2001.pdf [3] S ebastien Lef evre, C edric Jeusse, og Nicole Vincent: A Comparison of Line Detectors for Image Background Modelling https://dpt-info.u-strasbg.fr/ lefevre/publis/pris2003.pdf [4] Alexandar Alexandrov: Corner Detection Overview and Comparison cd: CornerDet.pdf 27

Bilag A Indhold af CD En cd er vedlagt rapporten, hvorpå der ligger følgende mapper og filer: billeder Mappe med testbilleder omtalt i rapporten. kildekode Mappe med samtlig kildekode til vores program. lib Mappe med library til programmet (JAI). litteratur Mappe med diverse dokumenter. testdata Mappe med data fra lokaliseringstest landmark.bat Til opstart af program. landmark.jar jar-fil med vores program. rapport.pdf Rapporten i pdf-format. ReadMe.txt Beskriver brugen af programmet. 28