Laboration 1: Elementära bildoperationer



Relevanta dokument
Laboration: Grunderna i MATLAB

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. 27 oktober 2015 Sida 1 / 31

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

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:

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

TAIU07 Matematiska beräkningar med Matlab

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

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

Matlabövning 1 Funktioner och grafer i Matlab

SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011

Introduktion till MATLAB

TANA17 Matematiska beräkningar med Matlab

Matriser och Inbyggda funktioner i Matlab

TSBB14 Laboration: Intro till Matlab 1D

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

Bildbehandling i frekvensdomänen

Matriser och Inbyggda funktioner i Matlab

Matlabövning 1 Funktioner och grafer i Matlab

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

Mer om funktioner och grafik i Matlab

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

Mer om funktioner och grafik i Matlab

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Bildbehandling, del 1

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

TAIU07 Matematiska beräkningar med Matlab

FÖRSÄTTSBLAD TILL TENTAMEN. ELLER (fyll bara i om du saknar tentamenskod): Datum: 16 januari Bordsnummer:

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

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

Datorövning 1 Fördelningar

Matriser och vektorer i Matlab

Introduktion till Matlab

Linjär algebra med tillämpningar, lab 1

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

Inlämningsuppgift 4 NUM131

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

Hemuppgift 2, SF1861 Optimeringslära för T, VT-10

Laboration 1: Introduktion till R och Deskriptiv statistik

Introduktion till Matlab

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

Matematikcentrum 1(6) Matematisk Statistik Lunds Universitet MASB11 - Biostatistisk grundkurs VT2014, lp3. Laboration 2. Fördelningar och simulering

MMA132: Laboration 2 Matriser i MATLAB

Laboration i Fourieroptik

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Introduktion till Matlab

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

KPP053, HT2016 MATLAB, Föreläsning 3. Plotter och diagram Läsa och skriva data till fil

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.

'LJLWDODELOGHUR KGLJLWDOELOGPDQLSXOHULQJ

Ansiktsigenkänning med MATLAB

TANA17 Matematiska beräkningar med Matlab

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

TEM Projekt Transformmetoder

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. 9 november 2015 Sida 1 / 28

Laboration 1. Grafisk produktion och tryckkvalitet (TNM015) Rastrering och objektiva kvalitetsmått. S. Gooran (VT2007)

Programmeringsteknik med C och Matlab

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

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

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 3: MULTIPEL REGRESSION.

Matriser och linjära ekvationssystem

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Flerdimensionella signaler och system

2 februari 2016 Sida 1 / 23

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Laboration: Grunderna i Matlab

Introduktion till Matlab

Laboration i Fourieroptik

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Introduktion till Matlab

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Laboration 1: Beskrivande statistik

TSBB16 Datorövning A Samplade signaler Faltning

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

TSKS21 Signaler, Information och Bilder Lab 2: Digitalisering

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

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Datorövning 1: Fördelningar

4.4. Mera om grafiken i MATLAB

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

Datorövning 1: Fördelningar

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

Laboration 6. Ordinära differentialekvationer och glesa system

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

Laboration 1. Grafisk teknik Rastrering. Sasan Gooran (HT 2004)

bli bekant med summor av stokastiska variabler.

Datorövning 5 Exponentiella modeller och elasticitetssamband

15 februari 2016 Sida 1 / 32

TANA19 NUMERISKA METODER

Värmedistribution i plåt

Transkript:

Skolan för Datavetenskap och Kommunikation, KTH Danica Kragic, Tony Lindeberg 2D1421 Bildbehandling och Datorseende Laboration 1: Elementära bildoperationer Syftet med denna laboration är att du ska bekanta dig med bildhantering i Matlab och få praktisk erfarenhet av ett antal elementära bildoperationer på svartvita bilder, såsom sträckning av grånivåerna, pseudofärgning, histogramutjämning, sampling, och kvantisering. Du kommer också att visualisera bildinformation på olika sätt. Efter att ha genomfört denna laboration och parallellt studerat de relaterade avsnitten i kurslitteraturen, är ett primärt mål med denna laboration att du skall ha god förståelse för vad det innebär att punktvis transformera grånivåerna i en bild, samt detaljerad kunskap om följande metoder för att genomföra detta i praktiken: styckvis linjär sträckning, logaritmisk kompression och histogramutjämning. Om du använt bildbehandlingssystem tidigare, kan du redan ha bekantat dig med de tekniker som ingår i delmomenten 1 3. Dessa övningar är huvudsakligen av introducerande karaktär och du behöver ej dokumentera resultaten i form av utskrifter eller skriptfiler annat än för de explicita frågor som ges i texten. Läs genom hela laborationen och genomför de introducerande uppgifter som du inte upplever som triviala. Redovisning: För att redovisningen skall gå smidigt bör du för övriga uppgifter skapa skriptfiler som gör det möjligt att snabbt reproducera resultaten. Frågor som är är explicit angivna i texten, liksom frågor som är av förståelsemässig natur besvarar du skriftligt. Om resultat tar lång tid att beräkna kompletterar du med utskrifter på papper. Innan du börjar läs instruktionerna i häftet Allmänna laborationsanvisningar, samt studera de relaterade teoretiska avsnitten om grånivåtransformationer och histogramutjämning i kurslitteraturen och föreläsningsanteckningarna. Inläsning av bilder: Bildformat Bilderna som används i denna laboration ligger lagrade på filsystemet antingen som 1. Matlab-variabler sparade med kommandot save i filer under mappen $DSGKHOME/Images-mat 2. funktionsdefinitioner lagrade i filer under mappen $DSGKHOME/Images-m 3. JPEG- och TIFF-filer under mappen $DSGKHOME/Images Om dina sökvägar är korrekt inställda kan du ladda dessa filer med kommandon av följande typ:

2 2D1421 Bildbehandling och Datorseende VT 2006 1. Inläsning av Matlab-variabler 1 load canoe256 2. Inläsning av bilder definierade som funktionsdefinitioner nallo = nallo256; 3. Inläsning av jpeg eller tiff-bilder hund1 = double(imread( dog.jpg )); hund2 = double(imread( dog.tiff )); Storleken hos en bild kan man få fram genom genom whos eller size(variabel ) När man arbetar med en bild vill man ofta veta dess största och minsta värde. I Matlab kan dessa beräknas på endera av följande sätt: max(max(canoe)) max(canoe(:)) Orsaken till det dubbla anropet är att funktionen max applicerad på en matris returnerar en vektor av maxvärden för varje kolumn. Den alternativa notationen Canoe(:) leder till att bildmatrisen betraktas som en enda lång kolumnvektor. 1 Visning av bilder: Färgtabeller och kvantisering Matlab har en inbyggd funktion vid namn image för att visualisera matriser. Eftersom det finns ett otal möjligheter att koda tal som färger, är inte översättningen från tal i matrisen till färger på skärmen fixerad. Istället används en färgtabell. Denna färgtabell representeras av en matris med tre kolumner vars element antar värden i intervallet [0, 1]. (I tur och ordning svarar kolumnerna mot de röda, gröna och blå färgkomponenterna.) När kommandot image(canoe) anropas, används värdet i varje bildelement i matrisen Canoe som ett index in i denna tabell. Ett flyttalsvärde avrundas till närmaste heltalsvärde, och värden utanför färgtabellens definitionsområde avrundas till närmaste randvärden. 2 1 Om du inte redan är bekant med save-kommandot, läs dokumentationen med help save. Hädanefter antas det som självklart att du använder help kommando för att ta reda på mer om de kommandon som nämns instruktionerna. Bilden Canoe ligger lagrad som en Matlabvariabel. För att se vilka variabler som är definierade samt hur stora de är skriver du whos. 2 Du kan se hur lång den aktuella färgtabellen är genom size(colormap, 1), vilket returnerar antal rader i matrisen. För att visningsmekanismen skall fungera, bör värdena i den matris som skall visas vara i intervallet [0.5, M + 0.5] där M är längden av färgtabellen. Du kan skriva ut matriselementen i färgtabellen på skärmen genom att skriva colormap. För att grafiskt visualisera färgtabellen skriver du plot(colormap), varvid tre kurvor ritas upp en för varje färgkomponent. Om du har en färgskärm och bara ser en kurva, beror det på att kurvorna överlappar och att du bara ser den senast ritade. Matlab tillhandahåller ett antal fördefinierade färgtabeller. Du kan se vilka som är definierade genom att skriva help graph3d (se rubriken Color maps ). Prova gärna att visualisera några färgtabeller med kommandon som plot(hsv), plot(copper(16)). Notera att längden av färgtabellen kan justeras och att skönsvärdet är 64.

