1/24/2015

Segmentasi Citra berdasarkan Warna menggunakan Octave

Seperti yang sudah kita ketahui, image atau citra adalah suatu imitasi dari sebuah objek yang tersusun dari kombinasi titik, garis, bidang dan warna seperti foto, lukisan dan sebagainya. Contoh paling mudah adalah saat kita mengambil foto dengan handphone kita. Pernahkah kalian mengecek bahwa foto tersebut sesungguhnya terdiri atas 3 buah warna: merah (Red), hijau (Green), dan biru (Blue)? tersusun dari dari deretan angka antara 0 sampai 255? dan sangat mudah untuk dimanipulasi?

Yup, kita akan membuat sebuah program sederhana menggunakan octave yakni segmentasi.
Perhatikan gambar di bawah ini. (pastikan komputer anda sudah terinstall octave di link ini)


example.jpg

Gambar tersebut tersusun atas 3 warna yakni R, G, dan B. Sangat mudah untuk mengecek ketiga warna ini di octave. ketik saja di command line

>> data = imread('example.jpg');
>> whos


maka akan tampil seperti berikut ini.

-------------------------------------------------------------
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  =====
        data      375x500x3                 562500  uint8

Total is 562500 elements using 562500 bytes

-------------------------------------------------------------

375x500x3 artinya tinggi citra 375 piksel, lebar citra 500 piksel, dan '3' menunjukkan bahwa citra ini adalah citra RGB.

Nah, sekarang kita akan melakukan segmentasi pada foto di atas. Kita hanya akan menampilkan piksel yang memiliki nilai merah (red) antara 0 dan 255, hijau (green) antara 150 dan 255, dan biru (blue) antara 0 dan 50. Copy code octave di bawah ini ke editor octave dan simpan dalam satu folder dengan foto di atas, kemudian run atau F5.


-------------------------------------------------------------
close all
clear
clc

% baca image
data = imread('example.jpg');

% tampilkan original image
figure
imshow(data)

% Parameter Seleksi
Rmin = 0;
Rmax = 255;
Gmin = 150;
Gmax = 255;
Bmin = 0;
Bmax = 50;

% Komponen R, G, dan B
R = data(:,:,1);
G = data(:,:,2);
B = data(:,:,3);

% Segmentasi
id = R >= Rmin & R <= Rmax & G >= Gmin & G <= Gmax & B >= Bmin & B <= Bmax;
data(:,:,1) = data(:,:,1).*id;
data(:,:,2) = data(:,:,2).*id;
data(:,:,3) = data(:,:,3).*id;

% tampilkan hasil segmentasi
figure
imshow(data)

-------------------------------------------------------------

Hasilnya seperti di bawah ini.


Code-nya bisa didownload di link ini.
Selamat mencoba.

1 comment: