Filtrul median este un tip de filtru digital utilizat pe scară largă în procesarea semnalului digital și a imaginii pentru a reduce zgomotul . Filtrul median este un filtru FIR neliniar .
Valorile eșantionului din interiorul ferestrei de filtru sunt sortate în ordine crescătoare (descrescătoare); iar valoarea din mijlocul listei ordonate merge la ieșirea filtrului. În cazul unui număr par de mostre în fereastră, valoarea de ieșire a filtrului este egală cu media celor două mostre din mijlocul listei ordonate. Fereastra se deplasează de-a lungul semnalului filtrat și calculele se repetă.
Filtrarea mediană este o procedură eficientă de procesare a semnalelor afectate de zgomotul de impuls.
Mai jos este un exemplu de aplicare a unui filtru median pentru un semnal unidimensional cu o fereastră cu trei eșantioane la matricea de intrare x (valorile duplicate introduse artificial sunt afișate cu aldine ):
x = [2 80 6 3]
și, în sfârșit:
y = [2 6 6 3] - ieșirea mediană a filtrului
Filtrul median de la semnalul de intrare creează o imagine mediană a semnalului . Semnalul de intrare este transmis la filtrul median . În filtrul median, mai întâi , sunt selectate
valorile care intră în fereastra filtrului atunci când fereastra este în punctul . Apoi, valorile ferestrei sunt sortate după funcția de comparare a valorii și este construit un set ordonat , apoi valoarea mediană ( mediana ) este selectată și scrisă în .
Astfel, filtrul median este o secvență de trei acțiuni:
Acești pași se repetă pentru fiecare punct al semnalului de intrare.
Algoritmul primitiv de filtru median 2D arată cam așa:
alocați outputPixelValue[lățimea imaginii][înălțimea imaginii] edgex := (latimea ferestrei / 2) rotunjit in jos edgey := (înălțimea ferestrei / 2) rotunjit în jos pentru x de la edgex la lățimea imaginii - edgex pentru y de la margine la înălțimea imaginii - edgey alocați colorArray[lățimea ferestrei][înălțimea ferestrei] fx de la 0 la lățimea ferestrei fy de la 0 la înălțimea ferestrei colorArray[fx][fy] := inputPixelValue[x + fx - edgex][y + fy - edgey] sortați toate intrările în colorArray[][] outputPixelValue[x][y] := colorArray[lățimea ferestrei / 2][înălțimea ferestrei / 2]Caracteristicile acestui algoritm: