Ekstrak Warna di Processing

Rabu, Maret 21, 2012

Sebuah gambar digital idealnya terdiri dari 3 buah warna dasar yang biasa dikenal dengan RGB (Red, Green dan Blue) alias Merah, Hijau dan Biru.  Apa jadinya jika salah satu komponen warna tersebut tidak ada? Terutama pada sebuah foto. Pada percobaan kali ini saya share tentang bagaimana melakukan ekstrak warna pada sebuah foto yang ada pada processing. Lihat foto di bawah ini.
Gambar full color dengan 3 warna
Saya coba untuk mengilangkan warna hijau yang ada pada gambar tersebut dengan mengatur nilai Greennya 0. Hasilnya tampak seperti gambar di bawah ini.
Gambar tanpa warna hijau
Hanya ada perpaduan warna merah dan biru yang menghasilkan warna ungu. Kali ini saya akan share bagaimana caranya melakukan pengolahan gambar di processing guna ekstrak warna yang ada dalam sebuah foto.

Kita cukup membuat sebuah variabel gambar
PImage img;
Setelah itu pada bagian void setup kita hanya perlu mengambil gambar dan mengatur ukuran jendela. dengan mengetikkan perintah:
void setup(){
  img = loadImage("img.jpg");
  size(img.width, img.height);
}
Selanjutnya pada void draw kita perlu letakkan gambarnya terlebih dahulu dengan script
  image(img,0,0);
Masukkan logika
  for(int x = 0; x < img.width; x++){
    for(int y = 0; y < img.height; y++){
Yang berguna untuk mendapatkan banyaknya pixel yang ada pada gambar tersebut. Kemudian masukkan script berikut untuk menghitung nilai pada gambar
      color oldColor = img.get(x,y);
Buat variabel untuk masing-masing warna dalam bentuk integer, karena data warna berupa angka.
      int redValue, greenValue, blueValue;
Setelah itu hitung masing-masing nilai warna yang ada dari gambar dengan rumus sebagai berikut.
      redValue = (oldColor >> 16) & 0xFF;
      greenValue = (oldColor >> 8) & 0xFF;
      blueValue = oldColor & 0xFF;
Setelah nilai masing-masing warna diketahui, selanjutnya saya akan menghilangkan warna biru apabila nilai dari warna biru kurang dari 155. Berikut script yang berfungsi untuk menghilangkan warna biru yang memiliki nilai kurang dari 155
      if(blueValue > 155){
        color newColor = color(redValue,greenValue,0);
        img.set(x,y, newColor);
Hasil dari script diatas jika tidak ada error adalah sebagai berikut
menghilangkan warna biru dengan nilai kurang dari 155
Masih tampak beberapa warna biru yang agak gelap, sedangkan warna biru terang tidak tampak. Karena semakin kecil nilai warna, maka warna akan tampak semakin muda. Oleh karena itu ketika warna memiliki nilai maksimal 255 maka warnanya tua. Bagi yang masih saja menemukan error bisa mencoba contoh script lengkapnya sebagai berikut
PImage img;

void setup(){
  img = loadImage("img.jpg");
  size(img.width, img.height);
}

void draw(){
  image(img,0,0);
  
  for(int x = 0; x < img.width; x++){
    for(int y = 0; y < img.height; y++){
      //ambil pixel
      color oldColor = img.get(x,y);
      //hitung nilai abu2
      int redValue, greenValue, blueValue;
      //removeBlue = 0;
      redValue = (oldColor >> 16) & 0xFF;
      greenValue = (oldColor >> 8) & 0xFF;
      blueValue = oldColor & 0xFF;
  
      if(blueValue > 155){
        color newColor = color(redValue,greenValue,0);
        img.set(x,y, newColor);
      }
      
    }
  }
}

Semoga apa yang saya tuliskan tersebut dapat bermanfaat buat yang membaca. Mohon koreksinya jika ada yang salah dari tulisan saya tersebut.

You Might Also Like

0 comments

Komentar spam enggak bakal aku approve lho. Gunakan nama asli bukan keyword :p

Facebook

Subscribe