Computer vision

Relevanta dokument
Från ljusenergi till en kub som går att stå på Hur man får en dator att känna igen olika former i visuell information

Grafiska pipelinen. Edvin Fischer

Fokus. Mirjam HY, Hovåsskolan F- 9, Hovås

Martin Burström [dit02mbm] Robert Eriksson [dit02ren] Filip Sjögren [dit02fsn] Handledare: Therese Edvall Daniel Ölvebrink :13

Ett enkelt OCR-system

Bildbehandling, del 1

Statistisk mönsterigenkänning

Visual thinking for Design

Emma Hallstan Emmha584

COMPUTER VISION. Niklas Brunberg nikbr568

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

TEM Projekt Transformmetoder

Projekt i bildanalys Trafikövervakning

Visuell perception. Sidan 1. Översikt. Sammanfattning av förra föreläsningen. Kognitiv arkitektur. Visuella systemet: översikt.

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

TBSK 03 Teknik för Advancerade Datorspel

Histogram över kanter i bilder

Tentamen Bildanalys (TDBC30) 5p

Bildanalys för vägbeläggningstillämplingar

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013)

Geometrisk optik. Syfte och mål. Innehåll. Utrustning. Institutionen för Fysik

Kognitionsvetenskap C, HT-04 Mental Rotation

L A B R A P P O R T 1

Laboration i Fourieroptik

TBSK 03 Teknik för Advancerade Datorspel

Perfekt skärpa i Photoshop

Retro tutorial. En guide med tips för att skapa dina egna analoga filmeffekter. Effekterna går att använda tillsammans eller var för sig.

Bildbehandling i frekvensdomänen

Datorseende. Niels Chr Overgaard Januari 2010

Flerdimensionell analys i bildbehandling

Laboration i Fourieroptik

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman

There s more to the picture

Uppgifter. Uppgifter. Uppgift 2. Uppgift 1

729G Artificiell jakt och flockbeteende inom datorspel

Kristian Pettersson Feb 2016

Grafik raytracing. Mattias Axblom.

Två sorters bilder - högfrekvent och lågfrekvent. Bilden ovan räknas som högfrekvent bild, vilket betyder att den är detaljrik

Ansiktsigenkänning med MATLAB

Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation

Structuring Two Dimensional Space

Uppgift 1-9. Endast svar krävs. Uppgift Fullständiga lösningar krävs. 120 minuter för Del B och Del C tillsammans. Formelblad och linjal.

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens Erik Claesson

Neural bas för kognition

Visualisering av samverkan

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Sub-symbolisk kognition & Konnektionism. Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén,

Att göra spel med Game Maker. Rum. Grundläggande delar. Gamemaker, dagens föreläsning. Programmeringsmodell

Laboration 4: Digitala bilder

Lagermask och urklippsmask

Artificiell Intelligens den nya superkraften

Polarisation laboration Vågor och optik

Linköpings universitet

DATORER OCH PROGRAM. Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin

Vad utmärker ett bra användargränssnitt?

Ansiktsigenkänning. Anna Ericsson Linköpings Universitet Linköping

Perception via sensorisk data i robotar

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara

Rumsuppfattning är förmågan att behandla sinnesintryck av former

Fotografera under vattnet. Likheter och olikheter

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Modelleringsmetodologi

Grafiska pipelinens funktion

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

Fingerprint Matching

Användarguide för bildredigering i det webbaserade gratisprogrammet: Hur du klipper in ett objekt i en annan bild

På en dataskärm går det inte att rita

DATORER OCH PROGRAM. Datorn är en symbolmaskin

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Projekt 6. Fourieroptik Av Eva Danielsson och Carl-Martin Sikström

Fotoklubbens studioblixtar. Och lite till

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Beskrivande statistik. Tony Pansell, Leg optiker Docent, Universitetslektor

Tillämplingar av bildanalys

LJ-Teknik Bildskärpa

Projekt i Bildanalys: Automatisk detektion av lungemboli ur scintbilder

Aalto-Universitetet Högskolan för ingenjörsvetenskaper. KON-C3004 Maskin- och byggnadsteknikens laboratoriearbeten DOPPLEREFFEKTEN.

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

Vi har väl alla stått på en matta på golvet och sedan hastigt försökt förflytta

Specifikation av kandidatexjobb

Lära och namnge färger, Rekonstruera motiv från kort, fri lek

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

36 träfigurer (20 träfigurer och 9 halvfigurer som kan stå i spår, 7 magnetiska träbitar)

i LabVIEW. Några programmeringstekniska grundbegrepp

kapitel elva EN LJUSKÄLLA, DRAMATISK FRAMTONING Dramatiskt sidoljus

Brusreducering och Skärpning av bilder. Kalle Prorok Okt 2010

VISUELLA FÖRHÅLLANDEN

Neurovetenskap 30/08/2013. Kognitiv neurovetenskap. Lober. Olika färg, olika vävnadsstruktur. Hjärnbarken

RESTAURERING AV GAMLA FOTOGRAFIER

Stina Nyman

Bildmosaik. Bilddatabaser, TNM025. Anna Flisberg Linne a Mellblom. linme882. Linko pings Universitet

bilder för användning

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

TimeEdit Nyheter i TimeEdit Detta dokument beskriver nyheterna i TimeEdit 3.5.3

OPTIK läran om ljuset

Parabeln och vad man kan ha den till

1. En oreglerad marknad involverar frihet. 2. Frihet är ett fundamentalt värde. 3. Därav att en fri marknad är moraliskt nödvändigt 1

Transkript:

Computer vision

Abstract Det här projektarbetet kommer att visa vilka olika delar man generellt använder sig utav för att skapa computer vision. Rapporten kommer att förklara delar av Computer Visions historia samt jämföra biologisk och artificiell visuell perception. Jag kommer också presentera de olika funktioner och metoder som finns och samt varför man använder just dessa. Hur man kan skapa en tre dimensionell värld utifrån två dimensionella information kräver ett antal metoder vilka också presenteras i rapporten. Sist men inte minst förklarar jag också hur objektigenkänning med hjälp av utseende ledtrådar fungerar.

Innehållsförteckning Inledning...1 Syfte...1 Bakgrund...2 Användningsområde...3 Människa vs Maskin...4 Grundläggande Computer vision...5 Early Image-Processing Operatorer...7 Edge detection...7 Texture analysis...8 Optical flow...9 Smoothing filters... 10 Gaussian smoothing... 10 Skapandet av en tre-dimensionell värld... 13 Motion parallax... 13 Binocular stereopsis... 13 Shading... 14 Bildsegmentering... 15 Objektigenkänning med hjälp av utseende... 16 Diskussion... 17 Källförteckning... 18

Inledning Det här projektarbetet kommer att förklara så kallad Computer vision, alltså den del av artificiell intelligens vars uppgift är att skapa modeller av den riktiga världen, känna igen olika sorters objekt eller lyckas skapa mening av digitala bilder. Man kan likna Computer vision med en slags omvänd form av den grafik som datorer använder sig av när visuella objekt och mönster skapas. Istället för att skapa objekt från modeller skapar Computer vision istället modeller från objekt som registrerats. Computer vision är en väldigt populär delgren i Artificiell intelligens eftersom användningsområdet är enormt stort men också viktigt för att lyckas skapa artificiell intelligens som kan fungera och interagera med omvärlden på ett så effektivt sätt som möjligt. Jag kommer i den här rapporten presentera många av de olika komponenter som ingår i området computer vision men också till viss del jämföra mänsklig och maskinell visuell perception. Syfte Syftet med det här projektarbetet är att ge läsaren en bättre inblick i hur man kan skapa intelligens som kan använda sig av visuell perception på ett liknande sätt som människan. Syftet är också att visa vilka problem man kan stöta på inom den här delen av artificiell intelligens men också vilka möjligheter som just computer vision möjliggör. 1

Bakgrund Som i stort sett allt inom artificiell intelligens är också Computer vision en ganska ny delgren inom denna vetenskap. Computer vision uppstod tack vare att många andra vetenskaper var på framfart just under samma tid, så som till exempel fysik, neurobiologi och optik. Computer vision uppkom runt 1960-talet och Roberts(1963) publicerade en av de första teorierna i sin avhandling vid MIT. I Hans avhandling presenterade han idéer om edge detection och så kallad model-based matchning, vilket var starten på det som kom att kallas computer vision. Under resten av 1960-talet och 1970-talet hade man stora problem med att de datorer som användes inte var tillräckligt kraftfulla för de idéer och teorier som man ville testa. Fram till 1980-talet fanns det två olika paradigm inom computer vision där man la fokus på olika delar, den ena delen fokuserade mer på objektigenkänning medan den andra fokuserade på att beskriva former istället i form av dess volumetriska grundformer. De här två paradigmen började smälta samman mer och mer i början av 1990-talet eftersom båda paradigmen anpassade sig efter den artificiella intelligensens utveckling inom probabilistisk modellering och lärande. Tack vare att kunskapen om datorer och datorernas utveckling under 1990-talet mer eller mindre exploderade nu de flesta delvetenskaperna inom artificiell intelligens och därigenom utvecklades också computer vision. Tack vare att så många har blivit intresserade utav Computer vision har vi nu lyckats utveckla avancerade system som använder sig av visuell perception på ett effektivt sätt. Trots det här har vi fortfarande lång väg att gå innan vi upptäcker det "ultimata systemet" för att skapa Computer vision. 2

Användningsområde Om vi skulle kunna skapa system som faktiskt använde visuell perception fullt ut skulle användningsområdet vara i stort sätt obegränsat. Vi skulle till exempel kunna skapa övervakningssystem som kan fokusera på det viktigaste i en viss händelse och därigenom kunna skapa en säkrare tillvaro. Det skulle också vara möjligt att skapa maskiner som styr sig själva och agerar allt eftersom en situation förändras vilket inte är allt för långt ifrån att uppfyllas. Det finns redan nu bilar och andra autonoma fordon som själva kan interagera med omvärlden. Även om dessa fordon inte är tillräckligt säkra för marknaden idag så kommer de säkerligen finnas inom en ganska snar framtid. Det finns också möjlighet att utveckla avancerade ansiktsigenkänningssytem för att ytterligare öka säkerheten på särskilda ställen. 3

Människa vs Maskin Den visuella perception som vi människor besitter och utövar dagligen är ingenting man behöver lägga ner mycket tankekraft på, den sker mer eller mindre helt automatiskt. Det här beror på att vår hjärna är så pass effektiv när det kommer till att filtrera all information och därigenom sålla bort överflödiga delar utav informationen. Vårt syncentrum är en väldigt komplicerad process som inte är helt lätt att förstå sig på och inte heller speciellt smidig att försöka skapa på konstgjord väg. Mycket av dagens forskning inom artificiell intelligens försöker dock efterlikna mänsklig intelligens och beteende, därför lägger man också stor vikt vid mänsklig visuell perception när man försöker skapa "Computer vision". Ett av de större problemen med att försöka skapa en perfekt artificiell visuell perceptionsförmåga är att världen har en sån extrem mångfald när det kommer till olika miljöer, händelser och objekt. Det krävs alltså att det system som vi skapar lyckas fokusera på rätt del av informationen vid rätt tidpunkt. Så vad är då skillnaderna och likheterna mellan mänsklig visuell perception och den artificiella versionen? Den biologiska visuella perceptionen har som huvuduppgift att snabbt kunna analysera och beräkna den information som tas in, om den här uppgiften fungerar som den ska så fungerar systemet. Om vi däremot kollar på hur man vill att den artificiella systemet ska fungera börjar man nästan omedelbart fokusera runt optimalitet, vilket i sin tur är ganska överflödigt inom ett biologiskt system. Det här är bara en av de många delarna som skiljer den biologiska och den artificiella versionen åt men ändå en del som spelar ganska stor roll. Vårt biologiska synsystem skiljer sig också från det artificiella i det faktum att det inte har skapats från "scratch" och har genom tiden förändrats med hjälp av andra delar i människokroppen. Naturen är därför ganska olik en ingenjör i det faktum att de lösningar som uppkommer inte alltid är så eleganta som kanske önskas men ändå fungerar i praktiken i de flesta fallen. För att lösa ett visuellt problem eller lyckas extrahera den information som är relevant för nuet använder sig de flesta biologiska system av flera olika parallella mekanismer. Om vi till exempel tar uppgiften att identifiera ett tredimensionellt objekt krävs att systemet använder sig utav stereoseende, ocklusion, skuggning och så kallad relativ rörelse. Anledningarna till att det biologiska visuella systemet använder sig utav dessa olika operatorer är att ingen är helt fulländad. Eftersom alla tre delar inte är fulländade lyckas systemet ändå skapa en bra form utav perception där den information som behövs utvinns, vilket i sin tur bevisar att systemet inte är helt optimalt. Den andra anledningen till att synsystemet använder sig utav flera parallella operatorer är att det då går snabbare att processera den information som 4

