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:

1 komentar: