Senin, 07 Juli 2014

Mendeteksi Objek Berdasarkan Warna Menggunakan MATLAB

Halloo semua... pada kesempatan kali ini kita akan membahas bagaimana caranya mendeteksi objek berdasarkan warnanya menggunakan MATLAB. Untuk menjalankannya, kita harus memiliki Image Processing Toolbox pada MATLAB. Namun, jika kita ingin mengambil gambar langsung dari webcam, kita harus memiliki Image Acquisition Toolbox. Pembahasan mengenai penggunaan webcam telah kita bahas sebelumnya disini.Untuk pembahasan kali ini, kita akan menggunakan file citra yang sudah kita buat sebelumnya, bukan hasil tangkapan kamera.

Walaupun sederhana, konsep deteksi warna yang akan kita bahas kali ini dapat menjadi dasar dari robot vision, yaitu robot yang menggunakan sensor visi (kamera) dalam operasinya. Nah, bagimana langkah-langkahnya? Mari kita simak uraiannya, sebagai berikut:

Pertama, buatlah sendiri gambar kita, misalnya di program Paint (pada OS Windows). Misalnya gambar kita adalah kumpulan beberapa objek dengan warna dan bentuk yang berbeda, seperti berikut:




Pada Gambar di atas, kita akan mencoba mendeteksi warna merah (murni merah), yaitu objek yang berbentuk bintang. Pastikan bahwa ini murni warna merah. Caranya, jika kita menggunakan  Paint (atau software lainnya), Pastikan nilai RGB-nya. Dalam hal ini, kita nol-kan komponen G dan B, dan buatlah R memiliki nilai penuh (misal 255, jika menggunakan 8-bit). Amati gambar di bawah ini:



Selanjutnya,kita simpan gambar kita, misalnya dengan nama warnawarni.bmp. Kita simpan di folder default MATLAB, yaitu di Documents\MATLAB.

Jalankan program MATLAB. Buatlah script baru, misalnya kita beri nama deteksiMerah.m, sebagai berikut:

 function [merah]=deteksiMerah(gambar)  
  [m,n,~]=size(gambar);  
  merah=zeros(m,n);  
  for i=1:m  
   for j=1:n  
     if(gambar(i,j,1)==255 && gambar(i,j,2)==0 && gambar(i,j,3)==0)       
       merah(i,j)=1;        
     end  
   end  
 end  

Selanjutnya, panggil gambar warnawarni.bmp pada Command Window dengan perintah imread, dan tampilkan hasilnya menggunakan perintah imshow, sebagai berikut:

 >> I = imread('warnawarni.bmp');  
 >> imshow(I)  


Kemudian, jalankan fungsi kita yaitu deteksiMerah.m dan amati hasilnya.


 >> ObjekMerah = deteksiMerah(I);  
 >> imshow(ObjekMerah);  


Yuppp... menarik, bukan? selanjutnya kita bisa mencoba mendeteksi warna lainnya, dengan cara mengatur nilai pada sintaks:

 if(gambar(i,j,1)==255 && gambar(i,j,2)==0 && gambar(i,j,3)==0)  


Misalnya, untuk mendeteksi objek berwarna hijau saja, kita bisa gunakan sintaks, sebagai berikut:

 if(gambar(i,j,1)==0 && gambar(i,j,2)==255 && gambar(i,j,3)==0)  




Kita juga bisa kombinasikan warna apapun yang kita suka untuk mendetaksi suatu benda. Yuppp.. demikian pembahasan kita kali ini... semoga bermanfaat.

2 komentar:

fe mengatakan...
Komentar ini telah dihapus oleh pengarang.
fe mengatakan...

ternyata harus bener bener di bikin dulu di paint, kalo asal save gambar dg nilai bukan 255 ndak bisa :) terima kasih untuk ilmunya kakak.. moga sukses selalu