hämtats. Vårt synsystem blir även mer stryktåligt när det kommer till "noise" i informationen som kan uppstå än vad som hade varit möjligt om de olika delarna arbetade var för sig. Grundläggande Computer vision Beroende på vad man vill att systemet man skapar ska ha för uppgift i världen ändras också vilka funktioner som systemet använder sig utav men också i vilken ordning användandet sker. Det finns de system som är av den lite mer simplare varianten där systemets uppgift är att mäta eller hitta problem i en speciell miljö, till exempel vid ett löpande band. Den andra delen som ses som lite mer komplicerad är de system som använder sig av planering, effektorer och större informationsdatabaser. Systemets uppbyggnad beror också på om agenten kan lära sig uppgifter och samla in ytterligare information om miljön den befinner sig i eller om den enbart har en slags "ursprungsdatabas". De flesta system som finns idag skiljer sig från varandra till en viss del, trots detta så finns det ett par grunddelar för hur Computer vision byggs upp. 1. Bildhämtning: Här hämtas informationen oftast i form av en två dimensionell bild med hjälp av olika instrument som till exempel kameror och mätsensorer. Beroende på vilka instrument man använder kan man ändra i vilket format informationen anländer i. 2. Förbehandling av bilden För att kunna använda den informationen som anses vara relevant i bilden krävs det att man förbehandlar bilden innan man applicerar andra delar utav analysen. I det här steget tar man ytterligare en bild av samma sak för att se att det första steget verkligen har slutförts på ett korrekt sätt och att bilden verkligen representerar det man vill att den ska representera. Sedan går man över till att försöka reducera "noise"(brus) i bilden för att göra det smidigare att hitta relevant information. Efter det här steget förstärker man de kontraster i bilden som anses vara viktiga för att få ut rätt resultat. 3. Extrahera viktiga särdrag Här hämtar man ut de särdrag som har störst sannolikhet för att representera vad som sker i miljön. Dessa särdrag är bland annat linjer, kurvor och diverse lokala delar i bilden som anses intressanta. 5

4.Igenkänning och Segmentering Efter de föregående stegen har olika delar i bilden hittats som anses vara mer relevant för slutmålet än andra delar. Sedan väljs de viktigaste av dessa delar ut för att kunna segmentera de regioner som innehåller dessa delar. 5."High-level" processer När systemet väl har lyckats ta sig till det här steget har det lyckats sålla bort en stor mängd av information som anses överflödig och onödig för systemets ändamål. De processer som sker här är bland annat: Verifiering av att den data man har uppfyller de krav som ställs på den Uppskattar position och storleken av det som illustreras i bilden Bild/objekt igenkänning delar in objekt eller delar utav bilden i olika kategorier Bild/objekt registrering där systemet jämför och kombinerar två olika bilder av samma objekt Det här är alltså de mest generella delarna av computer vision som behövs i många av de systemen som skapas idag. 6

Early Image-Processing Operatorer För att börja analysera och påbörja meningsskapandet av ett visuellt percept måste vi börja med så kallad low-level operatorer. Namnet har de fått eftersom det är de operatorer som oftast kommer först i processen men också eftersom de fokuserar på bara ett fåtal pixlar av bilden, därför saknar de kunskap om området runt omkring dessa pixlar. Tre Early Image- Processing Operations kommer den här delen att ta upp, närmare bestämt" Edge detection, Texture analysis och optical flow". Edge detection Målet med Edge detection är att isolera de delar av en bild som är relevant för uppgiften och därigenom sålla bort den information som anses vara överflödig och störande. Den här operatorn anses därför vara extra bra för att göra det lättare att utvinna rätt information. Edge detection letar alltså efter kanter(edges) i bilden då det är mest troligt att kantkonturer innehåller viktig information om det bilden representerar. Det finns många olika varianter som alla faller under kategorin "edge detection" men de flesta delas ofta in i två olika delkategorier "search-based" och "zero-crossing based". Inom "zerocrossing based" kategorin använder man en sökfunktion för att hitta så kallade "zero crossings" i andra ordningens derivat som beräknats på den bild som undersöks för att kunna hitta gränskurvor(edges). För att lyckas med det här måste man dock göra bilden "smooth" vilket man gör genom att reducera "noise" i bilden. Det här sker ofta med hjälp av "Gaussian smoothing" som kommer att förklaras mer utförligt senare i den här delen. Den andra delkategorin "search-based" använder sig istället av beräkningar för att mäta styrkan på de kanter som den stöter på. "Search-based" använder sig då istället av första ordningens derivat som till exempel storleken på lutningen istället för andra ordningens derivat. Storleken på lutningen är oftast som tydligast längs med tjocka spår i bilden. Man använder sedan lutningens riktning för att kunna uppskatta i vilken riktning man vill klippa bilden. Det filter man använder för att göra bilden "smooth" och hur man mäter styrkan i kanterna är det som skiljer de flesta "Edge detection" metoderna åt. Anledningen till att man använder olika filter till olika metoder beror till största del på att man använder olika beräkningsmetoder för att utvinna vilken lutningen kanterna som undersöks har. Om Edge detection operatorerna fungerar resulterar detta i att man får ett antal sammankopplade linjer och kurvor som indikerar vart gränserna går mellan de olika delarna i bilden. Dock stöter Edge detection ibland på problem om den bild som analyseras är mer komplex och outputen från operatorn blir då istället otydlig och linjerna samt kanterna är inte 7

