Friday 29 April 2016

Pengolahan Citra 6: Filter Spasial Non Linear

Pada pembahasan pertemuan 6 ini akan dibahas mengenai bagaimana cara melakukan filter dengan area lokal. Proses filter yang dilakukan pada pembahasan praktikum ini adalah Filter Mean (Rata-rata), Filter Maximum, dan Filter Minimum. Sebelum membahas proses pembuatan programnya, ada baiknya kita membahas teori perhitungan filter yang kita gunakan yang nantinya akan kita terapkan pada saat pembuatan program filtering.

Filter

Filter merupakan proses/kegiatan meloloskan/menerima komponen dengan frekuensi tertentu dan menghilangkan/menolak komponen dengan frekuensi yang lain. Berdasarkan jenisnya, filter dibedakan menjadi dua jenis yaitu:

  • Filter Spasial Linear
  • Filter Spasial Non Linear
Filter Spasial Linear:

Pada filter spasial linear ini, proses bekerja dengan cara korelasi atau konvolusi antara area lokal suatu sel bitmap dengan kernel. Contohnya adalah filter rata-rata dan filter gaussian. Berikut ini adalah contoh analogi proses melakukan filter rata-rata dengan konvolusi dan korelasi:

Korelasi: 


Korelasi merupakan perkalian antara dua fungsi f(x,y) dan g(x,y). berikut ini adalah fungsi secara matematis untuk korelasi:



Keterangan dari rumus matematis di atas adalah sebagai berikut:
  • x, y, k, l à variabel bebas yang memiliki nilai diskrit, dimana x dan y adalah koordinat piksel yang sedang diolah, k dan l adalah koordinat dari piksel dalam suatu area lokal yang memperngaruhi hasil h(x,y)
  • h(x,y) hasil pada koordinat x,y
  • f(x,y) à fungsi f yang mengolah piksel x,y berikut tetangganya
  • g(x,y) à fungsi filter untuk mengolah piksel x,y
  • M, N à batas titik tetangga yang mempengaruhi titik yang sedang diolah

Berikut ini adalah contoh penulisan korelasi dalam pemrograman:




Dari rumus di atas bitmap hasil merupakan bitmap yang akan menampung piksel yang telah dikalikan dengan kernel 3x3. Sedangkan bitmap asal merupakan bitmap yang akan diproses / difilter. Berikut ini adalah gambaran proses korelasi:


Konvolusi:

Perkalian antara dua fungsi f(x,y) dan g(x,y). Dimana fungsi g(x,y) konvolusi berkebalikan dengan g(x,y) pada korelasi. Berikut ini adalah penulisan perkalian konvolusi pada proses pemrograman:



Dari rumus di atas bitmap hasil merupakan bitmap yang akan menampung piksel yang telah dikalikan dengan kernel 3x3. Sedangkan bitmap asal merupakan bitmap yang akan diproses / difilter. Berikut ini adalah gambaran proses konvolusi yitu dengan mengalikan kernel yang posisinya berbalik:


Filter Spasial Non Linear

Filter spasial non linear merupakan proses filtering dengan meloloskan suatu nilai yang didapatkan dari proses no linear. Beberapa contoh yang didapat dari operasi statistik:
  • Mean Filtering à mengganti nilai sel bitmap dengan nilai rata-rata dari area lokal.
  • Minimum Filtering à mengganti nilai sel bitmap dengan nilai terkecil dari area lokal.
  • Maximum Filtering à mengganti nilai sel bitmap dengan nilai terbesar dari area lokal.
  • Mid-Point Filtering à mengganti nilai sel bitmap dengan nilai tengah diantara nilai terkecil dan terbesar dari area lokal.
  • Median Filtering à mengganti nilai sel bitmap dengan nilai median dari area lokal yang sudah disort.

Pada praktikum ini akan difokuskan pada filter spasial mean, minimum, dan maksimum. Berikut ini akan diberikan gambaran analogi proses filter mean, minimum, dan maksimum yang nantinya akan dibuat programnya:

Filter Mean:

Filter Minimum:


Filter Maximum:


Setelah membahas teori-teori yang mendukung pembuatan program, di bawah ini akan dibahas langkah pembuatan program:

Source Code:










Penjelasan program:

Pada source code program di atas, kita menyediakan banyak variabel penampung untuk bitmap hasil. Hal itu disediakan untuk mengantisipasi adanya nilai yang sama yang dimasukkan ke dalam sebuah variabel yang harusnya variabel itu dieksekusi dua kali dengan nilai yang berbeda. Hal itu akan menghasilkan kesalahan saat compile.

Pada line 78 sampai 81, kita menyediakan array dengan nilai lebar+2 dan tinggi+2 dengan pemikiran bahwa saat kita menambahkan nilai tepi di sisi paling atas, paling kiri, paling bawah, dan paling kanan, maka tempat untuk mengisi piksel tidak akan cukup. Misalnya jika piksel yang kita butuhkan berbentuk matriks atau table 5x5, maka setelah ditambahkan nilai tepinya, akan berubah menjadi 7x7. Masing-masing sisi bertambah 1 deret. Untuk itu pada saat deklarasi, batas array kita tambahkan 2 untuk batas nilai lebar dan batas nilai tinggi.

Pada line 125 sampai line ke 154, adalah proses pengisian nilai tepi. Kita gunakan dua kali proses untuk mengisi nilai tepi. Yang pertama kita mengisi nilai tepi untuk bagian vertikal paling kiri dan paling kanan. Sedangkan proses looping for kedua adalah untuk mengisi nilai tepi pada bagian horizontal paling atas dan paling bawah. Selanjutya, proses filter mean dilakukan pada line ke 157 sampai dengan line ke 196. Seperti pada teori yang telah dibahas, bahwa pada filter mean, akan dijumlahkan 1 buah piksel dengan tetangganya yang ada pada satu posisi lalu hasil penjumlahan itu dibagi 9.

Pada line 205 sampai dengan line ke 226, adalah proses untuk melakukan filter max. Pada tahap ini yang dilakukan adalah melakukan konversi dari array 2 dimensi menjadi array 1 dimensi. Setelah dikonversi menjadi array 1 dimensi, baru dilakukan pembandingan dengan algoritma maximum. Sama halnya dengan proses filter minimum.

Berikut ini adalah source code tampilan web untuk menampilkan hasil yang telah kita buat dari source code di atas.

Tampilan Web (html):


Proses Compile:


Memanggil AppletViewer:



Hasil Tampilannya adalah sebagai berikut:


Sekian pembahasan mengenai filter spasial non linear pada pertemuan 6 ini.