Bildbehandling, del Andreas Fhager Kapitelhänvisningar till: Image Processing, Analysis and Machine Vision, 3rd ed. by Sonka, Hlavac and Boyle
Representation av en bild Så här kan vi plotta en bild tex med hjälp av kommandot surf i MATLAB Läs: Kap.2,.3
Representation av en bild Så här kan vi också se data som representerar en bild Läs: Kap.2,.3
Representation av en bild Vår erfarenhet av verkligheten gör att vi helst ser bilden på detta sätt: För oss är det enkelt att tolka denna bild. En dator som ska användas för bildbehandling ska dock tolka bilden utifrån siffrorna på föregående sida, vilket kan innebära stora svårigheter. Läs: Kap.2,.3
Representation av en färgbild Eller på detta sätt i färg:
Digitalisering av bilden En digital bild är uppbyggd av ett antal pixlar. 256x92 28x92 64x48 32x24 Läs: Kap 2.2
Kvantisering av bildens gråskala Även bildens färgskala, (gråskala) är indelad i ett antal nivåer. Ögat kan uppfatta cirka 64 olika nivåer samtidigt. 64 nivåer 6 nivåer 4 nivåer 2 nivåer Läs: Kap 2.2
Testa själv... Via länken http://www.elmagn.chalmers.se/bt2/applets/grayscaleresolution/index.htm kan man nå ett litet program för att testa hur olika antal gråskalenivåer påverkar olika bilder. Instruktion: Starta programmet och välj en bild ur menyn. Välj med reglaget hur många bitar, X, som ska användas för att beskriva gråskalan. Antalet gråskalenivåer blir således 2 X. Undersök hur antalet gråskalenivåer påverkar bilden.
Varför bildbehandling? Original Kantdetektering Ett exempel på vad vi kan göra med bildbehandling: Kantdetektering trots att bilden är väldigt brusig
Varför bildbehandling? Bildbehandlingen kan användas för att framhäva detaljer i bilden Före Efter
Histogram Ett användbart sätt att karakterisera en bild är genom dess histogram. Ett histogram byggs genom att räkna hur många pixlar som finns i bilden av varje nivå (nyans) i gråskalan. Sedan ritar man ett histogram med de olika gråskalenivåerna på x-axeln och staplar som visar antalet pixlar för varje nivå. Läs: Kap 2.3.2, 5..2
Histogramutjämning H(p) p För att ögat enklare ska uppfatta detaljer i bilden vill man använda hela gråskalan, från helt vitt till helt svart. Om det inte bilden använder hela skalan (som i exemplet ovan) kan man försöka ändra gråskalan så att det blir så. G(p) Equalization p Läs: Kap 2.3.2, 5..2
Histogramutjämning I detta exempel ser man en tydlig förbättring av bilden och ökad möjlighet att urskilja detaljer genom att använda sig av tekniken för histogramutjämning. Läs: Kap 2.3.2, 5..2
Histogram Överföringsfunktion som används för utjämningen Här är ytterligare ett exempel på då vi har jämnat ut histogrammet genom att mappa om gråskalan p ( r) dr IN UT Läs: Kap 2.3.2, 5..2
Histogramutjämning Histogrammet före och efter utjämning Läs: Kap 2.3.2, 5..2
Fungerar histogramutjämning alltid? Nej, det är inte alltid säkert... I ett fall där den intressanta informationen ligger inom ett relativt smalt intervall av gråskalan kan det fungera bra Om den intressanta informationen i bilden är utspridd inom hela gråskalan fungerar förmodligen inte histogramutjämningen så bra. Läs: Kap 2.3.2, 5..2
Testa själv... Via länken http://www.elmagn.chalmers.se/bt2/applets/histograms/index.htm kan man nå ett litet program för att testa olika ommappningar av gråskalan, tex histogramutjämning. Instruktion: Starta programmet och välj en bild ur menyn. Välj sen vilken typ av ommappning av gråskalan som ska göras, tex linjär, utjämning, etc. Studera mappningsfunktionen som plottas, bilderna och histogrammen för att skapa en intuitiv förståelse av hur histogrammmappningen går till. Att lära: Vad händer med mörka resp ljusa nyanser i originalbilden vid olika typer av mappningsfunktioner.
Delta-funktion Delta funktionen har följande definition: δ ( x, y) dxdy = Den kan användas för att plocka ut värdet i punkten (0,0) f ( x, y) δ ( x, y) dxdy = f (0,0) eller i en allmän punkt (λ,µ) f ( x, y) δ ( x λ, y µ ) dxdy = f ( λ, µ ) Läs: Kap 3..2
Delta-funktion för att sampla bilden f ( λ, µ ) = f ( x, y) δ ( x λ, y µ ) dxdy Diskret variant f s = f M N ( x, y) δ ( x j= k= jδx, y kδy) Läs: Kap 3..2
Aliasing Originalbild Samplingsgrid Resultatbild
Shannons samplings teorem Åtminstone 2 samples per frekvens som ska lösas upp
Hubbleteleskopet före och efter korrigering av optiken Bildkälla: Wikipedia.org
Point Spread Function (PSF) Point Spread Function beskriver hur verkligheten förändras i en avbildningsprocess. Bildkälla: Wikipedia.org
Point Spread Funcion (PSF) Kameran som exempel Antag att vi vill ta ett fotografi med en kamera. Låt oss anta att bilden bara består av en liten prick. Då kan vi beskriva den med en delta-fuktion. Verkligheten: Delta-funktion Onnoggrannhet i kameralins, skärpeinställning, pixelstorlek i bildsensorn, etc. gör att bilden i kameran blir suddig Bild i kameran: h(x), Point Spread Function
PSF i Hubbleteleskopet Så här såg PSF ut i Hubbleteleskopet före korrigeringen av optiken. Dvs så här såg bilden ut då man försökte fotografera en enskild stjärna. Bildkälla: Wikipedia.org
Faltning beskriver processen Bild in f(x,y) Bild ut g(x,y) Filter h(x,y) Läs: Kap 3..2
Faltningsintegral Faltningsintegralen används för att beskriva effekten på bilden av olika system eller operationer g( x, y) = L { f ( x, y) } = f ( a, b) L { δ ( x a, y b) } dadb = f ( a, b) h( x a, y b) dadb = f * h( x, y) I denna beskrivning kan vi göra följande analogi med kameraexemplet: g(x,y) kamerabilden f(a,b) är vekligheten h(x-a,y-b) är PSF
Linjär operator i 2D Konstant Bild { af bf } L{ } L{ } L + = + a f b f 2 2 Operator Konstant Bilder och bildbehandlingsprocedurer kan modelleras som superposition av linjära operationer. Läs: Kap 3.2.
Exempel diskret faltning * = In Ut Exempel från: http://www.songho.ca/dsp/convolution/convolution2d_example.html D Demo: http://spanias.faculty.asu.edu/convolution_demo.htm
Medelvärdesbildning för brusreducering Använd tex följande matris för faltningen h = 9 Läs: Kap 5.3.
Testa själv... Via länken http://www.elmagn.chalmers.se/bt2/applets/convolution/index.htm kan man nå ett litet program för att testa beräkning av olika faltningsintegraler. Instruktion: Starta programmet och välj en bild ur menyn. Definiera sen en matris (filter) som ska användas vid faltningsberäkningen. Studera hur olika storlekar och olika värde på matrisen påverkar bilden. Addera sen brus och gör samma sak. Kan du åstadkomma er reducering av bruset i bilden? Hur påverkas bilden?
Medianfilter Medianfiltret är särskilt effektivt för att ta bort salt & peppar brus. Det beskrivs ej med en faltningsintegral och är således ej heller en linjär operation. Salt & peppar brus = svart-vitt brus. Läs: Kap 5.3.
Median filter Beräkna och använd medianen hos intensitetsnivån i ett område runt pixeln. nackdel är att tunna linjer och hörn förstörs Motdrag om man vill bevara horisontella/vertikala linjer: Läs: Kap 5.3.
Exempel - medianfilter För att utföra medianfiltrering behöver vi för varje position i den filtrerade bilden sortera färgskalan inom filtreringsområdet (i detta exempel 3x3) och plocka ut medianvärdet. Läs: Kap 5.3.
Testa själv... Via länken http://www.elmagn.chalmers.se/bt2/applets/rank/index.htm kan man nå ett litet program för att testa bla filtrering med hjälp av ett medianfilter. Instruktion: Starta programmet och välj en bild ur menyn. Välj sen medianfilter och Salt&Peppar brus. Använd olika stora filtermatriser och olika nivå på bruset. Hur effektiv är filtreringen vid olika stora matriser? Vad händer med bilden? Testa filtret på Gaussiskt brus också. Hur fungerar det?
Kanter I bildbehandlingen är en vanlig operation att hitta kanter. Det finns olika typer av kanter, se bilderna. Läs: Kap 5.3.2
Detektion av kanter Kanter kan detekteras med hjälp av första- och/ eller andraderivator. Läs: Kap 5.3.3
Kantdetektering genom approximation av första derivata Prewitt Sobel 0 0 0 http://www.elmagn.chalmers.se/bt2/applets/edge/index.htm 0 0 0 0 2 0 2 0 2 0 0 0 2 Läs: Kap 5.3.2 Med hjälp av olika matriser föröker man beräkna derivatan i bilden. Nedanstående matriser används för beräkning med faltningsintegralen.
Kantdetektering genom approximation av första derivatan Via nedanstående länk kommer vi till ett program där vi kan undersöka och testa olika matriser för kantdetektering. I exemplet ovan har vi använt Prewitt matrisen. http://www.elmagn.chalmers.se/bt2/applets/edge/index.htm Läs: Kap 5.3.2
Kantdetektering genom approximation av andra derivatan Laplace operatorn kan beräknas med följande matris i faltningeberäkningen. Resultatet finns i bilden ovan. h = 0 0 4 0 0 http://www.elmagn.chalmers.se/bt2/applets/edge/index.htm Läs: Kap 5.3.2
Canny kantdetektering Mer avancerad algoritm som är optimal för bilder med skarpa kanter korrumperade av vitt brus. http://www.elmagn.chalmers.se/bt2/applets/edge/index.htm Läs: Kap 5.3.5
Testa själv... Via länken http://www.elmagn.chalmers.se/bt2/applets/edge/index.htm kan man nå ett litet program för att testa olika metoder för kantdetektering. Instruktion: Starta programmet och välj en bild ur menyn. Välj sedan vilken (filter) matris du vill använda. Studera vilka kanter som framträder och hur resultatet för de olika matriserna ser ut. Testa med att lägga på Gaussiskkt brus. Prova sen med Canny kantdetekteringsmetoderna. Vi har inte gått igenom teorin för denna metod, men studera hur den beter sig jämfört med filtrering med Prewitt, Sobel och Laplace matriserna.