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.