• No results found

Begreppet Datorseende har behandlats tidigare i avsnitt 1.2. Här följer en beskriv- ning av grundläggande teori och begrepp inom området Datorseende.

4.6.1

Intrinsisk dimensionalitet

En bild är en tvådimensionell signal. Den yttre dimensionen är två. Den inre dimen- sionen innebär i bildfallet dimensionen på signalen i en punkt, en pixel. En pixel innehåller för en gråskalebild ett intensitetsvärde så den inre dimensionen är ett. Färgbilder kan ha en uppsättning (r,g,b)-värden i varje pixel, den inre dimensionen för en sådan färgbild är tre.

Den intrinsiska dimensionaliteten hos en signal är ett om signalen är konstant längs med en riktning. I en bild motsvarar en intrinsisk endimensionell omgivning t.ex. linjer och en intrinsiskt tvådimensionell omgivning motsvarar t.ex. hörn. En omgivning med intrinsisk dimension ett kallas enkel.

4.6.2

Dubbla vinkeln-representation

Först behövs en definition på vad en linjes orientering innebär. Orienteringen hos en intrinsiskt endimensionell signal tolkas här som normalen till riktningen där signalen förblir konstant. I linjefallet blir orienteringen linjens normal.

I figur 4.11 syns att en linje kan ha två olika normaler. De två linjerna i figuren har samma riktning, men deras normaler är riktade åt motsatta håll. Om man studerar vinklarna mellan en horisontell linje och dessa normaler finner man att det skiljer 180◦ mellan dem. För att entydigt kunna hantera orientering hos linjer måste man välja en normal på ett konsekvent sätt. Om man räknar ut vinkeln mellan horisontalplanet och den ena normalen och sedan multiplicerar detta med två så visar det sig att man får ett värde som blir samma oberoende av vilken av de två normalerna som har valts. Man kan på så sätt konsekvent välja en entydig ori- entering för varje linje. Dessa dubbla vinklar har ritats innanför cirkeln i figur 4.12. Om man sedan dividerar värdet med två får man den normalen som har en vinkel mot normalplanet i intervallet [−90◦, +90].

4.6.3

Tensorrepresentation

Syftet med tensormetoderna är att skapa lokala modeller som beskriver signalen. I praktiken skapas en tensor för varje pixel i bilden. Tensorer kan bland annat beskriva signalens orientering och struktur.

Definitioner av tensorrepresentationer och deras namn är för närvarande inte helt tydliga. Detta beror på att tekniken är förhållandevis ny, troligtvis kommer

4.6 Datorseende 29 Horisontalplan α2 α1 Normal 1 Normal 2

Figur 4.11. En linje kan ha två olika normaler, normal 1 och normal 2. Dessa har vinklar

mot horisontalplanet α1 och α2 som skiljer sig med 180◦.

Figur 4.12. En cirkel illustrerar orienteringsbegreppet. Cirkeln liknar lokalt räta lin-

jer som tangerar cirkeln. Tangenternas orientering är utritad med vektorer. Vektorerna innanför cirkeln är riktade med dubbel vinkel.

tydliga definitioner att slå igenom framöver. I denna rapport används konventionen som framgår av figur 4.13.

Det är vanligt att man i beräknar tensorn för en lokal omgivning för att sedan ur den kunna bestämma beräkna signalens egenvärden och egenvektorer i om- givningen. En tensor för en lokal omgivning kan emellertid skapas med hjälp av signalens egenvärden och egenvektorer genom att yttre produkter, se definition 4.1, av riktningsvektorerna läggs ihop viktade med tillhörande egenvärden. Detta visas i exempel 1.

30 Teori

Orienteringstensor

Strukturtensor

Polynomexpansion

Kvadraturtensor

Figur 4.13. Orienteringstensor är i denna rapport ett samlingsnamn för strukturten-

sor, tensor beräknad med polynomexpansion och tensor beräknad med kvadraturfiltre- ring. Andra konventioner förekommer i bildbehandlingslitteratur. Orienteringstensorn kan ibland kallas strukturtensor och strukturtensorn kan kallas gradienttensor.

Definition 4.1 Den yttre produkten mellan vektorerna a och b är abT =a1 a2  b1 b2 = a1b1 a1b2 a2b1 a2b2  .

Yttre produkten av vektorn a med sig själv blir

aaT =  a21 a1a2 a1a2 a22  .

Detta är en symmetrisk matris. Tensorer som byggs upp av yttre produkter blir alltid symmetriska.

Utifrån tensorn T (observera att T12= T21) fås dubbla vinkelrepresentationen

z enligt T =T11 T12 T21 T22  ⇒ (4.2) z =T11− T22 2T12  . (4.3) Exempel 1

Beräkna en enkel 2D-signals orienteringstensor.

