Anda di halaman 1dari 9

Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

MENGHALUSKAN CITRA DENGAN FILTER SPASIAL NON-


LINIER: MEDIAN, MEAN, MAX, MIN PADA PENGOLAHAN
CITRA DIGITAL

Filter spasial non-linier atau disebut juga dengan filter statistik berdasar urutan (order-statistic filter)
merupakan filter yang respon nya didasarkan pada urutan atau rangking piksel yang ada dalam citra yang
dicakup oleh area filter dan menggantikan nilai dari piksel yang berada di tengah digantikan dengan nilai
hasil pengurutan atau perangkingan tersebut. Filter yang paling dikenal dari jenis ini adalah filter
median. Filter ini bekerja dengan menggantikan nilai tengah dari piksel yang dicakup oleh area filter
dengan sebuah nilai tengah (median) setelah diurutkan terlebih dahulu dari yang terkecil ke yang
terbesar. Biasanya ukuran filter adalah ganjil karena akan memberikan poros tengah, sehingga akan lebih
mudah dalam mengolah citra.

Kelebihan dari filter median adalah kemampuannya dalam mengurangi derau yang diakibatkan oleh
derau acak misalnya jenis salt and pepper noise atau bisa disebut sebagai derau impulse. Dibandingkan
dengan jenis filter spasial (ruang) non-linier lainnya, filter median merupakan filter yang paling cocok
untuk kasus tersebut. Sehingga filter ini dinobatkan menjadi filter yang paling ampuh dalam mengolah
citra berderau sejenis.

Selain digunakan untuk menghilangkan derau, filter-filter ini juga digunakan untuk menghaluskan citra
digital. Filter non-linier lebih unggul dibanding dengan filter linier dengan ukuran jendela filter yang
sama. Selain itu, filter non-linier tidak memerlukan operasi konvolusi terhadap citra original, yang
berbeda dengan operasi dari filter linier.

A. Filter Median
Dalam merancang filter median, ada beberapa hal yang harus dipersiapkan terlebih dahulu.
- Siapkan matriks yang akan diolah. Bila matriks berisi citra, maka jadikan citra tersebut
menjadi citra grayscale atau abu-abu agar yang didapat hanya 1 matriks intensitas saja.
- Siapkan matriks yang NOL yang ukurannya sama persis dengan citra yang akan diolah.
Matriks ini nantinya akan berisi nilai-nilai intensitas dari citra asli yang sudah diolah terlebih
dahulu.

Langkah selanjutnya akan ditunjukkan pada pembahasan contoh berikut ini.

3 5 7 1 3 9 5 3 2 6 8
9 4 8 1 6 8 3 4 2 0 6
8 1 7 7 8 9 5 4 7 6 3
6 2 5 1 2 6 4 9 6 5 5
8 3 9 7 9 8 4 5 3 1 6
7 4 7 9 4 5 3 7 6 1 7
4 5 0 8 5 6 7 3 1 2 8
3 6 2 6 7 9 0 0 5 4 2
2 3 1 7 0 5 4 3 7 1 8

Table 1 Matriks Original

1
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

Table 2 Matriks NOL

Langkah-langkahnya adalah sebagai berikut:

- Misalkan ukuran jendela filter median yang akan digunakan berukuran 3x3. Operasi
filter akan dimulai dari piksel kiri-atas.
3 5 7 1 3 9 5 3 2 6 8
9 4 8 1 6 8 3 4 2 0 6
8 1 7 7 8 9 5 4 7 6 3
6 2 5 1 2 6 4 9 6 5 5
8 3 9 7 9 8 4 5 3 1 6
7 4 7 9 4 5 3 7 6 1 7
4 5 0 8 5 6 7 3 1 2 8 3 5 7
3 6 2 6 7 9 0 0 5 4 2 9 4 8
2 3 1 7 0 5 4 3 7 1 8 8 1 7
Bila dijadikan 1 baris menjadi:
3, 5, 7, 9 ,4, 8, 8, 1, 7
Bila diurutkan menjadi:
1, 3, 4, 5, 7, 7, 8, 8, 9

3 5 7 1 3 9 5 3 2 6 8
9 7 0 0 0 0 0 0 0 0 6
8 0 0 0 0 0 0 0 0 0 3
6 0 0 0 0 0 0 0 0 0 5 Median/titik
8 0 0 0 0 0 0 0 0 0 6 tengah
7 0 0 0 0 0 0 0 0 0 7
4 0 0 0 0 0 0 0 0 0 8
3 0 0 0 0 0 0 0 0 0 2
2 3 1 7 0 5 4 3 7 1 8

