Projekt i Bildanalys: Mönsterigenkänning inom bioinformatik

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

Projekt i bildanalys Trafikövervakning

Bildanalys för vägbeläggningstillämplingar

Ansiktsigenkänning med MATLAB

Ett enkelt OCR-system

Laboration 4: Digitala bilder

Tillämplingar av bildanalys

Histogram över kanter i bilder

L A B R A P P O R T 1

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

Reflektion efter tillverkande av skalenlig modell

Kvalificeringstävling den 30 september 2008

DigitalBild del 2 Adobe Photoshop Elements ver 6.0

TANA17 Matematiska beräkningar med Matlab

Micro:bit och servomotorer

DigitalBild del 2 Adobe Photoshop Elements ver 5.0

Fingerprint Matching

Sociala kompassen Folkhälsa

bilder för användning

Laboration i datateknik

Min matematikordlista

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

Modul 1: Komplexa tal och Polynomekvationer

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

4-8 Cirklar. Inledning

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Kort introduktion till POV-Ray, del 1

diverse egenskapspaletter

SF1625 Envariabelanalys Lösningsförslag till tentamen

TEM Projekt Transformmetoder

Tentamen, Programmeringsteknik för BME, F och N

DigitalBild del 2 Adobe Photoshop Elements ver 3.0

Ljusets böjning & interferens

Högskoleprovet. Block 5. Anvisningar. Övningsexempel. Delprovet innehåller 22 uppgifter.

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Att skapa en bakgrundsbild och använda den i HIPP

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

Hur jag tänker innan jag trycker på knappen? Lasse Alexandersson

Bemästra verktyget TriBall

Bilaga 1. Markering av förankrade ballonger, drakar m.m.

Lösa ekvationer på olika sätt

TAIU07 Matematiska beräkningar med Matlab

Modelltentamen. Ditt svar ska vara ett ändligt uttryck utan summationstecken.

Det här dokumentet är tänkt som en minnesanteckning. programmet och är alltså inte tänkt att förklara allt.

Ljusets böjning & interferens

-Projekt- FMA170- Bildanalys

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

a = a a a a a a ± ± ± ±500

Tentamen i. Programmering i språket C

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Tentamen Bildanalys (TDBC30) 5p

Bildbehandling i frekvensdomänen

Laboration 3. Funktioner, vektorer, integraler och felskattning

Mikael Bondestam Johan Isaksson. Spelprogrammering. med CDX och OpenGL

Edison roboten som går at bygga ihop med LEGO

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

Optimering av depåpositioner för den minimala bensinförbrukningen i öknen

Optimering av olika slag används inom så vitt skilda områden som produktionsplanering,

Exempelprov. Matematik. Bedömningsanvisningar

MR-laboration: design av pulssekvenser

Slutrapport Get it going contracts

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

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

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

i=1 β i a i. (Rudolf Tabbe.) i=1 b i a i n

Tynker gratisapp på AppStore

Tentamen i Beräkningsvetenskap II, 5.0 hp,

2 Matrisfaktorisering och lösning till ekvationssystem

Envariabelanalys 5B1147 MATLAB-laboration Derivator

1.1. Den polska grenen består normalt av 2 löp men kan vara endast 1 löp vid en längre bana eller 3 vid en kort bana.

MAA7 Derivatan. 2. Funktionens egenskaper. 2.1 Repetition av grundbegerepp

UPPGIFT 1 V75 FIGUR 1.

F3C HELIKOPTER SPORT PROGRAM (Ny manöver 2 ersätter tidigare, fr.o.m. 2001)

Lösningar till udda övningsuppgifter

Bemästra verktyget TriBall

Linnéuniversitetet Institutionen för datavetenskap, fysik och matematik Per-Anders Svensson

Videosignalen. Blockdiagram över AD omvandling (analogt till digitalt)

10 poäng Den valda längden måste vara konsekvent på alla naglar i förhållande till nagelbädden. Förlängningen skall inte överstiga 50% av nagelbädden.

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.

Kamerans sensor. I kameran sitter bildsensorn som består av en rektangulär platta med miljontals små ljuskänsliga halvledare av CCD eller CMOS typ.

Faltningsreverb i realtidsimplementering

Här hittar du ett exempel på ritprogrammet:

TANA17 Matematiska beräkningar med Matlab

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Föreläsning 3: Radiometri och fotometri

Kapitel 35, interferens

Ritning av ytor i allma nhet och OCAD-lo sningar da rtill i synnerhet

Bilaga 1. Markering av förankrade ballonger, drakar m.m.

TMV166 Linjär Algebra för M. Tentamen

Anvisningar för ansiktsfoton som skickas in elektroniskt

Linjära ekvationer med tillämpningar

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning

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

Basbyte (variabelbyte)

BIOSTATISTISK GRUNDKURS, MASB11 ÖVNING 6 ( ) OCH INFÖR ÖVNING 7 ( )

Transkript:

Projekt i Bildanalys: Mönsterigenkänning inom bioinformatik 2001-11-30 av Jonas Hjelm (F98) och Åsa Jönsson (F98) Handledare: Henrik Malm Jonas Hjelm f98jhj@efd.lth.se Åsa Jönsson f98ajo@efd.lth.se

Inledning Vi har i vårt projekt studerat och analyserat så kallade micro arrayer. Micro arrayer används inom biomedicinen för att t.ex. jämföra förekomsten av olika gener i två olika prover. Proverna kan t.ex. utgöras av genuppsättningarna i en frisk och en cancersjuk cell. Målet med analysen av dessa genkartor var att kunna jämföra förekomsten av varje gen i de två proverna. För att kunna göra detta fick vi använda oss av många av de instrument vi studerade i kursen, bland annat grånivåtransformation, adressering och segmentering. För att skriva de programmen vi behövde på ett effektivt sätt hade vi egentligen behövt använda oss av pekare. Men eftersom ingen av oss har läst så mycket programmering kände vi oss osäkra på hur det skulle kunna göras. Därför har vi istället enbart skrivit våra program i MatLab. Det innebär att en del av de funktioner vi skrivit blivit stora och tar väldigt lång tid att köra om bilderna är för stora. Programmet är skrivet för att fungera på hela bilden, men på grund av att det tar så väldigt lång tid att köra programmet om bilden är för stor så kör vi bara vårt program på en del av den ursprungliga bilden. Beskrivning av en micro array DNA micro arrayer är solida ytor (ofta glas) på vilken man har placerat ut DNA-molekyler. DNA-molekylerna är utplacerade fläckvis där varje fläck skiljer sig åt genom att olika gener är märkta med ett färgämne. Varje gen består av tjugo till flera hundra nukleotider och varje fläck innehåller 10 7-10 8 DNA-molekyler. Det kan i sin tur finnas tiotusentals fläckar på en array. Idealt sett så skulle varje fläck bara innehålla en markerad gen, men det är väldigt svårt att uppnå varför varje fläck kommer att innehålla spår av andra gener. Fläckarna är placerade på provplattan (micro arrayen) i ett matrismönster och i en ordning som avspeglar genföljden i DNA-molekylen. Man kan således associera varje fläck med en viss gen. Innan man placerar ut DNA-molekylerna på plattan markerar man alla gener i det ena provet med ett färgämne (rött) och alla generna i det andra provet med ett annat (grönt), det vill säga man fluorescerar vid olika våglängder. Genom att blanda proverna med samma markerade gen i samma proportioner och mäta fluorescensen från varje fläck då den belyses med två lasrar, vars våglängder ligger inom respektive färgämnes absorptionsområde, så kan den relativa förekomsten av genen i de två proven bestämmas. Exempel på en micro array-bild kan ses i bild 1 nedan. Bild 1: Fluorescensbild av en micro array. Man kan tydligt se att förekomsten av olika gener i de två proven skiljer sig åt (röd resp. grön intensitet).

