Projektarbete i Bildanalys vid Institutionen för Matematik Lunds Tekniska Högskola. Segmentering. Av: Karin Kolmert och Julia Stojanov

Relevanta dokument
Projekt i bildanalys Trafikövervakning

Flervariabelanalys, inriktning bildbehandling, datorövning 3

Signaler, information & bilder, föreläsning 15

Bildanalys. Segmentering. Föreläsning 7. Split and Merge. Region Growing

Bildbehandling, del 1

Bildförbättring i spatial domänen (kap. 3) Bildförbättring (enhancement) Spatial domän. Operatorer. Tröskling (threshold) Gråskale-transformationer

Medicinsk Informatik VT 2004

Projekt i Bildanalys: Automatisk detektion av lungemboli ur scintbilder

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

Bilaga 4, Skapa grafiskt användargränssnitt med guide

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

Ett enkelt OCR-system

Tentamen Bildanalys (TDBC30) 5p

Medicinsk Informatik IT VT2002

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

TNM030 Tentasammanfattning (frågor) Nathalie Ek, Sammanfattning. TNM030 - Bildbehandling och bildanalys

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Användarhandledning. LiTH Segmentering av MR-bilder med ITK Anders Eklund Version 1.0. Status

Bildbehandling i frekvensdomänen. Erik Vidholm

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

Laboration 4: Digitala bilder

MMA132: Laboration 2 Matriser i MATLAB

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

Bildanalys för vägbeläggningstillämplingar

Bildbehandling En introduktion. Mediasignaler

Histogramberäkning på en liten bild

bilder för användning

Programmeringsuppgift Game of Life

Ansiktsigenkänning med MATLAB

TNM030 -Sammanfattning Nathalie Ek, Sammanfattning. TNM030 - Bildbehandling och bildanalys

Bildregistrering Geometrisk anpassning av bilder

Obligatoriska uppgifter i MATLAB

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Histogram över kanter i bilder

Signaler, information & bilder, föreläsning 15

Photoshop Elements 7. Adobe. Grundkurs

Testprotokoll. LiTH Segmentering av MR-bilder med ITK Anders Eklund Version 1.0. Status

Laboration i Fourieroptik

Föreläsning 7: Klassificering, minsta kvadratproblem, SVD, forts.

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Flerdimensionell analys i bildbehandling

Uppgift 1 ( Betyg 3 uppgift )

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

Fingerprint Matching

Övervakningssystem. -skillnader i bilder. Uppsala Universitet Signaler och System ht Lärare: Mathias Johansson

Dilation Erosion. Slutning. Öppning

TDIU01 - Programmering i C++, grundkurs

Signaler, information & bilder, föreläsning 14

Värmedistribution i plåt

TEM Projekt Transformmetoder

-Projekt- FMA170- Bildanalys

Flerdimensionella signaler och system

Graärgning och kromatiska formler

Beräkningsvetenskap föreläsning 2

HAND TRACKING MED DJUPKAMERA

Bildbehandling i spatialdomänen och frekvensdomänen

FYSIKENS MATEMATISKA METODER

Tentamen, Programmeringsteknik för BME, F och N

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Signaler, information & bilder, föreläsning 14

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

Fönster och dörr. Kapitel 3 - Fönster och dörr... 3

8 Binär bildbehandling

Android La sa va rden fra n sensorer

PROGRAMMERINGSTEKNIK TIN212

Projektion av träningsdata på aktuell underrum av dim 1. Föreläsning 7: Klassificering, minsta kvadratproblem, SVD, forts.

Matematisk Modellering

Genetisk programmering i Othello

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Beräkningsverktyg HT07

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018

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

Matematisk modellering fortsättningskurs Visuell variation

Signal- och bildbehandling TSBB14

5B1146 med Matlab. Laborationsr. Laborationsgrupp: Sebastian Johnson Erik Lundberg, Ann-Sofi Åhn ( endst tal1-3

En samling fårskallar

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Problemreduktion. Vad utmärker en matematiker? Valentina Chapovalova. 22 januari HMT-finalen

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

Laboration A Objektsamlingar

Systembolagets riktlinjer för produktbilder

Partiklars rörelser i elektromagnetiska fält

Fältnamn /Rubrik Fältnamn /Rubrik Fältnamn /Rubrik Fältnamn /Rubrik Data Data Data Data Data Data Data Data

Kapitel 3 Fönster och dörr... 3

Numerisk lösning till den tidsberoende Schrödingerekvationen.

Prestandautvärdering samt förbättringsförslag

LiTH Autonom styrning av mobil robot Testplan Version 1.0 TSRT71-Reglertekniskt projektkurs Anders Lindgren L IPs

Föreläsning 14: Exempel på randvärdesproblem. LU-faktorisering för att lösa linjära ekvationssystem.

Photoshop - Kanaler. Den översta raden motsvarar de sammanslagna kanalerna RGB.

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Arbeta med bilder. Lathund kring hur du fixar till bilder från digitalkamera eller Internet så att de går att använda i ett kommunikationsprogram.

Värme till vän eller främling

Bildbehandling i frekvensdomänen

Fysik. Ämnesprov, läsår 2012/2013. Delprov B. Årskurs. Elevens namn och klass/grupp

Teknisk dokumentation MCIV

Samling och kaffe. Temakväll Bildhantering i släktforskningen Genomgång kring temat. Forska själv. Forska själv. Diskussion kring temat

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Laboration: Grunderna i MATLAB

Transkript:

Projektarbete i Bildanalys vid Institutionen för Matematik Lunds Tekniska Högskola Segmentering Av: Karin Kolmert och Julia Stojanov Handledare: Björn Johansson 29 November, 2001

1 Inledning I detta projekt skulle olika segmenteringsmetoder provas och jämföras. Ursprunget till uppgiften var projektet Computer Vision for determination of Fridge Contents, se referens [1]. I kylskåpsprojektet skulle ett program skrivas för detektion av vad som fanns i kylskåpet. För att göra detta behövdes någon form av segmentering och sedan en igenkänningsalgoritm. I vårt projekt studerades en ketchupflaska respektive ett tomt kylskåp, se figur 1a och b. Koden för algoritmerna finns i bilaga 1. Figur 1a, b 2 Utförande 2.1 Kantdetektering En metod för att segmentera ut ett objekt är att först ta fram kanterna på objektet. Detta kan göras med hjälp av olika filter, se referens [2]. 2.1.1 Prewitt Först provades Prewitt-masken: 1 0 1 1 0 1 1 0 1 Detta är ett deriverings filter som tar fram en kant i taget. Genom att falta med denna mask fås kanterna fram i y-led. Transponeras den sedan fås kanterna i x-led fram. Dessa båda bilder kan kombineras och alla kanter träder fram. För att få fram tydligare kontraster trösklades bilden också. Se figur 2b. 2.1.2 Sobel Ett annat deriveringsfilter är Sobel-masken som även har en utjämnande effekt. Den ser ut så här:

1 2 1 0 0 0 1 2 1 För att få fram alla kanter görs likadant som ovan. Se figur 2d. 2.1.3 Laplace Laplace- masken ser ut så här: 0 1 0 1 4 1 0 1 0 Den tar fram kanter i både x- och y-led på en gång. Den är bruskänsligare än de ovannämnda filterna, vilket syns tydligt i figuren. Se figur 2c. Figur 2a, b, c, d 2.1.4 Jämförelser Som synes i bilderna blir det ingen större skillnad på Sobel- och Prewitt-filterna. Laplacefiltret är mer bruskänsligt än de båda andra. Det ger alltså inte lika bra resultat. 2.2 Segmentering 2.2.1 Differens av ketchupbild och bakgrundsbild För att kunna segmentera ut själva flaskan tas differensen mellan ketchupbilden och bakgrundsbilden. Då uppstår problem med skuggor. Dessa kan fås bort genom att tröskla ganska hårt. Se figur 3a. I figurens syns det att listen i kylskåpet dragits bort från flaskan och därför gjort ett hål i flaskans kontur. Genom att utföra slutning av bilden, det vill säga först dilatation och sedan erosion, kan kanten slutas. Se figur 3b. I denna bild finns det en del brus som även det har slutits och därför blivit större än vad det var från början. Detta plockas bort eftersom det är en ren ketchupbild som önskas. Se figur 3c. Det slutliga resultatet kan skådas i figur 3d.

Figur 3a, b, c, d 2.2.2 Ifyllnad av flaska Ytterligare ett sätt att segmentera fram flaskan är att utnyttja detekteringen av kanterna. Först används bilden av de kanter som var framtagna med Prewitt-masken, se figur 4b Eftersom det är en del hål i kanten så sluts bilden först. Detta görs som ovan, se figur 4c. I bilden syns brus och detta tas bort, se figur 4d. Nu är etiketten fortfarande kvar och eftersom det är enbart konturerna som önskas måste denna plockas bort. Detta görs genom att fylla i området mellan flaskans konturer, se figur 5a. Flaskan är nu fortfarande avgnagd upptill och dessa områden fylls i genom slutning, se figur 5b. Kanterna är här lite taggiga och därför görs en utjämning med hjälp av ett medelvärdesfilter, se figur 5c. Figur 4a, b, c, d Figur 5a, b, c, d Försöket upprepades med de bilder där kanterna var framtagna med Sobel- och Laplacefilterna. För Sobel-filtret blev resultatet identiskt med Prewitt-filtret eftersom ursprungsbilden var nästan identisk, se figur 2b och 2c. För Laplace blev resultatet inte bra med ifyllnadsmetoden. Detta beror på att det var för mycket brus och att kanterna inte var tillräckligt framtagna.

2.2.3 Snakes Den sista metoden som användes var Snakes, som är en form av Active contour. Active contour används för segmentering av dynamiska bilder och 3D-bilder. Snakes deformerar en kontur och stänger in de intressanta områdena som oftast är linjer eller kanter. Den kallas snakes eftersom de deformerade konturerna liknar en orm när de rör sig. Om en approximation av objektets kanter finns så kan active contour användas för att ta fram de riktiga kanterna. En active contour är en samling av n punkter i bildplanet. Dessa punkter itereras så att de närmar sig objektets kant genom en lösning av energiminimeringsproblemet. Se figure 8.6 (Referens [3]). I bild (a) syns Snakens punkter som en rak linje. I bild (b) har de börjat anpassa sig efter objektets konturer. Slutligen i bild (c) är minimeringen slutförd och de verklig konturerna träder fram. Snakes-algoritmen som användes i den här uppgiften är gjord av Ghassan Hamarneh, 23 maj 2000. I denna algoritm sattes först punkterna för ormen ut runt objektet. Därefter justerades olika parametrar till exempel tröskelvärde, ormens flexibilitet och att den drog sig mot mörka områden. När detta var gjort började iterationen och ormen slöt sig runt flaskan. Resultatet finns i figur 6. Figur 6

2.2.4 Jämförelser mellan segmenteringsmetoder Fördelen med differensmetoden är att den är enklare och därför snabbare. Tyvärr så blir inte flaskans konturer så jämna, utan de ändrar form lite grann. Halsen på flaskan blir dessutom smalare än ursprungsbildens hals och korken ändrar form. Ifyllnadsmetoden är mer komplicerad och tar längre tid att köra i Matlab. Den ger dock mycket bättre resultat med jämna konturer och normalstorlek på flaskan. Korken blir emellertid lite avklippt. Allra bäst resultat uppnås med snakes-metoden. Denna tar dock längre tid och även här så blir korken avskuren eftersom den har en annan färg än flaskan. Parametrarna måste också ändras från bild till bild. 3 Slutsats Vi har provat olika segmenteringsmetoder, från vanlig derivata och differens till mer komplicerade ifyllnadsmetoder och Snakes-metoden. Jämfört med resultaten i referens [1] har vi fått bort brus i bilden, vilket inte de har. Däremot är vår kork lite avklippt. Vilken metod som passar bäst beror på vilken bild man har, samt om man har en färdig Snakes-algoritm eller inte. 4 Referenser: [1] F. Färnström, B. Johansson, K. Åström. Computer Vision for determination of Fridge Contents. Paper, Center for Mathematical Sciences, Lund University, Sweden, 2001. [2] R.C. Gonzalez, R.E. Woods. Digital Image Processing. 1992, Addison-Wesley Publishing Company, Inc. [3] http://www.icaen.uiowa.edu/~dip/lecture/understanding2.html. 27/11-01

Bilaga 1 Deriveringsfilter % Prewitt ket=rgb2gray(imread('img001.jpg')); subplot(2,2,1) imagesc(ket) title('orginalketchupflaska') derx=[-1 0 1; -1 0 1; -1 0 1]; dery=derx'; falt1=conv2(ket,derx); falt2=conv2(ket,dery); gradabs=sqrt(falt1.^2+falt2.^2); subplot(2,2,2) imagesc(gradabs>50) title('prewitt, tröskel 50') % Laplace derx=[0-1 0; -1 4-1;0-1 0]; falt1=conv2(ket,derx); subplot(2,2,3) imagesc(falt1>5) title('laplace tröskel 5') % Sobel derx=[-1 0 1; -2 0 2; -1 0 1]; dery=derx'; falt1=conv2(ket,derx); falt2=conv2(ket,dery); gradabs=sqrt(falt1.^2+falt2.^2); subplot(2,2,4) imagesc(gradabs>65) title('sobel tröskel 65') Skillnad mellan bilder ket=rgb2gray(imread('img001.jpg')); tom=rgb2gray(imread('img000.jpg')); diff=double(ket)-double(tom); bild=(diff>-50); subplot(2,2,1) imagesc(bild) title('skillnaden mellan ketchupbilden och bakgrunden,trösklad') % Skapa en "ettor-bild" for i=1:size(bild,1) for k=1:size(bild,2) ett(i,k)=1; inv=ett-bild;

% Slutning se = strel('disk',55); utbild=imdilate(inv,se); utbild2=imerode(utbild,se); subplot(2,2,2) imagesc(utbild2) title('sluten bild') %Borttagning av brus [L,num]=bwlabel(utbild2); nybild=(l==2); subplot(2,2,3) imagesc(nybild) title('borttagning av brus') %Invers for i=1:size(nybild,1) for k=1:size(nybild,2) ett(i,k)=1; resultat=ett-nybild; subplot(2,2,4) imagesc(resultat) title('resultat') Ifyllnad med underprogram brusborttagning title('brusborttagen flaska') for i=1:482 % skapar två vektorer att stoppa in kantkoordinaten i v(i)=0; % och en differensvektor w(i)=0; avstand(i)=0; for i=1:482 % skapar en ny bild for k=1:642 bild2(i,k)=1; bild=fin; %storlek 482x642 for i=1:482 %från vänster (kanske) k=1; while bild(i,k)==0 & k~=642 % i är skilt från 640 (slut på bilden) k=k+1; if bild(i,k)==1 bild2(i,k)=0; v(i)=k; % om while-loopen stannar för att bilden är slut blir elementet i vektorn 481 (kanske problem)

for i=1:482 %från höger (kanske) k=642; while bild(i,k)==0 & k~=1 % i är skilt från 0 (slut på bilden) k=k-1; if bild(i,k)==1 bild2(i,k)=0; w(i)=k; % Sätta värdena mellan kanterna till 1 for i=1:482 avstand(i)=w(i)-v(i); % avstånd mellan flaskans kanter beräknas for s=v(i):(v(i)+avstand(i)) if avstand(i)~=0 & v(i)~=0 bild2(i,s)=0; % sätter pixlarna mellan flaskans kanter till 1 figure subplot(2,2,1) imagesc(bild2) title('ifylld flaska') % Skapa en "ettor-bild" for i=1:size(bild2,1) for k=1:size(bild2,2) ett(i,k)=1; res=ett-bild2; % Slutning se = strel('disk',55); utbild=imdilate(res,se); utbild2=imerode(utbild,se); subplot(2,2,2) imagesc(utbild2) title('sluten') % Utjämning filter=[1 1 1; 1 4 1; 1 1 1]; falt=conv2(utbild2,filter); subplot(2,2,3) imagesc(falt) title('utjämnad med medelvärdesfilter') %inversen for i=1:size(falt,1) for k=1:size(falt,2)

ett2(i,k)=1; res2=ett2-falt; subplot(2,2,4) imagesc(res2) title('resultat') Brusborttagning %prewittbilden sluten %områdessökning %ta bort små områden som är brus logisk %Gör slutning på prewittbild [L,num]=bwlabel(utbild2,8); %Delar upp bilden i num olika områden r1=1; l=0; for i=1:num [r,c]=find(l==i); %hittar det största sammanhängande området if length(r)>r1 r1=r; l=i; fin=(l==l); subplot(2,2,4) imagesc(fin) title('brus borttaget') Logisk prewitt % Slutning se = strel('disk',8); utbild=imdilate(bild,se); %figure %imagesc(utbild) % utbild2=imerode(utbild,se); subplot(2,2,3) imagesc(utbild2) title('sluten bild')