Median filter

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 13. marts 2013; checks kræver 22 redigeringer .

Medianfilteret er en type digitalt filter , der i vid udstrækning anvendes i digital signal- og billedbehandling for at reducere støj . Medianfilteret er et ikke- lineært FIR-filter .

Eksempelværdier inde i filtervinduet er sorteret i stigende (faldende) rækkefølge; og værdien i midten af ​​den ordnede liste går til outputtet af filteret. I tilfælde af et lige antal samples i vinduet er outputværdien af ​​filteret lig med gennemsnittet af de to samples i midten af ​​den ordnede liste. Vinduet bevæger sig langs det filtrerede signal, og beregningerne gentages.

Medianfiltrering er en effektiv procedure til behandling af signaler påvirket af impulsstøj.

Eksempler

Eksempel 1

Nedenfor er et eksempel på anvendelse af et medianfilter for et endimensionelt signal med et tre-sample-vindue til input-arrayet x (kunstigt indførte duplikerede værdier er vist med fed skrift ):

x = [2 80 6 3]

og endelig:

y = [2 6 6 3] - median filteroutput

Eksempel 2

Medianfilteret fra inputsignalet skaber et medianbillede af signalet . Indgangssignalet føres til medianfilteret . I medianfilteret vælges først de værdier , der falder ind i filtervinduet, når vinduet er ved punktet . Dernæst sorteres vinduesværdierne efter værdisammenligningsfunktionen, og der bygges et ordnet sæt , hvorefter medianværdien ( median ) vælges og skrives til .

Således er medianfilteret en sekvens af tre handlinger:

  1. Valg af værdier, der falder ind i filtervinduet .
  2. Sortering af vinduesværdier .
  3. Udvælgelse fra medianværdien og skrivning til mediansignalbilledet på punktet med koordinat ,   .

Disse trin gentages for hvert punkt i indgangssignalet.

2D Median Filter ( pseudokode )

Den primitive 2D Median filteralgoritme ser nogenlunde sådan ud:

alloker outputPixelValue[billedbredde][billedhøjde] edgex := (vinduesbredde / 2) afrundet nedad kantet := (vindueshøjde / 2) afrundet nedad for x fra edgex til billedbredde - edgex for y fra edgey til billedhøjde - edgey alloker farveArray[vinduesbredde][vindueshøjde] fx fra 0 til vinduesbredde fy fra 0 til vindueshøjde colorArray[fx][fy] := inputPixelValue[x + fx - edgex][y + fy - edgey] sorter alle poster i colorArray[][] outputPixelValue[x][y] := colorArray[vinduesbredde / 2][vindueshøjde / 2]

Funktioner af denne algoritme:

Se også

Links