Operasi Ketetanggaan Piksel pada Filter Batas, Filter Pemerataan dan Filter Median
Table of Contents
Operasi ketetanggaan piksel adalah operasi pengolahan citra untuk mendapatkan nilai suatu piksel yang melibatkan nilai piksel-piksel tetangganya. Hal ini didasarkan kenyataan bahwa setiap piksel pada umumnya tidak berdiri sendiri, melainkan terkait dengan piksel tetangga, karena merupakan bagian suatu objek tertentu di dalam citra. Sifat inilah yang kemudian mendasari timbulnya algoritma untuk mengolah setiap piksel citra melalui piksel-piksel tetangga.
Sebagai contoh, suatu citra yang berderau dapat dihaluskan melalui pererataan atas piksel-piksel tetangga. Gambar 1 berikut memberikan ilustrasi operasi ketetanggaan piksel. Delapan piksel tetangga terdekat dengan piksel f(y,x) digunakan untuk memperbaikinya menjadi g(y,x) di tempat yang sama.
Sebagai contoh, suatu citra yang berderau dapat dihaluskan melalui pererataan atas piksel-piksel tetangga. Gambar 1 berikut memberikan ilustrasi operasi ketetanggaan piksel. Delapan piksel tetangga terdekat dengan piksel f(y,x) digunakan untuk memperbaikinya menjadi g(y,x) di tempat yang sama.
Gambar 1 Sejumlah tetangga menentukan nilai sebuah piksel |
Pada pengolahan citra, ketetanggaan piksel banyak dipakai terutama pada analisis bentuk objek. Ketetanggaan piksel yang umum dipakai adalah 4-ketetanggaan dan 8-ketetanggan. Untuk memahami dua jenis ketetanggaan piksel, lihat Gambar 2 berikut :
Gambar 2 Dua macam ketetanggaan piksel |
Pada 4-ketetanggan, T1, T2, T3, dan T4 merupakan tetangga terdekat piksel P. Pada 8-ketetanggan, tetangga piksel P yaitu piksel-piksel yang berada di sekitar P. Totalnya sebanyak 8 buah. Bila P mempunyai koordinat (b, k) dengan b baris dan k kolom, hubungan piksel tetangga terhadap P sebagai berikut.
Pada 4-ketetanggaan :
Pada 8-ketetanggaan :
Ketetanggaan Piksel pada Filter
Ada tiga jenis filter yang menggunakan operasi ketetanggaan piksel yang akan dibahas. Ketiga filter tersebut adalah filter batas, filter pererataan, dan filter median. Sebagai filter atau tapis, operasi ketetanggaan piksel berfungsi untuk menyaring atau paling tidak mengurangi gangguan atau penyimpangan pada citra.
Filter Batas
Filter batas adalah filter yang dikemukakan dalam Davies (1990). Idenya adalah mencegah piksel yang intensitasnya di luar intensitas piksel-piksel tetangga. Algoritma yang digunakan untuk keperluan ini dapat dilihat berikut ini :
Gambar 3 Algoritma menghitung piksel dengan filter batas |
Gambar 4 contoh piksel dan tetangga |
Berdasarkan keadaan diatas, maka :
- minInt = minimum(5, 7, 7, 5, 4, 6, 7, 8) = 4;
- maksInt = maksimum(5, 7, 7, 5, 4, 6, 7, 8) = 8;
- mengingat f(y, x) bernilai 9 dan lebih besar daripada 8 (maksInt) maka g(y, x) bernilai 8 ;
- seandainya f(y, x) pada keadaan di atas bernilai 2 (bukan 9), g(y,x) akan bernilai 4.
Berikut ini adalah program untuk melakukan operasi ketetanggaan pilsel menggunakan filter batas :
% FILBATAS Melakukan operasi ketetanggan piksel % menggunakan filter batas F = imread('boneka2.tif'); Ukuran = size(F); tinggi = Ukuran(1); lebar = Ukuran(2); G = F; for baris=2 : tinggi-1 for kolom=2 : lebar-1 minPiksel = min([F(baris-1, kolom-1) ... F(baris-1, kolom) F(baris, kolom+1) ... F(baris, kolom-1) ... F(baris, kolom+1) F(baris+1, kolom-1) ... F(baris+1, kolom) F(baris+1, kolom+1)]); maksPiksel = min([F(baris-1, kolom-1) ... F(baris-1, kolom) F(baris, kolom+1) ... F(baris, kolom-1) ... F(baris, kolom+1) F(baris+1, kolom-1) ... F(baris+1, kolom) F(baris+1, kolom+1)]); if F(baris, kolom) < minPiksel G(baris, kolom) = minPiksel; else if F(baris, kolom) > maksPiksel G(baris, kolom) = maksPiksel; else G(baris, kolom) = F(baris, kolom); end end end end figure(1); imshow(G); clear;
Kemudian diujicobakan untuk citra boneka, dan diperbandingkan sebelum dan sesudah dilakukan pemfilteran dengan filter batas :
Gambar 5 Citra boneka sebelum pemfilteran |
Sebelum pemfilteran dengan filter batas, derau pada citra terlihat berbintik. Dan setelah pemfilteran terlihat derau berbintik menggumpal menjadi titik-titik tebal. Hasil pemrosesan filter batas menunjukkan bahwa filter jenis ini belum dapat menghilangkan derau bintik-bintik secara maksimal
Gambar 6 Setelah pemfilteran |
Filter pererataan menurut Costa dan Cesar (2001) dilakukan dengan menggunakan rumus :
Sebagai contoh, piksel pada f(y, x) dan kedelapan tetangganya memiliki nilai-nilai kecerahan seperti berikut.
Gambar 7 Piksel dan delapan tetangganya |
Pada contoh di atas, yang diarsir (yaitu yang bernilai 68) merupakan nilai pada f(y, x). Nilai rerata pengganti untuk g(y, x) dihitung dengan cara seperti berikut:
g(y, x) = 1/9 x (65+50+55+76+68+60+60+60+62) = 61,7778 ; dibulatkan menjadi 62
Jadi, nilai 68 pada f(y, x) diubah menjadi 62 pada g(y, x).
Implementasi program untuk filter pemetaraan dapat dilihat seperti berikut :
g(y, x) = 1/9 x (65+50+55+76+68+60+60+60+62) = 61,7778 ; dibulatkan menjadi 62
Jadi, nilai 68 pada f(y, x) diubah menjadi 62 pada g(y, x).
Implementasi program untuk filter pemetaraan dapat dilihat seperti berikut :
% PEMERATAAN Melakukan operasi dengan filter pererataan F = imread('boneka2.tif'); [tinggi, lebar] = size(F); F2 = double(F); for baris=2 : tinggi-1 for kolom=2 : lebar-1 jum = F2(baris-1, kolom-1)+ ... F2(baris-1, kolom) + ... F2(baris-1, kolom-1) + ... F2(baris, kolom-1) + ... F2(baris, kolom) + ... F2(baris, kolom+1) + ... F2(baris+1, kolom-1) + ... F2(baris+1, kolom) + ... F2(baris+1, kolom+1); G(baris, kolom) = uint8(1/9 * jum); end end figure(1); imshow(G); clear;
Kemudian, jika diterapkan pada citra boneka yang berderau bintik-bintik, maka menghasilkan gambar 8 berikut :
Gambar 8 Hasil pemrosesan filter pemerataan |
Filter Median
Filter median sangat populer dalam pengolahan citra. Teorinya, filter ini sangat efektif dipakai untuk menghilangkan derau bintik-bintik. Nilai yang lebih baik digunakan untuk suatu piksel ditentukan oleh nilai median dari setiap piksel dan kedelapan piksel tetangga pada 8-ketetanggaan. Secara matematis, filter dapat dinotasikan seperti berikut:
Gambaran operasi filter median dapat dilihat pada gambar 9 berikut :
Gambar 9 gambaran operasi filter median |
Terlihat pada contoh diatas, untuk mendapatkan median, diperlukan pengurutan (sorting) terlebih dahulu. Implementasi program filter median dapat dilihat pada program berikut :
% FILMEDIAN Melakukan operasi dengan filter median F = imread('boneka2.tif'); [tinggi, lebar] = size(F); for baris=2 : tinggi-1 for kolom=2 : lebar-1 data = [F(baris-1, kolom-1) ... F(baris-1, kolom) ... F(baris-1, kolom+1) ... F(baris, kolom-1) ... F(baris, kolom) ... F(baris, kolom+1) ... F(baris+1, kolom-1) ... F(baris+1, kolom) ... F(baris+1, kolom+1)]; % Urutkan for i=1 : 8 for j=i+1 : 9 if data(i) > data(j) tmp = data(i); data(i) = data(j); data(j) = tmp; end end end % Ambil nilai median G(baris, kolom) = data(5); end end figure(1); imshow(G); clear;
Sekarang, mari kita buktikan untuk menggunakan filter median sebagai penghilang derau pada citra boneka. Hasilnya amat memuaskan, karena terlihat derau berupa bintik-bintik pada citra hilang sama sekali.
Citra boneka terlihat bersih tanpa derau sama sekali, maka sesuai dengan teorinya, filter median memang jenis filter yang sangat bagus untuk menghilangkan derau pada citra tanpa mengurangi detail citra.
Gambar 10 Hasil pemrosesan dengan filter median |
Demikian penjelasan mengenai Operasi ketetanggaan piksel menggunakan 3 jenis filter. Semoga bermanfaat.
Referensi :
Kadir, Abdul dan Susanto, Adhi. Teori dan Aplikasi Pengolahan Citra. Yogyakarta : Andi. 2012
Gmn solusinya bang ya