• Tidak ada hasil yang ditemukan

Penjelasan Sintaks Program

Dalam dokumen Pengenalan angka dengan pose jari tangan. (Halaman 66-74)

BAB IV : HASIL DAN PEMBAHASAN

4.2. Penjelasan Sintaks Program

4.2.1. Penjelasan Sintaks Program secara Real Time

Untuk sintaks program secara real time, pushbutton dan popupmenu yang terdapat pada GUI akan diisi sintaks program tertentu agar nantinya GUI dapat berjalan dengan baik. Untuk lebih jelasnya, berikut ini penjelasannya.

a. Pushbutton “Kamera Aktif”

Untuk menjalankan pushbutton ini, maka diisi sintaks berikut :

imaqhwinfo; info=imaqhwinfo('winvideo'); dev_info=imaqhwinfo('winvideo',1); vidobj=videoinput('winvideo',1,'RGB24_1280x960'); vidobj.FramesPerTrigger=1; triggerconfig(vidobj,'manual'); vidRes=get(vidobj,'VideoResolution');

imWidth=1280; imHeight=960;

nBands=get(vidobj,'NumberOfBands');

hImage=image(zeros(imHeight,imWidth,nBands),'parent',handles.axes1); preview(vidobj,hImage)

Berdasarkan sintaks program di atas, dapat dilihat terdapat sintaks imaqhwinfo. Sintaks ini berfungsi untuk menginisialisasikan antara webcam dengan software matlab. Selain itu, sintaks ini juga berfungsi untuk mengetahui informasi yang dimiliki oleh webcam, seperti nama device dan format warna yang dihasilkan oleh webcam, misalnya RGB, YUY, dan lainnya. Untuk menampilkan gambar yang direkam oleh webcam, maka sintaks preview digunakan dan kemudian gambar tersebut dapat nampak pada axes 1.

b. Pushbutton “Ambil Gambar”

Untuk menjalankan pushbutton ini, maka diisi sintaks berikut :

start(vidobj); pause(1); trigger(vidobj); stoppreview(vidobj); capt1=getdata(vidobj); gambar=capt1; handles.a=gambar; guidata(hObject,handles); axes(handles.axes1); imshow(gambar)

Berdasarkan sintaks program di atas, dapat dilihat terdapat sintaks getdata. Sintaks ini berfungsi untuk melakukan capture gambar saat webcam dalam keadaan on. Hasil gambar yang telah diambil oleh webcam ini memiliki format citra RGB. Kemudian agar hasil capture dapat dipanggil dan digunakan pada sintaks program selanjutnya, maka diinisialisasikan dengan sintaks handles.

c. Popupmenu “Variasi Desimasi”

Untuk mengfungsikan popupmenu ini, maka diisi sintaks berikut :

indeks=get(handles.popupmenu1,'Value'); switch indeks case 2 des=1; case 3; des=2; case 4; des=3;

end

handles.des=des;

guidata(hObject,handles);

Berdasarkan sintaks program di atas, dapat dilihat terdapat sintaks des=1. Sintaks ini berfungsi untuk mengaktifkan desimasi sebanyak 1 kali. Penjelasan tentang desimasi sebelumnya sudah dituliskan pada Bab III. Desimasi ini diinisialisasikan dengan nama “des”. Kemudian agar nilai variasi desimasi ini dapat dipanggil dan digunakan pada sintaks program selanjutnya, maka diubah menjadi “handles.des”.

d. Pushbutton “Proses”

Pada saat menakan pushbutton “Proses” ini, citra dengan format RGB yang telah diambil pada axes 1 akan diproses lebih lanjut. Untuk lebih jelasnya berikut ini proses-prosesnya dan juga sintaks programnya.

Proses Konversi Citra RGB ke HSV

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

%Konversi RGB ke HSV x0=rgb2hsv(x);

Berdasarkan sintaks program di atas, dapat dilihat bahwa terdapat sintaks rgb2hsv. Sintaks ini berfungsi mengubah citra RGB dari menjadi citra HSV.

 Proses Segmentasi HSV

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

s=x0(:,:,2); %Ambil bagian saturation s1=s>0.17;

v=x0(:,:,3); %Ambil bagian value v1=v>0.4;

Berdasarkan sintaks program di atas, segmentasi bagian kulit pada citra dilakukan. Oleh karena itu bagian S (saturation) dan V (value) diambil, karena diantara ketiga komponen warna HSV, yang masuk dalam kategori warna kulit (muka dan tangan) ialah S dan V. Nilai threshold S dan V jika dilihat dari ruang warnanya, yang digunakan dalam penelitian ini ialah untuk S >0,17 dan untuk V >0,4.

Proses Pengambilan Bagian Tangan

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

%Hitung luasan setiap objek for k=1:jumobj

x2=x1==k;

aobj(k)=sum(x2(:)); end

%segmentasi luasan kedua terbesar [s,u]=sort(aobj,'descend');

x3=x1==u(2);

else

x3=x1;

end

Berdasarkan sintaks program di atas, untuk mengambil bagian tangan pada citra yang telah disegmentasi, maka perhitungan luasan pada setiap objek kulit dilakukan dengan sintaks sum. Setelah itu, hasil perhitungan luasan objek kulit tersebut diurutkan (dengan sintaks sort) dari nilai terbesar ke nilai terkecil dengan sintaks descend. Setelah itu, untuk mengambil objek yang memiliki nilai luasan kedua terbesar (bagian tangan) yang diinisialisasi dengan “u(2)”.

Proses Cropping sesuai Bounding Box

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

% Potong kiri cout=x3; a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; % Potong kanan cout=fliplr(cout); a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; % Potong atas cout=cout'; a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; % Potong bawah cout=fliplr(cout); a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[];

Berdasarkan sintaks program di atas, pada prinsipnya proses cropping sesuai bounding box ini, proses pemotongannya ialah dengan memutar tiap 90o lalu memotong per-bagiannya sampai kembali ke posisi awal. Untuk lebih jelasnya lihat Tabel 4.1.

Tabel 4.1. Proses Cropping sesuai Bounding Box

Sintaks Program Hasil Sintaks

% Potong kiri cout=x3; a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; % Potong kanan cout=fliplr(cout); a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; % Potong atas cout=cout'; a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; % Potong bawah cout=fliplr(cout); a=sum(cout); b=find(a>0); cout(:,1:b(1)-1)=[]; 200 400 600 800 1000 1200 1400 200 400 600 800 1000 1200 200 400 600 800 1000 1200 1400 50 100 150 200 50 100 150 200 100 200 300 400 500 600 700 800 50 100 150 200 50 100 150 200 250 300 350 400

Proses Resizing

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

x4=imresize(cout,[64 64]);

Berdasarkan sintaks program di atas, dapat dilihat bahwa terdapat sintaks imresize yang berfungsi mengubah ukuran citra ke ukuran tertentu. Untuk penelitian ini citra diubah ke dalam ukuran 64 x 64 piksel.

 Proses Ekstraksi Ciri

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

x5=xcwav2(x4,des);

Berdasarkan sintaks program di atas, dapat dilihat bahwa terdapat sintaks xcwav2. Sintaks ini merupakan sintaks untuk memanggil program ekstraksi ciri yang dibuat dalam M-file pada matlab. Untuk lebih jelasnya, sintaksnya dapat dilihat pada bagian lampiran.

 Proses Perhitungan Korelasi

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

for n=1:10

r(n)=korelasi(x6,z(:,n))

end

maxr=max(r)

Berdasarkan sintaks program di atas, dapat dilihat bahwa terdapat sintaks korelasi. Sintaks ini merupakan sintaks untuk memanggil fungsi korelasi yang dibuat dalam M-file pada matlab. Selain itu, terdapat sintaks max yang berfungsi untuk menampilkan nilai korelasi yang paling tinggi (yang terbaik). Nilai korelasi ini akan ditampilkan pada command window matlab.

 Proses Keluaran Teks

Untuk menjalankan proses ini, sintaks program yang digunakan ialah :

if (maxr==r(1)) z1={'0'}; set(handles.edit3,'string',z1); elseif (maxr==r(2)) z2={'1'}; set(handles.edit3,'string',z2);

elseif (maxr==r(3)) z3={'2'}; set(handles.edit3,'string',z3); elseif (maxr==r(4)) z4={'3'}; set(handles.edit3,'string',z4); elseif (maxr==r(5)) z5={'4'}; set(handles.edit3,'string',z5); elseif (maxr==r(6)) z6={'5'}; set(handles.edit3,'string',z6); elseif (maxr==r(7)) z7={'6'}; set(handles.edit3,'string',z7); elseif (maxr==r(8)) z8={'7'}; set(handles.edit3,'string',z8) elseif (maxr==r(9)) z9={'8'}; set(handles.edit3,'string',z9) elseif (maxr==r(10)) z10={'9'}; set(handles.edit3,'string',z10) end

Berdasarkan sintaks program di atas, dapat dilihat bahwa terdapat sintaks elseif (maxr==r(1)). Sintaks ini berfungsi untuk menampilkan teks angka “1” pada edit 3 yang terdapat di GUI jika angka 1 memiliki nilai korelasi terbesar. Hal ini berlaku untuk angka uji lainnya.

e. Pushbutton “Reset”

Untuk menjalankan pushbutton ini, maka diisi sintaks berikut :

axes(handles.axes1) plot(0); axes(handles.axes2) plot(0); axes(handles.axes3) plot(0); axes(handles.axes4) plot(0); set(handles.popupmenu1,'Value',1); set(handles.edit3,'string','');

Pushbutton “Reset” ini berfungsi untuk membersihkan axes, popupmenu, dan edit pada GUI jika terjadi kesalahan dalam pengenalan pola angka ASL atau ingin melakukan pengujian yang baru.

f. Pushbutton “Keluar”

Untuk menjalankan pushbutton ini, maka diisi sintaks berikut :

close

Pushbutton “Keluar” ini berfungsi untuk menutup GUI jika selesai melakukan pengujian.

4.2.2. Penjelasan Sintaks Program secara Non Real Time

Untuk sintaks program secara non real time, memiliki program proses segementasi HSV, proses pengambilan bagian tangan, proses cropping sesuai bounding box, proses resizing, proses ekstraksi ciri wavelet, dan proses perhitungan korelasi secara garis besar sama dengan program secara real time. Namun untuk menampilkan hasil citranya, maka sintaks subplot dan imshow digunakan. Sedangkan untuk keluaran teks, akan ditampilkan pada command window matlab. Untuk lebih jelasnya, berikut ini sintaks keluaran teks untuk program secara non real time.

% Penentuan buah keluaran

DaftarAngka={'0';'1';'2';'3';'4';'5';'6';'7';'8';'9'}; Angka{k}=DaftarAngka{KelasOut};

Berdasarkan sintaks program di atas, pada prinsipnya proses yang dimiliki sama dengan program secara real time. Pola angka ASL yang memiliki nilai korelasi yang terbaik atau yang paling tinggi akan ditampilkan pada command window matlab, dengan terlebih dahulu dikelompokkan kelas-kelasnya dengan inisialisasi “KelasOut” (lebih jelasnya lihat sintaks full pada lampiran). Sedangkan, untuk pengambilan foto data uji secara non real time ini, digunakan software asli webcam Logitech sendiri. Berikut ini Gambar 4.14 icon software Logitech webcam dan Gambar 4.15 software Logitech webcam pada saat pengambilan foto data uji.

Gambar 4.15. Software Logitech Webcam pada saat Pengambilan Foto Data Uji

Dalam dokumen Pengenalan angka dengan pose jari tangan. (Halaman 66-74)

Dokumen terkait