längre sammankopplade i vissa delar utav bilden. Den uppenbara frågan att ställa sig är då istället, hur upptäcker vi kanter i bilden? Kanter representerar delar utav en bild där skillnaden i ljus är ganska tydlig, trots det här kan man inte ta för givet att de pixlar där ljusskillnaden är som mest tydlig är delar av en kant. Ljusskillnad kan uppstå även där det inte finns kanter på grund av så kallat "noise" i bilden vilket i vissa fall kan tolkas som en kant. Man kan också klassifiera de kanter som skapas i en två dimensionell bild som representerar en tre dimensionell miljö på två olika sätt. Det ena är så kallat "viewpoint dependent" medans den andra kallas "viewpoint independent". En kant som klassifierats som "Viewpoint independent" kommer att representera de kanter som bildas utav markeringar på miljöns yta eller miljöns form, alltså den del av bilden som är "statisk" och inte förändras. En kurva som däremot är "Viewpoint dependent" representerar istället de objekt som rör sig i miljön samt de olika placeringar olika objekt kan anta vid olika tidpunkter. För att motverka "noise kan man släta ut bilden och ett av flera sätt att göra det här på är genom ett så kallat "Gaussian filter" där man ger varje pixel ett medelvärde från dess grannar vilket i sin tur tonar ner extremvärden. Texture analysis Texture analysis innebär att man undersöker ett visst mönster på en yta som kan uppfattas genom visuell perception. Sådana texturer finns överallt i vår omgivning som till exempel löv på ett träd, grässtrån i gräsmattan eller fönster på byggnader. Människor arrangerar dessa olika delar på olika sätt och skapar en helhet av det man ser. När man väl har kommit så långt att vi t.ex. har en del av en gräsmatta kan vi sedan räkna ut riktning vid varje pixel och även skapa ett histogram där vi karaktiserar alla riktningar som de olika delarna kan ha. För att ta ett exempel så kommer löven på ett träd kunna ha väldigt många olika riktningar medans en tegelstensvägg bara kan ha en horisontal och en vertikal riktning. De riktningar man får ut är också okänsliga för ljusförändringar vilket gör dem extra användbara när det kommer till objektigenkänning. Det här beror delvis på att andra operatorer, speciellt Edge detection kan ge mycket olika resultat beroende på hur starkt ljus det är i bilden. 8

Optical flow Optical flow är det som används när vi har en videosekvens istället för en "simpel" två dimensionell bild. Optical flow kallas den effekt som blir på bilden när objekten i videon rör sig eller när kameran rör sig tillsammans med objektet. Optical flow beskriver riktning och hastigheten på särskilda objekt i bilden och enheten för att mäta riktning och hastighet i en videosekvens blir då pixlar per sekund. Med Optical flow kan man till exempel uppskatta avståndet mellan åskådaren och objektet som rör sig. Vi kan också använda oss utav Optical flow när man vill känna igen olika handlingar som sker i en viss händelse eftersom man kan mäta riktning och hastighet. Figur 1: Figuren visar hur optical flow kan se ut hos en roterande åskådare i både tredimensionell och två-dimensionell representation. Pilarna i varje del av bilden representerar riktningen och hastigheten vid varje del. 9

Smoothing filters Smoothing filter används för att reducera "noise" eller så kallat brus i bilden som kan uppstå på grund av diverse faktorer. Så hur vet man då vilket filter man ska använda i varje enskilt fall? Det här bestäms genom att hitta en kurva som används som en modell för bilden. Sedan används ett antal kriterier för att passa ihop modellen med det filter som passar bäst i just det här enskilda fallet. Jag har dock valt att inte gå in djupare i hur man beräkningsmässigt går till väga eftersom det skulle ta upp resten av den här projektetrapporten. Gaussian smoothing Gaussian smoothing är en viktig del i Computer Vision eftersom det ofta förekommer i de algoritmer som används i förbehandlingen för att förstärka strukturen i bilden. Gaussian smoothing används för att göra bilden "suddig" genom att ge varje pixel ett medelvärde som beror på dess grannar och därigenom reducera många extremvärden som annars kan uppkomma. Det här används mycket inom grafisk mjukvara och då speciellt för att reducera brus i bilderna. Användandet av ett Gaussianskt filter är väldigt smidigt om man i ett senare stadie tänker använda sig utav Edge detection eftersom Edge detection är väldigt känsligt när det kommer till brus i bilden. Man väger de närliggande pixlarna olika mycket där de som är närmast har störst påverkan på den pixel man vill tilldela ett värde. Det resultat man får ut av att applicera Guassian smoothing på en bild kan liknas vid att se en bild genom ofokuserad lins vilket kan ser ut som på bilderna nedanför. Figur 2 De här bilderna visar skillnaden före och efter man har applicerat ett Gaussian smoothing på den bild man vill analysera. När man applicerar ett Gaussian filter så reducerar man alltså komponenter som anses störande för fortsatta operatorer inom computer vision, därför kallas det här filtret för ett "low pass" filter. 10

Gaussiansk filter använder sig av en Gaussiansk funktion för att räkna ut hur mycket man ska förändra den aktuella pixeln beroende på dess grannars värde. För att släta ut en tvådimensionell bild använder man sig av följande ekvation. I den här ekvationen står variabeln "X" för avståndet till ursprunget på den horisontala axeln, "Y" står för avståndet på den vertikala axeln" och "σ" står för den gaussianska fördelningens standardavvikelse. När den här ekvationen appliceras byter man ut G(x, y) mot den gemensamma summan av alla pixlar inom området. Den summan man får ut kallar man med facktermer då för en "convultion" av två olika funktioner(jag har valt att i forsättning kalla convultion för dess svenska namn faltning ). Man använder sedan det värde man får ut av funktionen för att skapa en matris som man sedan kan applicera på den ursprungliga bilden. De pixlar som ligger närmast spelar då som sagt större roll för vilket värde den aktuella pixeln får medans de pixlar som ligger längre bort spelar mindre och mindre roll. Rent teoretiskt innebär det här att en Gaussiansk funktion måste beräkna alla pixlar i hela bilden för att ge ett exakt värde på varje pixel eftersom alla delar av bilden kommer få ett värde som skiljer sig från 0. Dock skiljer sig som tur är teorin från praktiken eftersom man kan avfärda pixlar som ligger längre ifrån den aktuella pixeln än 3 σ eftersom de anses ha ett värde som ligger väldigt nära 0 och därigenom vara irrelevant för den aktuella pixelns värde. 11

En två dimensionell Gaussisk kurva kan också representeras på liknande sätt där medelvärdet är noll och standardavvikelsen "σ" = 1, en större standardavvikelse kräver också större matriser för att kunna representeras Figur 3 En två dimensionell Gaussiansk kurva då den representeras med standardavvikelsen 1 och medelvärdet 0 Figur 4 En matris med passande heltals faltning till en Gaussian med en standardavvikelse med värdet 1.0 Gaussian blur har också en ekvation för en endimensionell bild den kan också appliceras på två dimensionella bilder genom att använda två skilda beräkningar. Man kan alltså använda faltning med en en-dimensionell Gaussian i x-led och sedan göra samma sak i y-led för att få samma effekt som en två-dimensionell faltning. En Gaussiansk funktion är perfekt om man vill släta ut en bild med samma matris flera gånger, det här fungerar eftersom man kan använda faltning mellan funktionen och funktionen själv och då få en annan funktion av samma typ. 12

