Selasa, 27 Agustus 2013

Deteksi Gerak Objek Berwarna Merah Secara Live Video Menggunakan MATLAB

Berikut adalah program MATLAB untuk mendeteksi objek bergerak berdasarkan warnanya, dalam hal ini warna bola merah.

close all;
clear all;
clc;

% spesifikasi format webcam yang digunakan
vid=videoinput('winvideo',1,'RGB24_640x480');
set(vid,'TriggerRepeat',Inf);
vid.returnedcolorspace='rgb';
vid.FrameGrabInterval=2;

start(vid)

while(vid.FramesAcquired<=100)
    % mengambil citra dari video
    data = getsnapshot(vid);
    % Untuk mendeteksi objek berwarna merah yang bergerak
    % Diperlukan pengurangan komponen warna merah
    % Mengekstrak komponen warna merah dari citra grayscale
    diff_im = imsubtract(data(:,:,1), rgb2gray(data));
    % Filterisasi menggunakan filter median untuk menghilangkan noise
    diff_im = medfilt2(diff_im, [3 3]);
    % Konversi grayscale ke biner
    diff_im = im2bw(diff_im,0.18);
    % Menghilangkan semua pixel kurang dari 300 px
    diff_im = bwareaopen(diff_im,300);
    % Memberi label semua komponen yang terkoneksi pada citra
    bw = bwlabel(diff_im, 8);

    % Berikut ini adalah sintak untuk mengkarakterisasi tiap bagian label.
    stats = regionprops(bw, 'BoundingBox', 'Centroid');
 
    % Menampilkan citra hasil snapshot
    imshow(data)
 
    hold on
 
    % Berikut adalah logika loop untuk membuat box kotak yang mengitari objek warna merah.
    for object = 1:length(stats)
        bb = stats(object).BoundingBox;
        bc = stats(object).Centroid;
        rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
        plot(bc(1),bc(2), '-m+')
        a=text(bc(1)+15,bc(2),strcat('X:',num2str(round(bc(1))),'Y:',num2str(round(bc(2)))));
        set(a,'FontName','Arial','FontWeight','bold','FontSize',12,'Color','red');
    end
 
    hold off
    end
end
stop(vid)



Output Program:

Gamabar 1. Deteksi warna dengan Live Video menggunakan MATLAB


Dari pendeteksian warna ini, kita akan memperoleh data kordinat XY dari frame pixel, sehingga ketika pbjek bergerak, perubahan posisinya akan terekam dan dapat disimpan untuk keperluan lainnya menggunakan fungsi Tic Toc pewaktu MATLAB. Untuk contohnya adalah ketika objek bola merah diatas digerakan maka akan diperoleh pendeteksian lintasan objek berikut:


Gambar 2. Deteksi perubahan posisi objek tiap waktu


Copyright @ 2013 Mada Sanjaya WS, Ph.D (Profesor Bolabot)

Untuk keterangan lebih lanjut dapat menghubungi:

madasws@gmail.com
madasws@uinsgd.ac.id

Share:
Read More

Minggu, 25 Agustus 2013

Konsep Dasar Robot Vision

Robot Vision adalah robot digital yang memiliki penglihatan berupa webcam. Prinsip kerja robot vision sebenarnya sama dengan konsep robot digital yang lain, pada robot vision webcam berfungsi sebagai sensorr penglihatan yang dapat mendeteksi objek di sekitarnya. Berikut adalah gambaran sederhana robot vision:

Gambar 1. Konsep Robot Vision

Konsep robot vision adalah objek akan dideteksi oleh webcam, sistem pendeteksian ini menggunakan konsep image/video processing biasa secara real time menggunakan software MATLAB atau sejenisnya, kemudian setelah objek terdeteksi kordinatnya maka MATLAB akan mengirimkan perintah berupa karakter melalui komunikasi serial komputer dan mikrokontroler, perintah MATLAB ini akan diterjemahkan oleh Program di dalam mikrokontroler yang kemudian akan menggerakan motor sesuai dengan perintah karakter tersebut. Pada postingan selanjutnya akan dibahas banyak tentang tahapan pembuatan robot vision.



