Projekt i bildanalys: Snakes Sofia Åberg, F98 HT-01 Handledare: Anders Heyden

Relevanta dokument
Projekt i Bildanalys: Automatisk detektion av lungemboli ur scintbilder

Programmeringsuppgift Game of Life

6.3. Direkta sökmetoder

Optimeringsproblem. 1 Inledning. 2 Optimering utan bivillkor. CTH/GU STUDIO 6 TMV036c /2015 Matematiska vetenskaper

Experimentella metoder, FK3001. Datorövning: Finn ett samband

Institutionen för matematik SF1626 Flervariabelanalys. Lösningsförslag till tentamen Måndagen den 5 juni 2017 DEL A

TAIU07 Matematiska beräkningar med Matlab

1 Några elementära operationer.

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

5B1817 Tillämpad ickelinjär optimering. Metoder för problem utan bivillkor, forts.

Tentamen i tmv036c och tmv035c, Analys och linjär algebra C för K, Kf och Bt A =, = det(a λi) = e 2t + c 2. x(t) = c 1. = c 1.

Analys på en torus. MatematikCentrum LTH

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

--x T Kx. Ka = f. K( a a i. = f f i. r i. = a a i. Ke i. a i 1. p i. Ka i. p i Kai α i

7 Extremvärden med bivillkor, obegränsade områden

Tavelpresentation - Flervariabelanalys. 1E January 2017

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

III. Analys av rationella funktioner

Föreläsning 9-10: Bildkvalitet (PSF och MTF)

Tekniska beräkningar. Vad är tekn beräkningar? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

TENTAPLUGG.NU AV STUDENTER FÖR STUDENTER. Kursnamn Fysik 1. Datum LP Laboration Balkböjning. Kursexaminator. Betygsgränser.

Lathund fo r rapportskrivning: LATEX-mall. F orfattare Institutionen f or teknikvetenskap och matematik

Armin Halilovic: EXTRA ÖVNINGAR

6 Derivata och grafer

TAOP61 Projekt 2. Kaj Holmberg (LiU) TAOP61 Optimering 28 oktober / 14

De fysikaliska parametrar som avgör periodtiden för en fjäder

1 Vektorer och tensorer

x f x + y f y x. 2 Funktionen f(x, y) uppfyller alltså given differentialekvation.

TANA17 Matematiska beräkningar med Matlab

Bose-Einsteinkondensation. Lars Gislén, Malin Sjödahl, Patrik Sahlin

Programmering = modellering

H1009, Introduktionskurs i matematik Armin Halilovic

Jordbävningar en enkel modell

Exempel ode45 parametrar Miniprojekt 1 Rapport. Problemlösning. Anastasia Kruchinina. Uppsala Universitet. Januari 2016

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR)

9. Magnetisk energi Magnetisk energi för en isolerad krets

Simulering av Poissonprocesser Olle Nerman, Grupprojekt i MSG110,GU HT 2015 (max 5 personer/grupp)

18. Fasjämvikt Tvåfasjämvikt T 1 = T 2, P 1 = P 2. (1)

TMA226 datorlaboration

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TENTAMEN MTGC12, MATERIALTEKNIK II / MTGC10 MATERIALVAL

SF1669 Matematisk och numerisk analys II Bedömningskriterier till tentamen Torsdagen den 4 juni 2015

Beräkningsvetenskap. Vad är beräkningsvetenskap? Vad är beräkningsvetenskap? Informationsteknologi. Informationsteknologi

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

Repetion. Jonas Björnsson. 1. Lyft ut den/de intressanta kopp/kropparna från den verkliga världen

Symboler och abstrakta system

Segmentering av celler med hjälp av aktiva konturer och level sets

EXPERIMENTELLA METODER LABORATION 2 UPPTÄCK ETT SAMBAND BALKEN

Jeep-problemet. Kjell Elfström

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Två gränsfall en fallstudie

Diskussionsproblem för Statistik för ingenjörer

Inledning. Kapitel Bakgrund. 1.2 Syfte

Växlar - Underhålls strategi slipning av växlar - Med eller utan rörlig korsnings spets?

Modellering av Dynamiska system. - Uppgifter till övning 1 och 2 17 mars 2010

Obligatoriska uppgifter i MATLAB

Parametriserade kurvor

Föreläsning 9 10: Bildkvalitet (PSF och MTF)

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Projekt i Bildanalys: Mönsterigenkänning inom bioinformatik

The Brachistochrone problem

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

har ekvation (2, 3, 4) (x 1, y 1, z 1) = 0, eller 2x + 3y + 4z = 9. b) Vi söker P 1 = F (1, 1, 1) + F (1, 1, 1) (x 1, y 1, z 1) = 2x + 3y + 4z.