Skapandet av en tredimensionell värld För att kunna skapa en modell eller representation av den information som tas in krävs ett system som kan omvandla tvådimensionella bilder till en tredimensionell modell. Det här går att göra på flera olika sätt beroende på hur man har införskaffat sig informationen. Om vi har två eller fler bilder från olika kameravinklar kan vi "triangulera" den positionen vi söker i bilden för att sedan kunna utveckla en modell utav detta. Vi skulle också kunna genomföra det här med hjälp av så kallad bakgrundskunskap om den riktiga händelsen som gav upphov till den två-dimensionella bilden. Dock så finns det ännu ingen allmänt erkänd "rätt" teori om att återskapa en tre dimensionell värld. Däremot finns det mängder av olika sätt att gå till väga och jag kommer ta upp ett par av dessa, Motion parallax, binocular stereopis, texture och shading. Motion parallax Motion parallax är den "ledtråd" som uppkommer när de objekt som ligger närmare oss ser ut att röra sig snabbare än de som ligger längre ifrån. Motion parallax är användbar om vi vill få information om rörelsen hos ett objekt i miljön men också om vi vill få reda på vår egen eller kamerans rörelse. Den här fenomenet kan alltså hjälpa vårt artificiella visuella perceptionssystem att arbeta i en tre dimensionell värld genom att den nu har en möjlighet att beräkna vilket avstånd det är mellan "systemet" och det objekt som analyseras. Binocular stereopsis Det här är den "ledtråd" som vi människor tillsammans med de flesta andra ryggradsdjur till stor del använder oss utav för att skaffa oss en uppfattning om hur världen runt omkring oss ser ut. Det här är tack vare att vi har två ögon och därför får in två olika bilder samtidigt där objektet som iakttas kommer att befinna sig på två olika ställen jämfört med bakgrunden. Det som iakttas kommer också se olika ut eftersom det iakttas från två olika vinklar. För att sedan kunna mäta skillnaden mellan de två olika bilderna måste vi hitta en punkt i bild A som representerar samma punkt i bild B vilket inte alltid är helt enkelt. Det kan dock liknas vid vad som sker när man mäter Optical flow som nämnts tidigare. För att utföra det här i praktiken krävs stora krav och mycket mer komplicerade algoritmer som skulle kräva ett par böcker för att förklaras vilket jag inte har plats med här. Om vi då tänker oss att vi redan har lyckats mäta skillnaderna i bilden så kan vi sedan med hjälp av dessa få en output på djupet i bilden som kan visa hur världen ser ut. 13

Figur 5 Bilden visar hur man kan skapa sig en bild av en tre dimensionell värld med hjälp av två olika bilder tagna från olika vinklar ett visst objekt eller en viss miljö. Shading Shading använder sig utav de olika ljussättningarna som finns i en miljö. Det här är möjligt tack vare att den skugga som uppstår beror på miljöns geometri och ytans reflektionsmöjligheter. Inom Computer vision försöker man alltså använda sig utav den skuggning och det ljus som finns i miljön för att kunna skapa en modell utav miljöns geometri och yta. Trots att det låter ganska logiskt är det inte heller detta en speciellt lätt väg att gå när det kommer till aningen mer komplexa miljöer där det krävs mer input. Shading blir alltså om möjligt ännu svårare att använda sig utav när man försöker skapa en modell utav en miljö inomhus där objekt blir ljussatt från diverse lampor men också andra reflektioner som kan störa ut den "normala" ljussättningen vilket kan leda till en ganska felaktig output. Den spännande frågan som uppkommer är då istället hur vi människor kan hantera skillnader i ljus och skugga på ett så effektivt sätt. 14

Bildsegmentering För att dela upp en två dimensionell bild i flera olika regioner med liknande pixlar använder man sig utav segmentering, man delar alltså upp pixlarna beroende på deras visuella egenskaper (egenskaperna är bland annat baserade på ljussättning, färg och textur). De regioner som man skapar kallas då istället för superpixlar och gör det lättare för systemet att analysera och göra mening av information efter som man då kan ändra sättet som bilden representeras. Segmentering är väldigt användbar när man vill hitta en "gränskurva" mellan två olika regioner i en bild. Martin, Fowlkes och Malik(2004) använde sig utav en cirkel som var delad i två halvcirklar och därigenom fanns det en gränskurva rakt igenom cirkeln. Med hjälp av ett histogram som innehöll information om ljus, textur och färg kunde de sedan träna en klassifierare. Ett antal försökspersoner fick märka ut gränskurvan som löpte genom cirkeln och det här räknades sedan som det "rätta" svaret på vart kurvan gick. Det visade sig att klassificeraren sedan kunde märka ut gränskurvan bättre än vad "Edge detection" kunde. Trots detta stöter tekniken på problem eftersom det inte alltid bildas sammankopplade kurvor men också att tekniken bara använder sig av den lokala kontextuella informationen och inte ser till det globala. Det här leder till att vi inte kommer kunna använda bildsegementering för att få fram alla korrekta gränskurvor utan behöver ett system som istället använder sig utav en högre nivå av kunskap än bara färg och ljus. Ett användningsområde som segmentering i detta fall kan användas till är att skapa hundratals av superpixlar genom att översegmentera bilden. Det här är till stor nytta för en kunskapsbaserad-algorithm som trivs bättre med hundratals stora regioner istället för miljoner enstaka pixlar. 15

