Mediaanisuodatin

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 13. maaliskuuta 2013 tarkistetusta versiosta . tarkastukset vaativat 22 muokkausta .

Mediaanisuodatin on eräänlainen digitaalinen suodatin , jota käytetään laajalti digitaalisessa signaalin ja kuvan käsittelyssä kohinan vähentämiseksi . Mediaanisuodatin on epälineaarinen FIR-suodatin .

Suodatinikkunan näytearvot lajitellaan nousevaan (laskevaan) järjestykseen; ja järjestetyn listan keskellä oleva arvo menee suodattimen ulostuloon. Jos ikkunassa on parillinen määrä näytteitä, suodattimen lähtöarvo on sama kuin järjestetyn listan keskellä olevien kahden näytteen keskiarvo. Ikkuna liikkuu suodatettua signaalia pitkin ja laskelmat toistetaan.

Mediaanisuodatus on tehokas menetelmä impulssikohinaan vaikuttavien signaalien käsittelemiseksi.

Esimerkkejä

Esimerkki 1

Alla on esimerkki mediaanisuodattimen käyttämisestä yksiulotteiselle signaalille, jossa on kolminäyteikkuna, tulotaulukkoon x (keinotekoisesti lisätyt päällekkäiset arvot näkyvät lihavoituna ):

x = [2 80 6 3]

ja lopuksi:

y = [2 6 6 3] - mediaanisuodattimen lähtö

Esimerkki 2

Mediaanisuodatin tulosignaalista luo mediaanikuvan signaalista . Tulosignaali syötetään mediaanisuodattimeen . Mediaanisuodattimessa valitaan ensin arvot , jotka putoavat suodatinikkunaan, kun ikkuna on kohdassa . Seuraavaksi ikkunan arvot lajitellaan arvojen vertailutoiminnon mukaan ja muodostetaan järjestetty joukko , jonka jälkeen valitaan mediaaniarvo ( mediaani ) ja kirjoitetaan siihen .

Mediaanisuodatin on siis kolmen toiminnon sarja:

  1. Suodatinikkunaan osuvien arvojen valinta .
  2. Ikkunan arvojen lajittelu .
  3. Valinta mediaaniarvosta ja kirjoittaminen mediaanisignaalikuvaan pisteessä, jossa on koordinaatti ,   .

Nämä vaiheet toistetaan jokaiselle tulosignaalin pisteelle.

2D-mediaanisuodatin ( pseudokoodi )

Primitiivinen 2D-mediaanisuodatinalgoritmi näyttää suunnilleen tältä:

varaa tulosPixelValue[kuvan leveys][kuvan korkeus] edgex := (ikkunan leveys / 2) pyöristettynä alaspäin edgey := (ikkunan korkeus / 2) pyöristetty alaspäin x:lle reunax:sta kuvan leveyteen - reunax y:lle reunasta kuvan korkeuteen - reuna varaa väriMatriisi[ikkunan leveys][ikkunan korkeus] fx 0:sta ikkunan leveyteen fy 0:sta ikkunan korkeuteen colorArray[fx][fy] := inputPixelValue[x + fx - edgex][y + fy - edgey] lajittele kaikki merkinnät colorArrayssa[][] outputPixelValue[x][y] := väritaulukko[ikkunan leveys / 2][ikkunan korkeus / 2]

Tämän algoritmin ominaisuudet:

Katso myös

Linkit