Digital bildebehandling for Radiografer Side 1 av 9 Forelesning og oppgaver 8 Filtrering 8.1 Om forelesningen 8.1.1 Mål Dere skal vite hvordan vanlige filtre fungerer og ha prøvd å bruke de vanligste typene som lavpassfiltre (glatte), høypass (skjerpe), kantfinning, støyfjerning, medianfiltrering, skalering, rotasjon, etc. Dette omfatter øvelser på bilder. Vi vil fokusere mest på de grunnleggende prinsippene for å sikre en god forståelse av virkemåte og begrensninger. Vi vil i liten grad gå inn på egnet prosessering av bilder fra de ulike modaliteter. 8.1.2 Innholdsliste Konvolusjonsfiltre Lavpassfiltrering (glatting) Høypassfiltrering (skjerping) Kantfinning med 1. ordens deriverte Kantfinning med 2. ordens deriverte Match-filtre Skalering og rotasjon 8.1.3 Pensum Crane kapittel 3 og 4 PACS boka avsnitt 12.3.1 Image manualen, avsnitt om Filtering Function i Process Menu 8.1.4 Timeplan 09:00-11:00 Forelesning 11:15-12:00 Øvelser på labben. 12:00-12:30 Formiddagsmat 12:30-13:30 Forelesning 13:30 - Ut dagen Øvelse
Digital bildebehandling for Radiografer Side 2 av 9 Øvelsene Øvingsfilene denne uka inneholder ulike bilder som dere skal arbeide med, noen filtre, men ingen fasit. 8.2 Innledning Mesteparten av stoffet denne gangen er godt dekket av læreboka, så dette notatet er stort sett bare en samling med øvingsoppgaver som dere kan bryne dere på. 8.3 Konvolusjonsfiltre Virkemåten for disse er beskrevet i kapittel 3 i Crane. Prinsippet er at et en filtermaske, som er en liten samling med tall (f.eks. 3x3 stykker) legges over hvert eneste piksel i bildet, og at man så beregner hvor mye det lille utsnittet av bildet og selve masken ligner på hverandre (konvolusjonen). Ved å benytte ulike tall i maskene, kan man få fram ulike effekter i bildet. 8.3.1 Konvolusjonsfiltre, regneøvelse Hensikten med denne oppgaven er at dere kan regne gjennom et komplett eksempel for å sjekke at dere har skjønt hvordan konvolusjonsfiltre virker. Bruk følgende 4x5 testbilde: 0 1 3 1 0 1 2 7 7 7 0 0 7 7 7 0 0 6 6 6 Benytt følgende to filter på testbildet, og regn ut resultatet for hånd (med kalkulator). For begge filtrene kan du først regne det filtrerte resultatet ut uten å dele med summen av vektene i filteret, deretter kan du dele ned med summen. 0 1 0-1 1-1 1 2 1-1 9-1 0 1 0-1 1 1 I Scion Image, les inn bildet Oppg831a.tif, dette er bitte lite og svarer til 5x4 bildet over. Bruk menyen Process Convolve og velg fila Oppg831FiltA.txt. Denne fila inneholder maske A (sjekk selv ved å åpne fila fra Image) og det bitte lille bildet blir nå filtrert med maske A. For å sjekke om du har regnet riktig, så kan du på det bitte lille filtrerte bildet velge kommandoen Export fra File menyen og merke av for Text. Gi det eksporterte bildet et passende navn, f.eks. SvarA.TXT og åpne denne nye fila så fra Image. Da skal du se tallverdiene, og disse bør ikke avvike alt for mye fra dem du har (Image regner litt feil, så siste desimal er ikke nødvendigvis riktig).
Digital bildebehandling for Radiografer Side 3 av 9 Lag din egen tekstfil fra File, New med Text avmerket, og skriv inn filtermasken B her. Spar denne som en ny fil Oppg831MaskB.txt. Gjenta operasjonen beskrvet over med denne maska (NB! husk å lese inn det opprinnelige bildet Oppg831a.tif på nytt, da du jo har endret pikselverdiene i oppgave c) (Fasit på regnwstykkene: Filtrert bilde med maske A, der piksler langs ytterkanten er fjernet. 13 33 36 9 34 41 Hvis vi deler ned med summen av vektene (6), får vi i stedet 2.16 5.50 6.00 1.50 5.67 6.83 Filtrert bilde med maske B, der piksler langs ytterkanten er fjernet. -1 35 24-23 28 10) 8.4 Lavpassfiltrering (glatting) Kalles også glatting eller bluring. Maske A over er et eksempel på et glattefilter. Et glattefilter reduserer store utslag i intensitetsverdier og bringer dem mot en felles lokal verdi. Dette er nyttig f.eks. dersom bildet er spettet på den måten at det er en del støy i enkeltpikslers intensitetsverdier. Man må imidlertid være klar over at skarpe overganger i bildet blir mer utydelige og at små detaljer kanskje kan forsvinne helt fra bildet. Tre typiske eksempler på glattefiltre er: 1 1 1 1 1 1 1 2 1 1 4 1 1 1 1 2 4 2 1 1 1 1 1 1 1 2 1 De to første er bygd inn i Image som Process, Smooth (sjekk manualen for å finne ut hvordan du kan få den ekstra glattingen som det midterste filteret gir.) Det siste filteret er et Gausisk glattefilter. 8.4.1 Oppgaver, glatting Denne oppgaven skal vise hvordan glattefiltre kan fjerne småvariasjoner (støy), men samtidig fjernes detaljer og skarpe intensitetsoverganger flyter ut og blir utydelige. Åpne testbildet Oppg841a.tif, som er et røntgenbilde av en konkylie med kunstig støy for å illustrere poengene. Bruk kommandoen Smooth fra Process menyen (bruk begge varianter og utfør gjerne kommandoen flere ganger etter hverandre). Studer
Digital bildebehandling for Radiografer Side 4 av 9 og beskriv spesielt hva som skjer med: De skarpe kantene rundt det brede lyse båndet i venstre del av bildet Salt og pepper støyen litt til høyre for midten av bildet Det spettede området helt i øverste høyre hjørne av bildet. Enkelt-pikslene på toppen av bildet De tynne hvite og svarte linjene nederst i bildet Plott intensiteten på tvers av det brede båndet til venstre i bildet før og etter glatting. Beskriv hva plottet viser, og forklar hvorfor dette skjer. Velg et rektangel innenfor det spettede området helt øverst til høyre og bruk kommandoen Measure fra Analyze menyen til å finne standardavviket både på det orginale bildet og det glattede bildet. Legg merke til at standardavviket avtar, men betyr dette at kvaliteten i bildet blir bedre? Når man kjører et filter flere ganger (utfører smooth kommandoen flere ganger), øker glattingen og i effekt svarer dette til at man kjører et større filter en gang. Bruk kommandoen Convolve fra Process menyen og finn fram til filtrene som ligger inne i mappen Kernels der hvor Image programmet ligger. Denne Kernels mappen inneholder en del litt større filtre som er ferdiglagde. Du kan f.eks. prøve Gauss 5x5 og Gauss 15x15 som er to glattefiltre. Prøv også Mean 63x63 og legg merke til hvordan alle detaljer forsvinner, men at hovedstrukturene som f.eks. det kustige lyse området til venstre i bildet fortsatt beholdes, men at de breier seg voldsomt utover (det blir en ramme på 63 piksler rundt bildet som ikke filtreres.) Øyet er mye mer følsomt for skarpe gråtoneoverganger enn gradvise. Hva betyr dette satt i sammenheng med glatting? Medianfiltrering (side 95 i Crane) er et meget godt alternativ til vanlige glattefiltre for å redusere støy. Let deg fram til hvordan du får utført medianfiltrering i Image og prøv det på Oppg841a.tif. Medianfiltrer 4x5 testbildet i Oppgave 8.3.1 for hånd. 8.5 Høypassfiltrering (skjerping) Høypassfiltrering kalles også Sharpen(ing). Maske B i første eksempel er et høypassfilter. Et høypassfilter (og et high-boost filter) forsterker små utslag i intensitetsverdier. Dette fremhever små detaljer, men også støyen i bildet. 8.5.1 Oppgaver, høypassfiltrering Gjennomfør oppgaven i forrige avsnitt, men nå med Sharpen kommandoene fra Process menyen i stedet. Legg merke til hvordan strukturen i skallet på konkylien blir tydeligere med stadig mer skjerping av bildet, men også at støyen dominerer mer og
Digital bildebehandling for Radiografer Side 5 av 9 mer. (Det er ingen høypassfiltre i Kernels mappen.) 8.6 Fouriertransform til filtrering Dersom vi gjennomfører en Fourier transform (FFT), vil de lave frekvensene ligge midt i (amplitude) bildet, mens de høyfrekvente delene av signalet ligger i ytterkantene av bildet. Dermed kan vi f.eks. fjerne uønskede frekvenser i det Fouriertransformerte bildet, for så å transformere tilbake til et filtrert bilde. Dette skal vi nå eksperimentere litt med i Image. Åpne bildet Oppg861a.tif som er et kvadratisk utsnitt av konkylien vi brukte over. Utfør så FFT fra FFT fra Process menyen. Bildet til høyre skal da komme fram: Figur 8.6.1: Orginalbildet til venstre og amplitudebildet fra FFT til høyre Amplitudebildet kan vi manipulere enten ved at man enten beholder et frekvensområde ved å male det svart, eller at man fjerner et frekvensområde ved at man gjør det helt hvitt (f.eks. ved å slette pikselverdiene der.) Etter at du har manipulert amplitudebildet ferdig, gjør du Inverse FFT fra FFT i Process menyen. Høypassfiltrering: Med det runde, stiplede verktøyet i Tools vinduet tegner du en sirkel med diameter på rundt 50 (sees i Info vinduet). Tips: hold shift-tasten nede når du trekker ut sirkelen, da blir det en sirkel og ikke en ellipse. Flytt til slutt sirkelen slik at den ligger sentrert best mulig i bildet. Trykk så på delete tasten slik at alle frekvenser innenfor sirkelen blir slettet, dvs. at alle lave frekvenser i bildet blir tatt vekk. Gjør så Inverse FFT og du skal få omtrent det som vises under.
Digital bildebehandling for Radiografer Side 6 av 9 Figur 8.6.2: Til venstre: Amplitudebildet med lave frekvenser fjernet. Til høyre: Inversfiltrert bilde der kun de høye frekvensene, dvs. kantene synes. Lavpassfiltrering: Velg pipetten og klikk på feltet black. Velg deretter malerkosten som nå maler med svart. Start ut med det opprinnelige bildet og gjør en FFT i- gjen. I amplitudebildet, mal svart et tilsvarende område som det som ble fjernet i eksemplet over. Finn ut hvordan bildet nå blir når det invers-transformeres. Du vil se at skarpe kanter gir ekko. Dette er et typisk fenomen og tilsvarende effekter kan man også kan se i sterkt komprimerte bilder. Beholde lave frekvenser og horsontale og vertikale linjer i bildet. I et nytt FFTamplitudebilde, mal over hele de sentrale vertikale og horsontale linjene (du lager er kors). Dermed glatter vi filteret unntatt i horisontal og vertikal retning, da skarpe kanter i disse retningene beholdes som skarpe. Dette ser du spesielt godt på de tynne linjene nederst i bildet, da de horisontale beholdes mens de skrå fjernes. Behold bare de to skrå linjene i bildet. Prøv å få til dette. Hvilke andre strukturer får du da også med deg? Et tips: Hvis du dobbeltklikker på malerkosten kan du endre størrelsen på den, f.eks. gjøre den smalere slik at du kan markere mindre deler av amplitudebildet. 8.7 Kantfinning (Outlining) Kantfinning brukes blant annet til å vise konturer, grenser mellom vevstyper, osv. Kantfinning er også en viktig del av segmentering av bilder, som vil være sentralt innen datastøttet diagnose. Det finnes et utall av metoder for å finne kanter, og hver metode passer til visse typer bilder. Det er ikke mulig å lage en generell kantfinningsrutine som alltid virker. 8.7.1 Kantfinning med første ordens deriverte Åpne bildet Oppg871a.tif som er en liten collage satt samen av fire utsnitt av ulike skjelettbilder.
Digital bildebehandling for Radiografer Side 7 av 9 Prøv de to konvolusjonsfilterene Oppg871FiltA.txt. og Oppg871FiltB.txt på det originale bildet Oppg871a.tif. Observer hvordan de to filterene forsterker horisontale og vertikale kanter. Åpne filterfilene og regn manuelt hvordan filteret fungerer på dette lille eksempelbildet. 100 100 100 100 100 100 100 100 0 0 0 0 0 0 0 0 0 0 0 0 Bruk kommandoen Find edges kommandoene fra Process menyen på Oppg871a.tif.Denne kommandoen finner både horisontale og vertikale kanter i bildet. Finn ut hvordan Find edges virker fra Image dokumentasjonen. Sammenlign dennemetoden med metoden som er beskrevet i seksjon 12.3.1.1. i PACS boka og finn likhetene og forskjellene. Sammenlign også med homogeneity og difference operatoren i Crane-boka, figur 3.12 og 3.14. 8.7.2 Kantfinning med andre ordens deriverte Oppgavene over er varianter over temaet første ordens deriverte som er beskrevet på side 86 i Crane. Første ordens deriverte måler hvor bratte kantene i intensiteten er jo brattere jo sterkere kant. Et alternativ er å finne ut hvor kantene går over fra å bli brattere og brattere til å flate ut igjen (dobbeltderiverte). (side 88 i Crane). Ettersom ren (dobbelt)derivering forsterker støy mye, er det ofte gunstigst å først glatte bildet før man beregner den (dobbelt)deriverte. Dette kan man få til med en enkelt operasjon (maske), f.eks. Laplacian of Gaussian (LoG) eller Difference of Gaussian (DoG) som beskrives i Crane. Lag dine egne filtre som vist på side 88 i Crane og bruk disse på øvingsbildet Oppg861a.tif. Prøv også de to filtrene DoG7x7.txt og DoG9x9.txt som følger med oppgavesettet denne uka. Disse to filtrene er vist på side 92 i Crane. 8.7.3 Cannys kantfinning For mer komplette (og kompliserte metoder), ta en titt på siste avsnittet i kapittel 3 i Crane. Her beskrives en svært kjent kantfinningsmetode, Cannys, på en rimelig lettfattelig måte. Studer også α-trimmed mean filteret som er beskrevet helt til slutt og prøv å forstå hvordan dette virker.
Digital bildebehandling for Radiografer Side 8 av 9 8.8 Konvolusjonsfiltre utfører match filtrering La du merke til at filtrene Oppg871FiltA.txt. og Oppg871FiltB.txt i forrige avsnitt lignet på det de skal lete etter, dvs henholdsvis en horisontal og en vertikal kant? Det er et generelt prinsipp at filtre forsterker de strukturene de selv ligner på. Følgende lille øvingsoppgave viser dette: Åpne. filteret Oppg881FiltA.txt og sjekk at dette er et øvre-venstre hjørne. Prøv å kjøre dette hjørne- filteret på testbildet Oppg871b.tif. Legg merke til at øvre-venstre hjørner i bildet er blitt forsterket, dvs. at de har høyere intensitetsverdier enn resten av bildet (unntatt ramma som ikke er filtrert) og dermed framstør som svarte. Sjekk ved å velge Threshold fra Options menyen på det filtrerte bildet og så trekke terskelvedien i LUT vinduet nedover i retning av svart. Etter hvert ser du at det bare er igjen de øvre-venstre hjørnene i bildet. 8.9 Skalering og rotasjon Dette rekker vi ikke å behandle i veldig detalj, men sørg for at dere skjønner problemstillingen som oppstår når man skal beregne pikselverdien innimellom eksisterende piksler (pikselverdier kan sees på som måling av intensiteten i et enkelt punkt). Dere må videre skjønne nærmeste nabo interpolasjon, samt bilineær interpolasjon. Høyere ordens interpolasjon gir noe bedre resultat enn bilineær interpolasjon, men det holder om dere har en grov forståelse av hva disse metodene består i. Det er imidlertid viktig at dere er klar over at slik skalering og rotering av bilder reduserer bildekvaliteten, og at de stort sett glatter bilder, dvs. reduserer kontrasten på små detaljer. De følgende oppgavene skal illustrere dette: Anta at et linjebilde på 1x5 piksler har følgende intensitetsverdier (Nederste linje i uthevet skrift er koordinatverdiene til pikslene, målt fra venstre kant av bildet) 0 255 0 255 0 (Intensitetsverdier) 0 1 2 3 4 (koordinater) Skaler dette bildet slik at du får et linjebilde med 7 piksler i stedet for 5, dvs. med pikselverdier utregnet i koordinatene: 0,000, 0,667, 1.333, 2,000, 2,667, 3,333, 4,000. Bruk (bi)lineær interpolasjon, dvs. at hvis en nytt piksel ligger 1/3 fra det ene opprinnelige pikslet og 2/3 fra det andre, får det (1-1/3)=2/3 av sin verdi fra det første opprinnelig pikslet og (1-2/3)=1/3 fra det andre opprinnelige pikslet. Du skal da se at toppene som er en piksel brede i 1x5 bildet blir to piksler brede i det skalerte bildet, og at intensiteten bare blir 2/3 av 255. Bildet er med andre ord glattet.
Digital bildebehandling for Radiografer Side 9 av 9 8.9.1 Oppgaver skalering og rotasjon Åpne øvingsbildet Oppg89a.tif, som har enkeltlinjer, et frittstående piksel og kanter. Bruk kommandoen Scale and Rotate fra Edit menyen og skaler begge retninger med 1.33, velg bilineær metode. Zoom inn begge bildene slik at du ser enkeltpiksler godt. Se så på hjørnet der de to linjene møtes, på det frittstående pikslet, og på kanten på den tykke linja. Hva ser du? På det opprinnelige bildet, utfør kommandoen Scale and Rotate fra Edit menyen nok en gang, men velg nå en rotasjon på 30 (grader) og ingen skalering (verdi 1). Fortsatt skal du bruke bilineær metode. Forstørr også dette bildet slik at du ser enkeltpikslene tydelig. Hva ser du? Prøv ut kommandoen Rotate Right, Rotate left, Flip Horisontal og Flip Vertical fra Edit menyen. Disse kommandoene flytter bare rundt på pikslene og beregner ingen nye verdier, og vil derfor ikke redusere informasjonsinnholdet i det opprinnelige bildet.