Share:
Read More

Deteksi Warna dari File Citra

MEMBUAT FUNGSI DETEKSI WARNA RGB SEMPURNA

Hal yang harus dipahami terlebih dahulu sebelum membahas hal ini adalah tentang apa itu fungsi? Fungsi seperti yang diketahui, dibuat untuk mengorganisasi kode program agar efisien dan membuat proses debugging menjadi lebih mudah. Sekumpulan statement didalam fungsi bisa dieksekusi dan ketika diperlukan dapat dipanggil tanpa menulis ulang koding didalam fungsi tersebut. Data yang diperlukan didalam fungsi bisa dilalui sebagai argumen dan kemudian nilai hasilnya akan dikembalikan. Fungsi disimpan sebagai m-file dengan nama yang sama dengan nama fungsi tersebut.

Pengujian Program Deteksi Warna RGB

Misalkan kita akan menguji file gambar 2.jpg berikut:

Gambar 1. File gambar 2.jpg sebagai file yang di uji

Fungsi Deteksi Warna Merah

Pada contoh berikut kita akan membuat fungsi yang mengambil masukan citra color dan mengembalikan hasilnya menjadi citra biner dimana pixel – pixel merah akan diganti dengan warna putih dan sisanya (yang tidak berpixel merah) akan diganti dengan warna hitam.

Proyek 17. Deteksi Warna Merah