LABORATION 1 AVBILDNING OCH FÖRSTORING

SF1626 Flervariabelanalys Tentamen 14 mars 2011,

Spiralkurvor på klot och Jacobis elliptiska funktioner

Armin Halilovic: EXTRA ÖVNINGAR

Mekanik FK2002m. Kinetisk energi och arbete

Sekantens riktningskoefficient (lutning) kan vi enkelt bestämma genom. k = Men hur ska vi kunna bestämma tangentens riktningskoefficient (lutning)?

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

UPPGIFTER KAPITEL 2 ÄNDRINGSKVOT OCH DERIVATA KAPITEL 3 DERIVERINGSREGLER

Tentamen i Systemteknik/Processreglering

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

Praktisk beräkning av SPICE-parametrar för halvledare

1 LP-problem på standardform och Simplexmetoden

Belastningsanalys, 5 poäng Balkteori Moment och tvärkrafter. Balkböjning Teknisk balkteori Stresses in Beams

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

För elever i gymnasieskolan är det inte uppenbart hur derivata relaterar

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Structuring Two Dimensional Space

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

Flervariabelanalys E2, Vecka 5 Ht08

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Fysik (TFYA14) Fö 5 1. Fö 5

Sidor i boken f(x) = a x 2 +b x+c

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 26 november 2015 Sida 1 / 28

Manual för ett litet FEM-program i Matlab

Föreläsning 5: Grafer Del 1

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Strålningsfält och fotoner. Våren 2016

201. (A) Beräkna derivatorna till följande funktioner och förenkla så långt som möjligt: a. x 7 5x b. (x 2 x) 4. x 2 +1 x + 1 x 2 (x + 1) 2 f.

Sensorteknik Ex-tenta 1

Kompendium om. Mats Neymark

Parabeln och vad man kan ha den till

Institutionen för Matematik, KTH Torbjörn Kolsrud

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Dimensioner och fraktal geometri. Johan Wild

9. Magnetisk energi Magnetisk energi för en isolerad krets

Transkript:

Projekt i bildanalys: Snakes Sofia Åberg, F98 HT-01 Handledare: Anders Heyden

