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.
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
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:
Dessa steg upprepas för varje punkt i insignalen.
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: