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