Penjelasan Program PERANCANGAN PEMBANGKIT DAN PENGENAL

7. Selanjutnya, apabila laptop 1 sudah menampilkan citra berupa cahaya kedap-kedip, maka user dapat memulai pengenalan kode morse pada laptop 2. Proses tersebut didahului dengan langkah 5 untuk memulai pengenal kode morse dengan menekan tombol “TERIMA” untuk menampilkan video webcam. Hasil pengenalan kode morse terlihat pada gambar 4.6. Gambar 4.6. Tampilan Hasil Pengenal Kode Morse 8. Pada laptop 2, user dapat mengulang kembali pengenalan kode morse dengan menkan tombol “RESET” dan mengulang kembali langkah 7. 9. Pada laptop 2, user dapat mengakhiri pengenalan kode morse dengan menekan tombol “SELESAI”.

4.2. Penjelasan Program

4.2.1. Pembangkit Kode Morse Pembangkit kode morse dapat dilakukan dengan melakukan langkah seperti yang dijelaskan di atas. Tampilan program pembangkit kode morse dapat dilihat pada gambar 4.3. Pada tampilan pembangkit kode morse terdapat “transmit” dan “kata yang akan dikirim”. User dapat memulai pembangkit kode morse dengan menggetik perintah terlebih dahulu pada command window. User dapat memastikan terlebih dahulu apakah current directory sudah sesuai dengan tempat penyimpanan program sebelum mengetik perintah global putih hitam putih=singleones730,1360; hitam=singlezeros730,1360; yang perlu dilakukan. Setelah sesuai dengan tempat penyimpanan program, user dapat memulai pembangkit kode morse dengan menggetik perintah “transmit” dan menekan enter untuk menjalankan program. Setelah muncul pe rintah “kata yang akan dikirim”, user mengetik kata yang akan dikirim kemudian menekan enter. Hasil pembangkit kode morse yang ditampilkan adalah citra berupa cahaya kedap-kedip. a. Tampilan Citra Berupa Cahaya Kedap-Kedip Untuk menampilkan citra berupa cahaya kedap-kedip pada pembangkit kode morse, user dapat melakukan pembangkit kode morse dengan menjalankan proses. Proses tersebut diawali dengan menggunakan display putih dan hitam yang berupa matriks 1 dan matriks 0. Program yang digunakan untuk tampilan citra berupa cahaya kedap-kedip ditunjukan pada gambar 4.7. Gambar 4.7. Program Tampilan Citra Berupa Cahaya Kedap-kedip b. Look up table kode morse Look up table kode morse adalah proses pemberian kode karakter yang berguna untuk tampilan citra berupa cahaya kedap-kedip. Program look up table terlihat pada gambar 4.8. Gambar 4.8. Program Look Up Table Kode Morse function mkodehuruf switch huruf case A pd;ss;pj; case B pj;ss;pd;ss;pd;ss;pd; case C pj;ss;pd;ss;pj;ss;pd; case D pj;ss;pd;ss;pd; case E pd; Gambar 4.8. Lanjutan Program Look Up Table Kode Morse case F pd;ss;pd;ss;pj;ss;pd; case G pj;ss;pj;ss;pd; case H pd;ss;pd;ss;pd;ss;pd; case I pd;ss;pd; case J pd;ss;pj;ss;pj;ss;pj; case K pj;ss;pd;ss;pj; case L pd;ss;pj;ss;pd;ss;pd; case M pj;ss;pj; case N pj;ss;pd; case O pj;ss;pj;ss;pj; case P pd;ss;pj;ss;pj;ss;pd; case Q pj;ss;pj;ss;pd;ss;pj; case R pd;ss;pj;ss;pd; case S pd;ss;pd;ss;pd; case T pj; case U pd;ss;pd;ss;pj; case V pd;ss;pd;ss;pd;ss;pj; case W pd;ss;pj;ss;pj; case X pj;ss;pd;ss;pd;ss;pj; case Y pj;ss;pd;ss;pj;ss;pj; case Z pj;ss;pj;ss;pd;ss;pd; end Proses look up table merupakan kode karakter yang berupa kode morse. Dalam prosesnya, kode karakter terdiri dari karakter pj sebagai panjang, pd sebagai pendek, ss sebagai spasi sinyal, sh sebagai spasi huruf dan sk sebagai spasi kata. Karakter yang terdapat pada look up table merupakan kode morse sebagai penampil pada citra berupa cahaya kedap-kedip. Tampilan citra berupa cahaya kedap-kedip, sedangkan karakter pj dan pd sebagai penampil putih dan karakter ss dan sh sebagai penampil hitam. Program tersebut tampak pada gambar 4.9. Gambar 4.9. Program Kode Karakter =============================================== function pj Menampilkan window putih 3 detik global putih imshowputih; pause3; =============================================== function pd Menampilkan window putih 1 detik global putih imshowputih; pause1; =============================================== function ss Menampilkan window hitam 1 detik spasi antar sinyal global hitam imshowhitam; pause1; =============================================== function sh Menampilkan window hitam 3 detik spasi antar huruf global hitam imshowhitam; pause3; Gambar 4.9. Lanjutan Program Kode Karakter Program tersebut memiliki karakter dengan fungsinya masing-masing. Karakter pj menampilkan citra berupa putih dengan waktu 3 detik, karakter pd menampilkan citra berupa putih dengan waktu 1 detik, karakter ss menampilkan citra berupa cahaya kedap- kedip berupa hitam dengan waktu 1 detik, karakter sh menampilkan citra berupa cahaya kedap-kedip berupa hitam 3 detik, dan karakter sk menampilkan citra berupa cahaya kedap-kedip berupa hitam 7 detik. 4.2.2. Pengenalan kode morse Pengenalan kode morse dapat dilakukan dengan melakukan berbagai langkah seperti yang telah dijelaskan pada 4.1. Tampilan program pengenalan kode morse dapat dilihat pada gambar 4.4. Pada tampilan pengenalan kode morse terdapat 2 axes, 3 push button, dan 1 static text. User dapat memulai pengenalan kode morse dengan menekan tombol “TERIMA”. Hasil pengenalan kode morse yang ditampilkan berupa kamera, sinyal biner, dan kata yang berasil dikenali. User dapat mengulang pengenalan kode morse dengan menekan tombol “RESET” dan mengakhiri pengenalan kode morse dengan menekan tombol “SELESAI” seperti yang telah dijelaskan di 4.1. a. Tombol “TERIMA” Tombol “TERIMA” ini adalah tombol yang berfungsi untuk melakukan pengenalan kode morse. User dapat melakukan pengenalan kode morse dengan menakan tombol tersebut. Tombol “TERIMA” memulai pengenalan kode morse dengan menjalankan beberapa subproses. Subproses yang dijalankan dimulai dari rekaman kode morse, preprosesing, decoding, dan penentuan hasil pengenalan =============================================== function sk Menampilkan window hitam 7 detik spasi antar kata global hitam imshowhitam; pause7; =============================================== kode morse. Program yang digunakan untuk rekaman kode morse terlihat pada gambar 4.10. Gambar 4.10. Program Rekaman Kode Morse Perintah rekaman kode morse pada matlab menggunakan videoinput. Hal tersebut dilakukan untuk memulai perintah inisialisasi sesuai nama adaptornya yaitu “winvideo”. Resolusi kamera yang digunakan adalah 320 x 240. Setelah inisialisasi webcam berhasil, pengambilan gambar dilakukan dengan perintah “getsnapshot”. Kode morse yang telah terekam tersebut ditampilkan pada program pengenalan menggunakan perintah “axes” yang telah tersedia di dalam tampilan program penegenalan kode morse. Proses preprosesing terdiri dari beberapa bagian program yang digabungkan. Program-program tersebut adalah program penentuan koordinat autocropping, ekstrak frame, RGB ke Gray, average filtering, downsampling, vid1 = videoinput winvideo ,1, YUY2_320x240 ; setvid1, FramesPerTrigger , Inf; setvid1, ReturnedColorspace , rgb ; vid1.FrameGrabInterval = 1; distance between captured frames startvid1 aviObject1 = avifile morse700abc.avi ; Create a new AVI file for iFrame = 1:900 Capture 900 frames ... You would capture a single image I from your webcam here ... I=getsnapshotvid1; axeshandles.axes1 imshowI; F = im2frameI; Convert I to a movie frame aviObject1 = addframeaviObject1,F; Add the frame to the AVI file end aviObject1 = closeaviObject1; Close the AVI file stopvid1; flushdatavid1; dan thresholding. Sebelum melakukan program preprosesing, proses program baca file avi yang telah direkam dilakukan terlebih dahulu. Kode morse yang telah terekam dan tersimpan dipanggil kembali menggunakan perintah mmreader untuk melanjutkan ke preprosesing. Pada proses preprosesing, proses penentuan koordinat autocropping berfungsi untuk memotong bagian citra yang tidak memiliki informasi. Program penentuan koordinat autocropping dapat terlihat pada gambar 4.11. Gambar 4.11. Program Penentuan Koordinat Autocropping Baca file avi obj=mmreader morse700abc.avi ; ukuran avi: 320x240 piksel ================================================= Preprosesing ================================================= Penentuan koordinat autocropping m=1; n=1; k=1; k=31; Mulai frame ke 16 Frame 1-15 1 detik pertamadiabaikan thx=250; while m==1 img1=doublergb2grayreadobj,k; img2=doublergb2grayreadobj,k+n; img3=absimg1-img21000; sum1=sumimg3; sum2=sumsum1; if sum2thx m=0; end n=n+1; if k+n900 thx=200; n=1; end end Gambar 4.11. Lanjutan Program Penentuan Koordinat Autocropping Perintah double pada proses autocropping berfungsi untuk mengubah nilai pada gambar grayscale karena nilainya masih unsigninteger, sedangkan nilai hasil akhir dibagi 1000 sebagai normalisasi. Pada program penentuan koordinat terdapat perintah rgb2gray. Perintah tersebut merupakan perintah untuk mengubah format gambar rgb menjadi grayscale, sedangkan program di atas thx sebagai penentuan nilai atau evaluasi untuk mempermudah proses autocropping. Selanjutnya pada posisi autocropping kiri atas terdapat list program posx dan posy sebagai penentu posisi autocropping. Perintah nilai 5 dan 0 pada posx dan posy berfungsi sebagai nilai evaluasi karena nilai offset yang digunakan yaitu 10. Nilai offset berfungsi untuk menghilangkan efek border. Nilai tersebut digunakan karena hasil dari percobaan yang dilakukan lampiran 3. Nilai perintah [posx posy 10 10] berfungsi sebagai cropping. Nilai dari percobaan tersebut digunakan karena pada saat mengunakan nilai evaluasi lainnya hasil proses tersebut tidak dapat ditampilkan secara maksimal. Selanjutnya program ekstrak frame berfungsi untuk mengubah citra berupa cahaya kedap-kedip yang telah direkam menjadi jumlah frame untuk nomor framenya. Program ekstrak frame seperti terlihat pada gambar 4.12. Posisi autocropping kiri atas sum3=sumimg3; th1=0.8maxsum1; th3=0.8maxsum3; x1=findsum1th1; y1=findsum3th3; posx=x11+5 Nilai offset: 10 posy=y11+0 Nilai offset: 10 Nilai offset -- menghilangkan efek border figure2 img4=rgb2grayreadobj,k-5; img5=rgb2grayreadobj,k; img6=imcropimg5,[posx posy 10 10]; Gambar 4.12. Program Ekstrak Frame List program “img7” berfungsi untuk membaca frame. Setelah frame terbaca dilakukan proses cropping untuk pemotongan bagian dari citra yang diperlukan dalam proses pengenalan kode morse dengan nilai 10×10 piksel. Program RGB ke Gray merupakan suatu proses untuk citra digital yang diambil berupa citra RGB dan kemudian dikonversi ke dalam bentuk citra grayscale. Proses tersebut bertujuan untuk mengidentifikasi intensitas warna dari warna hitam dan putih pada citra digital. Program RGB ke Gray dapat terlihat pada gambar 4.13. Gambar 4.13. Program RGB ke Gray Perintah “double” pada program di atas berfungsi untuk mengubah nilai pada gambar grayscale karena nilainya masih unsigninteger, sedangkan nilai hasil akhir dibagi 3×255 sebagi normalisasi. Berikutnya program histogram proyeksi vertikal berfungsi untuk suatu citra yang akan diproses dalam rangka Ekstrak frame sd histogram jumframe=obj.NumberOfFrames; vhist0=[]; for a=1:5:jumframe downsampling img7=readobj,a; baca frame img8=imcropimg7,[posx posy 10 10]; crop 10x10 piksel RGB-Gray r=doubleimg8:,:,1; matriks r red g=doubleimg8:,:,2; matriks g green b=doubleimg8:,:,3; matriks b blue img9=r+g+b3255; penyimpanan dari citra grayscale. Program histogram proyeksi vertikal seperti terlihat pada gambar 4.14. Gambar 4.14. Program histogram Proyeksi vertical List program “vhist0” berfungsi untuk menyimpan citra untuk proses selanjutnya pada pengolahan citra dalam ekstrak frame. Berikutnya program average filtering berfungsi untuk meratakan sinyal yang terekam dengan mencari rata-rata. Program average filtering dapat terlihat pada gambar 4.15. Gambar 4.15. Program Average Filtering Fungsi program “avgfilter” adalah untuk memanggil fungsi average filtering , sedangkan fungsi average filtering adalah untuk meratakan sinyal puncak dengan menghitung nilai rata-rata. Proses dilakukan dengan memanggil fungsi yang sudah dibuat pada M-file dengan nama “avgfilter”. Berikutnya program downsampling berfungsi untuk memproses sinyal kotak yang tertangkap dan untuk mengurangi sinyal serta mempertahankan periodenya. Program downsampling dapat terlihat pada gambar 4.16. Gambar 4.16. Program Downsampling P erintah “vhist0” diproses setelah hasil dari proses average filtering yang menghasilkan sinyal kotak diproses untuk menghasilkan sinyal kotak yang lebih rapat. Berikutnya program thresholding berfungsi untuk menentukan kode biner 1 dan 0 dari sinyal kotak. Program thresholding dapat terlihat pada gambar 4.17. vhist0=[vhist0 sumimg9]; simpan histogram proyeksi vertikal Average filtering vhist0=avgfiltervhist0; Downsampling vhist1=vhist01:10:lengthvhist0; Gambar 4.17. Program Thresholding Nilai “0.75” yang terdapat pada program “thresholding” berfungsi sebagai nilai evaluasi pada sinyal kotak yang nantinya akan digunakan pada proses threshold biner. Nilai tersebut digunakan karena sinyal yang dihasilkan pada proses thresholding sesuai dengan kode karakter kode morse yang ditampilkan pada laptop 1. Namun, nilai evaluasi lainnya tidak sesuai dengan kode karakter kode morse yang ditampilkan pada laptop 1. Sinyal thresholding yang menggunakan nilai evaluasi lainnya dapat dilihat pada lampiran 4. List program katain berfungsi sebagai preallocation untuk katain. Dalam prosesnya terdapat perintah “vhist1 kthbin” yang berfungsi untuk menentukan threshold biner yang nilainya lebih besar dari nilai evaluasi. Pada citra berupa cahaya kedap- kedip yang berwarna putih bernilai 1 sedangkan yang bewarna gelap bernilai 0 untuk menampilkan sinyal biner ditampilkan pada axes2. Proses decoding terdiri dari dua tahap. Tahap yang pertama adalah mengubah kode biner menjadi kode karakter. Tahap pertama ini bertujuan untuk mengetahui kode biner yang terdapat pada citra berupa cahaya kedap-kedip yang Thresholding untuk kode biner thbin=0.75maxvhist1; threshold biner thbin=0.75maxvhist1; pjvhist1=lengthvhist1; katain=zeros1,pjvhist1; preallocation untuk katain for k=1:pjvhist1 if vhist1kthbin kataink=1; end end katain tampilkan pada axes axeshandles.axes2; plotkatain;axis[1 pjvhist1 0 1.5]; kemudian diproses menjadi kode karakter. Dalam proses decoding tahap pertama terdapat program deteksi jumlah nol yang bertujuan untuk menentukan jumlah kode biner sebagai spasi berdasar jumlah nol. Program deteksi jumlah nol dapat terlihat pada gambar 4.18. Gambar 4.18. Program Deteksi Jumlah Nol Pada p rogram di atas tertulis “kataout=[kataout ‘ss’]” yang bertujuan untuk menentukan kode karakter ss dengan menggunakan nilai evaluasi nol lebih kecil dari 7 maka akan dianggap sebagai kode karakter ss. Selanjutnya “kataout=[kataout ‘sh’]” untuk menentukan kode karakter sh dengan menggunakan nilai evaluasi nol lebih besar dari atau sama dengan 7 dan nol lebih kecil dari atau sama dengan 15 maka kode karakter berupa sh. Setelah itu, “kataout=[kataout ‘sk’]” untuk kode karakter berupa sk. Nilai-nilai evaluasi ---------------------------------------------- Deteksi jumlah nol ---------------------------------------------- k=1; m=1; nol=0; while k==1 if katainm==0 nol=nol+1; else k=0; end m=m+1; if lengthkatainm k=0; end end Definisi spasi berdasar jumlah nol if nol7 kataout=[kataout ss ]; elseif nol=7 nol=15 kataout=[kataout sh ]; else kataout=[kataout sk ]; end Pemotongan data input berdasar jumlah nol katain1:nol=[]; tersebut digunakan untuk menentukan kode karakter yakni mendeteksi biner 0 dengan menghitung terlebih dahulu biner berupa 0 dari pros es hasil “katain” seperti pada lampiran 5. Proses selanjutnya adalah deteksi jumlah satu dengan tujuan menentukan jumlah satu dari kode biner. Program deteksi jumlah satu dapat terlihat pada gambar 4.19 Gambar 4.19. Program Deteksi Jumlah Satu Dalam menentukan kode morse berdasar jumlah satu terdapat program “kataout=[kataout ‘pd’]” yang bertujuan untuk menentukan kode karakter pd dengan menggunakan nilai evaluasi satu lebih kecil dari atau sama dengan 6 dan satu lebih besar dari atau sama dengan 2 maka kode karakter berupa pd. Namun, untuk menetukan kode kara kter pj menggunakan “kataout=kataout[kataout ‘pj’]” dengan menggunakan nilai evaluasi satu lebih besar dari 6. Nilai-nilai evaluasi tersebut digunakan untuk menentukan kode karakter yang berupa pd maupun pj ---------------------------------------------- Deteksi jumlah satu ---------------------------------------------- k=1; m=1; satu=0; while k==1 if katainm==1 satu=satu+1; else k=0; end m=m+1; if lengthkatainm k=0; end end Definisi spasi berdasar jumlah satu if satu=6 satu=2 kataout=[kataout pd ]; else satu6 kataout=[kataout pj ]; end Pemotongan data input berdasar jumlah satu katain1:satu=[]; dengan menghitung terlebih dahulu biner berupa 1 dari hasil “katain” seperti pada lampiran 5. Pada decoding tahap dua, program akan memproses kode karakter menjadi kata yang telah dihasilkan di tahap pertama. Proses ini dilakukan dengan mengubah kode karakter menjadi kata teks. Proses decoding tahap kedua dapat terlihat pada gambar 4.20. Gambar 4.20. Program Decoding tahap kedua Proses decoding tahap pertama yang menghasilkan kode karakter yang berupa ss, sh, sk, pd dan pj yang akan diproses untuk mengubah menjadi kata teks. Program tersebut diproses dengan membandingkan kode karakter yang telah dihasilkan oleh decoding tahap pertama. List program “kataout” hasil dari decoding tahap pertama akan diproses dengan mencocokkan kode karakter pada Dekoding tahap 2 kode karakter -- teks a=1;hurufin=[];katatxt=[]; while a==1 if strcmpkataout1:2, sh ==0 strcmpkataout1:2, sk ==0 hurufin=[hurufin kataout1:2]; kataout1:2=[]; elseif strcmpkataout1:2, sh ==0 strcmpkataout1:2, sk ==1 hurufout=kenalhurufhurufin; katatxt=[katatxt hurufout]; kataout=[]; elseif strcmpkataout1:2, sh ==1 hurufout=kenalhurufhurufin; katatxt=[katatxt hurufout]; hurufin=[]; kataout1:2=[]; end pjkataout=lengthkataout; if pjkataout==0 a=0; end end katatxt hasilout=katatxt sethandles.text9, string ,hasilout axeshandles.axes1; plot0; axeshandles.axes2; plot0; sethandles.text9, String , ; close all ; clear all ; list program “kenalhuruf” dengan menggunakan look up table. Fungsi program “kenalhuruf” adalah sebagai look up table. Proses dilakukan dengan memanggil fungsi yang telah dibuat pada M-file dengan nama fungsi “kenalhuruf”. Hasil keluaran ditampilkan dengan format “sethandles.text9, ‘string’,hasilout dimana hasil keluaran pada text9 berupa kata teks. b. Tombol “RESET” Tombol “RESET” digunakan apabila user masih ingin melakukan pengenalan kode morse untuk kata lainnya. Tombol “RESET” berfungsi untuk mengulang program dari awal apabila user melakukan kesalahan atau terjadi error pada saat proses pengenalan. Program yang digunakan untuk tombol “RESET” dapat dilihat pada gambar 4.21. Gambar 4.21. Program Tombol Reset c. Tombol “SELESAI” Tombol “SELESAI” berfungsi untuk mengakhiri dan keluar dari program atau tampilan GUI pengenalan kode morse. Program pada tombol “SELESAI” dapat dilihat pada gambar 4.22. Gambar 4.22. Program Tombol Selesai Berdasarkan hasil pengujian tombol pada GUI pengenalan kode morse dapat ditarik kesimpulan bahwa program sudah berjalan dengan baik dan dapat berkerja sesuai dengan perancangan pada bab III.

4.3. Pengujian dan Analisis Hasil Pengenalan Kode Morse