IN2070 v?r 2022 - L?sningshint 5

Oppgave 1 - 1D-konvolusjon av to filtre

g = h * f = [1 2 1] * [1 3 4 3 4] = [1 5 11 14 14 11 4]

Oppgave 2 - 2D-konvolusjon

Ut-bildet g = h * f blir:

2 7 10 9 4 1
2 9 15 17 10 4
2 16 28 33 19 7
6 15 30 35 26 11
6 13 25 27 20 8
6 6 12 11 11 5

Oppgave 3 - Middelverdifiltrering

La oss betegne bildet som f og 3x3-middelverdifilteret som h.

  1. Siden konvolusjon er assosiativt er h*(h*f) = (h*h)*f. Alts? vil filteret h*h gi samme resultat ved én konvolusjon, der h*h er 1/81 ganger:
    1 2 3 2 1
    2 4 6 4 2
    3 6 9 6 3
    2 4 6 4 2
    1 2 3 2 1
    Ja, filteret er separabelt. Ved bruk av at konvolusjon er kommutativt og assosiativt, s? finner vi at filteret kan separeres i:

     
  2. En kombinasjon av separable filtre trenger ikke ? v?re separabelt. Eksempelvis er summen av de to separable konvolusjonsfiltrene:
    0 0 0
    1 1 1
    0 0 0
    og
    0 1 0
    0 1 0
    0 1 0
    ikke separabelt.
    Konvolusjon av separable filtre gir derimot alltid et nytt filter som er separabelt. Dette kan vi skj?nne ved ? innse at fremgangsm?ten i deloppgaven over er generelt gyldig for f? finne to 1D-filtre som konvolvert gir konvolusjonen av to separable filtre.

Oppgave 4 - Bilderandproblemet

Fordelen med speilende indeksering er at det utvidede inn-bildet har en glatt overgang mellom det opprinnelige inn-bildet og den utvidede delen - faktisk er alle f?rste pikselverdier i den utvidede delen akkurat de samme som pikselverdien til sin n?rmeste nabo innenfor det opprinnelige inn-bildet. I tillegg vil et naboskap rundt et piksel langs den opprinnelige bilderanden inneholde samme pikselverdier p? begge sider av randen - utvidelsen har alts? ikke innf?rt nye lokale pikselverdier eller en helt annen fordeling av lokale pikselverdier (sistnevnte vil bl.a. v?re tilfelle for utvidelse ved bruk av n?rmeste pikselverdi).

Ulempen med sirkul?r indeksering er at den kan innf?re veldig skarpe intensitetskanter i overgangen mellom det egentlige inn-bildet og den utvidede delen. Detter skjer dersom h?yre og venstre eller ?vre og nedre kant i den opprinnelige bildet er veldig ulike. Dersom det ikke skal v?re noen overgang m? pikselverdiene langs h?yre kant v?re identiske som pikselverdiene langs venstre kant, og tilsvarende langs ?vre og nedre kant.

PS: Senere i emnet vil vi se at sirkul?r indeksering blir implisitt brukt n?r vi bruker Fourier-transformen til filtrering. Siden dette ofte ikke er ?nskelig behandling av bilderandproblemet, vil vi da se at vi p? bekostning av litt ekstraarbeidet kan f? samme ut-bilde ved bruk av Fourier-transformen som uten, uavhengig av hvilken behandling av bilderandproblemet vi velger ? bruke.

Oppgave 5 - Medianfiltrering

  1. Resultatet av 3x3-medianfiltreringen:
    0 0 0 0 0 0 0 0
    0 1 0 1 0 1 0 0
    0 1 0 0 0 0 0 0
    0 1 0 0 0 1 1 0
    0 0 0 0 0 0 0 0

    Bemerkning: Dette resultatet er rett og slett d?rlig.

  2. Resultatet av 1x3-medianfiltreringen:
    0 1 1 1 1 1 1 0
    0 0 0 0 0 0 0 0
    0 1 0 0 0 0 0 0
    0 1 0 0 0 0 0 0
    0 0 0 1 1 1 1 1

    Bemerkning: Med et horisontalt naboskap behandles horisontale linjer godt, men vertikale linjer behandles d?rlig.

  3. Resultatet av 3x1-medianfiltreringen:
    0 0 1 0 0 0 1 0
    1 0 1 0 0 0 1 0
    1 0 1 0 0 0 1 0
    1 0 1 0 0 0 1 0
    1 0 0 0 0 0 1 0

    Bemerkning: Med et vertikalt naboskap behandles vertikale linjer godt, men horisontale linjer behandles d?rlig.

  4. Ettersom verken 3x1-medianfiltreringen av det 1x3-medianfiltrerte bildet i l?sningen til deloppgave 2 eller 1x3-medianfiltreringen av det 3x1-medianfiltrerte bildet i l?sningen til deloppgave 3 gir det 3x3-medianfiltrerte bildet i l?sningen til deloppgave 1, s? ser vi at 3x3-medianfilteret ikke kan separeres i 1x3-medianfilteret og 3x1-medianfilteret. Generelt er ikke medianfiltre separable, men man kan likevel lage hurtige implementasjoner av medianfiltrering, se side 48 i forelesning 7.

Oppgave 6 - Et smartere median-basert filter?

Det er enkelt ? lage seg bin?re test-bilder av et hj?rne, en tynn linje og kombinasjonen av de to:

  • Hj?rne:
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 1 1 1 1
    0 0 0 0 1 1 1 1
    0 0 0 0 1 1 1 1
    0 0 0 0 1 1 1 1

     
  • Tynn linje:
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    1 1 1 1 1 1 1 1
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0

     
  • Kombinasjonen av et hj?rne og en tynn linje:
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 1 1 1 1
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0

Dersom vi utf?rer den foresl?tte filtreringen p? hvert av disse test-bildene ser vi at ut-bildet blir identisk som inn-bildet (dersom vi ser bort fra bilderandproblemet). Vi ser dermed at det foresl?tte 5x5-filteret bevarer b?de hj?rner og tynne linjer, og til og med kombinasjonen av disse.

PS: Resultatet og konklusjonen hadde v?rt identisk dersom vi hadde brukt spissere eller flatere hj?rner, eller om vi hadde brukt roterte hj?rner eller linjer.

Implementasjonsbemerkning: Det foresl?tte filteret best?r tilsynelatende av mange operasjoner, men siden det er enkelt og raskt ? beregne minimumene og maksimumene og medianen bare beregnes av 5 verdier, s? vil filtreringen b?de v?re enkel ? implementere og hurtig ? eksekvere.

Publisert 2. mars 2022 18:43 - Sist endret 2. mars 2022 18:43