Adaptive Median Filter Menggunakan Matlab

Median filter merupakan metode dengan operasi nonlinier yang sering digunakan dalam pengolahan citra untuk mengurangi noise impuls dan distorsi pada gambar. Median filter bekerja dengan cara melakukan pengolahan spasial untuk menentukan piksel pada citra yang dipengaruhi oleh noise [10]. Median filter mengklasifikasikan piksel sebagai noise dengan membandingkan setiap piksel dalam gambar dengan piksel tetangga sekitarnya. Ukuran neighborhood pixel disesuaikan dan batas ambangnya (threshold) dijadikan perbandingan. Nilai piksel yang berbeda dari mayoritas tetangganya akan dilabelkan sebagai impulse noise. Noise piksel tersebut akan diganti nilainya dengan nilai piksel median dari piksel pada ukuran tetangganya. Penggunaan adaptive hanya pada perbedaan ukuran yang digunakan, tidak semua piksel menggunakan ukuran neighborhood yang sama. 

Berikut digambarkan proses median filter pada matriks 5x5 dengan menggunakan ukuran neighborhood 3x3 :

Gambar diatas merupakan contoh proses median filter pada matriks 5x5 dengan menggunakan ukuran neighborhood 3x3. Proses iterasi dimulai dari matriks bernomer satu, karena ukuran neighborhood yang ditentukan adalah 3x3 sehingga nilai tengah pada matriks 3x3 akan di filter nilainya dengan menggunakan nilai median dari 107, 103, 103, 121, 118, 115, 133, 131, 126, sebelum menentukan median, terlebih dahulu data diurutkan menjadi 103, 103, 107, 115, 118, 121, 126, 131, 133 sehingga diperoleh nilai median 115. Nilai tengah dari iterasi pertama akan diganti dengan nilai median yang diperoleh dari neighborhood sehingga menghasilkan matriks a. Proses iterasi berlangsung sampai dihasilkannya matriks e. 
Adapun penerapan adaptive median filter pada citra menggunakan Matlab.
Citra sebelum dilakukan proses adaptive median filter

Citra setelah dilakukan proses adaptive median filter menggunakan Matlab

Berikut dibawah ini adalah source code penerapan adaptive median filter pada citra dengan menggunakan Matlab:
input = imread('image.jpg') %Memamsukkan gambar

amf_lima = medfilt2(input, [5 5]); %Median Filter u/ 5x5neighborhood
amf_sebelas = medfilt2(input, [11 11]); %%Median Filter u/ 11x11neighborhood

T1 = mean2(input);       %menghitung mean intensity dr gambar
[baris, kolom] = size(input);    %mengetahui dimensi baris & kolom gambar

 %Filter Pertama Menggunakan T1 dengan nilai dari mean intensitas gambar
for bar=1:baris
        for kol=1:kolom
            intensity = input(bar,kol); % mengetahui nilai intensitas setiap pixel
       
            if intensity <= T1 %jika intensitas < T1 maka gunakan 11x11 neighboorhood
                image_amf1(bar,kol) = amf_sebelas(bar,kol);
           
            else % gunakan 5x5 neighboorhood
                image_amf1(bar,kol) = amf_lima(bar,kol);
            end
             
        end
    end
   
    imwrite(image_amf1,'amf1.jpg'); %menyimpan gambar hasil filter

1 comment:

Tianur said...
This comment has been removed by the author.

Post a Comment