Laboration 2: Filtreringsoperationer

Relevanta dokument
Flerdimensionella signaler och system

Bildbehandling i frekvensdomänen. Erik Vidholm

TANA17 Matematiska beräkningar med Matlab

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

Bildbehandling i spatialdomänen och frekvensdomänen

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

Bildbehandling i frekvensdomänen

TAIU07 Matematiska beräkningar med Matlab

Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation

Laboration i Fourieroptik

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

Spektrala Transformer

Laboration 1: Elementära bildoperationer

TEM Projekt Transformmetoder

Laboration i Fourieroptik

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

15 februari 2016 Sida 1 / 32

Spektrala Transformer för Media

Signal- och Bildbehandling FÖRELÄSNING 4. Multiplikationsteoremet. Derivatateoremet

Signal- och bildbehandling TSBB03, TSBB14

Signal- och bildbehandling TSEA70

Signal- och Bildbehandling FÖRELÄSNING 7. En bild är en 2D signal. För en digital bild gäller. Fig. 2.1

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

Spektrala Transformer för Media

MR-laboration: design av pulssekvenser

TSBB31 Medicinska bilder Föreläsning 3

Signal- och bildbehandling TSEA70

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

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

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Exempelsamling Grundläggande systemmodeller. Klas Nordberg Computer Vision Laboratory Department of Electrical Engineering Linköping University

Signal- och Bildbehandling, TSBB14. Laboration 2: Sampling och rekonstruktion. DFT.

Mer om funktioner och grafik i Matlab

Bildbehandling, del 1

TAIU07 Matematiska beräkningar med Matlab

7 MÖNSTERDETEKTERING

Mer om funktioner och grafik i Matlab

Signal- och bildbehandling TSBB03

4 Diskret stokastisk variabel

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

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

Laboration i Fourieranalys för F2, TM2, Kf2 2011/12 Signalanalys med snabb Fouriertransform (FFT)

Fouriermetoder MVE295 - bonusuppgifter

Linjär Algebra M/TD Läsvecka 2

Exempelsamling Grundläggande systemmodeller. Klas Nordberg Computer Vision Laboratory Department of Electrical Engineering Linköping University

Transformer och differentialekvationer (MVE100)

Bildbehandling En introduktion. Mediasignaler

Rita även grafen till Fourierserien på intervallet [ 2π, 4π]. (5) 1 + cos(2t),

Laboration i tidsdiskreta system

DT1130 Spektrala transformer Tentamen

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

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

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

Transformer i sannolikhetsteori

Kan vi beskriva ett system utan någon fysikalisk kännedom om systemet?

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

1 dy. vilken kan skrivas (y + 3)(y 3) dx =1. Partialbråksuppdelning ger y y 3

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

Laplace, Fourier och resten varför alla dessa transformer?

MMA132: Laboration 2 Matriser i MATLAB

Linjär Algebra, Föreläsning 2

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

TATA42: Föreläsning 7 Differentialekvationer av första ordningen och integralekvationer

KTH Matematik Tentamensskrivning i Differentialekvationer och transformer III, SF1637.

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

Vektorgeometri för gymnasister

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

Signal- och bildbehandling TSBB14

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

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

Approximation av funktioner

Tisdag v. 2. Speglingar, translationer och skalningar

Matriser och Inbyggda funktioner i Matlab

DT1130 Spektrala transformer Tentamen

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

SF1633, Differentialekvationer I Tentamen, torsdagen den 7 januari Lösningsförslag. Del I

Matriser och Inbyggda funktioner i Matlab

Numerisk lösning till den tidsberoende Schrödingerekvationen.

Modul 1: Komplexa tal och Polynomekvationer

c d Z = och W = b a d c för några reella tal a, b, c och d. Vi har att a + c (b + d) b + d a + c ac bd ( ad bc)

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

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

1 som går genom punkten (1, 3) och är parallell med vektorn.

Signal- och bildbehandling TSBB14

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Uppgift 1. (SUBPLOT) (Läs gärna help, subplot innan du börjar med uppgiften.) 1 A) Testa och förklara hur nedanstående kommandon fungerar.

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna

Laboration i Fourieranalys för F2, TM2, Kf2 2013/14 Signalanalys med snabb Fouriertransform (FFT)

Laboration 4: Digitala bilder

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Rita även upp grafen till Fourierseriens summa på intervallet [ 2π, 3π], samt ange summans värde i punkterna π, 0, π, 2π. (5) S(t) = c n e int,

6. Matriser Definition av matriser 62 6 MATRISER. En matris är ett rektangulärt schema av tal: a 11 a 12 a 13 a 1n a 21 a 22 a 23 a 2n A =

Spektrala Transformer

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

1 Grundläggande kalkyler med vektorer och matriser

Projekt Finit Element-lösare

Signal- och bildbehandling TSEA70

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

Transkript:

Skolan för Datavetenskap och Kommunikation, KTH Danica Kragic DD2422 Bildbehandling och Datorseende gk: Laboration 2: Filtreringsoperationer Målet med denna laboration är att du skall få bekanta dig med den tvådimensionella Fouriertransformen och få förståelse för dess egenskaper samt se hur Fouriertransformens egenskaper avspeglas i praktiken, få erfarenhet av att använda olika typer av filtreringsoperationer på bilddata, uttryckta spatialt och i Fourierdomänen, se hur olika utjämningsoperationer influeras av olika typer av brus samt se hur kontrastskärpning kan genomföras i praktiken, få förståelse för hur flera linjära operationer kan sättas samman till en sammansatt linjär operation, lära dig om relationen mellan den kontinuerliga och diskreta Fouriertransformen samt se exempel på hur kontinuerliga filter kan diskretiseras spatialt respektive i Fourierdomänen, få praktisk erfarenhet av skillnaden mellan syntetiska och verkliga data. Liksom i den första laborationen finns även i denna laboration ett delmoment av huvudsakligen introducerande och visualiserande karaktär. Avsikten med uppgift 1 är att du ska få bekanta dig med egenskaper hos Fouriertransformen. Avsikten med uppgift 2 är att stimulera till en viss eftertanke. Övriga uppgifter är mer probleminriktade av experimentellt undersökande natur och formuleringarna därmed kortare. Om du drabbas av problem med Matlab eller liknande, kontakta handledarna på de schemalagda redovisningspassen. Redovisning: För att redovisningen skall gå smidigt bör du ha script-filer som reproducerar resultaten. För de resultat som tar lång tid att beräkna rekommenderas pappersutskrifter. Du skall också sammanfatta resultaten och slutsatserna av dina experiment genom att skriftligt besvara de explicit angivna frågorna. För flertalet av uppgifterna rekommenderas att du skapar illustrationer där flera bilder visas samtidigt på skärmen. Använd det inbyggda matlabkommandot subplot (se help subplot ). Som förkunskaper till denna laboration, skall du ha studerat kursmaterialet angående spatial filtrering och bildrestaurering. Du bör också vara klar med samt ha redovisat Laboration 1.

2 DD2422 Bildbehandling och Datorseende VT 2009 1 Egenskaper hos den diskreta Fouriertransformen 1.1 Den kontinuerliga och diskreta Fouriertransformen Enligt de definitioner som vi använt på föreläsningarna ges den kontinuerliga Fouriertransformen ˆf : R 2 C av en två-dimensionell signal f : R 2 R av ˆf(ω) = F C (f)(ω) = f(x) e iωt x dx (1) x R 2 och Fouriertransformens inversionssats säger att f(x) = F 1 C ( ˆf)(x) = 1 ˆf(ω) e +iωt x (2π) 2 dω. (2) ω R 2 I det diskreta fallet gäller på motsvarande sätt att den diskreta Fouriertransformen ˆF : [0..N 1] 2 C av en kvadratisk bild F : [0..N 1] 2 R med N 2 bildelement definieras av ˆF (u) = F D (F )(u) = 1 F (x) e 2πiu N x [0..N 1] 2 T x N (3) med motsvarande inversionssats F (x) = F 1 D ( ˆF )(x) = 1 N u [0..N 1] 2 +2πiu T x ˆF (u) e N. (4) Dessa uttryck är symmetriska med avseende på faktorn 1/N i Fouriertransformen respektive dess invers. Notera att i Matlab är den snabba Fouriertransformen implementerad med faktorn 1 i FFT-rutinen och faktorn 1/N 2 i dess invers. 1.2 Definitionsområden I det kontinuerliga fallet är den spatiala variabeln x = (x 1, x 2 ) och frekvensvariabeln ω = (ω 1, ω 2 ) definierade på hela det två-dimensionella planet, dvs x, ω R 2, medan de motsvarande diskreta variablerna x = (x 1, x 2 ) och u = (u 1, u 2 ) är definierade på intervallet [0..N 1] 2, dvs x 1, x 2, u 1, u 2 [0..N 1] = {0, 1,..., N 1}. Av basfunktionernas periodicitet i det diskreta fallet, följer därmed att den diskreta Fouriertransformen blir periodisk med perioden N. För att upprätthålla konsistens med inversionssatsen krävs på samma sätt att vi betraktar originalsignalen som periodisk med samma period. Genom jämförelse av ekvationerna (1) och (3) kan vi relatera den kontinuerliga vinkelfrekvensvariabeln ω till den diskreta frekvensvariabeln u medelst ω D = 2π u N. (5)

Laboration 2: Filtreringsoperationer 3 Eftersom u [0..N 1] 2 kan vi med denna transformation betrakta frekvensvariabeln ω D som definierad i intervallet [0, 2π] 2. Vidare kan den diskreta Fouriertransformen på detta sätt betraktas som periodisk med perioden 2π, och vi kan translatera definitionsområdet till intervallet [ π, π] 2 utan att förlora i generalitet. Denna operation svarat mot att centrera den diskreta Fouriertransformen. 1.3 Basfunktioner Fouriertransformen kan ses som ett byte av basfunktioner, från kompakta (diskreta) deltafunktioner definierade på en Cartesisk bilddomän till komplexa exponentionalfunktioner med maximal spatial utsträckning. I det diskreta fallet är detta ännu mer uppenbart i och med att den diskreta Fouriertransformen kan erhållas genom att pre- och postmultiplicera bilden med ortogonala matriser. På detta sätt kan vi se de komplexvärda pixelvärdena i Fouriertransformen ˆF som komponenterna av den diskreta bilden F med avseende på den nya basen. Specifikt gäller att baselementet svarande mot en pixelpunkt med koordinaterna (p, q) i ˆF är proportionellt mot p 0 i2π e N. p (N 1) i2π e N ( q 0 q (N 1) i2π i2π e N e N Dessa basvektorer är diskreta motsvarigheter till de komplexa exponentionalfunktionerna e w (x) = e iωt x Du kan övertyga dig om detta genom att beräkna den inversa diskreta Fouriertransformen av en bild ˆF som är noll överallt utom i en enstaka punkt (p, q) där den har värdet ett. För en sådan bild innehåller utvecklingen av ˆF endast en term, och denna term är lika med basvektorn med index (p, q). För att visualisera detta, definiera en bild av storlek 128 128 med bildelement givna av Fhat = zeros(128, 128); Fhat(p, q ) = 1; för (p, q) = (5, 9). Visa denna bild på skärmen med showgrey. Beräkna därefter dess inversa diskreta Fouriertransform med F = ifft2(fhat); och titta på dess reella och imaginära delar, samt dess magnitud och fas genom Fabsmax = max(abs(f(:))); showgrey(real(f), 64, -Fabsmax, Fabsmax) showgrey(imag(f), 64, -Fabsmax, Fabsmax) showgrey(abs(f), 64, -Fabsmax, Fabsmax) showgrey(angle(f), 64, -pi, pi) )

4 DD2422 Bildbehandling och Datorseende VT 2009 Upprepa denna övning med p och q satta till (9, 5), (17, 9), (17, 121), (5, 1) och (125, 1). Forklara vad du ser! Enklast administrerar du detta experiment genom att skriva en procedur fftwave, som monterar ovanstående bilder i samma figur med hjälp av kommandot subplot och med illustrativa rubriker. 1 Använd gärna denna procedur som ett typexempel på hur experimenterandet kan organiseras för kommande uppgifter. function fftwave(u, v, sz) if (nargin < 2) error( Requires at least two input arguments. ) end if (nargin == 2) sz = 128; end Fhat = zeros(sz); Fhat(u, v) = 1; F = ifft2(fhat); Fabsmax = max(abs(f(:))); subplot(3, 2, 1); showgrey(fhat); title(sprintf( Fhat: (u, v) = (%d, %d), u, v)) % What is done by these instructions? if (u <= sz/2) uc = u - 1; else uc = u - 1 - sz; end if (v <= sz/2) vc = v - 1; else vc = v - 1 - sz; end wavelength = 0.0; amplitude = 0.0; % Replace by correct expression % Replace by correct expression 1 En förlaga till denna procedur finns i filen fftwavetemplate.m i kursbiblioteket.

Laboration 2: Filtreringsoperationer 5 subplot(3, 2, 2); showgrey(fftshift(fhat)); title(sprintf( centered Fhat: (uc, vc) = (%d, %d), uc, vc)) subplot(3, 2, 3); showgrey(real(f), 64, -Fabsmax, Fabsmax); title( real(f) ) subplot(3, 2, 4); showgrey(imag(f), 64, -Fabsmax, Fabsmax); title( imag(f) ) subplot(3, 2, 5); showgrey(abs(f), 64, -Fabsmax, Fabsmax); title(sprintf( abs(f) (amplitude %f), amplitude)) subplot(3, 2, 6); showgrey(angle(f), 64, -pi, pi); title(sprintf( angle(f) (wavelength %f), wavelength)) Frågor (#1.3): Förklara och illustrera med figur hur en position (p, q) i Fourierdomänen avbildas på en sinusvåg i spatialdomänen. Hur stor är amplituden? Komplettera koden (variabeln amplitude) med ett explicit uttryck - avnvänd ekvation 3 från sida 2 av detta dokument.

6 DD2422 Bildbehandling och Datorseende VT 2009 Hur beror sinusvågens riktning och våglängd av p och q? Rita illustrativ figur. Komplettera koden (variabeln wavelength) med ett explicit uttryck - använd evation som gavs på föreläsningen. Vad händer då vi passerar mittpunkten och endera av p eller q överstiger halva bildstorleken? Förklara och illustrera grafiskt! Vilka funktioner fyller instruktionerna efter den kommenterade frågan i koden: What is done by these instructions? 1.4 Linearitet Definiera rektangelformade testbilder av storlek 128 128 med F = [ zeros(56, 128); ones(16, 128); zeros(56, 128)]; G = F ; H = F + 2 * G; och visa dem med showgrey. Beräkna därefter diskreta Fouriertransformen av dessa bilder genom Fhat = fft2(f); Ghat = fft2(g); Hhat = fft2(h); och visa deras Fourierspektra genom showgrey(log(1 + abs(fhat))); showgrey(log(1 + abs(ghat))); showgrey(log(1 + abs(hhat)));

Laboration 2: Filtreringsoperationer 7 Prova också att visa följande showgrey(log(1 + abs(fftshift(hhat)))); och förklara varför fftshift-kommandot är synnerligen användbart. Ett annat sätt att åstadkomma denna effekt är att använda Matlab-funktionen showfs som finns i kursbiblioteket. Frågor (#1.4): Varför är dessa Fourierspektra koncentrerade längs bildernas kanter. Varför används logaritmfunktionen? Vilka slutsatser kan man dra om linearitet? 1.5 Multiplikation Prova följande kommandon showgrey(f.* G); showfs(fft2(f.* G)); och förklara resultatet. (Notationen F.* G i Matlab betyder komponentvis multiplikation av motsvarande matriselement.) Fråga (#1.5): Finns det något annat sätt att beräkna den senare bilden? Tänk på vad multiplikation i Fourierdomänen motsvarar i spatialdomänen!!! Genomför denna alternativa beräkning i praktiken!

8 DD2422 Bildbehandling och Datorseende VT 2009 1.6 Skalning Definiera testbilden F = [zeros(60, 128); ones(8, 128); zeros(60, 128)].*... [zeros(128, 48) ones(128, 32) zeros(128, 48)]; och visa den med showgrey. Beräkna dess diskreta Fouriertransform och betrakta magnituden med showfs. Fråga (#1.6): Jämför resultatet med ovanstående uppgift. Vilka slutsatser kan du dra? 1.7 Rotation Aktivera en ny figur (med figure) så att du fortfarande kan se Fourierspektrat för F. Rotera därefter F säg vinkel = 30 och visa resultatet med G = rot(f, vinkel ); showgrey(g) axis on Beräkna därefter diskreta Fouriertransformen av den roterade bilden med Ghat = fft2(g); och visa resultatet med showfs. Känner du igen det? Slutligen, rotera tillbaka spektrat med Hhat = rot(fftshift(ghat), -vinkel ); och visa resultatet med showgrey(log(1 + abs(hhat))) Fråga (#1.7): Montera originalbilderna respektive deras Fourierspektra i samma bild med subplot-kommandot. Vad kan du säga om likheter respektive skillnader?

Laboration 2: Filtreringsoperationer 9 1.8 Rotationssymmetri Skapa en rotationssymmetrisk testbild F med [G H] = meshgrid(-64: 63, -64: 63); F = G.^ 2 + H.^ 2 <= 128; och visa den med showgrey. Kommandot meshgrid är användbart i Matlab. Om du inte är bekant med det bör du titta på matriserna G och H med showgrey. Visa därefter showfs(fft2(f)) Fråga (#1.8): Överensstämmer resultatet med vad du skulle kunna förvänta? Förklara hur rotationen påverkar Fourierspektra och varför. 1.9 Translation Aktivera ytterligare ett visningsfönster, så att Fourierspektrat för F blir kvar på skärmen. Translatera därefter testbilden medelst G = [F(:, 21:128) F(:, 1:20)] och visa den med showgrey(g); axis on Visa återigen Fourierspektrat för G med showfs(fft2(g))

10 DD2422 Bildbehandling och Datorseende VT 2009 Fråga (#1.9): Jämför med resultatet förra uppgiften. Vilken kvalitativa skillnad kan du observera? Kan du förklara orsaken till denna skillnad?

Laboration 2: Filtreringsoperationer 11 2 Information i Fouriertransformens fas/magnitud Ovan har vi mestadels använt Fouriertransformens magnitud när vi visualiserat Fouriertransformen som en bild. Denna visualiseringsteknik är också dominerande i litteraturen. Som en illustration av begränsningarna av detta visualiseringssätt skall vi i denna uppgift ägna oss åt lite bildmanipulation, där vi helt sonika ersätter effektspektrum för en given bild f med ett effektspektrum av formen 2 ˆf(ω) 2 = 1 a + ω 2 (6) I kursbiblioteketet finns en funktion pow2image som genomför denna (synnerligen olinjära) operation. (Titta på koden med type pow2image.) Applicera denna funktion på exempelvis följande bilder phonecalc128, few128, nallo128 och studera resultatet på skärmen (för mycket små värden på a 10 10 ). Slutsats? Som jämförelse kan du applicera funktionen randphaseimage som behåller Fouriertransformens magnitud och ersätter fasinformationen med en slumpmässig fördelning. Fråga (#2): Vilka slutsatser kan du dra av detta experiment? 3 Gaussfaltning implementerad via FFT 3.1 Kontinuerlig Gaussfaltning Gaussfaltning innebär att vi faltar en given bild f in med en Gausskärna. I det kontinuerliga fallet ges utdatabilden f ut av f ut (x, y) = ξ= η= f in (x ξ, y η) g(ξ, η; t) dξ dη (7) 2 För kontinuerliga signaler (och i fallet a = 0) kan denna form av Fourierspektrum härledas som en idealiserad modell för bilder som innehåller olika typer av bildstrukturer jämnt fördelade på alla skalor. (Parametern a fyller endast uppgiften av att undvika division med noll.)

12 DD2422 Bildbehandling och Datorseende VT 2009 där g(x, y; t) = 1 +y 2 )/(2t) 2πt e (x2. (8) I Fourierdomänen gäller på motsvarande sätt att ˆf ut (ω 1, ω 2 ) = ĝ(ω 1, ω 2 ; t) ˆf in (ω 1, ω 2 ) (9) där ˆf ut och ˆf in är Fouriertransformerna av f ut respektive f in, samt ĝ(, ; t) betecknar Gaussfunktionens Fouriertransform ĝ(ω 1, ω 2 ; t) = ω 1 = 3.2 Diskretisering ω 2 = g(x, y; t) e i(ω 1x+ω 2 y) dx dy = e (ω2 1 +ω2 2 ) t/2. (10) För att diskretisera Gaussfaltningen, kan vi välja att antingen diskretisera faltningsoperationen (7) i spatialdomänen, eller att gå via en diskretisering av Gaussfunktionens Fouriertransform (10). I denna uppgift ska vi prova båda metoderna. 3.2.1 I spatialdomänen Om vi diskretiserar integralen i (7) med trapetsregeln och sätter steglängden till ett (svarande mot ett enhetsavstånd mellan närliggande bildelement) får vi f ut (x, y) = m= n= f in (x m, y m) g(m, n; t) (11) vilket svarar mot diskret faltning med en samplad version av Gaussfunktionen. För att genomföra denna operation i praktiken, kan vi därför välja endera av nedanstående metoder: Gaussfaltning med spatial diskretisering och spatial faltning: 1. Generera ett filter som innehåller en samplad version Gaussfunktionen. 2. Falta bilden med detta filter m.h.a. den inbyggda Matlab-funktionen conv2. Gaussfaltning med spatial diskretisering och faltning via FFT: 1. Generera ett filter som innehåller en samplad version Gaussfunktionen. 2. Fouriertransformera originalbilden och Gaussfiltret. 3. Multiplicera Fouriertransformerna. 4. Invertera den resulterande Fouriertransformen. Av dessa metoder är den första metoden med filtrering i spatialdomänen den kanske mest rättframma. Sådan explicit faltning i spatialdomänen fungerar i allmänhet mycket bra om man utnyttjar att Gaussfunktionen är separabel (vilket dock ej görs av Matlab-funktionen conv2). Denna metod är särskilt lämplig då Gausskärnans varians t är liten, och Gausskärnan kan trunkeras till ett litet filter med kompakt stöd. I och med att beräkningsarbetet växer linjärt med antalet

Laboration 2: Filtreringsoperationer 13 nollskilda element i filtret, blir dock denna metod beräkningstung för stora värden på t, speciellt om separabiliteten inte utnyttjas. Den andra metoden med linjärfiltrering i frekvensdomänen har egenskapen att beräkningsarbetet är i stort sett oberoende av Gausskärnans storlek. (I praktiken genererar man alltid en Gausskärna av samma storlek som den originalbild som skall filtreras; vi förutsätter här att denna är en jämn tvåpotens och tillräckligt stor så att Gausskärnans form kan fångas upp inom den givna bildstorleken.) Speciellt, med det bildbehandlingssystem vi använder, kan den andra metoden utnyttja en effektiv implementation av FFT som finns i Matlab. Av dessa nämnda anledningar är den senare metoden i detta fall den av de två metoderna som är att föredra, även om den innefattar fler moment. 3.2.2 I Fourierdomänen Om faltningsoperationen ändå utförs via Fouriertransformering kan vi slå samman steg 1 och 2 i den senare metoden genom att direkt ange filtret i Fourierdomänen. Metoden får då följande struktur: Gaussfaltning i Fourierdomänen: 1. Fouriertransformera originalbilden. 2. Multiplicera Fouriertransformen med Gausskärnans Fouriertransform. 3. Invertera den resulterande Fouriertransformen. När vi genomför detta i praktiken har vi dock några tekniska problem att beakta: För det första skall den kontinuerliga definitionen av filtret (som avser hela frekvensplanet) överföras till den ändliga del av frekvensplanet som täcks av den diskreta Fouriertransformen. Med referens till avsnitt 1.2 har vi att de diskreta frekvensvariablerna u avbildas till kontinuerliga frekvensvariabler ω D enligt ω D = 2π u N. (12) Utöver detta skall det oändliga frekvensplanet avbildas på det ändliga intervallet [ π, π] 2. I digital signalbehandling används ofta icke-linjära transformationer, s.k. frekvenswarpning, för att genomföra detta. Här ska vi för enkelhets skull använda rättfram trunkering. För det andra måste vi tänka på origos läge i den diskreta Fouriertransformen, så att vi spänner ett origosymmetriskt intervall i argumentet ω = (ω 1, ω 2 ) till Gausskärnans Fouriertransform ĝ(ω 1, ω 2 ; t) = e (ω2 1 +ω2 2 ) t/2. (13) I Matlab kan du enkelt generera upp ett koordinatsystem med kommandot meshgrid samt flytta origos läge med kommandot fftshift.

14 DD2422 Bildbehandling och Datorseende VT 2009 3.3 Filtreringsprocedurer Skriv en Matlab-procedur gaussffta(pic, t) som med användning av den snabba Fouriertransformen faltar bilden pic med en tvådimensionell Gaussfunktion med godtycklig varians t via en diskretisering av Gaussfunktionen i spatialdomänen, samt en procedur gaussfftb(pic, t) som genomför motsvarande Gaussutjämning utgående från en definition av filtret i Fourierdomänen. Förslag till testprocedur: När de genomför denna operation, kan du vilja kontrollera att din faltningsprocedur har ett approximativt korrekt beteende genom att undersöka dess impulssvar. Därför, generera impulssvaret explicit psf = gaussfft(deltafcn(128, 128), t); för olika värden på t (förslagsvis t = 0.1, 1.0, 10.0, och 100.0). Titta på resultatet och beräkna även den (spatiala) kovariansmatrisen för Gaussfunktionen medelst variance(psf) Hur stämmer resultatet med det ideala kontinuerliga fallet där kovariansmatrisen skall bli t multiplicerat med en enhetsmatris? ( 1 0 C(g(, ; t)) = t 0 1 ) (14) Om du finner det svårt att få detta att fungera tillräckligt bra, tillhandahålles i kursbiblioteket en rutin discgaussfft som faltar en bild med en diskret motsvarighet till Gausskärnan. Denna diskreta kärna har (bl.a.) egenskapen att dess diskreta varians är exakt lika med t. Fråga (#5): Visa punktsvaret respektive variansen för de ovan angivna t-värdena. Ange variansen för din diskretiserade Gausskärna för t = 0.1, 1.0, 10.0 och 100.0. Kan du notera några skillnader mellan resultaten av gaussffta och gaussfftb? Hur och varför liknar respektive skiljer sig variansestimaten? Ledning: Betrakta främst resultaten för små värden hos t.

Laboration 2: Filtreringsoperationer 15 Falta ett par bilder med Gaussfunktioner med olika varians (förslagsvis t = 1.0, 4.0, 16.0, 64.0 och 256.0). Vilka effekter kan du observera? Kommentar: Även om resultatet av denna operation till förstone verka destruktivt, skall vi senare i kursen se hur Gaussfaltning faktiskt kan användas för att underlätta bearbetningen i olika typer av visuella moduler. Vi kommer att börja med undertryckande av brus och andra finskalestrukturer. I uppgift 5 skall vi också försöka att åstadkomma i stort sett totala motsatsen till utjämning. 4 Utjämning Ladda in bilden office256 från kursens bilddatabas office = office256; och skapa två brusade bilder genom att använda Matlab-funktionerna gaussnoise och sapnoise. (Dessa funktioner finns i kursens funktionsbibliotek): add = gaussnoise(office, 16); sap = sapnoise(office, 0.1, 255); Visa bilderna på skärmen med showgrey. Vilken typ av brus representerar de? (Använd help-kommandot om du inte kan gissa.) Uppgift (#4.1): Prova att reducera bruset i bilderna add och sap medelst Gaussutjämning (använd någon av funktionerna gaussffta eller gaussfftb du skrev i föregående uppgift, alternativt den funktion discgaussfft som finns i kursbiblioteket) Medianfiltrering (använd funktionen medfilt i kursbiblioteket) Ideal lågpassfiltrering (använd funktionen ideal i kursbiblioteket) Pröva lämpliga värden på parametrarna för respektive filter (standardavvikelsen för Gaussfiltret, fönsterstorleken för medianfiltret, brytfrekvensen för det ideala lågpassfiltret). Jämför resultaten för respektive metod och dra slutsatser. Vilka värde ger bäst resultat?

16 DD2422 Bildbehandling och Datorseende VT 2009 Frågor att besvara. Vilka positiva respektive negativa effekter har respektive filtertyp? Vilka likheter respektive skillnader kan du observera mellan de olika filtren? Hur beror resultaten filterparametrarnas storlek? Beräkna impulssvaret och Fouriertransformen för det ideala lågpassfiltret för lämpliga värden på brytfrekvensen. Illustrerat resultaten dels som grånivåbilder och dels som tvärsnittsgrafer, samt förklara de effekter du observerar mot bakgrund av dessa illustrationer. 5 Kontrastökning (skärpning) Skapa en filtermask laplace av storlek 3 3 som approximerar Laplace-operatorn. Beräkna och inspektera resultatet av att applicera denna operator på bilden. 3 laplaceblocks = conv2(blocks, laplace, valid ); showgrey(laplaceblocks); showgrey(conv2(add, laplace, valid )); showgrey(conv2(sap, laplace, valid )); Om den resulterande bilden laplaceblocks har låg kontrast, du måste mätta ( saturate ) höga värden i histogrammet!!! Vad kan sägas om bruskänsligheten hos Laplace-operatorn? Försök att skärpa bilden Blocks genom att dra ifrån en lämplig konstant multiplicerad med Laplaceoperatorn. Dvs, låt stripblocks = conv2(blocks, [0 0 0; 0 1 0; 0 0 0], valid ); sharpblocks = stripblocks - koefficient * laplaceblocks; för ett lämpligt värde på koefficient. (Faltningsoperationen ovan har effekten att stripblocks får samman storlek som laplaceblocks.) Slutligen, generera en skärpningsmask sharpmask så att skärpningoperationen kan genomföras i ett steg, dvs så att ovanstående operationer kan ersättas med sharpblocks = conv2(blocks, sharpmask, valid ); 3 Argumentet valid tar hänsyn till filtermaskens storlek och minskar bildstorleken med tillräckligt antal pixlar så att inga resultatvärden beror av värden utanför bilden. Detta förfaringssätt är lämpligt i detta fall, eftersom värdena av Laplace-operatorn annars kan bli synnerligen stora längs randen.

Laboration 2: Filtreringsoperationer 17 Fråga (#4a): Varför kan man ersätta hela ovanstående operation med ett filter? Fråga (#4b): Prova olika värden på koefficient. Verifiera att konturerna verkligen blir skarpare genom att välja ut en lämplig rad eller kolumn i bilderna stripblocks och sharpblocks, och rita dessa med plot före respektive efter skärpning. (Naturligtvis bör du montera resultaten med subplot för att underlätta tolkningen.) Hur påverkar Laplace operatorn av brus? Laboration 2 i DD2422 Bildbehandling och Datorseende 2009............................................................................... Studentens personnummer och namn (ifylles av studenten)............................................................................... Godkänd den Kursledare/kursassistent