bab iii perancangan perangkat lunak
TRANSCRIPT
18
BAB III
PERANCANGAN PERANGKAT LUNAK
Perancangan perangkat lunak pada skripsi ini bertujuan untuk mengenali aksara Jawa
dasar tulisan tangan dengan menerapkan metode Shape Context Descriptor sebagai
klasifikatornya.
Pada sistem ini data latih berupa aksara Jawa cetak, dan data uji berupa aksara Jawa
tulisan tangan yang ditulis oleh 30 orang. Untuk perancangan perangkat lunak digunakan
perangkat lunak MATLAB.
Alur kerja sistem meliputi memasukkan citra ke MATLAB, pengolahan gambar, edge
detection, bipartite and hungarian method, menghitung matching-cost matrix, menghitung
tingkat akurasi metode Shape Context Descriptor, dan menghitung waktu pemrosesan sistem.
Gambar 3.1 di bawah ini merupakan perancangan sistem secara keseluruhan dari
membaca citra hingga menghitung tingkat akurasi.
19
Gambar 3.1 Perancangan Sistem
3.1. Memasukkan Citra ke MATLAB
Memasukkan citra aksara Jawa ke dalam program dan melakukan perulangan
perbandingkan data uji dengan himpunan data latih 20 aksara Jawa: ha, na, ca, ra, ka, da, ta,
sa, wa, la, pa, dha, ja, ya, nya, ma, ga, ba, tha, nga, yang programnya adalah sebagai berikut.
latih{1}=imread('1.jpg');
latih{2}=imread('2.jpg');
latih{3}=imread('3.jpg'); latih{4}=imread('4.jpg'); latih{5}=imread('5.jpg'); latih{6}=imread('6.jpg'); latih{7}=imread('7.jpg');
latih{8}=imread('8.jpg');
latih{9}=imread('9.jpg');
latih{10}=imread('10.jpg');
latih{11}=imread('11.jpg');
latih{12}=imread('12.jpg');
latih{13}=imread('13.jpg'); latih{14}=imread('14.jpg'); latih{15}=imread('15.jpg'); latih{16}=imread('16.jpg'); latih{17}=imread('17.jpg');
latih{18}=imread('18.jpg');
latih{19}=imread('19.jpg');
latih{20}=imread('20.jpg');
20
for z=1:20 gambar=latih{z};
end
Citra aksara Jawa dibagi menjadi 2 bagian. Bagian pertama adalah aksara Jawa
cetak sebagai citra pembanding, dan yang kedua adalah aksara Jawa tulisan tangan
sebagai citra uji. Aksara Jawa dimasukkan menggunakan proses perulangan agar
lebih efisien.
Gambar 3.2 (a). Aksara Jawa Cetak. (b). Aksara Jawa Tulisan Tangan.
3.2. Pengolahan Citra
Sebelum pendeteksian aksara gambar harus diolah terlebih dahulu dengan 2
proses yaitu gambar harus dalam bentuk biner dan memiliki resolusi yang lebih kecil.
3.2.1. Konversi Citra RGB ke Biner
Citra aksara Jawa difoto untuk menghasilkan bentuk citra RGB, tetapi hanya
diperlukan bentuk biner agar pemrosesan lebih sederhana dan cepat. Sebelum menjadi
21
bentuk biner, perlu diubah menjadi grayscale terlebih dahulu. Pengubahan citra RGB
menjadi grayscale dengan instruksi berikut.
B = rgb2gray(A) (3.1)
dengan B = Hasil pengolahan citra; dan
A = Masukan citra RGB.
Fungsi rgb2gray merupakan fungsi built-in MATLAB yang memiliki konstanta
sebagai berikut.
Grayscale = 0.2989*Red + 0.5870*Green + 0.1140*Blue (3.2)
Setelah melakukan konversi citra ke grayscale, selanjutnya dilakukan konversi citra ke
biner dengan fungsi sebagai berikut.
D = im2bw(C,level); (3.3)
dengan D = Hasil pengolahan citra menjadi biner;
C = Citra masukan; dan
level = Batas ambang.
Program konversi citra ke biner menggunakan batas ambang sebesar 0,5. Bila pixel
pada citra grayscale memiliki nilai keabuan di bawah 0,5 maka nilainya pixel tersebut
adalah 0, dan apabila nilai keabuan lebih besar dari 0,5 maka nilai pixel tersebut adalah
1.
22
Gambar 3.3 (a). Citra dalam Bentuk RGB. (b). Hasil Pengubahan Citra
RGB ke Bentuk Biner
dengan Threshold 0,5.
3.2.2. Imresize
Dalam pengubahan ukuran citra menggunakan fungsi Imresize. Fungsi imresize
merupakan fungsi built-in MATLAB. Penulisan programnya adalah seperti pada
Persamaan (3.4).
B= imresize (A,NUMROWS NUMCOLS] ,’method’) (3.4)
dengan A= Citra yang akan diubah ukuran citra;
B= Hasil citra setelah dilakukan fungsi imresize;
[NUMROWS NUMCOLS] = Ukuran resolusi citra
yang diinginkan [baris
kolom]; dan
Method= ‘nearest’,’bilinear’,’bicubic’.
23
Dimensi NUMROWS dan NUMCOLS citra keluaran, ditetapkan sebagai 2
vektor elemen bilangan bulat positif. Nilai NUMROWS dan NUMCOLS ditentukan
oleh perancang. Dalam hal ini, imresize menghitung jumlah baris dan kolom untuk
dimensi tersebut secara otomatis, dengan mempertahankan rasio aspek citra.
Imresize memiliki 3 metode sebagai berikut.
a. Nearest = Nearest-neighbor interpolation, merupakan metode yang hasilnya
diperoleh dengan memberikan nilai pixel yang termasuk dalam titik tersebut.
Tidak ada pixel lain yang dipertimbangkan. Nearest-neighbor interpolation
merupakan metode default untuk citra categorical.
b. Bilinear = Bilinear interpolation, merupakan metode yang hasilnya diperoleh
dari rata-rata nearest 2-by-2 neighborhood.
c. Bicubic = Bicubic interpolation, merupakan metode yang hasilnya diperoleh
dari rata-rata nearest 4-by-4 neighborhood. Bicubic interpolation merupakan
metode default untuk citra numeric atau logical.
24
Pengubah ukuran citra menggunakan instruksi berikut.
V1=imresize(Ithresh,[180 180],'bil'); (3.5)
dengan V1= Hasil pengolahan citra menjadi ukuran 180×180;
Ithresh = Citra masukkan; dan
‘bil’= menggunakan metode bilinear.
Gambar 3.4. (a) Citra Berukuran 1040 × 780. (b). Citra Berukuran
180 × 180.
3.3. Edge Detection
Untuk mendapatkan titik cuplik sebanyak ‘n’ titik, maka perlu dicari edge detection
dengan fungsi berikut.
function [x,y,t,c]=bdry_extract_3(V);
Untuk mencari titik cuplik dari edge detection digunakan fungsi berikut.
function [xi,yi,ti]=get_samples_1(x,y,t,nsamp);
25
Gambar 3.5. Hasil Edge Detection dan Pencuplikan 150 Titik.
3.4. Bipartite and Hungarian Method
Setelah mendapat titik cuplik, maka dilakukan proses pencocokan titik cuplik
dari citra A dengan citra B, menggunakan proses bipartite. Hasil penghitungan
dimasukkan ke dalam matriks menggunakan hungarian method agar mendapat
pasangan yang paling optimal.
Proses bipartite dilakukan menggunakan fungsi berikut.
Function [BH,mean_dist]=sc_compute(Bsamp,Tsamp,mean_dist,
nbins_theta,nbins_r,r_inner,r_outer,out_vec); % Adapted from the Serge Belongie ([email protected])[10]
[BH,mean_dist]=sc_compute(Bsamp,Tsamp,mean_dist,nbins_the
ta,nbins_r,r_inner,r_outer,out_vec); % % compute (r,theta) histograms for points along boundary % % Bsamp is 2 x nsamp (x and y coords.)
26
% Tsamp is 1 x nsamp (tangent theta) % out_vec is 1 x nsamp (0 for inlier, 1 for outlier) % mean_dist is the mean distance, used for length
normalization % if it is not supplied, then it is computed from the data % outliers are not counted in the histograms, but they do
get % assigned a histogram
Langkah pertama adalah menghitung barisan jari-jari dan sudut.
r_array=real(sqrt(dist2(Bsamp',Bsamp'))) %computer arrays
theta_array=theta_array_abs-Tsamp'*ones(1,nsamp);
% compute theta arrays
Langkah kedua adalah normalisasi jarak.
r_array_n=r_array/mean_dist;
Langkah ketiga adalah menggunakan histogram log-polar untuk pengelompokan tiap
pasangan berdasarkan jarak antara satu dengan yang lain.
Proses Hungarian Method menggunakan fungsi berikut.
function [C,T]=hungarian(A) %HUNGARIAN Solve the Assignment problem using the
Hungarian method. Adapted from the FORTRAN IV code in
Carpaneto and Toth, Algorithm 548 %[C,T]=hungarian(A) %A - a square cost matrix. %C - the optimal assignment. %T - the cost of the optimal assignment.
Hungarian Method memiliki 4 fungsi utama,sebagai berikut
function A=hminired(A)
function [A,C,U]=hminiass(A)
function [A,C,U]=hmflip(A,C,LC,LR,U,l,r)
function [A,CH,RH]=hmreduce(A,CH,RH,LC,LR,SLC,SLR)
27
fungsi hminired(A) : fungsi ini digunakan untuk mengurangi nilai setiap baris dan
kolom hingga terdapat nilai 0, dan mencatat letak nilai 0.
fungsi hminiass(A): fungsi ini digunakan untuk mengenali letak nilai 0 setiap baris dan
kolom, lalu melakukan eliminasi terhadap nilai 0.
fungsi hmflip(A, CH, RH, LC, LR, SLC, SLR ): fungsi ini digunakan untuk
mengembalikan nilai yang terpengaruh karena terdeteksi 2 kali sebagai nilai 0 antara
bagian baris dan kolom.
fungsi hmreduce(A, CH, RH, LC, LR, SLC, SLR): fungsi ini digunakan untuk
memperbarui matriks .
Gambar 3.6 Hasil Proses Bipartite and Hungarian Method untuk
Mendeteksi 140 Pasangan Titik yang Cocok.
28
3.5. Menghitung Matching-cost Matrix
Menghitung perolehan nilai cost menggunakan fungsi sebagai berikut.
function HC=hist_cost_2(BH1,BH2); % HC=hist_cost_2(BH1,BH2); % Adapted from the Serge Belongie ([email protected])[10 % same as hist_cost.m but BH1 and BH2 can be of different
lengths
[nsamp1,nbins]=size(BH1); [nsamp2,nbins]=size(BH2);
BH1n=BH1./repmat(sum(BH1,2)+eps,[1 nbins]); BH2n=BH2./repmat(sum(BH2,2)+eps,[1 nbins]); tmp1=repmat(permute(BH1n,[1 3 2]),[1 nsamp2 1]); tmp2=repmat(permute(BH2n',[3 2 1]),[nsamp1 1 1]); HC=0.5*sum(((tmp1-tmp2).^2)./(tmp1+tmp2+eps),3);
BH1 adalah nilai histogram log-polar data latih.
BH2 adalah nilai histogram log-polar data uji.
HC adalah hist_cost yang merupakan hasil cost dalam proses perbandingan.
Setelah mendapatkan nilai hist_cost, lalu nilai tersebut dimasukkan ke dalam matriks
untuk proses penghitungan hungarian method.
3.6. Menghitung Tingkat Akurasi Shape Context Descriptor
Semakin kecil nilai cost proses matching, maka semakin cocok dengan data
aksara cetak yang menjadi pembanding citra uji, dan huruf aksara Jawa tersebut akan
dikenali. Untuk menghitung tingkat akurasi metode Shape Context Descriptor dalam
mengenali huruf aksara Jawa, digunakan persamaan sebagai berikut.
29
𝑎𝑘𝑢𝑟𝑎𝑠𝑖 =𝑗𝑢𝑚𝑙𝑎ℎ 𝑏𝑒𝑛𝑎𝑟
𝑡𝑜𝑡𝑎𝑙 𝑝𝑒𝑛𝑐𝑜𝑐𝑜𝑘𝑎𝑛 × 100%
3.7. Menghitung Waktu Pemrosesan Sistem
Perintah yang digunakan untuk menghitung waktu pemrosesan dalam MATLAB
adalah Tic-Toc. Tic-Toc merupakan fungsi built-in MATLAB yang bekerja secara
bersama. Tic digunakan untuk memulai penghitungan waktu dan Toc untuk mengakhiri
penghitungan. Tic-Toc dihitung dalam satuan detik.
(3.6)