Ekstrak Warna di Processing

0 Comment

Link
Removeblueif
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.

Tags:

Share:

Related Post

Leave a Comment