Laboration 1: Elementära bildoperationer 3 Låt oss nu titta på en bild. Ladda kanotbilden enligt instruktionerna i början av denna laboration. För att inte behöva skala om pixelvärdena till intervallet [0.5, 64.5] använder vi för enkelhets skull en färgtabell med 256 grånivåer colormap(gray(256)) (Vad händer om vi inte gör detta?) Därefter kan vi titta på bildmatrisen med image(canoe) När man visar bilder vill man i allmänhet att bildelementen skall vara kvadratiska. I Matlab kan detta åstadkommas med axis equal Vidare, när man arbetar med bilder av olika typer, är det i många fall en onödig brist i abstraktionsnivå om man hela tiden skall behöva hålla reda på att färgtabellens definitionsområde svarar mot det intervall i vilket pixelvärdena befinner sig. För att undvika dessa problem, tillhandahålles en Matlab-funktion showgrey i kursens funktionsbibliotek. Om inte annat anges, beräknar denna funktion först bildens största och minsta värde och transformerar därefter detta intervall av grånivåer till ett intervall anpassat till en svartvit färgtabell med 64 nivåer. Du kan också explicit ange färgtabellens längd samt vilket intervall av grånivåer som skall visas. För information om detta skriver du help showgrey Prova nu att titta på kanotbilden med showgrey(canoe) samt ändra på antalet nivåer i färgtabellen genom att variera visningsfunktionens andra-argument i jämna tvåpotenser i intervallet [2, 256] showgrey(canoe, 256). showgrey(canoe, 2) Denna teknik simulerar resultatet av att kvantisera bilden med olika antal bitar. Prova också att applicera denna teknik på följande bild phone = phonecalc256;

4 2D1421 Bildbehandling och Datorseende VT 2006 Varför dyker det upp mönster i bakgrunden för telefonbilden? Hur många grånivåer behövs för att ge ett (subjektivt) acceptabelt resultat i detta fall? Att uteslutande basera visningen av en grånivåbild på dess största och minsta värden har dock uppenbara begränsningar för bilder i vilka ett fåtal bildelement antar värden som väsentligt skiljer sig från övriga värden. Om man visar en sådan bild på skärmen med ovanstående strategi, kan resultatet typiskt sett bli en mycket mörk (ljus) bild med ett fåtal ljusa (mörka) områden. Prova detta genom att ladda följande bild vad = whatisthis256; och titta på den med skönsvärdesinställningarna till showgrey showgrey(vad) Tag sedan fram dess största och minsta värden (såsom beskrivs i första avsnittet) och framhäv olika delar av grånivåintervallet genom att ge olika intervallgränser zmin och zmax till showgrey showgrey(vad, 64, zmin, zmax) Kan du säga vad bilden föreställer? Varför är det svårt att tolka informationen i originalbilden? Alternativa visualiseringstekniker: Andra sätt att visualisera motsvarande datamängd är genom en-dimensionella tvärsnitt, pseudofärgning, nivåkurvor eller genom att betrakta den tre-dimensionella yta som definieras av bildfunktionen. Prova exempelvis att välja ut en rad ur bilden phone = phonecalc256; med index i och visa intensitetsvariationerna längs denna rad med plot(phone(i, :)) Notera hur kraftigt grånivåerna varierar, även i områden som subjektivt ser ut att ha relativt jämn intensitet. Generera därefter en grånivåkil medelst kil = ones(1, 256) * (1 : 1 : 256);

Laboration 1: Elementära bildoperationer 5 och betrakta denna grånivåkil samt bilden nallo256 med visualiseringsrutinen image och färgtabellerna colormap(gray(256)) colormap(cool) colormap(hot) Visualisera också bilden via phone128 = binsubsample(phone); contour(phone128, 16) mesh(phone128) mesh(binsubsample(phone128)) Slutsatser? 2 Subsampling Den densitet av bildelement som används för att sampla en bild påverkar på ett fundamentalt sätt den information som kan upplösas i bilden. För att simulera effekten av detta ska vi i denna deluppgift ta en given bild och reducera den upplösning med vilken bildinformationen representeras. I Matlab kan man reducera upplösningen i en bildmatris bl.a. på följande sätt function pixels = rawsubsample(inpic) [m, n] = size(inpic); pixels = inpic(1:2:m, 1:2:n); (Denna funktion finns redan i kursens funktionsbibliotek). För att illustrera denna funktions verkan, applicera den först på en enkel testbild, som den 9 9-bild som definieras av följande funktionsanrop: ninepic = indexpic9 rawsubsample(ninepic) Applicera därefter denna subsamplingsoperator upprepade gånger på några av de grånivåbilder som använts ovan. Resultat och slutsatser?

6 2D1421 Bildbehandling och Datorseende VT 2006 Som jämförelse bör du också studera effekten av subsamplingsoperationen function pixels = binsubsample(inpic) prefilterrow = [1 2 1]/4; prefilter = prefilterrow * prefilterrow; presmoothpic = filter2(prefilter, inpic); pixels = rawsubsample(presmoothpic); i vilken bilden filteras med en binomialkärna med filterkoefficienterna 1/4 1/16 1/8 1/16 1/2 (1/4, 1/2, 1/4) = 1/8 1/4 1/8 1/4 1/16 1/8 1/16 före det rena subsamplingssteget. Om du inte är bekant med kopplingarna mellan linjärfiltrering och subsampling skall du inte oroa dig. Vi kommer att gå genom detta senare i kursen. Här skall du endast observera de kvalitativa effekterna och försöka dra relevanta slutsatser om hur och varför metoderna skiljer sig åt. Frågor #2: Applicera funktionerna subsample respektive binsubsample två gånger på bilden phonecalc256. Beskriv på vilka sätt resultaten liknar varandra respektive skiljer sig åt. Försök att förklara orsaken till skillnaderna. Vad blir resultatet om du upprepat applicerar dessa två typer av operatorer på en texturerad bild? 3 Grånivåtransformationer och lookup-tabeller Ett vanligt sätt att transformera en bild är via grånivåtransformationer. Om syftet är att visa bilden på en skärm i Matlab kan vi genomföra dessa genom att antingen

Laboration 1: Elementära bildoperationer 7 1. applicera inbyggda punktoperationer på bilddata 2. transformera grånivåerna via en look-up-tabell 3. skapa en ny färgtabell. 3.1 Punktoperationer I Matlab finns en rad inbyggda funktioner inom den första kategorin (se exempelvis help elfun ) som kan appliceras genom att helt enkelt ge bildens variabelnamn som argument: neg1 = - Canoe; showgrey(neg1); neg2 = 255 - Canoe; showgrey(neg2); nallo = nallo256; showgrey(nallo.^(1/3)); showgrey(cos(nallo/10)); Undersök histogrammen för de två första bilderna med hist(neg1(:)) hist(neg2(:)) Motsvarar resultaten dina förväntningar? 3.2 Look-up-tabeller För vissa typer av gråskaletransformationer kan det vara nödvändigt att representera gråskaletransformationen i termer av en lookup-tabell. Typiska exempel är om transformationen innebär omfattande beräkningar för varje bildelement, eller om ett slutet uttryck för gråtransformationen saknas. Metoden med look-up-tabeller innebär att bildvärdet i en punkt används som index till en tabell (som beräknats i förväg), och att grånivåtransformationen därefter implementeras helt enkelt via tabelluppslagning. Av förståeliga skäl lämpar sig denna teknik främst för heltalsbilder eller lägen där avrundning till heltal är en rimlig approximation. 3 I kursbiblioteket finns en rutin compose som genomför en sådan sammansättning mellan en inbild inpic och en förberäknad tabell lookuptable: 3 Det finns naturligtvis också möjligheter att kombinera tabelluppslagning med linjär interpolation för att förbättra noggrannheten.

8 2D1421 Bildbehandling och Datorseende VT 2006 outpic = compose(lookuptable, inpic) Eftersom tekniken med lookup-tabeller kommer att visa sig användbar i kommande uppgifter som avser sträckning av grånivåer och histogramutjämning, skall vi här illustera hur den kan användas för kontrastreversering. För grånivåintervallet [0, 255] kan man i Matlab skapa en lookup-tabell med denna effekt genom negtransf = (255 : -1 : 0) ; Därefter genomförs grånivåtransformationen medelst neg3 = compose(negtransf, Canoe + 1); Titta på denna bild på skärmen och jämför med tidigare negeringsoperationer, genom att skapa en differensbild diff = neg3 - neg2; samt beräkna differensbildens min- och max-värde och/eller histogram. Varför är det nödvändigt att addera värdet 1 till bilden innan uppslagningen sker i lookup-tabellen? 3.3 Manipulering av färgtabellen Som vi såg i uppgift 1, fungerar också varje färgtabell som en gråskaletransformation. Därmed går det att skapa en kontrastreverserad bild enbart genom att manipulera färgtabellen. Efter att du visat kanotbilden med image(canoe + 1) kan du skapa en affin funktion som avtar från värdet 1.0 till 0.0 i 256 steg genom negcolormapcol = linspace(1, 0, 256) ; samt använda denna för att sätta om färgtabellen medelst colormap([negcolormapcol negcolormapcol negcolormapcol]) (Liksom tidigare, kan du tvinga fram kvadratiska bildelement med axis image samt stänga av koordinataxlarna med axis off.) Med en mer kompakt notation, kan du låta showgrey genomföra motsvarande operationer genom att skriva showgrey(canoe, linspace(1, 0, 256), 0, 255)

Laboration 1: Elementära bildoperationer 9 Här talar de två sista argumenten om för showgrey att bilden antar sina värden i intervallet [0, 255], varför vi inte behöver lägga till en etta i tabelluppslagningen. Av dessa tre olika tekniker är den senaste tekniken den enklaste, den troligen minst beräkningskrävande, samt den minst minneskonsumerande, förutsatt att enda syftet med bildbearbetningen är att bildinnehållet skall visas på skärmen. Den uppenbara nackdelen med att endast manipulera färgtabellen är att resultatet inte är tillgängligt för vidare bearbetning eller analys. Här slutar den rent introducerande delen, i vilken förklaringarna har varit synnerligen utförliga med hänsyn till den mindre vane användaren av Matlab. I följande avsnitt ändras karaktären i laborationslydelsen och uppgifterna blir mer probleminriktade.