Att analysera en micro array Den micro array som vi jobbat med var uppdelad i en bild med provet som var färgat rött och en bild med provet som var färgat grönt. Dessa bilder var ganska mörka och alla fläckar gick inte att urskilja. För att underlätta adresseringen och segmenteringen av bilderna slog vi därför först samman de två bilderna till en och utförde sedan en grånivåtransformation. Fläckarna blev då ljusare och resultatet blev bättre. När intensiteterna sedan skulle beräknas gick vi tillbaka till de två ursprungliga bilderna för att kunna jämföra deras relativa intensiteter. Den analys av micro array bilder som vi utfört kan delas upp i tre steg: Adressering: processen då varje fläcks koordinater bestäms Segmentering: varje pixel klassificeras antingen som tillhörande en fläck eller som bakgrundspixel Intensitetsbestämning: fläckarnas intensiteter i den röda och den gröna bilden beräknas och jämförs Adressering Med adressering menar man bestämmandet av fläckarnas koordinater. Då fläckarna är utplacerade i matrisformationer (se bild 1) kan man bestämma alla fläckarnas koordinater med kännedom av bara fem väl valda fläckars koordinater, förutsatt att antalet grupper i x- och y- led och storleken på matriserna är känt. Om fläckmatriserna alltid hade varit utplacerade parallellt med bildkanterna skulle det ha räckt med att få tre fläckkoordinater givna för att bestämma alla de övriga fläckarnas koordinater, men eftersom så inte alltid är fallet måste man kompensera för det. De fem fläckarna vars koordinater vi använde oss av är: 1. Övre vänstra fläcken i översta vänstra matrisen (fläck 1) 2. Undre vänstra fläcken i översta vänstra matrisen (fläck 2) 3. Undre vänstra fläcken i understa vänstra matrisen (fläck 3) 4. Övre högra fläcken i översta vänstra matrisen (fläck 4) 5. Övre högra fläcken i översta högra matrisen (fläck 5) När alla fläckarnas koordinater beräknas så utgår vi från fläck 1:s koordinater och lägger till en viss mängd pixlar för att hamna på platsen för den önskade fläcken. Med hjälp av koordinaterna för fläck 2 respektive fläck 4 och dimensionen på fläckmatriserna så beräknas avståndet mellan två fläckar i y-led respektive x-led (i programmet gridmaker4 betecknas dessa variabler med yspotdist resp. xspotdist). Koordinaterna för fläck 3 resp. fläck 5 används i sin tur, med vetskap om antalet fläckmatriser i y- och x-led, för att bestämma avståndet i y- och x-led mellan två fläckmatriser (i gridmaker4 kallat ydist och xdist). Då vi har studerat ett antal micro array-bilder har vi upptäckt att alla fläckmatriser ligger på samma linjer i x- och y-led, d.v.s. de är inte förskjutna från varandra relativt dessa linjer. Vidare så förekommer ingen rotation av matriserna relativt varandra vilket medför att de tänkta linjerna skär samma rader i de olika fläckmatriserna. Avståndet mellan fläckarna inom en fläckmatris kan variera något vilket leder till att de till fläcken hörande koordinaterna kanske inte ligger i fläckens centrum. I programmet centermatrix3 sker en kompensering delvis för detta då fläckarnas koordinater revideras genom att man letar upp pixeln med högst intensitet inom ramen för en matris, i vars mitt orginalkoordinaten ligger, och sedan sätter dessa koordinater till fläckens

intensitetsmaximum. Storleken på matrisen och därmed på kompenseringen anges som inparameter och måste vara ett udda tal (kallat certanty i programmet). Den enda större oregelbundenheten som kan förekomma i bilden är således en rotation av hela matrisen av fläckmatriser relativt bildens kanter. Då bilderna är stora medför detta att även en liten rotation kan ge de beräknade fläckkoordinaterna helt fel värde om man ingen kompensation sker. Genom att beräkna hur många pixlar högre upp/längre ner fläck 5 ligger relativt fläck 1 och dela med skillnaden i x-koordinater erhålles en dimensionslös rotationskonstant (i programmet gridmaker kallat rotkomp). Då man vill beräkna y- koordinaterna för en godtycklig fläck så använder man sig av konstanten genom att multiplicera den med skillnaden i x-koordinat mellan fläcken och fläck 1. Resultatet man då erhåller lägger man till den tilltänkta y-koordinaten som en kompensation för effekten av rotationen i y-led. På motsvarandesätt revideras fläckarnas tilltänkta x-koordinater. Segmentering Segmenteringen kan utföras på många olika sätt, och de metoder som används idag skiljer sig mycket åt. Det finns till exempel metoder som bygger på att alla fläckar antas vara cirklar av fix diameter, och metoder som anpassar sig precis efter fläckarnas form. Det senare är givetvis att föredra eftersom fläckarna långt ifrån alltid har samma form, och vi valde att implementera en sådan metod, nämligen Watershed-metoden. I Watershed-metoden ses bilden som en slags topografikarta där intensiteterna betecknar höjden. Principen är att man börjar med att välja ut de pixlar som har den lägsta intensiteten i bilden, i min. Man fortsätter sedan att fylla på vatten i de pixlar som har intensiteten i min +1. Denna procedur fortsätter upp till en viss förutbestämd gräns. Resultatet blir då att de pixlar med intensiteter som är större än gränsen tillhör själva watersheden, och resterande pixlar utgör bassängerna där emellan. Bilden delas alltså upp i olika regioner. När man har en bild med objekt som man vill segmentera ut och skilja från bakgrunden, som i fallet med micro arrayer, vill man hitta konturerna till objekten. Detta kan göras genom att man beräknar gradienten för bilden (absolutbeloppet av gradienten i varje pixel) och sedan letar upp watershed-pixlarna i gradientbilden. Då kommer nämligen kanterna lämnas kvar eftersom gradienten har störst värde där. Skulle man istället försöka köra watershedproceduren direkt i bilden, utan att beräkna gradienten först, riskerar man att missa vissa av pixlarna inuti objektet eftersom det är möjligt att några av dem är mörkare än gränsen. I vår segmentering följde vi principen att beräkna gradienten för bilden och sedan leta upp watershedpixlarna. De pixlar med gradientvärden som är mindre än gränsvärdet sätts till negativa och övriga, de så kallade watershedpixlarna, får behålla sitt värde. Gradientberäkningen fungerade bra och i de flesta fall var gradienten som störst vid fläckarnas konturer. Svårigheterna uppstod när gränsen för vilka intensiteter som skulle godkännas som watershedpixlar skulle bestämmas. Storleken av gradienten i varje pixel varierar nämligen mycket och dessutom har några av pixlarna inne i fläckarna relativt höga gradientvärden. Om gränsen sätts för högt blir inte alla konturerna slutna kurvor, och det ställer till problem när man sedan ska identifiera alla pixlar som ligger innanför konturen som pixlar tillhörande fläckarna. Om gränsen däremot sätts för lågt uppstår problem eftersom pixlar innanför konturen med höga gradientvärden då är kvar och det gör också identifieringen av vilka pixlar som tillhör fläcken svårare. Vi testade oss fram med olika