function [binmerah, num]=merah(im)
[m,n,t]=size(im);
binmerah=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==255 && im(i,j,2)==0 && im(i,j,3)==0)
% Komponen hijau dan biru bernilai nol dan merah bernilai 255
binmerah(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Merah
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=merah(I); % memanggil fungsi merah
n

%menampilkan bagian warna yang merah
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA MERAH');

Output Pengujian Deteksi Merah

(a)
(b)
Gambar 2. Output deteksi warna merah

Fungsi Deteksi Warna Hijau

Dengan logika yang sama seperti fungsi merah, pada fungsi hijau dimana pixel – pixel hijau akan diganti dengan warna putih dan sisanya (yang tidak berpixel hijau) akan diganti dengan warna hitam.

Proyek 18. Deteksi Warna Hijau

function [binhijau, num]=hijau(im)
[m,n,t]=size(im);
binhijau=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==0 && im(i,j,2)==255 && im(i,j,3)==0)
% Komponen merah dan biru bernilai nol dan hijau bernilai 255
binhijau(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Hijau
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=hijau(I); % memanggil fungsi hijau
n
%menampilkan bagian warna yang hijau
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA HIJAU');

Output Pengujian Deteksi Hijau
(a)
(b)
Gambar 3. Output deteksi warna hijau

Fungsi Deteksi Warna Biru

Dengan logika yang sama seperti fungsi merah, pada fungsi biru dimana pixel – pixel biru akan diganti dengan warna putih dan sisanya (yang tidak berpixel biru) akan diganti dengan warna hitam.

Proyek 19. Deteksi Warna Biru

function [binbiru, num]=biru(im)
[m,n,t]=size(im);
binbiru=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==0 && im(i,j,2)==0 && im(i,j,3)==255)
% Komponen merah dan hijau bernilai nol dan biru bernilai 255
binbiru(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Biru
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=biru(I); % memanggil fungsi biru
n
%menampilkan bagian warna yang biru
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA BIRU');

Output Pengujian Deteksi Biru

(a)
(b)
Gambar 4. Output deteksi warna biru

Fungsi Deteksi Warna Kuning

Warna kuning merupakan warna yang tidak berdiri sendiri, warna kuning dibentuk dari warna dasar merah dan hijau. Kemudian warna kuning akan diganti dengan warna putih dan sisanya (yang tidak kuning) akan diganti dengan warna hitam.

Proyek 20. Deteksi Warna Kuning

function [binkuning, num]=kuning(im)
[m,n,t]=size(im);
binkuning=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==255 && im(i,j,2)==255 && im(i,j,3)==0)
% Komponen biru bernilai nol dan merah dan hijau bernilai 255
binkuning(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Kuning
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=kuning(I); % memanggil fungsi kuning
n

%menampilkan bagian warna yang kuning
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA KUNING');

Output Pengujian Deteksi Kuning

(a)
(b)
Gambar 5. Output deteksi warna kuning

Fungsi Deteksi Warna Magenta

Warna magenta merupakan warna yang tidak berdiri sendiri, warna magenta dibentuk dari warna dasar merah dan biru. Kemudian warna magenta akan diganti dengan warna putih dan sisanya (yang tidak magenta) akan diganti dengan warna hitam.
Proyek 21. Deteksi Warna Magenta

function [binmagenta, num]=magenta(im)
[m,n,t]=size(im);
binmagenta=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==255 && im(i,j,2)==0 && im(i,j,3)==255)
% Komponen hijau bernilai nol dan biru dan merah bernilai 255
binmagenta(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Magenta
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=magenta(I); % memanggil fungsi magenta
n
%menampilkan bagian warna yang magenta
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA MAGENTA');

Output Pengujian Deteksi Magenta

(a)
(b)
Gambar 6. Output deteksi warna magenta

Fungsi Deteksi Warna Cyan

Seperti kuning dan magenta, warna cyan merupakan warna yang tidak berdiri sendiri, warna cyan dibentuk dari warna dasar hijau dan biru. Kemudian warna cyan akan diganti dengan warna putih dan sisanya (yang tidak cyan) akan diganti dengan warna hitam.

Proyek 22. Deteksi Warna Cyan

function [bincyan, num]=cyan(im)
[m,n,t]=size(im);
bincyan=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==0 && im(i,j,2)==255 && im(i,j,3)==255)
% Komponen merah bernilai nol dan hijau dan biru bernilai 255
bincyan(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Cyan
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=cyan(I); % memanggil fungsi cyan
n
%menampilkan bagian warna yang cyan
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA CYAN');

Output Pengujian Deteksi Cyan

(a)
(b)
Gambar 7. Output deteksi warna cyan

Fungsi Deteksi Warna Putih

Warna putih merupakan warna kombinasi dari merah, hijau, dan biru. Kemudian warna tidak putih akan diganti dengan warna hitam.

Proyek 23. Deteksi Warna Putih

function [binputih, num]=putih(im)
[m,n,t]=size(im);
binputih=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==255 && im(i,j,2)==255 && im(i,j,3)==255)
% Komponen komponen bernilai 255
binputih(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Putih
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=putih(I); % memanggil fungsi putih
n
%menampilkan bagian warna yang putih
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA PUTIH');

Output Pengujian Deteksi Putih
                   
(a)
(b)
             Gambar 8. Output deteksi warna putih

Fungsi Deteksi Warna Hitam

Warna hitam merupakan warna ketika semua pixel warna merah, hijau, dan biru bernilai nol. Kemudian warna yang terdeteksi hitam akan diubah menjadi pputih, sebaliknya warna tidak hitam akan diganti dengan warna hitam.

Proyek 24. Deteksi Warna Hitam

function [binhitam, num]=hitam(im)
[m,n,t]=size(im);
binhitam=zeros(m,n); num=0;
for i=1:m
for j=1:n
if(im(i,j,1)==0 && im(i,j,2)==0 && im(i,j,3)==0)
% Komponen komponen bernilai 0
binhitam(i,j)=1;
num=num+1;
end
end
end

Program Pengujian Deteksi Hitam
%membaca file citra
I=imread('gambar 2.jpg');
[img, n]=hitam(I); % memanggil fungsi hitam
n
%menampilkan bagian warna yang putih
imshow(I), title('GAMBAR BERWARNA RGB');
figure, imshow(img), title('DETEKSI WARNA HITAM');

Output Pengujian Deteksi Hitam

(a)
(b)
Gambar 9. Output deteksi warna hitam


Copyright 2013@ Mada Sanjaya WS, Ph.D
Share:
Read More