Anda di halaman 1dari 25

SISTEM KEMUDI OTOMATIS PADA KENDARAAN DALAM GAME 3D

MENGGUNAKAN PATTERN RECOGNITION

Laporan Tugas Besar

Mata Kuliah Computer Vision

Disusun oleh
Arianto Anggoro (1103140148)
Awal Rais Sanubari (1103144038)
Desti Mina Rahayu (1103144027)
Gema Wahyu Saputra (1103140053)
Ilham Majid Rabbani (1103142073)
Kuncoro Triandono Mukti (1103144026)

Program Studi Sistem Komputer

FakultasTeknik Elektro

Universitas Telkom

2018

i
DAFTAR ISI

BAB I PENDAHULUAN ........................................................................................................................... 1


1.1 Latar Belakang .................................................................................................................................. 1
1.2 Rumusan Masalah ............................................................................................................................ 1
1.3 Tujuan ................................................................................................................................................ 2
1.4 Batasan Masalah ............................................................................................................................... 2
BAB II KAJIAN PUSTAKA ..................................................................................................................... 3
2.1 Pengenalan Pola ................................................................................................................................ 3
2.2 Pre- Processing .................................................................................................................................. 4
2.3 Konversi Pola Menjadi Perintah ..................................................................................................... 4
BAB III PERANCANGAN DAN IMPLEMENTASI ............................................................................. 6
3.1 Perancangan Sistem .......................................................................................................................... 6
3.2 Segmentasi Warna ............................................................................................................................ 6
3.3 Jaringan Saraf Tiruan ...................................................................................................................... 7
i. Struktur Jaringan ....................................................................................................................... 7
ii. Pelatihan dan Pengujian data .................................................................................................... 7
iii. Hasil Akurasi ............................................................................................................................... 9
BAB IV PENGUJIAN............................................................................................................................... 10
BAB V KESIMPULAN ........................................................................................................................... 15
BAB VI SOURCE CODE ........................................................................................................................ 16

ii
BAB I
PENDAHULUAN

1.1 Latar Belakang


Dalam Computer vision tidak akan terlepas dari pengolahan citra baik itu dari vidio atau
dari sebuah gambar. Dalam Computer vision gambar atau citra dapat didefinisikan sebagai
salah satu koponen multimedia yang memegang peran penting sebagai bentuk informasi visual.
Computer Vision sering didefinisikan sebagai salah satu cabang ilmu pengetahuan yang
mempelajari bagaimana komputer dapat mengenali obyek yang diamati atau diobservasi.
Cabang ilmu ini bersama intelijensia semu (Artificial Intelligence) akan mampu menghasilkan
sistem intelijen visual (Visual Intelligence System).
Computer vision merupakan proses otomatis yang mengintegrasikan sejumlah besar proses
untuk persepsi visual, seperti akuisisi citra, pengolahan citra, pengenalan dan membuat
keputusan. Computer vision mencoba meniru cara kerja sistem visual manusia (human vision)
yang sesungguhnya sangat kompleks. Untuk itu, computer vision diharapkan memiliki
kemampuan tingkat tinggi sebagaimana human visual.
Computer Vision adalah kombinasi antara pengolahan citra dan pengenalan pola.
Pengolahan Citra (Image Processing), bidang yang berhubungan dengan proses transformasi
citra/gambar (image). Proses ini bertujuan untuk mendapatkan kualitas citra yang lebih baik.
Pengenalan Pola (Pattern Recognition), bidang ini berhubungan dengan proses identifikasi
obyek pada citra atau interpretasi citra. Proses ini bertujuan untuk mengekstrak
informasi/pesan yang disampaikan oleh gambar/citra. Pada proyek ini akan di gunakan
penggunaan pengenalan pola untuk menggerakan mobil untukmaju, mundur, kiri, dan kanan
dalam sebuah game.

1.2 Rumusan Masalah


Berdasarkan latar belakang, rumusan maslah pada proyek ini di tampilkan pada poin-poin di
bawah:
1. Mengetahui apakah sistem dapat mengenali pola yang di tampilkan pada kamera ?
2. Apakah sistem dapat mengkonversi pola yang di deteksi menjadi perintah ?
3. Apakah data latih dapat mencapai nilai akurasi yang sudah di tentukan ?

1
1.3 Tujuan
Berdasarkan rumusan masalah di atas, maka tujuan dari proyek ini adalah sebagai berikut:
1. Sistem yang dibuat dapat mengenali pola yang ditampikan pada kamera.
2. Sistem yang dibuat dapat mengkonversi pola yang di deteksi dan di ubah menjadi perintah.
3. Nilai akurasi data latih mencapai ≥80%.

1.4 Batasan Masalah


Adapun batasan masalah dari proyek tugas besar ini adalah sebagai berikut:
1. Jarak antara pola yang dideteksi dengan webcam berkisar 15cm.
2. Metode yang digunakan pada pengenalan pola adalah Jaringan Saraf Tiruan (JST)
Backpropagation.
3. Data lath terdiri dari 4 pola yang berbeda. Setiap pola memiliki 16 data latih.
4. Pengujian dilakukan pada pencahayaan yang redup.

2
BAB II
KAJIAN PUSTAKA

2.1 Pengenalan Pola


Pengenalan pola (pattern recognition) merupakan bidang dalam pembelajaran mesin dan
dapat diartikan sebagai tindakan mengambil data mentah dan bertindak berdasarkan klasifikasi
data" [1] [2]. Dengan demikian, ia merupakan himpunan kaidah bagi pembelajaran diselia
(supervised learning). Ada beberapa definisi lain tentang pengenalan pola, di antaranya,
penentuan suatu objek fisik atau kejadian ke dalam salah satu atau beberapa kategori, ilmu
pengetahuan yang menitikberatkan pada deskripsi dan klasifikasi (pengenalan) dari suatu
pengukuran, dan suatu pengenalan secara otomatis suatu bentuk, sifat, keadaan, kondisi,
susunan tanpa keikutsertaan manusia secara aktif dalam proses pemutusan.
Pengenalan pola biasanya merupakan langkah perantaraan bagi proses lebih lanjut.
Langkah ini biasanya merupakan dapatan data (gambar, bunyi, teks, dll.) untuk dikelaskan,
pre-pemrosesan untuk menghilangkan gangguan atau menormalkan gambar dalam satu cara
(pemrosesan gambar (image processing), teks dll.), pengiraan ciri-ciri, pengkelasan dan
akhirnya post-pemrosesan berdasarkan kelas pengenalan dan aras keyakinan.
Pengenalan pola itu sendiri khususnya berkaitan dengan langkah pengkelasan. Dalam
kasus tertentu, sebagaimana dalam jaringan saraf (neural networks), pemilihan ciri-ciri dan
pengambilan juga boleh dilaksanakan secara semi otomatis atau otomatis sepenuhnya.
Artificial Neural Network (ANN) adalah suatu struktur kompleks yang dikembangakan
berdasarkan aktivitas neuron pada otak manusia [3]. McCulloch dan Pitts [4] memperkenalkan
ANN sebagai representasi dari proses sinaptik yang terjadi pada otak manusia. Secara umum
ANN memiliki tiga lapisan yaitu, lapisan input, lapisan tersembunyi, dan lapisan output. ANN
sering kali digunakan untuk menghitung suatu nilai yang bersifat real time dan non linear time
series di bidang elektronik,hidrologi dan manufaktur engineering [5].
Back Propagation Neural Network (BPN) adalah model dari ANN yang paling sering
digunakan [6]. Algoritma BPN melakukan penyesuaian parameter ( nilai bobot dan nilai bias
) secara berulang agar meminimalisir error antara nilai target output dengan nilai output aktual.
Perubahan nilai bobot dan nilai bias akan berhenti sampai dengan nilai error goal tercapai.

3
Metode ini memiliki tiga fase dalam melakukan training back propagation, yaitu feed
forward, back propagation, dan fase untuk merubah atau memodifikasi nilai bobot. Ketiga fase
ini akan terus melakukan iterasi atau pengulangan sampai kondisi penghentian terpenuhi.
Pada saat proses training dari beberapa sampel yang telah disediakan, nilai dari fungsi
aktivasi pada setiap neuron akan menyebar dan melatih data mulai dari input layer lalu
melewati middle layer sampai dengan output layer dimana setiap neuron menghasilkan input
response masing-masing.