gränsvärden och valde ett som vi tyckte var den bästa kompromissen mellan de två problemen. Identifieringen av alla de pixlar som ligger innanför watershed-konturen som pixlar tillhörande fläcken var en av de saker som ställde till mest problem. I identifieringen utgår vi från den pixel i varje fläck som har högst intensitet och som erhålles från adresseringen. Sedan vandrar vi åt alla möjliga håll utifrån den pixeln tills vi stöter på en pixel med positivt värde, det vill säga en watershedpixel. Eftersom alla pixlar som inte tillhör watersheden har negativt värde i det här läget blir det problem att veta var man ska stanna om konturen inte är sluten, som till exempel i fläcken längst ner till vänster i bilden i bilaga 1. Där kommer vår implementering inte klara av identifieringen. Vi kunde inte lösa problemet och valde därför att skriva ut från programmet vilka fläckar som inte har slutna konturer. Dessa kommer då inte behandlas vidare i programmet utan vill man titta närmre på dessa fläckar får man gå in och göra det manuellt. Nästa problem i identifieringen är att om den pixel som erhålles från adresseringen, alltså den pixel vi utgår från i identifieringen, skulle ha ett positivt värde så fungerar inte vår implementering heller. Detta kan inträffa om det finns pixlar inuti fläcken som har så höga gradientvärden att de definieras som watershedpixlar, se till exempel den översta vänstra fläcken i bilden i bilaga 1. Vår identifieringsprocedur utgår ifrån att alla pixlar inuti fläcken har negativt värde och att endast kantpixlarna har positiva värden. Om vi ändå skulle göra vår identifiering då det finns positiva pixlar innanför konturen så skulle endast en del av fläcken identifieras som fläck och man skulle alltså inte få med alla pixlarna. Vi tyckte därför det var bättre att endast skriva ut från programmet vilka fläckar det här felet uppstår för. Det skulle vara intressant att höra med någon som har kunskap om den medicinska aspekten av micro arrayer vad som vore bäst att göra med de fläckar som av någon av dessa två anledningar inte kan genomgå identifieringen. När vi har testkört vårt program har det klarat att identifiera cirka hälften av fläckarna, lite mer eller mindre beroende på hur man väljer gränsvärdet. Beräkning av intensiteterna För att fläckarnas intensiteter ska kunna beräknas så exakt som möjligt måste man kompensera för bakgrundens intensitet. Då fläckarna i genomsnitt är runda och har diffusa gränser mot bakgrunden så har vi valt att göra en bakgrundskompensering som mäter bakgrunden så långt ifrån fläckarnas centrum som möjligt. Detta område tycker vi borde ligga mitt emellan fläckarna. Bakgrunden är inhomogen vilket medför att kompenseringen måste ske individuellt för varje fläck. Detta uppnås genom att skapa fyra kors som ligger snett ovanoch nedanför varje fläck, förutsatt att detta är möjligt utan att gå utanför bilen. Korsen är placerade på ett halvt fläckavstånd (xspotdist resp. yspotdist) i x- resp. y-led, från fläckarnas centrum. Korsens höjd resp. bredd blir, om möjligt utan att korset ligger utanför bilden, lika med avståndet mellan fläckarna i y- resp. x-led. Då fläckarnas högsta intensiteter sällan ligger i fläckarnas mitt så utgår vi i beräkningen av bakgrundsintensiteten från fläckarnas beräknade centrumkoordinater innan de ersätts av koordinaterna för pixeln med högst intensitet inom fläcken (vilket görs i programmet centermatrix3).

Intensitetsmätningen för varje fläck sker sedan genom att alla pixelvärdena som tillhör fläcken summeras. För varje pixel som summeras så subtraheras den för fläcken unika bakgrundsintensiteten varvid man kompenserar för bakgrundsintensiteten. I programmet relint2 görs detta för de två ursprungliga bilderna, varefter kvoten mellan de två bildernas fläckintensiteter beräknas. Detta blir då den relativa intensiteten, vilken är den som är intressant i sammanhanget. Sammanfattning Det här projektet innehöll många delar av bildanalys. Vi fick testa många olika instrument i vår analys av micro array bilderna, allt från grånivåtransformation till segmentering med Watershed-metoden. Vi stötte på en hel del problem på vägen, dels beroende på vår bristande kunskap i programmering men också beroende på att bilderna inte var så perfekta som man kunde önska. Vårt program fungerar bra om fläckarna är tydliga och har jämn intensitet, det vill säga om de är optimala. Problemen uppstår när intensitetsvariationerna blir för stora. Detta är antagligen det allra vanligaste i verkligheten och det var intressant att få försöka lösa dessa problem. Källor Yang, Buckley, Dudoit och Speed: Comparison of methods for image analysis on cdna microarray data. Technical report no 584, November 2000, University of California, Berkely. http://industry.ebi.ac.uk/~brazma/biointro/biology.html#microarrays Vincent och Soille: Watersheds in digital spaces. IEEE transactions on pattern analysis and machine intelligence, vol 13, no. 6, June 1991

Bilaga 1 Bilden visar watershedpixlarna som erhållits efter att gradienten av ursprungsbilden beräknats. Det syns tydligt att alla fläckar inte ger slutna konturer och att det finns watershedpixlar även inuti fläckarna.