Lab 1: Operationer på gråskalebilder

Relevanta dokument
LAB 3: Operationer på gråskalebilder

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

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

Flerdimensionella signaler och system

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

TEM Projekt Transformmetoder

Bildbehandling i spatialdomänen och frekvensdomänen

MR-laboration: design av pulssekvenser

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

Bildbehandling i frekvensdomänen

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

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

Spektrala Transformer för Media

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

Spektrala Transformer för Media

Grafisk teknik. Sasan Gooran (HT 2006)

and u = och x + y z 2w = 3 (a) Finn alla lösningar till ekvationssystemet

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

Tentamen i Matematik 2: M0030M.

Styrteknik: Binära tal, talsystem och koder D3:1

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

TSBB14 Laboration: Intro till Matlab 1D

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Signal- och bildbehandling TSEA70

Signal- och bildbehandling TSBB03, TSBB14

Module 1: Functions, Limits, Continuity

Isometries of the plane

12.6 Heat equation, Wave equation

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

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

Rastercell. Digital Rastrering. AM & FM Raster. Rastercell. AM & FM Raster. Sasan Gooran (VT 2007) Rastrering. Rastercell. Konventionellt, AM

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

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Bildbehandling, del 1

TANA17 Matematiska beräkningar med Matlab

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Medicinska bilder. Programkurs 6 hp Medical Images TSBB31 Gäller från: 2018 VT. Fastställd av. Fastställandedatum

Medicinska Bilder, TSBB31. Lab6: Mätningar på SPECT/CT-volymer

Lågpassfiltrering. Signal- och Bildbehandling FÖRELÄSNING 8. Lågpassfiltrering

Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007)

Det finns en handledning till kortet på hemsidan. AVR STK500.

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


Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Projekt 2 (P2) Problembeskrivning och uppdragsspecifikation

ASSEMBLY INSTRUCTIONS SCALE SQUARE - STANDARD

Laboration 4: Digitala bilder

Pre-Test 1: M0030M - Linear Algebra.

Spektrala transformer Laboration: JPEG-kodning

Medicinska Bilder, TSBB31. Lab7: Mätningar på SPECT/CT-volymer

Module 6: Integrals and applications


Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

This exam consists of four problems. The maximum sum of points is 20. The marks 3, 4 and 5 require a minimum

TAIU07 Matematiska beräkningar med Matlab

Bildbehandling En introduktion. Mediasignaler


CTH/GU LABORATION 1 MVE /2013 Matematiska vetenskaper. Mer om grafritning

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

Laboration i Fourieroptik

Bildbehandling i frekvensdomänen. Erik Vidholm

Tentamen i Matematik 2: M0030M.

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

Laboration: Grunderna i Matlab

Laboration i tidsdiskreta system

Beijer Electronics AB 2000, MA00336A,

TSBB31 Medicinska bilder Föreläsning 3

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

MATLAB Laboration problem med lokala extremvärden

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

TSKS21 Signaler, Information och Bilder Lab 2: Digitalisering

Mer om funktioner och grafik i Matlab

Instruktion för laboration 1


Second handbook of research on mathematics teaching and learning (NCTM)

Webbregistrering pa kurs och termin

SVENSK STANDARD SS :2010

ATT RITA GRAFER MED KOMMANDOT "PLOT"

Isolda Purchase - EDI

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Quick Start Guide Snabbguide

Signal- och bildbehandling TSBB14

Kurskod: TAMS28 MATEMATISK STATISTIK Provkod: TEN1 05 June 2017, 14:00-18:00. English Version

STORSEMINARIET 3. Amplitud. frekvens. frekvens uppgift 9.4 (cylindriskt rör)

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

TSKS08 Introduktionskurs i Matlab Föreläsning 2

Laboration i Fourieroptik

Mekanik FK2002m. Vektorer

Projekt 3: Diskret fouriertransform

Signal- och bildbehandling TSBB14

Envariabelanalys 5B1147 MATLAB-laboration Derivator

Webbreg öppen: 26/ /

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

(D1.1) 1. (3p) Bestäm ekvationer i ett xyz-koordinatsystem för planet som innehåller punkterna

TSBB16 Datorövning A Samplade signaler Faltning

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Transkript:

Lab 1: Operationer på gråskalebilder Maria Magnusson, 2016, 2017 Avdelningen för Datorseende, Institutionen för Systemteknik, Linköpings Universitet 1 Introduktion Läs igenom häftet innan laborationen. Uppgifter markerade med en pekande hand bör lösas som förberedelse innan laborationen. En datorsymbol innebär att ett Matlab-script ska skapas och demonstreras för läraren. Skapa en mapp TSBB31 på ditt hembibliotek. Kopiera sedan dit bilderna baboon.tif, circle.tif, pirat.mat, mathlogo.mat. De ligger på /site/edu/bb/medicinskabilder/lab1. 2 Visa bilder 2.1 Displaying images in Matlab There are two commands for displaying images in Matlab, imagesc and imshow. The second one automatically scales the image so that the pixels become rectangular, removes the axes and sets the colortable to grayscale (with 256 different values). Consequently imagesc(im); or imshow(im, []); axis image; colormap(gray(256)); axis off; colormap(gray(256)); give the same result. 1

In the commands above, Im contains the image and [] automatically finds the minimum and maximum of the image and displays it with a linear scale in between. Note that [] is not needed in imagesc. There exists also other colortables, i.e. jet, or it is possible to design your own colortable. If another range of pixel values is desired, you can write imagesc(im, [min max]); or imshow(im, [min max]); giving that the image is displayed with a linear scale between the values min and max. The command colorbar; is useful in connection with displaying images. It shows how the colors in the image correspond to pixel values. The command imshow(im); displays the image with a linear scale between 0 and 1. One exception to what have been said above is 8-bit images of class uint8, which may contain values between 0 and 255. For such images this command works fine: imshow(im); 2.2 Egna övningar Skapa en fil VisaApan.m med nedanstående innehåll och exekvera den. Im = double(imread( baboon.tif )); figure(1) colormap(gray(256)) subplot(1,2,1), imagesc(im, [0 255]) axis image; title( original image ) colorbar( SouthOutside ) Kommandot subplot(1,2,1) delar in fönstret i 1 rad och 2 kolumner, dvs 2 rutor och visar bilden i den första av dem. Mata in nedanstående kommandon. Im utan semikolon gör att hela bildmatrisen skrivs ut på skärmen. Det ger en bra känsla för att en bild faktiskt bara är en matris. 2

>> Im >> min(min(im)) >> max(max(im)) FRÅGA 1: Vad är min och max-värdet på baboon? Orsaken till att man måste skriva min(min( ) är att först tas min individuellt på alla kolumner och därefter tas min på raden. Kontrollera gärna genom att göra help min eller doc min. DEMO A: Utvidga filen VisaApan.m så att apan visas till höger med högre kontrast, t ex mellan 50 och 200. Ge också bilden en lämplig titel. FRÅGA 2: Välj symbolen Data cursor i figur-fönstret. (Den är gul med ett plustecken.) Klicka mitt emellan apans ögon. Vilken koordinat (X,Y) och vilket gråskalevärde (Index) får du? Kontrollera också att du får samma värden i den vänstra och högra bilden. 3 Färgtabeller Ge kommandona >> mycolormap0 = gray(256); >> mycolormapr = mycolormap0; >> mycolormapr(201:256,:,:) = ones(56,1)*[1 0 0]; FRÅGA 3: Titta på mycolormap0 (genom att ta bort semikolonet) och jämför med den vanliga gråskalefärgtabellen som visas i Föreläsning 3. Principen är densamma, men det skiljer lite - vadå? FRÅGA 4: Titta på mycolormapr och ge kommandot colormap(mycolormapr). Förklara hur denna färgtabell påverkar bilden till vänster. DEMO B: Lägg till kod i VisaApan.m så att apan visas även in figure(2). Gör en egen färgtabell, baserad på gråskalefärgtabellen, men låt värden 200 visas blå och värden 50 visas gröna. 3

FRÅGA 5: Testa till sist färgtabellen jet på apan. Vilken färg får apans nos? 4 Faltning (English: Convolution) 4.1 Viktat medelvärdesbildande filter (Lågpass-filter) Skapa en fil FaltaApan.m med nedanstående innehåll och exekvera den. Im = double(imread( baboon.tif )); figure(1) colormap(gray(256)) subplot(1,2,1), imagesc(im, [0 255]) axis image; title( original image ) colorbar( SouthOutside ) Filterkärnan aver = 1 2 1 2 [4] 2 1 2 1 /16 där origo har markerats med hakparenteser. Den kan implementeras i Matlab och appliceras på apan med koden: aver = [1 2 1; 2 4 2; 1 2 1] /16 Imaver = conv2(im,aver, same ); Utvidga filen FaltaApan.m med denna kod och visa den filtrerade apan Imaver till höger om original-apan. FRÅGA 6: Medelvärdesbildande filter används ofta för brusreduktion, men vad händer med fina detaljer, såsom kanter och linjer, i bilden? FRÅGA 7: Vad innebär same i conv2-kommandot? Kontrollera genom att göra help conv2. 4

DEMO C: Testa sedan att falta flera gånger med aver för att få en kraftigare effekt. Ändra i FaltaApan.m så att den 3 gånger faltade apan visas till höger. Var noga med att ha samma kontrastfönster på båda bilderna, så att det blir pedagogiskt att jämföra de båda bilderna. FRÅGA 8: Vad händer när filtret aver appliceras upprepade gånger? FRÅGA 9: Motivera varför aver divideras med normaliseringsfaktorn 16. Ändra sedan normaliseringsfaktorn till ett lägre värde. Vad händer? FRÅGA 10: Parametrarna full och valid är alternativ till same i conv2 kommandot. Vad innebär de? FRÅGA 11: Utför faltningen nedan för hand innan laborationen. Verifiera sedan med conv2-kommandot under laborationen. 1 2 0 1 [3] 0 1 4 1 1 2 0 0 [2] 0 0 1 3 = 5

5 Fouriertransform 5.1 Displaying Fourier transforms in Matlab The discrete Fourier transform (DFT) can be fast computed by the fast Fourier transform (FFT). The Matlab function fft assumes the origin of the data to be at the first position of the input vector. When dealing with images we usually want the origin of the data to be in the center instead. When the data is of even size, the central position can be located at the pixel slightly to the right of the geometrical center. The ifftshift shifts the origin in the signal domain from the middle position to the first position as shown in Figure 1. The result from fft has the Fourier origin, that is the DC-component, in the first position of the output vector. The fftshift command shifts it to the middle position where we expect to find it when we plot the function. Consequently, if f is the function in the signal domain, its Fourier transform is calculated as F = fftshift(fft(ifftshift(f))); and if F is the function in the Fourier domain, its inverse Fourier transform is calculated as f = fftshift(ifft(ifftshift(f))); The 2D case for even sized data is illustrated in Figure 2. Consequently, if f is the function in the spatial domain, its Fourier transform is calculated as F = fftshift(fft2(ifftshift(f))); and if F is the function in the Fourier domain, its inverse Fourier transform is calculated as f = fftshift(ifft2(ifftshift(f))); 6

f-3 f-2 f-1 f0 f1 f2 f3 f-4 f-3 f-2 f-1 f0 f1 f2 f3 ifftshift fftshift ifftshift fftshift f0 f1 f2 f3 f-3 f-2 f-1 f0 f1 f2 f3 f-4 f-3 f-2 f-1 fft ifft fft ifft F0 F1 F2 F3 F-3 F-2 F-1 F0 F1 F2 F3 F-4 F-3 F-2 F-1 fftshift ifftshift fftshift ifftshift F-3 F-2 F-1 F0 F1 F2 F3 F-4 F-3 F-2 F-1 F0 F1 F2 F3 Figure 1: The functions fftshift and ifftshift are used to place the origin at the correct positions when transforming vectors. Left: odd number of samples. Right: even number of samples. fftshift ifft2 ifftshift ifftshift fft2 fftshift Figure 2: The functions fftshift and ifftshift are used to place the origin at the correct positions when transforming matrices. Illustrated for even number of samples. 7

5.2 Undersökning av fouriertransformen Skapa en fil FFTmathlogo.m med nedanstående innehåll och exekvera den. load math_logo im = math_logo; IM = fftshift(fft2(ifftshift(im))); maxim = max(max(abs(im))); shiftim = circshift(circshift(im,5,2),10,1); figure(1); colormap gray; subplot(121); imagesc(im); axis image; title( im ) colorbar( SouthOutside ) subplot(122); imagesc(shiftim); axis image; title( shifted im ) colorbar( SouthOutside ) figure(2); colormap gray; subplot(221); imagesc(abs(im), [0 0.02*maxIM]); axis image; colorbar; title( abs(f[im]) ) subplot(222); imagesc(angle(im), [-pi pi]); axis image; colorbar; title( angle(f[im]) ) subplot(223); imagesc(real(im), [-0.02*maxIM 0.02*maxIM]); axis image; colorbar; title( real(f[im]) ) subplot(224); imagesc(imag(im), [-0.02*maxIM 0.02*maxIM]); axis image; colorbar; title( imag(f[im]) ) FRÅGA 12: I figure(2) tittar vi på fouriertransformen F (u, v) av en bild f(x, y) på olika sätt. Det gäller att fouriertransformen av en reell bild är hermitisk, dvs F (u, v) = F ( u, v), där noterar komplex-konjugat. Utgående från denna formel kan man visa att olika typer av symmetri gäller. Man talar om udda och jämna funktioner (se kompendiet). Vilka typer av symmetri gäller för bilderna i figure(2)? Komplettera svaret nedan. abs(im): angle(im): real(im): imag(im): Even, since F (u, v) = F ( u, v) FRÅGA 13: Hur lyder translationsteoremet i 2D? DEMO D: Bilden shiftim till höger i figure(1) är skiftad jämfört med 8

bilden im till vänster. Lägg till kod i FFTmathlogo.m där fouriertransformen av shiftim beräknas och visas i figure(3). FRÅGA 14: Vilken av fouriertransformbilderna abs( ), angle( ), real( ) eller imag( ) förändras inte av translation? Är detta i enlighet med translationsteoremet? FRÅGA 15: Visa abs(im) i figure(2) utan att specificera min och maxvärden, dvs ta bort [0.02*maxIM]. Då kan man se endast noll-frekvensen på (u, v) = (0, 0). Clicka i bilden och ge dess position och värde! FRÅGA 16: Normalt sett dominerar denna frekvenskomponent kraftigt för vanliga bilder. Den är lika med summan av pixelvärdena i bilden. Kontrollera detta för bilden (med sum) och jämför med svaret på förra frågan. 5.3 Bild/fouriertransform vid faltning/filtrering Filterkärnan aver av storleken 3 3 kan implementeras i Matlab. ihopfaltade aver ger sedan filterkärnan aver3. 3 st aver = [1 2 1; 2 4 2; 1 2 1] /16 aver3 = conv2(conv2(aver,aver, full ),aver, full ) FRÅGA 17: Innan laborationen, svara på vilken storlek aver3 kommer att ha! Under laborationen, kontrollera ditt svar genom att utföra ovanstående kommandon i Matlab. Noter också aver3:s centrumvärde. Skapa en fil FFTmathlogo2.m med nedanstående innehåll och exekvera den. load math_logo im = math_logo; aver = [1 2 1; 2 4 2; 1 2 1]/16; aver3 = conv2(conv2(aver,aver, full ),aver, full ); imconv = conv2(im,aver3, same ); aver3im = 0*im; 9

center = size(im,1)/2+1; aver3im(center-3:center+3, center-3:center+3) = aver3; IM = fftshift(fft2(ifftshift(im))); AVER3IM = fftshift(fft2(ifftshift(aver3im))); IMCONV = fftshift(fft2(ifftshift(imconv))); maxim = max(max(abs(im))); figure(1); colormap gray; subplot(131); imagesc(im); axis image; title( im ); colorbar( SouthOutside ) subplot(132); imagesc(aver3im); axis image; title( aver3im ); colorbar( SouthOutside ) subplot(133); imagesc(imconv); axis image; title( imconv ); colorbar( SouthOutside ) figure(2); colormap gray; subplot(131); imagesc(abs(im), [0 0.01*maxIM]); axis image; title( abs(f[im]) ); colorbar( SouthOutside ) subplot(132); imagesc(abs(aver3im)); axis image; title( abs(f[aver3im]) ); colorbar( SouthOutside ) subplot(133); imagesc(abs(imconv), [0 0.01*maxIM]); axis image; title( abs(f[imconv]) ); colorbar( SouthOutside ) I figure(1) ser vi originalbilden im, en bild av faltningskärnan aver3im, samt faltningsresultatet imconv. I figure(2) ser vi deras respektive fouriertransformer. FRÅGA 18: Zooma i bilden aver3im och kontrollera att du ser den lilla faltningskärnan. Klicka i bilden och kontrollera att centrumvärdet är korrekt. Vilket är det korrekta värdet? FRÅGA 19: Hur lyder faltningsteoremet i 2D? FRÅGA 20: Studera fouriertransformerna i figure(2) och beskriv hur man kan se att de uppfyller faltningsteoremet. (Tips: Tala om multiplikation i din beskrivning.) Vi ska nu relatera bildegenskaper till fouriertransformen. Nollfrekvensen (u, v) = (0, 0) är belägen mitt i fouriertransformbilden på koordinat (62,62). Den har ett stort värde. Det konstaterade vi tidigare. Länge ut mot kanterna på fouriertransformbilden blir frekvenserna högre ty u 2 + v 2 blir större. 10

FRÅGA 21: Fyll nu i orden low frequencies eller high frequencies i boxarna i texten nedan! Tänk på att bilderna im, imconv och fouriertransformerna IM, IMCONV ska stämma med din text. A normal image is dominated by smooth surfaces with different intensities. This corresponds to frequencies i the Fourier transform image. The image im has both smooth surfaces and sharp edges. The sharp edges corresponds to frequencies i fouriertransformbilden. The image imconv has both smooth surfaces and soft edges. Consequently, the frequencies are suppressed in the Fourier transform image. Slutsats: Vi har allstå faltat bilden im med ett medelvärdesbildande filter och erhållit aver3im. Alternativt säger man att im lågpassfiltreras till aver3im. De låga frekvenserna bevaras medan de höga frekvenserna dämpas. 6 Faltning med deriverande filter 6.1 Derivering i x- och y-led, gradient Derivatan i x-led av en bild f(x, y) kan beräknas enligt f(x, y) x = y f(x, y) sobelx f(x, y). På liknande sätt kan derivatan i y-led, f(x,y) y, beräknas. Sobel-filterna visas nedan. sobelx = 1 0-1 2 [0] -2 1 0-1, sobely = -1-2 -1 0 [0] 0 1 2 1. Skapa en fil DeriveraCirkeln.m med nedanstående innehåll och exekvera den. Im = double(imread( circle.tif )); figure(1) colormap(gray(256)) subplot(2,2,1), imagesc(im, [0 255]) axis image; axis off; title( original image ); colorbar sobelx = [1 0-1; 2 0-2; 1 0-1] /8; 11

Imsobelx = conv2(im,sobelx, same ); subplot(2,2,3), imagesc(imsobelx, [-128 127]) axis image; axis off; title( sobelx image ); colorbar DEMO E: Lägg till kod i DeriveraCirkeln.m för att visa resultatet av sobely faltat med cirkeln. Visa resultatbilden nere till höger. FRÅGA 22: Normaliseringsfaktorn kan inte väljas på samma sätt som för ett medelvärdesbildande filter. Varför? FRÅGA 23: Vi valde normaliseringsfaktorn=8 i koden ovan. Hur motiverar man att normaliseringsfaktorn 8 är bra? När en bild innehåller positiva values från 0 till 255, fungerar gray färgtabellen så här: color: black gray white pixel value: 0 128 255 De sobelfiltrerade bilderna innehåller negativa värden. När en bild bara innehåller värden i intervallet [-128 127], fungerar gray färgtabellen så här: color: black gray white pixel value: 128 0 127 Följdaktligen visas negativa värden mörka och positiva värden ljusa. Värden nära 0 visas grå. FRÅGA 24: Titta på dina bilder och tala om varför kanten i originalbilden ibland blir mörk, ibland ljus, och bland grå i de sobelfiltrerade bilderna. Gradienten ( f(x,y) x ), f(x,y) y är en tvådimensionell vektor som pekar i den riktning där intensiteten i bilden f(x, y) ökar snabbast. 12

FRÅGA 25: Skriv upp det matematiska uttrycket för magnituden av gradienten i bilden f(x, y)! (Alternativa benämningar på magnituden är längden eller absolutbeloppet.) DEMO F: Lägg till kod i DeriveraCirkeln.m så att magnituden av gradienten på cirkeln visas uppe till höger. Skriv också ett liknande program för apan, DeriveraApan.m och studera bilderna. Det finns många varianter på derivata-filter. Ett enklare filter-par är nedanstående som vi här kallar simple (det är dock inget etablerat namn). simplex = 1 [0] -1, simpley = -1 [0] 1. FRÅGA 26: Vad är en lämplig normaliseringsfaktor för simplex och simpley? DEMO G: Ofta duger det bra att använda simple istället för sobel, men om man vill vara noggrann är sobel bättre. För cirkeln gäller det ju att dess kant är lika stark runtom. Därmed bör också magnituden av gradienten vara lika stark runtom. Detta uppfylls bättre för sobel än simple. Visa detta med programmet MagitudSimpleSobel.m. För att se tydligt behöver man ändra kontrastintervallet. Ett tips är att börja med sätta kontrasten mellan 0 och 160 enligt nedan och sedan justera 0 uppåt till ett värde (?). I figure(1) ska visas: I figure(2) ska visas: sobelmagngrad simplemagngrad kontrast:[0 160] kontrast:[0 160] sobelmagngrad simplemagngrad kontrast:[? 160] kontrast:[? 160] 13

6.2 Laplacefilter (negativt Högpass-filter) Laplace-operatorn definieras ( ) 2 2 = x 2 + 2 y 2 = x x + y y Vi ska här använda ytterligare en approximation till deriveringsoperatorer i x- och y-led, nämligen x 1-1, y -1 1. där centrum är markerat med dubbellinjer. FRÅGA 27: Konstruera ett Laplace-filter genom att fylla i rutorna nedan. Som synes är Laplacefiltret givet. Dess centrum är markerat med en tjockare ram. För deriveringsoperatorerna är deras centrum faktiskt mittemellan pixlarna. 1 1 1 1 0 1 0 1 4 1 0 1 0 Skapa en fil LaplaceCirkeln.m med nedanstående innehåll och exekvera. Im = double(imread( circle.tif )); figure(1) colormap(gray(256)) subplot(1,2,1), imagesc(im, [0 255]) axis image; title( original image ) colorbar( SouthOutside ) laplace = [0 1 0; 1-4 1; 0 1 0]; Imlaplace = conv2(im, laplace, same ); subplot(1,2,2), imagesc(imlaplace, [-200 200]) axis image; title( laplace image ) colorbar( SouthOutside ) Laplaceoperatorn estimerar alltså en slags 2-D andraderivata. Nedan visas hur en 1-D andraderivata reagerar på en (approximativ) 1D rectangulär funktion f(x). 14

f(x) f (x) f (x) x x x FRÅGA 28: Stämmer bilden Imlaplace överens med skissen? Motivera ditt svar. Skapa en fil SharpenPirate.m med liknande innehåll som LaplaceCirkeln.m. Den första raden byts ut mot: load( pirat.mat ) Im = pirate; FRÅGA 29: Du kan också behöva justera gränserna [-200 200]. Vad blir effekten av att ändra gränserna till [-100 100]? FRÅGA 30: Studera bilden (Imlaplace) och jämför med originalbilden (Im). Hur påverkas jämna ytor (kinden t ex)? Hur påverkas kanter? Hur påverkas snabba förändringar (fjädern t ex)? DEMO H: Laplacefiltret förstärker alltså snabba förändringar i bilden. Man talar om ett högpassfilter (HP). Egentligen ska detta ha omvänt tecken, bilda därför ImHP = -Imlaplace; Komplettera sedan SharpenPirate.m med en bild som är summan av originalbilden och högpassbilden, dvs Imsharp = Im + ImHP; Skapa också ImSharp2 = Im + 2*ImHP; FRÅGA 31: Kommentera resultatet! 15