programnya

close all;
clear all;
clc;

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

start(vid)

while(vid.FramesAcquired<=100)% frame harus lebih besar dari tic toc
    tic
    for f=1:50;% nilai ini harus lebih kecil dari frame
    % mengambil citra dari video
    data = getsnapshot(vid);
    %proses flip agar posisi citra berhadapan dengan objek
    R=data(:,:,1);
    R=fliplr(R);
    G=data(:,:,2);
    G=fliplr(G);
    B=data(:,:,3);
    B=fliplr(B);
    data=cat(3,R,G,B);
    % 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+')
        sumbux(f)=bc(1);
        sumbuy(f)=bc(2);
       
        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)
t=toc;
t1=t/50:t/50:t

% menampilkan grafik gerak objek
figure
subplot(3,1,1)
plot(t1,sumbux,'r-')
xlabel('Waktu t(s)')
ylabel('Kordinat x')
title('Kordinat x terhadap t','fontsize',14,'fontname','Arial')
subplot(3,1,2)
plot(t1,sumbuy,'r-')
xlabel('Waktu t(s)')
ylabel('Kordinat y')
title('Kordinat y terhadap t','fontsize',14,'fontname','Arial')
subplot(3,1,3)
plot(sumbux,sumbuy,'r-')
xlabel('Kordinat x')
ylabel('Kordinat y')
title('Kordinat y vs x','fontsize',14,'fontname','Arial')


0 comments:

Post a Comment

 
Cyber Code © 2014. All Rights Reserved. Powered by Blogger
Top