1. Inledning Inom datorseende vill man ofta segmentera ut objekt som man sedan vill följa i en bildsekvens. En segmenteringsteknik som används för detta är aktiva konturer-snakes. Kortfattat kan sägas att denna teknik fungerar så att man i bilden lägger ut en kontur runt det objekt som man vill segmentera ut. Denna kontur styrs av en energifunktion som beror på snakens såväl som bildens egenskaper. Precis som fysikaliska system vill snaken minimera sin energi, vilket leder till att den sluter sig kring objektet i bilden. Denna rapport kommer i avsnitt att ge en bakomliggande teori om energifunktionen och hur denna kan minimeras. Sedan, i avsnitt 3, kommer en enkel implementering av en snake att redovisas, med tillhörande exempel.. Aktiva konturer och energifunktioner En snake är en kurva vilken man lägger ut i bilden runt det objekt som man vill segmentera ut. Denna kurva är aktiv såtillvida att den påverkas av krafter som får den att ändra sin form. Dessa krafter kan härledas ur en energifunktion som är kopplad till kurvan. Krafterna har sådan storlek och riktning att de strävar efter att minimera kurvans energi, precis som i verkliga fysikaliska system. Matematiskt representeras snaken av en parametriserad kurva v(s). v ( s) = ( x( s), y( s)), där s [ 0, 1] (1) Denna styrs av en energifunktion som kan skrivas som 1 ( E v( s)) + E ( v( s)) E ( v( s)) ) ds Esnake = inre ( bild + villkor () 0 Här är Einre den inre energin i snaken som beror på hur den är sträckt och böjd, ett mått på hur olika saker i bilden, exempelvis konturer, påverkar snaken och mått på yttre villkor som användaren har lagt på. Ebild E villkor ett Inre energin Snakens inre energi beror bara på dess form och är helt oberoende av hur bilden ser ut. Snakens vilja att minimera sin inre energi kommer att leda till att krafter verkar på den som vill dra ihop den. Om vi bara hade haft den inre energin att ta hänsyn till hade alltså snaken successivt omslutit ett mindre och mindre område. Den inre energin kan delas upp i olika delar. En del kan sägas styra de elastiska egenskaperna hos snaken varvid man kan likna den vid ett gummiband som deformeras på olika sätt. Detta energibidrag kan skrivas som

E elastisk dv = α ( s) (3) ds där α (s) kan tolkas som elasticiteten längs snaken. Den andra delen av den inre energin utgörs av böjningsenergi. Snaken liknas vid ett metallband med en viss styvhet som ska böjas till. Denna energi beror på krökningen på kurvan och kan skrivas som E böjning d v = β ( s) (4) ds där β (s) kan tolkas som styvheten längs kurvan. Bildenergi För att kunna segmentera ut ett objekt i en bild måste givetvis snaken påverkas av krafter från bilden. Bildenergin utgörs av en eller flera komponenter, exempelvis vill man kanske att snaken ska dras till kanter eller linjer. Om man vill att snaken ska dras till mörka linjer eller områden kan man definiera en linjeenergi som E linje = I( x, y) (5) där I(x, y) betecknar intensiteten i punkten (x, y). På liknande sätt kan en kantenergi definieras som gör att snaken dras till kanter, d.v.s. punkter där gradienten är stor. E kant = I( x, y) (6) Minimering av energifunktionen Att minimera energifunktionen är ett långt ifrån trivialt problem och det finns många olika tillvägagångssätt. En metod bygger på att man hela tiden tar ett litet steg i gradientens motsatta riktning (steepest-descent method). Denna har dock nackdelen att det tar väldigt lång tid innan man når ett minimum. Ett annat sätt är att så kallad dynamisk programmering där man i varje steg prövar alla möjligheter och väljer den som ger den minsta energin. Nackdelen med denna är att den är väldigt beräkningskrävande. Ett mer empiriskt sätt är att direkt ta fram de krafter som verkar på snaken och ta ett steg i denna riktning. Ett gemensamt problem för de olika metoderna är att det är svårt att bestämma viktparametrarna för de olika energislagen. Dessutom är hela problemställningen mycket känslig för brus vilket ytterligare komplicerar det hela.

3. Implementering av en snake I detta avsnitt beskrivs en implementering av en snake. Syftet med denna är att få en ökad förståelse för hur en snake fungerar och, kanske framförallt, att det verkligen fungerar. Utgångspunkten i denna implementering är att man betraktar de krafter som energifunktionen ger upphov till. När man väl vet kraften kan man ta ett steg i dess riktning och på så vis kommer förhoppningsvis energin att stegvis minimeras. När man implementerar en snake betraktar man inte hela kurvan utan ett ändligt antal punkter på denna, s.k. kontrollpunkter. Genom att diskretisera de krafter som verkar på snaken kan man beräkna den kraft som verkar på var och en av dessa punkter. Den elastiska energin på snaken ges av ekvation (3). Då kan den elastiska kraften i x-led på den i:te kontrollpunkten skrivas som: F x _ elastisk, i = K1 + 1 (( 1 ) + ( )). (7) Ett liknande uttryck gäller givetvis för kraften i y-led. Den elastiska kraften strävar efter att krympa snaken eftersom den försöker minimera avståndet mellan punkterna. Detta syns tydligt i figuren nedan. Figur1. Snaken krymper successivt under inverkan av den elastiska kraften. I ekvation (4) ser man att böjenergin beror på krökningen på kurvan. Om man disktretiserar denna kan man uttrycka kraften på den i:te kontrollpunkten som:

F K (6x 4x 4x + x x ). (8) böj _ x, i = i i+ 1 i 1 i+ + i Även här får man ett analogt uttryck för kraften i y-led. Böjkraften strävar efter att kurvan ska vara jämn och inte ha några vassa kanter. Detta illustreras i figur. Figur. Böjkraften strävar efter att ta bort vassa kanter på kurvan. När det gäller bildenergier finns det många olika saker man kan ta hänsyn till. I denna implementering har endast linje- och kantenergier tagits med. Ekvation (5) ger uttrycket för linjeenergin. Ett enkelt sätt att implementera linjekraften är att appromera denna med gradienten I( + 1, yi ) I( 1, yi ) F line, i = (9) I(, yi + 1) I(, yi 1) Om vi har en bild med konstant bildgradient borde alltså snaken röra sig odeformerad mot mörkare eller ljusare områden beroende på hur vi väljer tecken när vi definierar linjeenergin. Ett positivt tecken gör att snaken vill röra sig mot mörkare områden och ett negativt gör att den vill röra sig mot ljusare. Detta visas i figur3.

Figur3. Linjekraften gör att snaken rör sig mot det mörka området. Kantenergin given av ekvation 6 försöker binda snaken till områden med hög gradient. Kantkraften kan skrivas som I( + 1, yi ) I( 1, yi ) F kant, i = (10) I(, yi + 1) I(, yi 1) Den totala kraften som verkar på snaken fås som en sammanvägning av de olika delkrafterna. Snakens uppförande beror starkt på vilka vikter som väljs för de olika krafterna, vilket gör den väldigt känslig. Det är väldigt lätt att snaken blir instabil och helt urartar. Detta är inte bara ett problem med just denna implementeringen utan gäller helt allmänt för snakes. Hur fungerar då snaken för en riktig bild? Betrakta följande bild med blodceller, figur 4. Säg att man önskar segmentera ut en av de svarta cirklarna. Börja med att placera ut en snake runt den intressanta cellen. Kör sedan programmet ett antal interationer med lämpligt valda parametrar. Resultatet ser vi i i figur 5. Snaken lägger sig fint runt den önskade cellen.

Figur4. Snaken placeras ut runt den önskade blodcellen. Figur5. Efter ett antal intertioner har snaken segmenterat ut den önskade cellen.

Snakes används ju ofta i datorseendesammanhang när man vill tracka ett objekt, d.v.s. följa det i en bildsekvens. Antag nu att man har en bildsekvens med en bil och vill studera hur den rör sig. Kanske har man då anledning att segmentera ut navet på ett av hjulen för att sedan studera hur det rör sig. I figur 6 visas ett hjul och en initierad snake. Efter ett antal iterationer, återigen med väl valda parametrar, så har man segmenterar ut navet, se figur 7. Den här implementeringen är dock inte så bra som man kan tro. Det är svårt att välja lämpliga parametrar och den fungerar dåligt på objekt med godtycklig form. För att den ska fungera bör objekten vara elliptiska. Ändå fungerar den bra med tanke på det enkla tillvägagångssättet. Koden till programmet finns med som en bilaga till denna rapport. Figur6. Ett hjul med en initierad snake.

Figur7. Resultat efter ett antal iterationer. 4. Sammanfattning För att segmentera ut objekt i en bild kan man använda sig av snakes. En snake är en kurva som man placerar ut i bilden runt det objekt som man vill segmentera ut. Problemet att få denna kurva att sluta sig kring objektet är ett optimeringsproblem där man vill minimera en med snaken sammanhörande energifunktion. Detta problem kan lösas på många olika sätt. I denna rapport har ett sätt redovisats där man beräknar de krafter som verkar på snaken. Denna enkla modell fungerar för att segmentera ut elliptiska objekt, men den är väldigt känslig för små parametervariationer. Snakes är en relativt ny metod och används framförallt inom datorseende när man vill följa ett objekt i en bildsekvens. 5. Referenser [1] -D Deformable Template Models: A Review (Yu Zhong) http://www.dai.ed.ac.uk/cvonline/local_copies/zhong1/zhong.html [] Active or fleble contour models (Andrew Wallace och Sarah Price) http://www.dai.ed.ac.uk/cvonline/local_copies/marble/medium/snakes/snakes.htm

[3] Active Contour Models (Snakes) (David Young) http://www.dai.ed.ac.uk/cvonline/local_copies/young/vision7.html [4] Snakes: an active model (Ramani Pichumani) http://www.dai.ed.ac.uk/cvonline/local_copies/ramani1/node31.html [5] Active contour models - snakes (Milan Sonka, Vaclav Hlavac, and Roger Boyle) http://www.icaen.uiowa.edu/~dip/lecture/understanding.html [6] Implementation of Snakes (Jose Gerardo Gonzalez) http://www.cc.gatech.edu/classes/cs73_97_spring/participants/gonzalez/midterm/report/node3.html Bilaga: Programkod function [snake]=contour(snake,absgrad,im,alfa,beta,gamma,delta) K1=1; K4=0.05; step=1; nbrsnas=size(snake,); extendsnake=[snake(:,nbrsnas-1:nbrsnas) snake snake(:,1:)]; for i=1:nbrsnas Fel(:,i)=*K1*(extendsnake(:,i+1)-*extendsnake(:,i+)+extendsnake(:,i+3)); Fbend(:,i)=*K4*(6*extendsnake(:,i+)-4*extendsnake(:,i+3)- 4*extendsnake(:,i+1)+extendsnake(:,i+4)+extendsnake(:,i)); Fline(:,i)=[im(snake(1,i)+1,snake(,i))-im(snake(1,i)-1,snake(,i));im(snake(1,i),snake(,i)+1)- im(snake(1,i),snake(,i)-1)]; Fedge(:,i)=[-absgrad(snake(1,i)+1,snake(,i))+absgrad(snake(1,i)-1,snake(,i));- absgrad(snake(1,i),snake(,i)+1)+absgrad(snake(1,i),snake(,i)-1)]; if sqrt(fedge(1,i)^+fedge(,i)^)>1.e-4 Fedge(:,i)=Fedge(:,i)/sqrt(Fedge(1,i)^+Fedge(,i)^); end end Ftot=alfa*Fel-beta*Fbend-gamma*Fedge-delta*Fline; snake=round(snake+step*ftot); hold off colormap(gray(56)) image(im); hold on plot(snake(,:),snake(1,:),'-r',snake(,:),snake(1,:),'.b')