2.2 Pre- Processing


Pada Pre – Processing dalam proyek ini adalah segmentasi warna atau segmentasi citra
merupakan suatu proses yang bertujuan untuk memisahkan antara region foreground dengan
region background. Pemisahan tersebut didasarkan pada perbedaan karakteristik masing-
masing region yang mencolok.
Pada contoh pemrograman ini, dilakukan segmentasi citra berdasarkan pada perbedaan
warna antara foreground dengan background. Dalam citra digital, warna yang merupakan
spektrum cahaya tampak (merah, jingga, kuning, hijau, biru, ungu) direpresentasikan oleh nilai
Hue. Oleh sebab itu, proses segmentasi citra pada pemrograman ini dilakukan pada ruang
warna HSV (Hue, Saturation, Value).

2.3 Konversi Pola Menjadi Perintah


Image yang di terima akan di olah dan menjadi input dan di ubah menjadi perintah dalam
matlab dengan menggunakan java.awt.Robot. Java.awt.ini digunakan untuk mengubah
perintah gambar menjadi sebuah perintah untuk menekan tombol pada keyboard, misialnya
jika pada kamera di perlihatkan gambar segilima maka akan otomatis menekan tombol w atau
dalam game adalah perintah untuk mundur.
Akan lebih terlihat dalam tabel jika dalam parameter 0 maka akan menekan tombol w dan
a, parameter 3 akan menekan tombol w, parameter 4 akan menekan tombol w dan d, lalu yang
terakhir adalah parameter 5 yang menekan tombol s saja.

4
Gambar 2.1 Parameter Perintah

5
BAB III
PERANCANGAN DAN IMPLEMENTASI

3.1 Perancangan Sistem


Perancangan sistem dalam proyek ini seperti yang di gambarakan pada gambar 3.1.
Pertama vidio dari webcam dan video per frame diolah agar mengenali warna hitam untuk di
deteksi lalu mengenali bentuk polanya lalupola tersebut diubah menjadi perintah lalu dijadikan
keluaran dari program. Sebagai contoh adalah webcam menangkap gambar dan melihat warna
hitam, warna hitam tersebuat akan di diteksi dan di lakukan pengecekan pola apakah bentuk
pola tersebut misalnya bulat, segitiga dan sebaginya. Setelah itu dari pola tersebut dijadikan
sebuah perintah misal bila pola bulat maka hasilnya adalah belok kiri.

Gambar 3.1 Flow Chart Perancangan Sistem

3.2 Segmentasi Warna


Perancangan sistem dalam proyek ini seperti yang di gambarakan pada gambar 3.1.
Pertama vidio dari webcam dan vidio per frame diolah untuk mengenali warna hitam untuk di
deteksi lalu warna hitam yang di diteksi dekenali polanya dan dari pola tersebut dibuat menjadi
perintah lalu menjadikan keluaran program.

6
3.3 Jaringan Saraf Tiruan
Pada proses pengenalan pola dilakukan dengan menggunakan Jaringan saraf tiruan.
Dengan menggunakan dua buah input dan satu output yang menghasilkan nilai kebulatan.
Adapun yang dimaksud dengan nilai kebulatan adalah nilai perbandingan antara luas objek
dan kuadrat perimeter yang dinyatakan dengan rumus dibawah ini.

𝐴(𝑅)
Kebulatan (R) = 4𝜋 ……………………………………………(1)
𝑃2 (𝑅)

i. Struktur Jaringan
Penggunaan metode dengan jaringan saraf tiruan membutuhkan sebuah struktur
jaringan yang akan dibuat. Berikut ini adalah rancangan dari struktur jaringan yang telah
dibuat.

Gambar 3.2 Struktur Jaringan

ii. Pelatihan dan Pengujian data


