pencitraan pada java


PENGOLAHAN CITRA PADA PEMROGRAMAN JAVA
Antonius Aditya Hartanto
Lisensi Dokumen
Seluruh dokumen dalam file ini dapat digunakan, dimodifikasi, dan didstribusikan secara bebas
untuk tujuan non komersial dengan tidak menghapus atribut kepemilikan penulis serta
pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperkenankan untuk
melakukan penulisan ulang tanpa ijin resmi dari pihak kagakribet.com.
Copyright © 2007-2008 Kampung Teknologi & Lola Mobile
Pengolahan citra merupakan sebuah bentuk pemrosesan sebuah citra atau gambar dengan cara
memproses numeric dari gambar tersebut, dalam hal ini yang diproses adalah masing-masing pixel atau
titik dari gambar tersebut. Bentuk umum dari image filtering hampir serupa dengan image processing.
Salah satu teknik pemrosesan citra ini memanfaatkan komputer sebagai peranti untuk memproses masingmasing
pixel dari sebuah gambar. Oleh karena itulah muncul istilah pemrosesan citra secara digital atau
“Digital Image Processing”. Dalam artikel ini, akan dibahas lebih mendalam mengenai proses filtering
yang merupakan salah satu proses yang sangat penting dalam pemrosesan citra secara digital. Bahkan
dalam beberapa kasus, pemrosesan citra sering diidentikkan dengan “Image Filtering”. Image processing
sendiri dapat didefiniskan juga sebagai adalah proses filtering sebuah gambar, pixel demi pixel. Istilah
manipulasi gambar atau “Image Manipulation” sering juga digunakan untuk menyebutkan istilah
pemrosesan citra atau gambar tersebut.
“Digital image processing” diperkenalkan pertama kali di New York, USA pada awal tahun
1920-an. Pertama kalinya digunakan untuk meningkatkan kualitas gambar Koran yang dikirimkan oleh
kabel bawah laut yang terbentang antara London dan New York. Sampai tahun 1960-an perkembangannya
tidaklah terlalu menggembirakan. Namun pada akhir tahun 1960-an, dimana perkembangan komputer yang
pesat dan mampu menawarkan kecepatan dan kapasitas yang lebih tinggi memacu perkembangan dari
implementasi algoritma pemrosesan citra yang lebih pesat lagi. Untuk saat ini penggunaan dari pemrosesan
citra telah melingkupi berbagai macam disiplin ilmu diantaranya bidang Arsitektur, Geografi, Ilmu
Komputer, Kedokteran, Fotografi, Arkeologi, dan lain sebagainya.
Tujuan utama dari “Digital image processing” tersebut selain untuk meningkatkan kualitas
gambar yang diperoleh, juga dimaksudkan untuk memproses data yang diperoleh untuk ditanggapi secara
otomatis oleh sebuah mesin atau peralatan. Kelebihan dari penggunaan “Digital image processing” adalah
dalam hal ketepatan dan flesibilitasnya. Sedangkan kerugiannya adalah dalam hal kecepatan dan biaya
sebagai akibat dari pemanfaatan proses yang lebih kompleks.
Gambar 1. : Proses Digitisasi dari sebuah gambar
Dalam “Digital Image Processing”, sebuah gambar dianggap sebagai deretan bilanganbilangan
yang disusun dalam sebuah larik dua dimensi. Sebuah gambar merupakan larik persegi
panjang dan berisi pixel-pixel yang dapat ditentukan nilainya. Sebagai contoh dapat kita
definisikan bahwa fungsi untuk masing-masing pixel adalah a(x,y) dengan a adalah
amplitudo(misalnya kecerahan dan sebagainya) dari sebuah titik yang berada dalam koordinat
(x,y). Amplitudo dari tiap-tiap pixel berupa bilangan real atau integer. Nilai minimum amplitudo
dari sebuah pixel adalah 0 yang merepresentasikan warna hitam sedangkan umumnya nilai
maksimumnya adalah 255 yang merepresentasikan warna putih.
Sebuah gambar digital a[m,n] merupakan hasil diskritisasi dari sebuah gambar analog
a(x,y) menggunakan proses sampling yang seringkali disebut dengan proses digitization.
Contoh akibat dari proses tersebut terlihat pada Gambar 1. dimana untuk pixel yang terletak di
koordinat [m=10, n=3] memiliki nilai integer dari kecerahan sebesar 110. Dalam gambar tersebut,
terdapat 16 baris dan 16 kolom, dengan nilai yang diberikan kepada masing-masing merupakan
hasil pembulatan nilai integer rata-rata terdekat dari dari kecerahan pixel tersebut.
Sebuah gambar berwarna sendiri dapat direpresentasikan dengan sebuah array dua
dimensi berisi data kombinasi warna merah, hijau, dan biru (atau dikenal sebagai RGB atau Red
Green Blue). Nilai dari masing-masing warna tersebut berkisar antara 0 sampai 255. Terdapat
dua cara untuk menyimpan masing-masing pixel yaitu dengan cara menyimpan masing-masing
pixel dalam bentuk single bit yang berarti bahwa komputer hanya dapat menggunakan nilai 0
dan 1 atau hitam dan putih saja untuk masing-masing pixel dan dengan cara menyimpan masingmasing-
masing pixel dalam data-data byte berukuran 8 bit. Jika menggunakan cara terakhir ini,
maka nilai maksimum dari masing-masing pixel adalah 255.
“Image filtering” sering pula dinamakan proses penghalusan gambar yang utamanya
digunakan untuk mengurangi efek-efek yang tidak diinginkan yang muncul dalam sebuah gambar
digital sebagai akibat dari kesalahan sistem sampling atau sebab lain.
Dalam pemrograman Java, pemrosesan pixel demi pixel dari sebuah gambar didukung
oleh beberapa class yang terdapat didalam java.awt.image. Dengan memanfaatkan beberapa
kelas tersebut dan mendefinisikan sendiri beberapa filter sendiri, anda akan dapat
mempraktekkan beberapa pemrosesan gambar sederhana dengan menggunakan Java ini.
Dalam beberapa contoh proses filtering menggunakan Java berikut gambar asli diperlihatkan
dengan Gambar 2. berikut :
Gambar 2. Gambar asli
GrayScale Filter
GrayScale filter diciptakan untuk mengubah sebuah gambar berwarna menjadi sebuah
gamabr hitam putih dengan cara mengubah efek warna dari masing-masing pixel menjadi derajat
keabu-abuan.. Prosesnya adalah dengan memanfaatkan operasi & terhadap komponenkomponen
warna merah, hijau, dan biru dari masing-masing pixel dengan 255 namun
sebelumnya untuk masing-masing warna dilakukan pembobotan menjadi abu-abu dengan
operator right shift. Selanjutnya mengalikan dengan 0xff terhadap komponen warna dari masingmasing
pixel akan mengubah warna dari masing-masing pixel ke dalam derajat keabu-abuan
tertentu. Perhatikanlah listing program FiltersGray.java dan GrayFilter.java, hasilnya dapat dilihat
di Gambar 3.
class GrayFilter extends RGBImageFilter{
public GrayFilter(){
canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb){
int alpha, r, g, b;
int gray;
alpha = rgb & (0xFF << 24);
r = (rgb >> 16) & 0xFF;
g = (rgb >> 8) & 0xFF;
b = (rgb >> 0) & 0xFF;
gray = (r + g + b)/3;
return alpha | gray<<16 | gray<<8 | gray;
}
}
Gambar 3. Hasil Greyscale.
Low Pass Filter
Low pass filter dilakukan untuk menghilangkan ruang derau berfrekuensi tinggi dari sebuah
gambar digital. Istilah derau atau “Noise” digunakan sebagai efek samping dari proses konversi
pola dari energi cahaya menjadi energi listrik selama proses konversi gambar dari bentuk analog
menjadi bentuk digital. Noise merupakan variasi yang tidak diinginkan terjadi dalam sebuah pixel.
Low pass filter juga digunakan untuk mengurangi detail dari gambar atau justru
membuat gambar menjadi lebih kabur dari sebelumnya. Perhatikan bahwa filter ini akan
menghilangkan atau mengurangi derau-derau berfrekuensi tinggi dari gambar menjadi frekuensi
yang lebih rendah. Frekuensi tinggi dari sebuah pixel dapat diperlihatkan dengan melihat tinggkat
ketajaman gambar dari pixel tersebut. Untuk lebih jelas perhatikanlah contoh listing
LowPassFilter.java. Dalam contoh tersebut digunakan masking berukuran 3×3 dengan masingmasing
elemen akan diberi nilai 0.1111111 atau 1/9 berarti filter yang digunakan mereduksi
frekuensi masing-masing pixel menjadi 1/9 kali . Untuk melihat hasilnya perhatikan Gambar 4.
berikut :
Gambar 4. Hasil Low Pass Filter
Dapat anda bandingkan bahwa ketajaman gambar berkurang dibandingkan dengan gambar aslinya
sebagai hasil proses Low Pass Filtering tersebut.
Negative Filter
Negative filter dibuat dengan cara mengubah efek warna dari masing-masing pixel.
Prosesnya adalah dengan memanfaatkan operasi XOR terhadap komponen-komponen warna
merah, hijau, dan biru dari masing-masing pixel dengan 255 . Dengan mengaklikan dengan 0xff
dengan komponen warna dari masing-masing pixel akan membalik warna dari masing-masing
pixel misalnya hitam menjadi putih dan begitu pula sebaliknya. Perhatikanlah listing program
Negative.java dan NegativeFilter.java, hasilnya dapat dilihat di Gambar 5.
public class NegativeFilter extends RGBImageFilter
{
public NegativeFilter()
{
canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb)
{
return
(rgb & 0xff000000) + // preserve transparency
(rgb & 0xffffff) ^ 0xffffff; // xor the components
}
}
Gambar 5. Hasil Negative Filter
Crop dan Zoom
Proses Crop pada Java memanfaatkan fungsi CropImageFilter. Parameter yang
digunakan ketika mengakses fungsi ini adalah posisi (x,y) pixel mana yang ingin dituju sebagai
awal dari gambar yang ingin diambil dan berapa ukuran gambar (n pixel x m pixel) yang ingin dicrop.
Selanjutnya simpan data hasil proses cropping tadi dalam parameter baru misalnya kita
namakan subImage, dan selanjutnya ketika digambarkan, tampilkan dengan ukuran yang lebih
besar. Perhatikanlah listing program FiltersCrop.java, hasilnya dapat dilihat di Gambar 6. Hasil
cropping berukuran 40×40 pixel persegi diambil dari titik yang diawali dari koordinat (140,70),
selanjutnya gambar hasil cropping ditampilkan dilayar dimulai dari koordinat (10,10) dengan
ukuran 80×80 pixel persegi.
import java.awt.*;
import java.awt.image.*;
public class FiltersCrop extends java.applet.Applet{
Image oldImage, subImage;
ImageProducer filtered;
public void init(){
oldImage = getImage(getDocumentBase(), “sandpiper.jpg”);
filtered = new FilteredImageSource(oldImage.getSource(), new
CropImageFilter(140,70,40,40));
subImage = createImage(filtered);
}
public void paint(Graphics g){
g.drawImage(oldImage, 0,0, this);
g.drawImage(subImage, 10,10, 80,80, this);
System.out.println(“.”);
}
}
Gambar 6. Hasil Crop dan Zoom
Transparent Filter
Contoh terakhir adalah Transparan dari gambar asli terhadap warna abu-abu.
Perhatikanlah listing program Transparent.java, hasilnya dapat dilihat di Gambar 7.
Gambar 7. Hasil Filter Transparan
Sebenarnya masih banyak jenis filter lain yang dapat digunakan untuk menghasilkan berbagai
jenis gambar baru dari gambar asli. Semoga artikel ini dapat membantu anda untuk mempelajari
Java lebih jauh terutama dalam hal pemrosesan citra. Selain itu untuk fasilitas pemrosesan citra
yang lebih kompleks, Java menyediakan kelas-kelas baru dalam Java2D API.
Pustaka
1. Mastering Java 1.1, Laurence Vanhelsuwe, Ivan Philips, Goang-Tay Hsu, Krishna
Sankar, Eric Ries, Philip Heller, John McGloughlin, dan John Zukowski, Sybex, 1998
2. http://java.sun.com
3. http://www.students.ncl.ac.uk/ganesh.vengadasalam/exciting/tutorial/chapter1/chapter1.h
tml

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s