Medianfilter

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 13 mars 2013; kontroller kräver 22 redigeringar .

Medianfiltret är en typ av digitalt filter som ofta används i digital signal- och bildbehandling för att minska brus . Medianfiltret är ett icke- linjärt FIR-filter .

Exempelvärden inuti filterfönstret sorteras i stigande (fallande) ordning; och värdet i mitten av den ordnade listan går till filtrets utgång. I fallet med ett jämnt antal sampel i fönstret är filtrets utdatavärde lika med medelvärdet av de två samplingar i mitten av den ordnade listan. Fönstret rör sig längs den filtrerade signalen och beräkningarna upprepas.

Medianfiltrering är en effektiv procedur för att bearbeta signaler som påverkas av impulsbrus.

Exempel

Exempel 1

Nedan är ett exempel på att applicera ett medianfilter för en endimensionell signal med ett tresamplingsfönster till inmatningsmatrisen x (artificiellt införda dubblerade värden visas i fet stil ):

x = [2 80 6 3]

och slutligen:

y = [2 6 6 3] - medianfilterutgång

Exempel 2

Medianfiltret från insignalen skapar en medianbild av signalen . Insignalen matas till medianfiltret . I medianfiltret väljs först de värden som faller in i filterfönstret när fönstret är vid punkten . Därefter sorteras fönstervärdena efter värdejämförelsefunktionen och en ordnad uppsättning byggs , och sedan väljs medianvärdet ( median ) och skrivs till .

Sålunda är medianfiltret en sekvens av tre åtgärder:

  1. Val av värden som faller in i filterfönstret .
  2. Sortera fönstervärden .
  3. Val från medianvärdet och skriv det till mediansignalbilden vid punkten med koordinat ,   .

Dessa steg upprepas för varje punkt i insignalen.

2D Median Filter ( pseudokod )

Den primitiva 2D Median-filteralgoritmen ser ut ungefär så här:

allokera outputPixelValue[bildbredd][bildhöjd] edgex := (fönsterbredd / 2) avrundad nedåt kantig := (fönsterhöjd / 2) avrundad nedåt för x från edgex till bildbredd - edgex för y från edgey till bildhöjd - edgey allokera colorArray[fönsterbredd][fönsterhöjd] fx från 0 till fönsterbredd fy från 0 till fönsterhöjd colorArray[fx][fy] := inputPixelValue[x + fx - edgex][y + fy - edgey] sortera alla poster i colorArray[][] outputPixelValue[x][y] := colorArray[fönsterbredd / 2][fönsterhöjd / 2]

Funktioner hos denna algoritm:

Se även

Länkar