Contoh tiga filter median dengan berbagai ukuran jari-jari yang diterapkan pada foto berderau
**Filter median** adalah teknik pemfilteran digital nonlinear yang biasa dipakai untuk menghilangkan derau pada citra atau sinyal. Pengurangan derau adalah langkah praolah untuk memperbaiki hasil pada pengolahan selanjutnya (misalnya deteksi pinggiran pada citra). Filter median dipakai luas dalam pengolahan citra digital karena dapat menghilangkan derau sekaligus menjaga pinggiran dalam keadaan tertentu. Selain itu, filter ini juga dipakai dalam pengolahan sinyal digital.

Penjelasan algoritme
--------------------

Cara kerja filter ini adalah menggantikan nilai tiap entri dengan median dari entri-entri tetangga. Pola tetangga-tetangga disebut "jendela" yang bergeser entri demi entri untuk semua sinyal. Untuk sinyal satu dimensi, jendela yang mungkin hanyalah beberapa entri sebelum dan beberapa entri setelahnya. Untuk data dua dimensi atau lebih, jendela harus meliputi semua sumbu dengan jari-jari tertentu.

Contoh satu dimensi
-------------------

Sebagai contoh, dengan jendela ukuran tiga yang berurutan: sebelumnya, dirinya, dan sesudahnya, filter median akan diterapkan untuk sinyal satu dimensi sebagai berikut.

|  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- |
| *x* | 2 | 3 | 80 | 6 | 2 | 3 |
| *y*1 | (2, **3**, 80) |  |  |  |
| *y*2 |  | (3, **6**, 80) |  |  |
| *y*3 |  |  | (2, **6**, 80) |  |
| *y*4 |  |  |  | (2, **3**, 6) |
| *y* |  | 3 | 6 | 6 | 3 |  |

Penanganan pada ujung
---------------------

Pada contoh di atas, karena tiada nilai yang berada di sebelum entri pertama, nilai entri pertama tetap. Begitu juga untuk entri terakhir yang tidak memiliki entri sesudahnya. Ini adalah salah satu cara untuk menangani entri yang kosong pada ujung-ujung sinyal. Namun, ada cara-cara lain yang mungkin lebih dipilih dalam keadaan tertentu:

* tidak mengolah ujung-ujung sinyal dengan atau tanpa pemangkasan ujung-ujung sinyal atau tepi citra setelahnya;
* mengambil entri dari tempat lain, misal dari ujung satunya (di sisi lain); atau
* memperkecil ukuran jendela pada ujung-ujungnya agar jendelanya terisi semua.

Kode semu untuk dua dimensi
---------------------------

Penggunaan filter median untuk memperbaiki citra yang rusak karena piksel cacat
Kode semu untuk filter median dua dimensi dapat berupa sebagai berikut:

```
misalkan *I* adalah larik dua dimensi berukuran *w* dan *h* sebagai nilai awal
misalkan *T* adalah larik dua dimensi berukuran *w* dan *h* sebagai nilai hasil
misalkan *J* adalah larik satu dimensi berukuran *p* × *q* sebagai jendela
*tepiX* ← bulatkanKeBawah(*p* / 2)
*tepiY* ← bulatkanKeBawah(*q* / 2)
**untuk** *x* **dari** *tepiX* **sampai** *w* - *tepiX*,
**untuk** *y* **dari** *tepiY* **sampai** *h* - *tepiY*,
    *i* ← 0
    **untuk** *fx* **dari** 0 **sampai** *p*,
    **untuk** *fy* **dari** 0 **sampai** *q*,
        *J*[*i*] ← *I*[*y* + *fy* - *tepiY*][*x* + *fx* - *tepiX*]
        *i* ← *i* + 1
    urutkan *J*
    T[*y*][*x*] ← *J*[*p* × *q* / 2]
```

Algoritme ini hanya mengolah satu saluran dan menggunakan penanganan pertama, "tidak mengolah ujung-ujung sinyal."

Permasalahan dalam implementasi
-------------------------------

Biasanya, mayoritas perhitungan dan waktu dihabiskan untuk mencari median tiap jendela. Karena filter harus mengolah tiap entri dalam sinyal, untuk sinyal berukuran besar seperti citra, efisiensi perhitungan median menjadi faktor penting dalam menentukan kelajuan algoritme. Implementasi naif yang dijelaskan di atas mengurutkan entri dalam jendela untuk mencari median. Namun, karena hanya nilai tengah yang dibutuhkan, algoritme seleksi bisa lebih efisien. Terlebih lagi, beberapa jenis sinyal (seringnya untuk citra) menggunakan bilangan bulat sehingga median histogram dapat jauh lebih efisien karena lebih mudah memperbarui histogram dari jendela ke jendela dan pencarian median sebuah histogram tidak terlalu memberatkan.

Sifat penjagaan pinggiran
-------------------------

Pemfilteran median termasuk teknik penghalusan seperti pemfilteran Gauss linear. Semua teknik penghalusan efektif dalam menghilangkan derau dalam daerah halus sinyal, tetapi memengaruhi pinggiran. Sering, selain butuh mengurangi derau, pinggiran juga perlu dipertahankan. Pinggiran penting untuk tampilan visual citra, misalnya. Untuk tingkat derau Gauss rendah atau menengah, filter median lebih baik daripada pemburaman Gauss dalam mengurangi derau sekaligus menjaga pinggiran pada jendela berukuran tetap. Namun, kinerjanya tidak lebih baik daripada pemburaman Gauss untuk tingkat derau tinggi. Untuk derau butiran dan derau garam–merica, filter median cukup efektif. Karenanya, filter median dipakai luas dalam pengolahan citra digital.

Lihat pula
----------

* Derau citra
* Median berbobot
* Penghalusan Lulu
* Filter bilateral
* Penghalusan

Referensi
---------

1. ↑  Huang, Thomas S.; Yang, George J.; Tang, Gregory Y. (Februari 1979). "A fast two-dimensional median filtering algorithm" (PDF). *IEEE Transactions on Acoustics, Speech, and Signal Processing*. **27** (1): 13–18. doi:10.1109/TASSP.1979.1163188. Diarsipkan (PDF) dari versi asli tanggal 2022-01-21. Diakses tanggal 2020-10-09.
2. ↑  Arias-Castro, Ery; Donoho, David L. (Juni 2009). "Does median filtering truly preserve edges better than linear filtering?". *Annals of Statistics*. **37** (3): 1172–2009. arXiv:math/0612422 alt=Dapat diakses gratis. Bibcode:2006math.....12422A. doi:10.1214/08-AOS604 alt=Dapat diakses gratis. MR 2509071. Zbl 1160.62086. Diarsipkan dari versi asli tanggal 2020-07-06. Diakses tanggal 2020-10-09.
3. ↑  Arce, Gonzalo R. (2005). *Nonlinear Signal Processing: A Statistical Approach*. New Jersey: Wiley. ISBN 0-471-67624-1.