Střední filtr

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 13. března 2013; kontroly vyžadují 22 úprav .

Mediánový filtr je typ digitálního filtru široce používaný v digitálním zpracování signálu a obrazu ke snížení šumu . Mediánový filtr je nelineární FIR filtr .

Ukázkové hodnoty uvnitř okna filtru jsou seřazeny ve vzestupném (sestupném) pořadí; a hodnota uprostřed seřazeného seznamu přejde na výstup filtru. V případě sudého počtu vzorků v okně je výstupní hodnota filtru rovna průměru dvou vzorků uprostřed uspořádaného seznamu. Okno se pohybuje podél filtrovaného signálu a výpočty se opakují.

Mediánové filtrování je účinný postup pro zpracování signálů ovlivněných impulsním šumem.

Příklady

Příklad 1

Níže je uveden příklad použití mediánového filtru pro jednorozměrný signál s třívzorkovým oknem na vstupní pole x (uměle zavedené duplicitní hodnoty jsou zobrazeny tučně ):

x = [2 80 6 3]

a nakonec:

y = [2 6 6 3] - střední výstup filtru

Příklad 2

Mediánový filtr ze vstupního signálu vytváří střední obraz signálu . Vstupní signál je přiváděn do mediánového filtru . V mediánovém filtru se nejprve vyberou hodnoty , které spadají do okna filtru, když je okno v bodě . Dále se hodnoty okna seřadí podle funkce porovnání hodnot a sestaví se uspořádaná sada a poté se vybere střední hodnota ( medián ) a zapíše se do .

Mediánový filtr je tedy sledem tří akcí:

  1. Výběr hodnot, které spadají do okna filtru .
  2. Hodnoty okna řazení .
  3. Výběr z hodnoty mediánu a jeho zápis do obrazu mediánu signálu v bodě se souřadnicí ,   .

Tyto kroky se opakují pro každý bod vstupního signálu.

2D střední filtr ( pseudokód )

Primitivní algoritmus 2D Medián filtru vypadá asi takto:

alokovat výstupPixelValue[šířka obrázku][výška obrázku] edgex := (šířka okna / 2) zaokrouhleno dolů edgey := (výška okna / 2) zaokrouhleno dolů pro x z edgex na šířku obrázku - edgex pro y od edgey do výšky obrázku - edgey alokovat colorArray[šířka okna][výška okna] fx od 0 do šířky okna fy od 0 do výšky okna colorArray[fx][fy] := inputPixelValue[x + fx - edgex][y + fy - edgey] seřadit všechny položky v colorArray[][] outputPixelValue[x][y] := colorArray[šířka okna / 2][výška okna / 2]

Vlastnosti tohoto algoritmu:

Viz také

Odkazy