bab iii perancangan perangkat lunak

12
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.

Upload: others

Post on 01-Jun-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BAB III PERANCANGAN PERANGKAT LUNAK

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.

Page 2: BAB III PERANCANGAN PERANGKAT LUNAK

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');

Page 3: BAB III PERANCANGAN PERANGKAT LUNAK

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

Page 4: BAB III PERANCANGAN PERANGKAT LUNAK

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.

Page 5: BAB III PERANCANGAN PERANGKAT LUNAK

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’.

Page 6: BAB III PERANCANGAN PERANGKAT LUNAK

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.

Page 7: BAB III PERANCANGAN PERANGKAT LUNAK

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);

Page 8: BAB III PERANCANGAN PERANGKAT LUNAK

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.)

Page 9: BAB III PERANCANGAN PERANGKAT LUNAK

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)

Page 10: BAB III PERANCANGAN PERANGKAT LUNAK

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.

Page 11: BAB III PERANCANGAN PERANGKAT LUNAK

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.

Page 12: BAB III PERANCANGAN PERANGKAT LUNAK

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)