INF2310 vår 2011 - UKEOPPGAVER 5
Disse oppgavene omhandler konvolusjon, enkel lineær filtrering, og litt om median-filtrering.
Merk at:
Når vi konvolverer to filterkjerner, vil vi at resultatet skal bli større enn hver av de to filterkjernene, fordi vi gjerne ønsker å bruke denne teknikken til å lage en effektiv implementasjon av filtre.
Når vi konvolverer et bilde med et filter, vil vi vanligvis at ut-bildet skal ha samme størrelse som inn-bildet.
Oppgave 1 - 1D-konvolusjon av to filtre
Vi har gitt et 1D-filter h=[1 2 1]
og et annet filter b=[1 3 4 3 4]
Utfør konvolusjonen (manuelt) og finn resultatet. Beregn konvolusjonen for alle mulige pikselposisjonen. Der hvor vi bare har delvis overlapp, utvider vi med 0-er.
Oppgave 2 - 2D-konvolusjon av to filtre
Vi skal konvolvere et 2D-filter h:
1 1
1 1
med et annet 2D-filter b:
4 1
2 3
Utfør konvolusjonen (manuelt) og finn resultatet. Beregn konvolusjonen for alle mulige pikselposisjoner. Der hvor vi bare har delvis overlapp, utvider vi med 0-er.
Oppgave 3 - Middelverdi
Et bilde glattes med et 3 x 3 middelverdi filter.
Det inneholder fremdeles mye støy, og resultatet filtreres en gang til med samme filter.
Hvilket filter vil gi samme resultat i ett steg?
Er dette filteret separabelt?
Gir en vilkårlig kombinasjon av separable filtre et nytt separabelt filter?
Oppgave 4 - Median-filtrering
Gitt et 10 x 7 binært bilde av bokstavene ``iq''
1 1 1 1 1 1 1 1 1 1
1 0 1 0 0 0 0 0 1 1
1 1 1 0 1 1 1 0 1 1
1 0 1 0 1 1 1 0 1 1
1 0 1 0 1 1 0 0 1 1
1 0 1 1 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
Utfør 3 x 3 median-filtreringer av dette bildet, der følgende masker skal benyttes (et ``0'' i en maske-posisjon betyr her at det tilsvarende piksel ikke skal være med i beregningen av medianen). Se bort fra rand-effekter (dvs. anvend bare filtret dersom hele filtret faller innenfor bildet, og sett 1 i første piksel innenfor kanten av ut-bildet), og vis resultatene av filtreringen.
a)
1 1 1
1 1 1
1 1 1
b)
0 0 0
1 1 1
0 0 0
c)
0 1 0
0 1 0
0 1 0
Vi har sett at lavpassfiltre er separable i den forstand at vi kan bruke en kolonne-vektor til å lavpass-filtrere i en retning, og så bruke en rad-vektor til å lavpass-filtrere resultatet fra den første filtreringen.
Er median-filtret gitt ved masken a) ovenfor separabelt? Begrunn svaret.
Bruk median-filtrene gitt ved b) og c) ovenfor til å illustrere.
Det kreves kun at man viser hvorvidt filteret i a) kan separeres i filtrene b) og c), ikke to generelle filtre.
Oppgave 5 - Et smartere median-filter?
Vi vet at et ordinært kvadratisk median-filter ikke gir "riktig" verdi for hjørnepiksler og piksler på tynne linjer.
Undersøk om 5 x 5 filtret
median(min(A);min(B);C;max(A);max(B))
der A er de 16 pikslene i den ytre "smultringen" i vinduet,
B er de 8 pikslene i "smultringen" innenfor,
og C er senterpikslet,
tar bedre vare på hjørner, tynne linjer og linjestykker som faller innenfor vinduet.