En enkel signal har bara ett egenvärde som är skilt från noll. Här antas att det största egenvärdet är ett och det andra noll. Egenvektorn som hör till det egenvärdet som inte är noll antas här vara riktad i x-led. Den andra egenvektorn måste då vara riktad i y-led, eftersom egenvektorer är ortogonala:

λ1= 1 λ2= 0 (4.4) ˆ e1= 1 0  ˆ e2= 0 1  . (4.5)

4.6 Datorseende 31 Tensorn blir: T = λ1ˆe1ˆeT1 + λ2ˆe2eˆT2 = λ1 1 0  1 0 + λ2 0 1  0 1 = λ1 1 0 0 0  + λ2 0 0 0 1  = 11 0 0 0  + 00 0 0 1  =1 0 0 0  . (4.6)

4.6.4

Tensorestimeringsmetoder

Tensorer kan byggas med hjälp av bildens gradienter, då genom en yttre produkt mellan derivatan i x- och y-led.

∇f (x, y) =  fx(x, y) fy(x, y)  (4.7) Q = ∇f (∇f )T =  f2 x fxfy fxfy fy2  (4.8)

Q i ekvation 4.8 kallas gradienttensorn. Om denna medelvärdesbildas med närlig- gande omgivningar (spatiell medelvärdesbildning) fås strukturtensorn enligt [30]. Ur strukturtensorn kan man beräkna mått på enkel struktur, detta beskrivs i av- snitt 6.2.5.

Tensorer kan även byggas upp utifrån resultatet av kvadraturfiltrering, vilket ger kvadraturfiltertensorer. Yttre produkter av filterriktningarna med sig själva ger en uppsättning basfunktioner. En dual uppsättning till basen kan beräknas. Dessa viktas med absolutbeloppen av tillhörande kvadraturfiltersvar och bygger upp orienteringstensorn. Detta har provats i examensarbetets utvecklingsstadium, men övergivits till förmån för metoder med strukturtensor och polynomtensor.

Matlab-funktionen image2orient använder sig av polynomexpansion för att beräkna tensorer. image2orient anropar funktionen make_tensors_fast. Dessa Matlabfunktioner är utvecklade på ISY och ingår inte i Matlabs standardutgåva. Tensorberäkning baserat på polynomexpansion är snabb, men det går dock att op- timera övriga tensorestimeringsmetoder och få dem lika snabba om man anstränger sig. Metoden är besläktad med gradienttensorn.

32 Teori

4.7

Linjedetektering

4.7.1

Laplace

Laplaceoperatorn definieras i två dimensioner som summan av andraderivatan i x- och y-led, enligt definition 4.2.

Definition 4.2 Laplace-operatorn ∇2 definieras som ∇2f (x, y) = ∂2 ∂x+ ∂2 ∂y  f (x, y) = ∂ 2f (x, y) ∂x + ∂2f (x, y) ∂y .

En lokal tröskelsättning kan implementeras genom Laplace-filtrering följt av global tröskelsättning.

Filtrering med Laplace-filter kan göras med funktionen conv2_laplace. Funk- tionen är utvecklad på ISY och ingår inte i Matlabs standardutgåva. Positiva fil- tersvar kommer från mörka linjer på ljus omgivning. Dessa behålls och de negativa nollställs. Detta kan behöva göras i flera skalor för att behålla både breda och smala sprickor. Se figur 6.5 b) för exempelbild.

En skiss av algoritmen bakom metoden riktad Laplace följer här:

Anpassa först ett andragradspolynom som approximerar signalen lokalt enligt f ∼ c + bTx + xTAx. Detta andragradspolynom utgörs av tre parametrar; c, b och A. c är signalens grundnivå1, b förstagradsfaktor och A andragradsfaktor. c

och b är vektorer och A är en matris. Teori inom ämnet polynomexpansion har hämtats från [4]. Beräkna sedan A. Räkna ut egenvärden L1 > 0 och L2 = 0 på

A som motsvarar andraderivator i 2D. För en mörk linje så ska vi ha en negativ andraderivata ortogonalt mot linjen och noll i andra riktningen. Vi letar alltså efter omgivningar som har L1> 0 och L2= 0. Resultat visas i figur 6.5 c).

Test har gjorts med riktad Laplace i olika skalor. De breda sprickorna går bra att upptäcka med stor standardavvikelse i polynomexpansionen. Däremot går det inte att få med smala sprickor utan att strukturen hos de ljusare delarna av vägen slår igenom, se figur 6.6. Test för att kompensera detta misslyckades, diverse me- delvärdesbildning och linjedetering av delresultatet från riktad Laplace med liten standardavvikelse genomfördes. Till slut fanns en metod som gav acceptabelt re- sultat, men det visade sig att andra metoder var med robusta och dessa användes istället för att undvika detektering av falska sprickor. Det som användes för sprick- detektering i slutprodukten var strukturtensor och orienteringstensor.

Kapitel 5

System design

5.1

Ingående delsystem

Figur 5.1 illusterar delsystemens interagering. De första momenten som handlar om bildinhämtning och digitalisering beskrivs i detalj i kapitel 6, momenten in- uti den grå rutan i figur 5.1 beskrivs i detta kapitel. Här följer en kort översikt över samtliga delsystems funktion. Mätbilen PAVUE filmar asfalt och lagrar det- ta på VHS-band. Avsnitt ur dessa inspelningar digitaliseras och konverteras till stillbilder, 25 bilder per sekund1, avsnitt 6.1. Eftersom bilderna är interlacekodade används en deinterlace-funktion för att plocka ut bilder ur bildrutorna, antingen en eller två bilder per bildruta, se avsnitt 6.1.2. Sedan sammanfogas dessa bilder, av- snitt 6.1.3. Hur mycket bilderna ska överlappa beräknas med disparitet-funktionen, avsnitt 6.1.3. Därefter utförs sprickdetektering, förbättring av sprickkartan och klassificering.

Den samling Matlab-funktioner som har producerats under arbetets gång kallas Crack-Aware. Detta består av verktyg för bildinläsning, förberedelse av datamängd för den automatiska analysen, och det grafiska användargränssnitt som beskrivs i avsnitt 5.7 vilket utför den automatiska analysen. Detta programpaket ger an- vändaren möjlighet till att läsa in och analysera bilder från ett kameramätsystem utformat för sprickmätning, t.ex. PAVUE. Hur detta programpaket ska användas beskrivs i en manual som medföljer Crack-Aware.

5.2

Kombinering av metoder

För att skapa ett detekteringssystem som kan hantera olika vägbeläggningar behö- ver bilder tagna på vägytorna behandlas med olika algoritmer beroende på egen- skaper hos beläggningstypen. Vägytor kan byggas med olika material, såsom asfalt,

1Tekniken möjliggör även 50 bilder per sekund om all information lagrad på VHS-banden

utnyttjas.

34 System design sammanfoga sprick- detektering förbättra sprickkarta klassificera Sprickdetektering och klassificering PAVUE deinterlace disparitet

Figur 5.1. Översikt över delsystemens interagering.

betong och grus. Den australiensiska sprickdetekteringsbilen Road Crack gör just så, betongvägar behandlas med andra algoritmer än asfaltvägar. Se avsnitt 3.2.

Detta arbete behandlar endast asfaltsvägar, vilket beskrevs i avgränsningar, avsnitt 1.4. Asfalt genomgår kraftiga förändringar när den åldras. Omedelbart ef- ter asfaltering är ytan slät och mörk. Detta ändras med tiden och bindemedel på stenar slits bort och stenarna blir synliga. Detta innebär att vägytans struktur blir mer skrovlig. När bilder på slitna vägytor behandlas med sprickdetekteringssystem är det inte önskvärt att skrovligheten ska resultera i falsk detektering av sprickor. Vägytor med olika färg liksom blöta vägbanor borde kunna hanteras eftersom ka- merorna endast filmar i svartvitt, och en global skalning av intensiteten borde inte påverka sprickdetekteringen. Detta har dock inte testats.

Därefter behöver sprickdetekteringsalgoritmen vetskap om strukturen i vägy- tan innan analysen påbörjas för att kunna välja en lämplig metod. En slät vägyta behandlas bäst med en metod och en skrovlig med en annan. VTI:s RST-bil, se bi- laga A, mäter vägars makrotextur, som definierar vägens skrovlighet. En möjlighet är att använda data från denna metod för att hjälpa systemet välja algoritm.

Försök till kombinering av de fyra algoritmerna genomfördes. Dessa metoder är: morfologiska operationer, strukturtensor, polynomtensor och riktad Laplace. I det första försöket användes ett beräkningstungt tillvägagångssätt; alla fyra metoderna användes parallellt. Numera går det att välja vilken metod man vill använda, eller om man vill använda alla tillsammans. Sedan kombineras metodernas resultat och sprickdetekteringen presenteras i form av en sprickkarta och en orienteringskarta, detta illustreras i figur 5.2. Sprickkartan består av rutor som avspeglar 10×10 centimeter väg. Varje ruta innehåller information om sprickförekomst. Varje ruta med sprickförekomst har även en orientering som visas i en separat figur.

5.3 Sprickdetektering 35

5.3

Sprickdetektering

Indata, i form av en bild, delas in i segment och algoritmen upprepas sekvensiellt på ett segment i taget och ett totalresultat byggs upp. Det är samma funktion som matas med den totala bilden som sedan matas med delbilder, vilket är en rekursiv metod med rekursionsdjup ett. Detta rekursiva förfarande syftar till att stora bilder ska kunna bearbetas utan att datorns minne ska ta slut. Se figur 5.2. En iterativ metod borde vara att föredra, men denna rekursiva metod är smidig i utvecklingsstadiet för att testa olika angreppssätt och ha all programkod samlad i en fil.

Sprickkarta beräknas med strukturtensor, se avsnitt 6.2.5, och lokal orientering beräknas med polynomtensor, avsnitt 6.2.4. Sprickkartan kan förbättras med hjälp av den lokala orienteringen, se avsnitt 5.5.

Figur 5.2. Inbild, sprickkarta och orienteringskarta. De horisontella linjerna i sprickkar-

tan markerar gränserna för hur delbilder har skapats av algoritmen. Pixlarna i sprick- kartan och rutnätet i orienteringskartan motsvarar en yta av 10×10 cm. Avbrotten i sprickkartan och orienteringskartan motiverar en förbättring av dessa, vilken beskrivs i avsnitt 5.5.

5.4

Hantering av störningar

5.4.1

Ytor utan sprickor

I början förekom ett problem med strukturtensorn, den beskrev mycket små va- riationer om det inte finns några lämpligt stora sprickor. Därför kunde struktur-

36 System design

tensorn endast användas när det fanns sprickor. Om det fanns sprickor eller inte kunde avgöras genom studie av utseendet på resultatet från strukturtensorn med en högst tillfällig lösning medan andra lösningar eftersöktes. Om resultatet påvisa- de ett stort antal sprickor var sannolikheten stor att det handlar om ett segment utan sprickor. Om närliggande segments angränsande områden innehöll trovärdiga sprickdetekteringar så borde ju sprickorna fortsätta över segmentsgränsen. I dessa fall användes strukturtensorn även om den innehåller många områden med troliga sprickor. På detta sätt kringgicks problemet med ytor utan sprickor.

Problemet med mycket sprickdetektering i bilder utan sprickor löstes. Felet var att resultatet från strukturtensorn trösklades med en nivå som berodde på den maximala magnituden i aktuellt resultat. När en fast tröskel sedan användes, som var samma värde för alla resultat, så hittades endast strukturer som beskrev sprickor. Sprickdetekteringen i slutresultatet använder därför strukturtensor med fasta trösklar för att detektera sprickförekomst.

5.4.2

Vägmarkeringar

Vägmarkeringar i form av mittlinjer och sidolinjer ska inte detekteras som sprickor. Strukturtensorn reagerar starkt på kanterna till vägmarkeringarna och dessa falska sprickor måste sorteras bort. Här följer beskrivning av en metod som har använts för detta ändamål.

Först sätts alla pixlar med intensitet under en viss gräns till denna gränsen, en tröskling genomförs alltså och endast pixlar med intensitetsvärden under tröskeln ändras. Detta leder till att sprickor och andra mörka områden lyfts upp till en nivå som efteråt är den lägsta nivån bland alla pixlar i bilden. Eventuella vita områden (vägmarkeringar) är nu under ideala förhållanden det enda i bilden som har intensitetsvärde som skiljer sig från tröskelnivån. Om man ser bilden som en 3D-graf liknar den ett horisontellt plan om det inte fanns några vägmarkeringar, fanns vägmarkeringar framträder dessa som platåer ovanpå ytan.

Det aktuella segmentet delas sedan upp i rutmönster och i varje ruta bildas medelvärdet och dessa lagras i en matris. Derivatan av denna matris beräknas i x-led och detta trösklas. x-axeln är här placerad horisontellt i bilderna från vänster till höger enligt konvention i avsnitt 4.3. Det är nu tänkt att endast områden i närheten av vägmarkeringar ska vara ettsatta. För att områden som innehåller vägmarkeringar garanterat ska representeras av ettsatta pixlar på motsvarande positioner måste ettorna spridas ut till omgivningen. Detta sker genom att varje kolumn som innehåller någon etta fylls med ettor inom segmentet. Sedan sprids dessa ettor åt sidorna så att hela bredden på vägmarkeringen förhoppningsvis täcks. Det har nu byggts upp en karta över var vägmarkeringar kan finnas. Detta ska tas hänsyn till vid sprickdetekteringen, så att dessa rutor inte misstänks innehålla sprickor. När sprickdetektering sedan utförs åsidosätts områden med vägmarke- ringar och dessa områden förblir obehandlade.

Ett problem med denna metod är att då trösklingsnivåerna är satta så att samt- liga vägmarkeringar detekteras introduceras även andra områden som misstänkta vägmarkeringar, varvid riktiga sprickor missas. Detta borde kunna åtgärdas ge-

Related documents