Filtru mediu - Median filter

Exemplu de 3 filtre mediane cu raze variabile aplicate aceleiași fotografii zgomotoase.

Filtrul median este un non-linear filtrarea digitală tehnică, adesea utilizat pentru a elimina zgomotul dintr - o imagine sau un semnal. O astfel de reducere a zgomotului este o etapă tipică de pre-procesare pentru a îmbunătăți rezultatele procesării ulterioare (de exemplu, detectarea muchiilor pe o imagine). Filtrarea mediană este foarte utilizată în prelucrarea digitală a imaginilor deoarece, în anumite condiții, păstrează muchiile în timp ce elimină zgomotul (dar vezi discuția de mai jos), având și aplicații în procesarea semnalului .

Descrierea algoritmului

Ideea principală a filtrului median este de a rula prin intrarea semnalului cu intrare, înlocuind fiecare intrare cu mediana intrărilor vecine. Modelul vecinilor se numește „fereastră”, care alunecă, intrare cu intrare, pe întregul semnal. Pentru semnalele unidimensionale, fereastra cea mai evidentă este doar primele intrări precedente și următoare, în timp ce pentru datele bidimensionale (sau cu dimensiuni superioare) fereastra trebuie să includă toate intrările într-o rază dată sau într-o regiune elipsoidală (adică filtrul median) nu este un filtru separabil ).

Exemplu unidimensional lucrat

Pentru a demonstra, folosind o dimensiune a ferestrei de trei cu o intrare imediat precedentă și următoare fiecărei intrări, un filtru median va fi aplicat următorului semnal unidimensional simplu:

x = (2, 3, 80, 6, 2, 3).

Deci, semnalul de ieșire filtrat median y va fi:

y 1 = med (2, 3, 80) = 3, (deja 2, 3 și 80 sunt în ordine crescătoare, deci nu este nevoie să le aranjați)
y 2 = med (3, 80, 6) = med (3, 6, 80) = 6, (3, 80 și 6 sunt rearanjate pentru a găsi mediana)
y 3 = med (80, 6, 2) = med (2, 6, 80) = 6,
y 4 = med (6, 2, 3) = med (2, 3, 6) = 3,

adică y = (3, 6, 6, 3).

Probleme de graniță

În exemplul de mai sus, deoarece nu există nicio intrare care precede prima valoare, prima valoare se repetă, ca și în cazul ultimei valori, pentru a obține suficiente intrări pentru a umple fereastra. Acesta este un mod de a gestiona intrările de ferestre lipsă la limitele semnalului, dar există și alte scheme care au proprietăți diferite care ar putea fi preferate în circumstanțe particulare:

  • Evitați procesarea limitelor, cu sau fără decuparea semnalului sau a limitei imaginii după aceea,
  • Preluarea intrărilor din alte locuri din semnal. De exemplu, cu imagini, pot fi selectate intrări din limita orizontală sau verticală îndepărtată,
  • Micșorarea ferestrei lângă limite, astfel încât fiecare fereastră să fie plină.

Pseudo cod filtru median bidimensional

Codul pentru un algoritm simplu de filtrare mediană bidimensională ar putea arăta astfel:

1. allocate outputPixelValue[image width][image height]
2. allocate window[window width × window height]
3. edgex := (window width / 2) rounded down
4. edgey := (window height / 2) rounded down
    for x from edgex to image width - edgex do
    for y from edgey to image height - edgey do
        i = 0
        for fx from 0 to window width do
            for fy from 0 to window height do
                window[i] := inputPixelValue[x + fx - edgex][y + fy - edgey]
                i := i + 1
        sort entries in window[]
        outputPixelValue[x][y] := window[window width * window height / 2]

Acest algoritm:

  • Procesează un singur canal de culoare,
  • Adoptă abordarea „neprocesarea limitelor” (a se vedea mai sus discuția despre problemele limită).
Utilizarea unui filtru median pentru a îmbunătăți o imagine grav deteriorată de pixeli defecți

Probleme de implementare a algoritmului

De obicei, de cele mai multe ori efortul de calcul și timpul sunt cheltuiți pentru calcularea medianei fiecărei ferestre. Deoarece filtrul trebuie să proceseze fiecare intrare în semnal, pentru semnale mari precum imaginile, eficiența acestui calcul median este un factor critic în determinarea cât de repede poate rula algoritmul. Implementarea naivă descrisă mai sus sortează fiecare intrare din fereastră pentru a găsi mediana; totuși, deoarece este necesară doar valoarea de mijloc dintr-o listă de numere, algoritmii de selecție pot fi mult mai eficienți. În plus, unele tipuri de semnale (foarte des în cazul imaginilor) folosesc reprezentări de număr întreg: în aceste cazuri, medianele histogramei pot fi mult mai eficiente, deoarece este simplu să actualizați histograma de la fereastră la fereastră și să găsiți mediana unei histograme. nu este deosebit de oneros.

Proprietăți de conservare a marginilor

Filtrarea mediană este un fel de tehnică de netezire, la fel ca filtrarea liniară Gaussiană . Toate tehnicile de netezire sunt eficiente pentru eliminarea zgomotului în patch-uri netede sau regiuni netede ale unui semnal, dar afectează negativ marginile. Adesea, totuși, în același timp cu reducerea zgomotului într-un semnal, este important să se păstreze marginile. Marginile au o importanță critică pentru aspectul vizual al imaginilor, de exemplu. Pentru niveluri mici până la moderate de zgomot gaussian, filtrul median este în mod demonstrabil mai bun decât neclaritatea gaussiană la eliminarea zgomotului, păstrând în același timp marginile pentru o anumită dimensiune fixă ​​a ferestrei. Cu toate acestea, performanțele sale nu sunt mult mai bune decât neclaritatea Gaussiană pentru niveluri ridicate de zgomot, în timp ce, pentru zgomotul petalat și zgomotul de sare și piper (zgomot impulsiv), este deosebit de eficient. Din această cauză, filtrarea mediană este foarte utilizată în procesarea digitală a imaginilor .

Vezi si

Referințe

  1. ^ Huang, Thomas S .; Yang, George J .; Tang, Gregory Y. (februarie 1979). „Un algoritm rapid de filtrare mediană bidimensională” (PDF) . Tranzacții IEEE privind acustica, vorbirea și procesarea semnalului . 27 (1): 13-18. doi : 10.1109 / TASSP.1979.1163188 .
  2. ^ Arias-Castro, Ery; Donoho, David L. (iunie 2009). "Filtrarea mediană păstrează cu adevărat marginile mai bine decât filtrarea liniară?" . Analele Statisticii . 37 (3): 1172-2009. arXiv : math / 0612422 . Cod Bib : 2006math ..... 12422A . doi : 10.1214 / 08-AOS604 . MR  2509071 . Zbl  1160.62086 .
  3. ^ Arce, Gonzalo R. (2005). Prelucrarea neliniară a semnalului: o abordare statistică . New Jersey, SUA: Wiley. ISBN 0-471-67624-1.

linkuri externe