Figure 1 Matriks NOL sebagai hasil filter

Tampak bahwa matriks nol akan berubah elemen nya menjadi nilai median dari matriks original sesuai
dengan ukuran dari bagian matriks original yang tercakupi dengan jendela filter. Ada yang sedikit
membingungkan memang, mengapa elemen-elemen paling tepi dari matriks nol sama dengan elemen-
elemen paling tepi dari matriks original. Karena kita tidak akan memproses bagian pinggir tersebut, jelas
tidak mungkin untuk diproses.

Perlu diingat bahwa proses filter itu diperlakukan untuk semua piksel. Jadi ketika proses filter pertama di
atas selesai, maka proses berikutnya berlangsung pada piksel yang tepat disebelahnya. Bila filter telah
mencapai kolom terakhir dalam satu baris, maka filter akan turun satu piksel dan dimulai dari sebelah
kiri. Demikianlah semua proses tersebut terjadi hingga semua nilai 0 pada matriks NOL berubah menjadi
nilai median atau titik tengah dari matriks original yang sesuai dengan ukuran dari jendela filter.
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

Setelah beberapa iterasi, maka akan dihasilkan bentuk akhir dari matriks hasil filter seperti di bawah ini:

3 5 7 1 3 9 5 3 2 6 8
9 7 5 7 7 6 5 4 4 6 6
8 6 4 6 6 6 5 4 5 5 3
6 6 5 7 7 6 5 5 5 5 5
8 6 5 7 6 4 5 5 5 5 6
7 5 7 7 7 5 5 4 3 3 7
4 4 6 6 6 5 5 3 3 4 8
3 3 5 5 6 5 4 3 3 4 2
2 3 1 7 0 5 4 3 7 1 8

B. Filter Mean
Sesuai dengan namanya, filter ini akan mengganti sebuah piksel dengan reratanya. Langkah-
langkahnya sama persis dengan filter median, hanya saja pada filter ini operasi yang digunakan
adalah rerata bukan median.

Anda bisa mencoba sendiri untuk menghitungnya, untuk perbandingan maka hasil dari operasi
rerata atau mean terhadap matriks original yang telah disebutkan sebelumnya adalah:

3 5 7 1 3 9 5 3 2 6 8
9 6 5 5 6 6 6 4 4 4 6
8 6 4 5 5 6 6 5 5 4 3
6 5 5 6 6 6 6 5 5 5 5
8 6 5 6 6 5 6 5 5 4 6
7 5 6 6 7 6 5 4 3 4 7
4 4 5 5 7 5 4 4 3 4 8
3 3 4 4 6 5 4 3 3 4 2
2 3 1 7 0 5 4 3 7 1 8

C. Filter Max
Filter max berarti menggantikan piksel dengan nilai tertinggi dari suatu deret yang terbentuk dari
matriks yang sesuai dengan ukuran dari jendela filter. Langkah-langkah lainnya sama dengan
filter median.

Untuk perbandingan buat anda, maka hasil dari filter pada matriks original yang telah disebutkan
sebelumnya adalah:

3 5 7 1 3 9 5 3 2 6 8
9 9 8 8 9 9 9 7 7 8 6
8 9 8 8 9 9 9 9 9 7 3
6 9 9 9 9 9 9 9 9 7 5
8 9 9 9 9 9 9 9 9 7 6
7 9 9 9 9 9 8 7 7 8 7
4 7 9 9 9 9 9 7 7 8 8
3 6 8 8 9 9 9 7 7 8 2
2 3 1 7 0 5 4 3 7 1 8

3
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

D. Filter Min
Filter ini merupakan kebalikan dari filter max. Artinya bahwa piksel akan digantikan dengan
nilai min (minimal) dari sebuah deret dari matriks yang berukuran sesuai dengan jendela matriks
filter.

Untuk lebih jelas, perhatikan contoh berikut sebagai perbandingan. Perhatikan bahwa matriks
originalnya masih sama dengan matriks yang tersebut sebelumnya.

3 5 7 1 3 9 5 3 2 6 8
9 1 1 1 1 3 3 2 0 0 6
8 1 1 1 1 2 3 2 0 0 3
6 1 1 1 1 2 4 3 1 1 5
8 2 1 1 1 2 3 3 1 1 6
7 0 0 0 4 3 3 1 1 1 7
4 0 0 0 4 0 0 0 0 1 8
3 0 0 0 0 0 0 0 0 1 2
2 3 1 7 0 5 4 3 7 1 8

Implementasi filter pada citra digital

Filter-filter tersebut dapat diimplementasikan dalam citra digital. Tujuannya tentu sangat beragam.
Penggunaannya memang untuk tujuan-tujuan tertentu tergantung dengan permasalahan yang sedang
ditangani. Misalnya bila ingin menghaluskan citra atau biasa disebut sebagai image smoothing dan untuk
menghapus derau atau noise eliminating.

Dalam program ini, kita akan mencoba untuk mengolah citra digital menggunakan filter. Hasilnya bisa
berupa penghalusan dan bisa juga berupa penghilangan derau.

Untuk contoh berikut ini adalah proses untuk menghaluskan citra. Langkah-langkah dalam membuat
program matlab untuk mengolah citra digital menggunakan filter-filter di atas adalah:

PS: this program originally developed by me.

 Membaca data dari citra digital.

I=imread('sepatuku','jpg');
imshow(I); title('Citra Asli');

 Menjadikan citra menjadi grayscale lalu mengubahnya ke dalam double precision.

I=rgb2gray(I);
I=double(I);

 Membuat matriks dummy atau buffer atau matriks nol.

[x,y]=size(I);
dummy=zeros(x,y);

 Membuat matriks filter dalam hal ini jendelanya berukuran 3x3, anda bisa mengubahnya.
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

m=3; n=3;
a=ones(m,n);

 Melakukan operasi penapisan atau filter terhadap matriks original.


Gantilah perintah MEDIAN menjadi MEAN, MAX, MIN sesuai dengan keinginan anda.
Khusus untuk MEAN, pakailah pembulatan ROUND.

for ii=1:x-(m-1)
for jj=1:y-(n-1)
aa=a.*I(ii:m+ii-1,jj:n+jj-1);
b=reshape(aa,1,m*n);
b=sort(b);
b=median(b);
dummy(ii+1,jj+1)=b;
end
end

 Menyusun kembali matriks akhir setelah di filter.

for ii=2:x-1
for jj=1:y
if jj==1
n=I(ii,jj);
elseif jj==y
n=I(ii,jj);
else
n=0;
end
mmed(ii-1,jj)=n;
end
end
mmed=[I(1,:);mmed;I(x,:)];
mmed=mmed+dummy;

 Menampilkan citra hasil filter smoothing.

figure, imshow(mmed,[0 255]); title('Citra Hasil Filter');

Hasil eksekusi program untuk ke empat filter tersebut adalah:

5
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

*** median

*** mean

*** max
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

*** min

Perlu diketahui untuk filter min, maka bisa saja terjadi pada citra hasil tapis akan timbul warna gelap
yang berbentuk blok-blok, sedangkan untuk filter max akan menyebabkan warna terang yang berbentuk
blok-blok. Lokasi nya juga acak.

Sebagai contoh aplikasi dari filter median untuk menapis citra yang terkena derau salt and pepper.
Perhatikan code berikut ini:

% membaca citra
I=imread('sepatuku','jpg');
imshow(I); title('Citra Asli');

I=imnoise(I,'salt & pepper',0.02);


figure, imshow(I); title('Citra Dengan Noise S&P');
I=rgb2gray(I);
%%

%% membuat matriks dummy

7
Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

I=double(I);
[x,y]=size(I);
dummy=zeros(x,y);
m=3; n=3;
a=ones(m,n);
%%

%% filter
for ii=1:x-(m-1)
for jj=1:y-(n-1)
aa=a.*I(ii:m+ii-1,jj:n+jj-1);
b=reshape(aa,1,m*n);
b=sort(b);
b=min(b);
dummy(ii+1,jj+1)=b;
end
end
%%

%% matriks akhir setelah di filter


for ii=2:x-1
for jj=1:y
if jj==1
n=I(ii,jj);
elseif jj==y
n=I(ii,jj);
else
n=0;
end
mmed(ii-1,jj)=n;
end
end
mmed=[I(1,:);mmed;I(x,:)];
mmed=mmed+dummy;
%%

%% menampilkan citra grayscale dengan range 0-255


figure, imshow(mmed,[0 255]); title('Citra Hasil Filter');
%%

Hasil eksekusinya adalah:


Pengolahan citra digital by Jans Hendry / S2 TE UGM 09

*** citra kena derau salt and pepper

*** citra hasil tapis median terhadap citra berderau

Pemanfaatan filter lain untuk menapis derau akan dibahas pada artikel lainnya.

TERIMA KASIH

Referensi:

- R. Gonzalez and R. Woods. Digital Image Processing. Addison Wesley

- www.image.google.co.id

- email: janshendry@kagamavirtual.com