Untuk bisa mengenali pola suatu bentuk, maka perlu dilakukan pelatihan data agar
bisa mengenali bentuk atau pola suatu objek. Pada projek kali ini kami menggunakan data
latih berupa gambar dengan pola berbeda-beda dengan jumlah 60 file yang berwarna hitam

7
putih. Data input yang digunakan berupa nilai metric dan eccentricity dari pola tersebut.
Berikut ini adalah pola-pola yang digunakan sebagai data latih.

Gambar 3.3 Bentuk Pola Data Latih

Bentuk dari pola diatas dilatih sedemikian rupa dengan data target tertentu agar
dapat mengenali pola-pola yang ada. Data target yang digunakan pada proyek ini dapat
dilihat pada tabel 3.1 berikut.
Tabel 3.1 Data Target
No Bentuk Urutan file Target
1. Lingkaran 1 - 15 0
2. Segitiga 16-30 3
3. Persegi 31-45 4
4. Segi lima 46-60 5

Adapun alur dari proses pelatihan data-data tersebut dapat dilihat pada gambar 1.3
dibawah

.
Gambar 3.4 Flowchart Proses Pelatihan

8
Setelah dilakukan proes pelatihan, jaringan yang telah dilatih memerlukan proses
pengujian agar mengetahui tingkat keberhasilan sistem dalam mengenali suatu pola.
Berikut ini adalah alur proses pengujian jaringan yang telah dibuat.

Gambar 3.5 Flowchart proses Pengujian

iii. Hasil Akurasi

Pada penggunaan jaringan saraf tiruan tentu menginginkan hasil output dengan
akurasi yang setinggi mungkin. Dengan beberapa kali percobaan menghasilkan nilai
akurasi yang berbeda-beda. Hasil akurasi tertinggi didapatkan dengan nilai akurasi sebesar
96.6%. Nilai akurasi yang berubah –ubah dapat dilihat pada gambar berikut.

Gambar 3.6 Hasil Akurasi

9
BAB IV
PENGUJIAN

Pada proyek ini dilakuan pengujian melalui beberapa parameter yaitu cahaya dan jarak.
Berikut hasil yang terlah dilakukan dalam proyek ini terlihat dalam taberl 4.1. dengan hasil 6 dari
16 percobaan berhasil.

Tabel 4.1 Pengujian

No Pola Jarak (cm) Cahaya Hasil

Redup

1 15

Terang

10
Redup

2 30

Terang

3 Segitiga 15 Redup

11
Terang

Redup

4 30

Terang

5 Kotak 15 Redup

12
Terang

Redup

6 30

Terang

7 Pentagon 15 Redup

13
Terang

Redup

8 30

Terang

14
BAB V
KESIMPULAN
Berdasarkan percobaan yang telah dilakukan dapat disimpulkan jika cahaya dan jarak
dapat mempengaruhi hasi pengenalan pola. Jumlah dari data latih sangat penting, semakin
banyak data latih maka sistem dapat mengenali suatu pola dengan lebih baik dan akurat.

15
BAB VI
SOURCE CODE

Berikut merupakan lampiran source code yang digunakan ada program ini adalah :

CvCam.m
Pada source code CvCam.m ini mengambil informasi tentang webcam yang akan di gunakan pada
laptop.

function [camera_name, camera_id, resolution] = cvCam(a)


camera_name = char(a.InstalledAdaptors(end));
camera_info = imaqhwinfo(camera_name);
camera_id = camera_info.DeviceInfo.DeviceID(end);
resolution = char(camera_info.DeviceInfo.SupportedFormats(6));

fc.m :
Pada source code fc.m digunakan untuk menghapus dan mencari objek vidio yang digunakaan.

% Fix Cam already Use


close all;
objects = imaqfind %find video input objects in memory
delete(objects) %delete a video input object from memory
clc,clear all

cvTrain.m
Pada source code cvTrain.m digunakaan untuk melakukan pelatihan pada data latih.

function [Akurasi,Target,output] = cvTrain()


% DATA LATIH
% Bulat = 0
% Segitiga = 3
% Segiempat = 4
% Segilima = 5

% Membaca seluruh Citra sebagai data latih


folder_citra = 'data latih';

16
namafile = dir(fullfile(folder_citra, '*.gif'));
total_citra = numel(namafile);

% Menentukan jumlah array setiap variabel


area = zeros(1,total_citra);
perimeter = zeros(1,total_citra);
metric = zeros(1,total_citra);
eccentricity = zeros(1,total_citra);

% Preprocessing
for n = 1:total_citra
nama= fullfile(folder_citra, namafile(n).name);
citra = logical(imread(nama));
citra = bwconvhull(citra,'objects');
% Mendapatakan Area, Perimeter, Eccentricity
stats = regionprops(citra,'Area','Perimeter','Eccentricity');
area(n) = stats.Area;
perimeter(n) = stats.Perimeter;
% METRIC
% merupakan nilai perbandingan antara luas dan keliling objek.
% Metric memiliki rentang nilai antara 0 hingga 1. Objek yang berbentuk
% memanjang/mendekati bentuk garis lurus, nilai metricnya mendekati
% angka 0, sedangkan objek yang berbentuk bulat/lingkaran,
% nilai metricnya mendekati angka 1.
metric(n) = 4*pi*area(n)/(perimeter(n)^2);
% ECCENTRICITY
% merupakan nilai perbandingan antara jarak foci ellips
% minor dengan foci ellips mayor suatu objek. Eccentricity memiliki
% rentang nilai antara 0 hingga 1. Objek yang berbentuk memanjang/
% mendekati bentuk garis lurus, nilai eccentricitynya mendekati angka 1,
% sedangkan objek yang berbentuk bulat/lingkaran, nilai eccentricitynya
% mendekati angka 0.
eccentricity(n) = stats.Eccentricity;
end

% Menentukan masukkan untuk NN


input = [metric;eccentricity];

17
% Menentukan target untuk NN
target = zeros(1,64);
% Menentukan target file 1 - 16 merupakan 0(Bulat)
target(:,1:16) = 0;
% Menentukan target file 17 - 32 merupakan 3(Segitiga)
target(:,17:32) = 3;
% Menentukan target file 33 - 48 merupakan 4(Segiempat)
target(:,33:48) = 4;
% Menentukan target file 49 - 64 merupakan 5(Segilima)
target(:,49:64) = 5;

% Neural Network
net = newff(input,target,[10 6],{'logsig','logsig'},'trainlm');
net.trainParam.epochs = 100;
net.trainParam.goal = 1e-5;
net = train(net,input,target);
output = round(sim(net,input));

% Menyimpan data NN kedalam file net.mat


save net.mat net

% Menentukan tingkat Akurasi


[m,Target] = find(output==target);
Akurasi = sum(m)/total_citra*100

cvFindBW.m
Pada source code ini melakukan segmentasi warna pada warna hitam.

function output = cvFindBW(x)


% Mendap atkan Baris, Kolom dan Channel
[b,k,c] = size(x);
% Menyiapkan citra output sesuai dengan uk citra input
output = zeros(b,k);
for i = 1:b
for j = 1:k
% Mencari warna hitam pada Channel RGB
% untuk putih mendekati 255, hitam 0

18
if x(i,j) >= 250
% Jika terdapat warna hitam maka (x,y) akan diberi warna Putih
output(i,j) = 1;
else
% Selain itu bernilai 0
output(i,j) = 0;
end
end
end

cvPR.m
Pada source code cvPR.m digunakan untuk mengenali pola.

function pola = cvPR(data)


% Membuat kondisi saat gambar tanpa objek
if data(:,:,:) == 0
pola = 6; % Nilai random selain kode untuk bentuk pola
else
% Menggunakan data sebagai citra masukkan
citra = logical(data);
citra = bwconvhull(citra,'objects');
% Mendapatkan nilai Area, Perimeter & Eccentricity
stats = regionprops(citra,'Area','Perimeter','Eccentricity');
area = stats.Area;
perimeter = stats.Perimeter;
metric = (4*pi*area)./(perimeter.^2);
eccentricity = stats.Eccentricity;

% Memasukkan data inputan


input = [metric;eccentricity];
% Meload variabel net
load net
% Mendapatkan Output
pola = round(sim(net,input));
end

cvKey.m

19
Pada source code cvKey.m digunakan untuk mengkonversi hasil pengenalan pola menjadi perintah
untuk menekan tombol tertentu pada keyboard.

function key = cvKey(x)


import java.awt.Robot;
import java.awt.event.*;
key = Robot();
% key.setAutoDelay(1000);

key.keyRelease(KeyEvent.VK_A);
key.keyRelease(KeyEvent.VK_S);
key.keyRelease(KeyEvent.VK_D);
key.keyRelease(KeyEvent.VK_W);

if x == 4 % Kiri
key.keyRelease(KeyEvent.VK_S);
key.keyRelease(KeyEvent.VK_D);
key.keyPress(KeyEvent.VK_W);
key.keyPress(KeyEvent.VK_A);
elseif x == 5 % Mundur
key.keyRelease(KeyEvent.VK_A);
key.keyRelease(KeyEvent.VK_D);
key.keyRelease(KeyEvent.VK_W);
key.keyPress(KeyEvent.VK_S);
elseif x == 0 % Kanan
key.keyRelease(KeyEvent.VK_S);
key.keyRelease(KeyEvent.VK_A);
key.keyPress(KeyEvent.VK_W);
key.keyPress(KeyEvent.VK_D);
else
% Maju
key.keyRelease(KeyEvent.VK_S);
key.keyRelease(KeyEvent.VK_D);
key.keyRelease(KeyEvent.VK_A);
key.keyPress(KeyEvent.VK_W);
end

20
cvCnv.m
Pada source code cvCnv.m digunakan untuk mengkonversi angka menjadi huruf

function [pola] = cvCnv(x)


% Konversi Pola angka menjadi Teks
% Bulat = 0 = Kanan
% Segitiga = 3 = Maju
% Segiempat = 4 = Kiri
% Segilima = 5 = Mundur
if x == 0
pola = 'Bulat'
elseif x == 3
pola = 'Segitiga'
elseif x == 4
pola = 'Segiempat'
elseif x == 5
pola = 'Segilima'
else
pola = 'Tidak terdeteksi'
end

cvFindObj.m
Pada source code cvFindObj.m digunakan untuk menandai objek pola.

function cvFindObj(c,x,p)
citra = c;
pola = p;
x = bwareaopen(x,300);
x = logical(x);
% x = imread('Pola/7939.JPG');
% x = im2bw(x);
% Label all the connected components in the image.
label = bwlabel(x, 8);

21
% Here we do the image blob analysis.
% We get a set of properties for each labeled region.
objek = regionprops(label, 'BoundingBox', 'Centroid');
centroids = cat(2, objek.Centroid);

% Display the image


imshow(citra)

hold on
%This is a loop to bound the blue objects in a rectangular box.
for n = 1:length(objek)
rectangle('Position',objek(n).BoundingBox,'EdgeColor','g','LineWidth',2)
plot(centroids(:,1),centroids(:,2), '-m+')
txt = text(centroids(:,1)+15, centroids(:,2),sprintf('%s', pola));
set(txt, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'green');
end

hold off
drawnow;
end

22
REFERENSI

[1] Richard O. Duda, Peter E. Hart, David G. Stork (2001) Pattern classification (2nd edition),
Wiley, New York, ISBN 0-471-05669-3.
[2] J. Schuermann: Pattern Classification: A Unified View of Statistical and Neural Approaches,
Wiley&Sons, 1996, ISBN 0-471-13534-8
[3] J. A. Anderson and J. Davis 1995. An introduction to neural networks vol. 1: MIT Press
[4] McCulloch, W., Ps, W.H., “A logical calculus of the ideas immanent in nervous activity,” Bull.
Math. Biophys. 5, pp. 115-133, 1943.
[5] W.A. Randall and G.A. Tagliarini, “Using Feed Forward Neural Networks to Model the Effect
of Precipitation on the Water Levels of the Northeast Cape Fear River,” Proceedings IEEE
Southeast Con 2002:338-342, 2002.
[6] Rumelhart et al., “Learning representations by back propagating errors,” Nature, 323:533-6,
1986

23

Anda mungkin juga menyukai