10 2D1421 Bildbehandling och Datorseende VT 2006 4 Sträckning av grånivåerna Ladda in bilden nallo256float 4 och titta på den med showgrey. Denna bild har scannats från en diabild med hög dynamik på ett sådant sätt att både grånivåvariationerna i den över ljusa delen av bilden och den nedre mörka delen har lösts upp. Till skillnad från heltalsbilden nallo256 har den lagrats som en flyttalsbild med finare kvantisering av grånivåerna. Som du ser, har många detaljer i den nedre delen av bilden dålig kontrast när bilden visas på detta sätt. Beräkna histogrammet för denna bild, och använd detta som vägledning för att skapa olika linjära lookup-tabeller, med vilka du transformerar grånivåvärdena. För denna bild kan du exempelvis börja med att sträcka varje tredjedel av gråskalan till att täcka hela dynamiken på skärmen. Lättast använder du de tekniker vi gått genom i tidigare uppgifter, baserade på gråskalespecifikationer till showgrey och/eller lookup-tabeller. Frågor #4: Visualisera följande storheter på skärmen: originalbilden histogrammet för originalbilden, transformationsfunktionen den transformerade bilden histogrammet för den transformerade bilden. Hur kom du fram till den valda transformationsfunktionen? 5 Logaritmisk kompression Applicera den logaritmiska transformationsfunktionen på nallo256float. Frågor #5: T (z) = log(α + z) Vilka effekter har denna operation? Varför behövs parametern α och hur påverkar dess värde resultatet? (Visa resultat för olika lämpligt valda värden av α.) 4 Namnet Nallo avser ett område i Kebnekaiseområdet där denna bild är tagen.

Laboration 1: Elementära bildoperationer 11 Försök förklara varför denna transformation har de effekter den har samt för vilka typer av data och varför denna transformation är en bra modell. 6 Histogramutjämning Använd kommandot hist och kommandot cumsum för att generera en tabulerad gråskaletransformation eqtransf som jämnar ut histogrammet av bilden nallo baserat på någon rimlig diskret transformation av formeln T (z) = z ζ=0 p(ζ) dζ där p(ζ) är den normaliserad frekvensfunktionen (det normaliserade histogrammet) av bilden. 5 Samla ihop de kommandon du har använt och skriv en Matlabprocedur function pixels = histeq(image, nacc, verbose) Denna procedur skall ta en godtycklig bild som indata jämte antalet ackumulatorer nacc som skall användas. Utdata skall naturligtvis vara den histogramutjämnade bilden. Om argumentet verbose har ett positivt värde skall bildens histogram före respektive histogramutjämning visas. Dessutom uppritas transformationsfunktionen grafiskt. Om du behöver ledning om hur man skriver procedurer i Matlab, kan du studera källkoden till exempelvis funktionen showgrey genom type showgrey. Frågor #6: Upprita (grafiskt) den transformationsfunktion som genereras, skapa den histogramutjämnade bilden, och räkna ut histogrammet för denna bild baserat på 16, 64 och 256 ackumulatorer i histogrammet. Hur beror den histogramutjämnade bilden respektive dess histogram på antal ackumulatorer? Studera speciellt effekten av att beräkna histogrammet med 16, 64 respektive 256 nivåer för en bild som histogramutjämnats med baserat på 256 ackumulatorer. I vilka avseenden överensstämmer och skiljer sig resultaten från de förväntade. Förklara! 5 Normaliseringen av histogrammet görs lättast genom att dividera detta med Matlabuttrycket prod(size(nallo)), vilket returnerar produkten av elementen i vektorn size(nallo), d.v.s. antalet bildelement. Det är bäst att normalisera efter anropet av cumsum. Varför?

12 2D1421 Bildbehandling och Datorseende VT 2006 Hur är resultatet jämfört med de tidigare använda transformationsfunktionerna. Hur blir resultaten för olika bildtyper? Vad händer om du applicerar din histeq-funktion på den snarliga bilden nallo256what? Om din rutin inte ger ett snarlikt resultat för denna bild bör du se till att så blir fallet. Vad händer om du histogramutjämnar bilden phonecalc256? Försök tänka ut vilka effekter operationen kan få innan du provar experimentellt. Förklara! Kan du utnyttja flyttalsvärdena i nallo256float på ett positivt sätt jämfört med heltalsvärdena i nallo256? Laboration 1 i 2D1421 Bildbehandling och datorseende 2006............................................................................... Studentens personnummer och namn (ifylles av studenten)............................................................................... Godkänd den Kursledare/kursassistent