Objektigenkänning med hjälp av utseende Inom den här varianten av objektigenkänning använder man sig av hur objektet tycks se ut. Man delar in de objekt som är besläktade med varandra i samma kategorier, det finns till exempel många olika sorters fotbollar men alla ser ganska lika ut när det kommer till storlek och form. Om vi däremot kollar på två olika hus kan de skilja sig ganska mycket när det kommer till storlek, form och färg. För de objekt inom samma kategori som skiljer sig från varandra är det smidigare att fokusera på särskilda lokala delar inom objektet eftersom alla dessa delar har ett förhållande till varandra och till objektets helhet. Den här formen av objektigenkänning funkar bra på ansikten eftersom skillnaderna inte är så extremt många, de flesta ansikten har liknande form och samma placering på ögon, mun, näsa etc. Det finns de objekt som ändrar sig bra mycket mer än vad ansikten gör vilket kan orsaka problem för den klassifierare vi använder. De problem så då kan uppstå är bland annat: Occlussion - När det finns objekt som skymmer det objekt vi vill analysera eller när objektet själv har delar som skymmer andra delar av objektet(self-occlussion). Deformation - När objektet kan ändra utseende, som till exempel när en gymnast vrider armar och ben i olika vinklar. Foreshortening - vilket förvrider vissa delar av objektet vilket gör leder till att objektet kan klassifiseras på fel sätt Aspect - Ett problem som uppstår där objektet ser olika ut beroende på vilken vinkel åskådaren har gentemot objektet Trots dessa problem som vi kan stöta på inom den här formen av objektigenkänning så kommer vi i stort sett alltid kunna hitta något särdrag hos objektet som leder till att vi kan identifiera det. Det här leder i sin tur till en annan variant av igenkänning där man samlar ihop delar av objektet och om de flesta delarna sitter på "rätt" ställe på objektet kan vi dra slutsatser om vad det är för objekt vi ser. 16

Diskussion Efter att jag har fördjupat mig inom Computer Vision inser jag nu hur pass komplext och komplicerad det egentligen är. Jag hade ingen aning om hur pass mycket tid man skulle behöva lägga ner bara på att läsa om området och dessutom försöka få en övergripande bild utav Computer vision. Det finns väldigt många olika delgrenar, metoder, teorier och algoritmer som använd inom Computer Vision. De få veckor som projektarbetet har fortlöpt har endast räckt till att skrapa ytan på det här stora området vilket har lett till att man har fått sålla bort för "djup" information i vissa fall. Jag tror och hoppas att vi kommer att få se ganska mycket utveckling inom Computer Vision de närmsta åren med tanke på dess tillämpningsbarhet inom så många områden. Det känns ändå som att utveckling har kommit så långt att det inte längre skapas tio nya frågor av varje svar vilket är ett steg i rätt riktning. 17

Källförteckning Tryckta källor Stuart Russel and Peter Norvig, Prentice Hall(2010): Artificiell Intelligence, A modern approach, Third edition Andrew Blake and Tom Troscianko, John Wiley & Sons ltd(1990): AI and the Eye David A Forsyth, Jean Ponce, Prentince Hall(2002): Computer Vision: A Modern Approach Internetkällor http://cvlab.epfl.ch/~fua/courses/vision/intro/index.html http://en.wikipedia.org/wiki/computer_vision http://en.wikipedia.org/wiki/object_recognition_(computer_vision) http://www.cs.ucla.edu/~soatto/vision/courses/269/papers/poggio00.taf.pdf http://en.wikipedia.org/wiki/optical_flow http://en.wikipedia.org/wiki/edge_detection http://homepages.inf.ed.ac.uk/rbf/hipr2/gsmooth.htm http://en.wikipedia.org/wiki/gaussian_blur Bilder Figur 1: http://en.wikipedia.org/wiki/optical_flow Figur 3 och 4: http://homepages.inf.ed.ac.uk/rbf/hipr2/gsmooth.htm Figur 2: http://www.jhlabs.com/ip/blurring.html Figur 5 : http://www.vision3d.com/stereo.html 18