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.

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
Contohnya, terdapat piksel seperti pada gambar 4 berikut :
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 Pemerataan

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 :
% 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
Kesimpulannya, filter pemerataan sebagaimana filter batas, juga belum dapat menghilangkan derau bintik-bintik pada citra boneka secara maksimal. Bahkan, tidak hanya derau yang belum hilang, citra pun juga tampak terlihat buram. 
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.

Gambar 10 Hasil pemrosesan dengan filter median
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. 

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

3 comments

Terima kasih telah mampir di blog kami. Jika ingin menghubungi penulis, silakan kirim pesan via email di kitainformatika@gmail.com atau via WA di 087750503014. Jika mood penulis lagi baik, biasanya fast respon.
Comment Author Avatar
January 18, 2018 at 2:13 AM Delete
Kok ga jalan kodingnya bang, udah saya coba, ketetanggaan line 13.
Gmn solusinya bang ya
Comment Author Avatar
January 18, 2018 at 7:34 AM Delete
Cek dulu gan,apa notif kesalahannya
Comment Author Avatar
Anonymous
February 28, 2023 at 7:52 PM Delete
mau nanya pada fiIter minmax jika f(y,x pada cth antara 4 dan 8 misaInya 6 jadi yang digunakan sebagai g(y,x yang mana yah?