Citra berwarna direpresentasikan dengan tiga komponen warna (RGB) pada setiap pikselnya. Nilai RGB dapat direpresentasikan sebagai integer antara 0-255 atau floating point antara 0-1. Warna putih didapatkan dengan nilai RGB maksimum, sedangkan hitam didapatkan dengan nilai RGB minimum. Representasi matrix memungkinkan modifikasi citra seperti mengubah citra menjadi abu-abu dengan merata-rata nilai RGB setiap piksel.
1. Konsep citra berwarna
Pengantar Di dalam dunia dijital dikenal 2 jenis citra, yaitu citra berwarna dan citra monokrom. Perbedaan yang
mendasar diantara keduanya terletak pada informasi warna pada setiap pixel. Pada artikel kali ini akan dibahas
mengenai konsep-konsep dasar pada citra berwarna. Sebenarnya, apa sih yang disimpan oleh sebuah file citra?
Contoh misalkan, jika kita membuka file citra yang mempunyai extension jpeg, informasi apa yang akan dipergunakan
oleh komputer untuk menampilkan citra? Kalau kita teliti lebih jauh, sebenarnya ada dua bagian besar yang lazim ditemui
pada file-file citra. Bagian pertama disebut sebagai header yang berisi informasi mengenai bagaimana informasi citra
disimpan, dan bagian yang kedua adalah informasi warna pada setiap pixel. Dimana kah meta data dari citra yang sering
dibahas di infotainment? Nanti akan saya ceritakan diartikel yang lain.
Representasi matematis citra Ok, balik ke pembahasan. Hal yang terpenting dalam memanipulasi data citra adalah
pada informasi warna pada setiap pixel. Informasi ini seperti layaknya informasi kata-kata yang ada pada file text seperti
.txt. Pada citra berwarna informasi ini biasa dipecah dalam 3 komponen warna yang lazim disebut RGB (Red Green
Blue). Seperti yang kita ketahui kita dapat membuat warna apapun. Sebagai ilustrasi, silahkan lihat gambar di bawah ini
(Gambar diambil dari http://en.wikipedia.org/wiki/RGB_color_model) Secara matematis, kita dapat menuliskan sebuah
citra sebagai sebuah fungsi dua dimensi f yang berisi nilai RGB pada koordinat (x,y). 1: f(x,y) = [RGB]
Representasi Matrix
Nilai RGB bisa direpresentasikan dengan berbagai cara. Misalkan, BufferedReader pada java merepresentasikannya
dalam bentuk sebuah integer (untuk lebih lanjut, silahkan tilik tutorial berikut). Cara yang lain adalah dengan
merepresentasikannya dalam bentuk matrix 3 dimensi. Sebagai ilustrasi, marilah lihat gambar dibawah ini.
Pada gambar diatas, komponen red pada lokasi (0,0), bernilai 78, green 200, dan blue 12. Di dalam program, kita dapat
menuliskannya sebagai berikut.
1: const int RED = 0;
2: const int GREEN = 1;
3: const int BLUE = 2;
4:
5: f[0][0][RED] = 78;
6: f[0][0][GREEN] = 200;
7: f[0][0][BLUE] = 12;
3 baris pertama dibuat agar code mudah dibaca. Note: Ini bukanlah satu-satunya cara untuk membuat representasi
matrix. Ada banyak jalan menuju Roma!
Pertanyaan yang cukup menarik untuk dijawab adalah apa arti angka 78? Bagaimana meramu campuran RGB agar
Situs Pengolahan Citra | Digital Image Processing
http://pengolahancitra.com Powered by Joomla! Generated: 21 August, 2014, 21:48
2. mendapatkan warna putih atau hitam?
Nilai dari masing-masing komponen berkisar 0 sampai dengan 255 jika direpresentasikan dengan integer (bilangan
tanpa ada desimal). warna putih didapat ketika kita memberikan nilai 255 pada setiap komponen. Sebaliknya jika kita
memberikan nilai 0 pada semua komponen, kita akan mendapatkan warna hitam. Sebenarnya teknik mencampur seperti
ini sesuai dengan kenyataan. Jika kita mencampur warna merah hijau dan biru sebanyak-banyaknya, maka kita akan
mendapatkan warna putih. Sebaliknya, warna hitam didapat jika kita tidak mencampur apa-apa.
int atau double?
Seperti yang telah disebutkan kalau nilai dari masing-masing komponen berkisar 0 sampai dengan 255 jika
direpresentasikan dalam bentuk integer. Sebenarnya ada represenstasi yang lain, yaitu antara 0 sampai dengan 1 dalam
bentuk floating point (bilangan desimal). Penggunaan floating point tentunya memiliki kelebihan dalam presisi ketimbang
memakai nilai yang diskrit. Namun demikian, penggunaan floating point akan membuat file citra membesar.
Biasanya citra disimpan dalam representasi integer. Representasi floating point dipergunakan pada saat citra
dimodifikasi. Bagaimana cara mengubah dari representasi integer ke floating point? Mudah, tinggal membagi nilai integer
dengan angka 255. Sebagai contoh, jika kita ingin mengubah nilai komponen green.
1: double green_d = green_i / 255;
Apa sih kegunaan representasi matrix?
Oh banyak kegunaannya. Salah satu contoh menarik adalah jika kita ingin membuat suatu citra menjadi citra abu2x.
Caranya? dengan merata-rata semua komponen dari setiap pixel. Berikut adalah contoh singkat untuk melakukan hal
tersebut.
1: for (int x = 0; x < PANJANG_MAX_CITRA; x++)
2: for (int y = 0; y < LEBAR_MAX_CCITRA; y++)
3: {
4: double rata = (f[x][y][RED] + f[x][y][GREEN] + f[x][y][BLUE]) / 3.0;
5: f[x][y][RED] = rata;
6: f[x][y][GREEN] = rata;
7: f[x][y][BLUE] = rata;
8: }
Baik, apa yang telah kita bahas? Kita telah mengetahui jenis citra, bagaimana cara merepresentasikannya, apa
representasi yang cocok dan apa kegunaannya.
Situs Pengolahan Citra | Digital Image Processing
http://pengolahancitra.com Powered by Joomla! Generated: 21 August, 2014, 21:48