Kecerdasan
Buatan
Jaringan Syaraf Tiruan
pada Matlab
Pendeteksi Gerak dengan
Kamera Webcam Seraca Real Time
Menggunakan Algoritma Backpropagation
Disusun
oleh
:
1.
Ahmad
Faidul Basyar (2014-53-018)
2.
Nailul
Lutfah (2014-53-057)
3.
Lia Chamidah (2014-53-063)
4.
Eny Kusrini (2016-53-122)
Kelas :
B
Progam
Studi : Sistem Informasi
FAKULTAS TEKNIK
UNIVERSITAS MURIA KUDUS
2014
1. BAB I
2. PENDAHULUAN
1.1 Latar Belakang
Deteksi Gerak (motion
detection) merupkan komponen penting pada sistem pengawasan ruang
(surveillance). Hampir setiap vendor kamera atau webcam menyertakan perangkat
lunak yang memiliki fasilitas motion detection sehingga dapat digunakan untuk
memantau suatu area atau ruangan. Jika terdapat suatu objek yang bergerak pada
ruangan yang dipantau,maka sistem akan memberikan sinyal berupa suatu alarm.
Permasalahan yang timbul
pada sistem pengawasan ruang berbasis kamera atau webcam tersebut adalah
pendeteksian yang umum sehingga objek apapun yang terdeteksi pada suatu ruangan
yang dipantau akan menyebabkan alarm berbunyi, alarm akan berbunyi dan sistem
akan mencatat blog. Penulis hanya menggunakan sebuah webcam sebagai alat sensor
serta dua tahap pemrosesan yaitu segmentasi dan klasifikasi. Segmentasi
menggunakan mean shift dan klasifikasi menggunakan JST backpropagation. Hasil
akhirnya adalah menguji kecepatan proses pendeteksian sehingga dapat dijadikan
acuan untuk mengembangkan sistem yang lebih kompleks.
3. BAB II
4. LANDASAN TEORI
2.1 Kecerdasan Buatan
Kecerdasan buatan didefinisikan sebagai kecerdasan
yang ditunjukan oleh suatu sistem atau entitas buatan. Sistem ini umumnya
adalah komputer. Kecerdasan diciptakan dan dimasukkan ke dalam komputer yang
bertujuan agar dapat melakukan pekerjaan seperti yang didlakukan manusia. Kata
“cerdas” sendiri mengacu pada kecerdasan yang dimiliki oleh manusia, antara
lain dapat belajar dan mengerti dari pengalaman. Karena meniru kecerdasan
manusia yang diimplementasikan pada komputer, maka terdapat cabang-cabang Al antara lain machine learning dan computer
vision.
2.2 Deteksi Tepi
Deteksi tepi merupakan salah satu
proses prapengolahan yang sering
dibutuhkan pada analisis citra yang
bertujuan untuk meningkatkan penampakan
garis pada citra. Jadi prosesnya
mempunyai sifat diferensiasi atau memperkuat komponen frekuensi tinggi. Tepi mencirikan
batas – batas objek dan karena itu tepi
berguna untuk proses segmentasi dan
identifikasi objek di dalam citra. Tujuan operasi pendeteksi tepi adalah untuk meningkatkan penampakan garis batas
suatu daerah atau objek di dalam citra
. Metode deteksi tepi terdiri atas
deteksi tepi dengan nilai ambang,
deteksi tepi dengan gradien pertama,
deteksi tepi dengan gradien kedua, deteksi tepi dengan gradien arah, deteksi tepi
dengan teknik geser dan selisih citra, dan deteksi segmen-segmen garis.
2.3 Inisialisasi Webcam
Untuk dapat
menggunakan webcam, terlebih dahulu dilakukan penginisialisasian. Tujuannya
adalah untuk mendapatkan jenis webcam apa saja yang dapat dipakai pada program
pendeteksian gerakan tersebut. Pengaktifan Webcam Setelah webcam
diinisialisasi, maka langkah selanjutnya adalah membuka atau mengaktifkan
webcam tersebut agar bisa dipakai. Pembacaan Citra untuk dapat memproses citra
dari kamera webcam, maka bit-bit citra tersebut harus dibaca atau dikenali terlebih dahulu. Bit-bit
tersebut disimpan dengan nama imgData. Pemrosesan Citra setelah dilakukan
pembacaan citra, maka proses selanjutnya
adalah proses pengolahan citra. Proses pengolahan citra tersebut dibagi menjadi
dua bagian, yang pertama adalah proses aras keabuan, dan yang kedua adalah
deteksi tepi.
5. BAB III
6. ANALISA ALGORITMA
Proses
pengolahan citra tersebut dibagi menjadi dua bagian, yang pertama adalah proses
aras keabuan, dan yang kedua adalah deteksi tepi.
3.1. Proses Aras Keabuan
Citra yang dipilih adalah citra
24-bit sehingga dikenali sebagai citra
RGB. Untuk menyederhanakan proses perlu diubah aras warnanya menjadi aras
keabuan, dan citra hanya memiliki tingkat atau kadar keabuan. Citra RGB adalah
citra yang tersusun dari kombinasi tiga warna dasar (merah, hijau, biru).
Ketiga warna tersebut dapat menghasilkan kombinasi warna yang sangat banyak,
sesuai dengan kadar dari setiap warna tersebut. Hal ini membuat proses
pengolahan citra menjadi kompleks dan panjang. Program yang dibuat mendeteksi
perubahan citra dalam aras keabuan. Dengan demikian citra dengan aras warna
perlu diubah ke dalam aras keabuan.
3.2. Deteksi Tepi
Suatu objek dapat dengan mudah
dideteksi pada suatu citra jika objek cukup kontras dari latar belakangnya.
Perubahan kekontrasannya dapat dideteksi dengan deteksi tepi dengan menggunakan
operator Sobel, yang menciptakan suatu citra biner dengan menggunakan suatu
nilai ambang khusus. Untuk menentukan citra biner dengan menggunakan fungsi
tepi.
3.3 Proses Pendeteksian Gerak
Dari proses deteksi tepi, maka akan didapat informasi
mengenai bit dari citra-citra yang tertangkap kamera, data tersebut
masing-masing disimpan dengan nama background. Frame dan current Frame. Proses
perbandingan dilakukan dengan cara mengurangkan dua buah data tersebut,
sehingga dapat diketahui apakah ada perbedaan atau tidak
3.4 Keaslian Gambar Webcam
Penentuan
posisi webcam dan pencahayaan memiliki pengaruh besar dalam pengenalan objek,
untuk itu dibutuhkan pengesetan webcam dan pencahayaan yang cukup. Tingkat
kemampuan program pendeteksi gerakan akan cenderung menurun, dikarenakan webcam tidak dapat merekam gambar
secara sempurna. Sensitivitas webcam
untuk mendeteksi suatu objek tergantung
pada cahaya objek tersebut. Apabila pada cahaya semakin terang, tingkat
sensitivitas webcam semakin bagus. Namun apabila pada cahaya semakin gelap. tingkat
sensitivitas webcam semakin menurun.
Kualitas webcam juga berpengaruh untuk mengolah
citra yang dihasilkan dari kecepatan pergerakan objek tersebut. Apabila benda bergerak terlalu cepat dengan
kualitas webcam yang bagus, maka akan memperoleh hasil pengolahan citra yang
maksimal.
7. BAB IV
8. IMPLEMENTASI
Implementasi dilakukan dengan
menggunakan software Matlab 7.10.0 (R2010a).
Gambar 4.1 : Matlab R2010a.
Langkah – langkah Implementasi :
1.
Buka Matlab lalu pilih “File” à “New” à “GUI”.
Gambar 4.2 : Buat GUI.
2.
Pilih Tab “Create New GUI” pilih
“Blank GUI” à “OK”.
Gambar 4.3 : Jenis GUI.
3.
Buat GUI seperti gambar berikut
lalu simpan dengan nama “MOTION”.
Tag :
Axes2 Axes3 Text3 Text5 Text4 Pushbutton1 Pushbutton2
|
Gambar 4.4 : Design GUI.
4.
Buka Matlab. Pilih “File” à “New” à “Function”, tuliskan kode dibawah ini
lalu simpan dengan nama “MOTION”.
Gambar 4.5 : SS Source Code MOTION.
function varargout = MOTION(varargin)
%
Edeted by Nama Kelompok :
% 201453018 - AHMAD FAIDUL BASYAR
% 201453057 - NAILUL LUTFAH
% 201453063 - LIA CHAMIDAH
% 201653122 - Eny Kusrini
%
MOTION MATLAB code for MOTION.fig
% MOTION, by itself, creates a new MOTION
or raises the existing
% singleton*.
%
% H = MOTION returns the handle to a new
MOTION or the handle to
% the existing singleton*.
%
%
MOTION('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MOTION.M with
the given input arguments.
%
% MOTION('Property','Value',...) creates a
new MOTION or raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before
MOTION_OpeningFcn gets called. An
% unrecognized property name or invalid
value makes property application
% stop.
All inputs are passed to MOTION_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools
menu. Choose "GUI allows only one
% instance to run (singleton)".
%
%
See also: GUIDE, GUIDATA, GUIHANDLES
%
Edit the above text to modify the response to help MOTION
%
Last Modified by GUIDE v2.5 01-Nov-2016 05:16:06
%
Begin initialization code - DO NOT EDIT
gui_Singleton
= 1;
gui_State
= struct('gui_Name', mfilename, ...
'gui_Singleton',
gui_Singleton, ...
'gui_OpeningFcn', @MOTION_OpeningFcn, ...
'gui_OutputFcn',
@MOTION_OutputFcn, ...
'gui_LayoutFcn',
[] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback =
str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] =
gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
%
End initialization code - DO NOT EDIT
%
--- Executes just before MOTION is made visible.
function MOTION_OpeningFcn(hObject, eventdata, handles, varargin)
%
This function has no output args, see OutputFcn.
%
hObject handle to figure
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
%
varargin command line arguments to
MOTION (see VARARGIN)
%
Choose default command line output for MOTION
handles.output
= hObject;
%
Update handles structure
guidata(hObject,
handles);
%
UIWAIT makes MOTION wait for user response (see UIRESUME)
%
uiwait(handles.MOTION);
%
--- Outputs from this function are returned to the command line.
function varargout = MOTION_OutputFcn(hObject, eventdata, handles)
%
varargout cell array for returning
output args (see VARARGOUT);
%
hObject handle to figure
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
%
Get default command line output from handles structure
varargout{1}
= handles.output;
%
--- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton1 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
global vid
%imaqreset;
error=50;
s=25;
vid=videoinput('winvideo',1,'YUY2_640x480');% take video input
triggerconfig(vid,'manual'); % after triggering only we get video
set(vid,'FramesPerTrigger',1); %only 1
frame per trigger
set(vid,'TriggerRepeat', Inf); %repeating
trigger infinite timf
set(vid,'ReturnedColorSpace','rgb');% colour
space used is rgb
i=0;
start(vid);% video is started
%adjusting
for background noise
for n=1:50
trigger(vid);
temp=getdata(vid,1);
f(:,:,mod(n,2)+1)=temp(2);
g=f(:,:,1)~=f(:,:,2);
imshow(g);
%sm(1,n)=backgroundcheck(g);
end
clear g;
clear temp;
%f=zeros(480,640,2);
%s=max(sm(25:50));
if (nargin==0)
error=2;
end
s=(s*(error+100))/100;% calculate sensitivity
clear sm;
clc
disp('backbround sensitivity=');%display sensitivity
disp(s);
disp('MOTION DETECTOR ON ->');
set(handles.text3,'String','Pendeteksi
Gerak = Nyala.');
prev=getsnapshot(vid);%take video snpshot as previous one
while(1)
%
for mk=1:100
j=0;
trigger(vid);
temp=getdata(vid,1);% take video data
axes(handles.axes2); %point to the axes where u want to display the frame
imshow(temp); %show the
frame on axes
g=getsnapshot(vid); %get current frame
%f(:,:,mod(i,2)+1)=temp;
%g=f(:,:,1)~=f(:,:,2);
%g=rgb2gray(g);
a=prev-g; %take
difference between 2 frames
a=rgb2gray(a);
%compp=sum(sum(a));
%disp(compp);
%err=((s/10)*100*50);
%disp(err);
prev=g; % store
current frame as previous frame
if((sum(sum(a))/100)>(s/10)*100*50)%check if
difference between frames is greater than threshold
captur = datestr(clock, 'dd-mmm-yyyy-HH-MM-SS-FFF');
disp(['motion
detected. capture "',captur,'.jpeg"']);%yes than motion detected
axes(handles.axes3);
imshow(a);%show
difference as snapshot
imwrite(g,[captur,'.jpeg']);%store
difference to folder
j=j+1;%
continue the loop
set(handles.text4,'String','Gerak
Terdeteksi.');
set(handles.text5,'String',['Gambar
terakhir diambil "',captur,'.jpeg".']);
else
disp('no
motion');
set(handles.text4,'String','Tidak ada
Pergerakan.');
pause(0.2)
end
if(mod(j,6)==0) %check if motion detected 6 times
% y=y(1:3000); % to play the alarm
% 0
for a=1:4
% wavplay(y,4500,'sync');
% end
end
% disp('difference');
% disp(sum(sum(sum(a))));
i=i+1;%continue
the loop
%end
%end
%global
vid
%stop(vid);
end
%
--- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
%
hObject handle to pushbutton2 (see
GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
set(handles.text3,'String','Pendeteksi
Gerak = Mati.');
set(handles.text4,'String','-');
global vid
stop(vid);
%
to stop the video
function edit1_Callback(hObject, eventdata, handles)
%
hObject handle to edit1 (see GCBO)
%
eventdata reserved - to be defined in a future
version of MATLAB
%
handles structure with handles and
user data (see GUIDATA)
%
Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String'))
returns contents of edit1 as a double
%
--- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
%
hObject handle to edit1 (see GCBO)
%
eventdata reserved - to be defined in a
future version of MATLAB
%
handles empty - handles not created
until after all CreateFcns called
%
Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
5.
Berikut Screenshot Hasil.
Gambar 4.6 : Hasil.
9. BAB V
10.
PENUTUP
5.1
Kesimpulan
Berdasarkan hasil
pengujian sistem dan analisa secara menyeluruh maka dapat ditarik beberapa
kesimpulan sebagai berikut :
1.
Posisi terbaik yang dapat
dideteksi oleh sistem adalah berjarak masimal 2 meter dari webcam.
2.
Jika jarak obyek (manusia) sangat
dekat dengan webcam,maka sistem akan menampilkan proses error yang mengacu pada
file dengan menggunakan openCV yang direkomendasikan untuk proses intel. Hal
ini dapat dilihat pada hasil pengujian pertama dimana jarak objek (manusia) ke
webcam adalah 0,1 meter.
5.2
Saran
Setelah melakukan
penelitan menggunakan JST, maka penulis dapat memberikan saran untuk
pengembangan sistem lebih lanjut :
1.
Untuk membangun sistem real-time
diperlukan perangkat keras sehingga pemroses iterasi JST dapat berlangsung
dengan cepat hal ini terlihat pada jumlah neuron yang digunakan yaitu sebanyak
1500 neuron.
2.
Perlu ditambahkan beberapa buah
classifier misalnya klasifikasi warna kulit, deteksi wajah dan JST yang telah
dikoreksi parameternya baik bobot awal pada lapisan output sehingga dapat
menghasilkan sistem pendeteksian manusia yan mantap.
11.
DAFTAR PUSTAKA
Tidak ada komentar:
Posting Komentar