• Tidak ada hasil yang ditemukan

Data Acquisition

Dalam dokumen Transliterasi nama jalan beraksara Jawa. (Halaman 59-67)

BAB IV HASIL DAN ANALISA

4.1 Data Acquisition

Data berupa citra nama jalan yang digunakan pada penelitian ini diambil menggunakan kamera smarthpone dengan resolusi sebesar 4096 x 2304 pixels. Data citra yang diambil sebanyak 130buah yang dibagi menjadi 100 citra untuk data template dan 30 citra untuk data uji. Waktu pengambilan citra pada waktu pagi atau siang hari dengan pencahayaan cukup terang. Daerah tempat pengambilan citra berada di daerah Kota Yogyakarta.

Gambar 4.1 adalah citra nama Jalan Pajeksan. Citra tersebut diambil pada tanggal 8 April 2017 pada pukul 14:59 WIB. Jarak pengambilan gambar kurang lebih 50 cm dari tiang nama jalan.

4.2 Preprocessing

Tahap preprocessing dilakukan untuk mempersiapkan data agar siap untuk diolah untuk tahap selanjutnya (ekstraksi ciri). Proses preprocessing ini dibagi menjadi 5 tahapan seperti pada Gambar 3.2 tentang preprocessing

modules, yaitu cropping, grayscaling, binarization, image segmentation dan

resizing. 4.2.1 Cropping

Citra nama jalan yang diperoleh memiliki 2 tulisan, yaitu tulisan berbahasa Indonesia pada bagian atas dan tulisan beraksara Jawa di bagian bawah. Data citra yang akan dipakai pada penelitian ini adalah citra aksara Jawa saja sehingga perlu dilakukan proses pemotongan menggunakan photoshop untuk mendapatkan citra aksara Jawa. Proses pemotongan citra (cropping) dilakukan untuk semua data yang digunakan sebagai template database maupun sebagai data uji (testing).

B = imread('../Citra nama jalan/testing/pajeksan.jpg');

Gambar 4.2 Pemotongan Citra Jalan Pajeksan

Gambar 4.2 merupakan citra hasil cropping pada Gambar 4.1 dengan mengambil bagian citra yang hanya memiliki aksara Jawa saja. Proses

cropping dilakukan karena data penelitian yang akan digunakan adalah

citra aksara Jawa. Setelah dilakukan proses cropping, maka ukuran citra sekarang menjadi 483 x 2353 pixels.

4.2.2 Grayscaling

Data citra yang sudah dipotong kemudian akan kita ambil objek dari citra tersebut (aksara Jawa) terhadap latar (background) dengan mengubah citra tersebut menjadi citra abu-abu (grayscale) lalu diubah lagi menjadi citra hitam-putih (biner/black and white). Langkah pertama, yaitu mengubah citra menjadi keabuan (grayscale) menggunakan fungsi rgb2gray() pada Matlab.

B = imread('../Citra nama jalan/testing/pajeksan.jpg'); im_gray = rgb2gray(B);

imshow(im_gray);

Gambar 4.3 Citra Abu-Abu Jalan Pajeksan

Gambar 4.3 merupakan representasi dari citra keabuan yang diperoleh dengan mengubah Gambar 4.2. Hal tersebut dapat dibuktikan dengan nilai variabel im_gray yang sebelumnya nilai variabel B adalah

483x2353x3 uint8 menjadi 483x2353 uint8 yang

menandakan citra tersebut terdiri dari 1 komponen warna. 4.2.3 Binarization

Proses binerisasi (binarization) merupakan lajutan dari proses

grayscaling yang bertujuan untuk mendapatkan objek citra terhadap

latar. Untuk mengubah citra abu-abu menjadi citra biner dapat dilakukan dengan menggunakan fungsi im2bw() pada Matlab. Dengan melakukan konversi ke citra biner ini maka objek citra dapat dinyatakan sebagai bagian dari citra yang berwarna putih sedangkan bagian latar merupakan bagian dari citra yang berwarna hitam.

B = imread('../Citra nama jalan/testing/pajeksan.jpg'); im_gray = rgb2gray(B);

im_bw = im2bw(im_gray); imshow(im_bw);

Gambar 4.4 Citra Biner Jalan Pajeksan

Gambar 4.4 merupakan representasi dari citra biner yang diperoleh dengan mengubah citra abu-abu pada Gambar 4.3. Hal tersebut dapat dibuktikan dengan nilai variabel im_gray adalah 483x2353 uint8 menjadi 483x2353 logical yang artinya citra tersebut terdiri dari nilai 1 dan 0. Nilai 1 merepresentasikan warna putih sedangkan nilai 0 merepresentasikan warna hitam.

4.2.4 ImageSegmentation

Salah satu karakteristik dari penulisan aksara Jawa adalah bersifat

sylabic (kesukukataan). Satu aksara merupakan satu suku kata yang jika

dirangkai bersama dengan aksara yang lain maka membentuk suatu kata ataupun kalimat. Sebelum sampai tahap untuk mengenali terjemahan aksara tersebut tentunya kita harus memisahkan antar suku kata yang menyusunnya. Setelah dapat kita pisahkan selanjutnya kita bisa melakukan proses pengenalan pada masing-masing suku kata/aksara tersebut. Input yang dipakai dalam proses segmentasi adalah citra biner (hitam-putih). Objek citra yang berwarna putih merupakan representasi dari aksara yang akan dipisahkan satu per satu terhadap keseluruhan aksara yang ada. Cara untuk memisahkan masing-masing aksara adalah menggunakan projection profile.

function [ vert ] = verProj( inImage ) ...

v_proj = sum(inImage,1); for i=2 : v_length-1 if v_proj(i)==0 if v_proj(i+1)~=0 v_line(c) = x_val(i+1); elseif v_proj(i-1)~=0 v_line(c) = x_val(i-1); end else function [ horz ] = horzProj( inImage ) ... h_proj = sum(inImage,2); for i=2 : h_length-1 if h_proj(i)==0 if h_proj(i+1)~=0 h_line(c) = y_val(i+1); else if h_proj(i-1)~=0 h_line(c) = y_val(i-1); end else

if i==2 ... elseif i==v_length-1 ... end if i==2 ... elseif i==h_length-1 ... end

Terdapat 2 tahapan dalam metode projection profile, yaitu proyeksi secara verikal (vertical projection) dan proyeksi secara horizontal

(horizontal projection). Fungsi verProj() dan horzProj()

digunakan untuk mencari posisi atau letak line image suatu citra. Citra masukan sudah diubah menjadi citra biner, sehingga ketika nilai pixel- nya adalah 1 maka menandakan di bidang tersebut terdapat image kemudian ketika ada perubahan nilai pixel dari 1 ke 0 atau 0 ke 1 menandakan adanya 1 buah objek pada bidang tersebut. Perbedaan antara verProj() dan horzProj() terletak pada cara memproyeksikan gambar, verProj() akan memproyeksikan citra secara vertikal sedangkan horzProj() akan memproyeksikan citra secara horizontal.

Keluaran dari proses verProj() adalah sebuah matriks yang merepresentasikan letak atau posisi objek dalam bidang. Panjang matriksnya adalah 1 x 2n dengan n adalah jumlah objek, atau dengan kata lain jumlah objek dalam bidang sama dengan panjang matriks dibagi dengan 2. Fungsi horzProj() adalah menetukan batas paling bawah dan atas dari objek sehingga secara tepat setiap aksara dapat dipisahkan dengan baik serta membuang background yang tidak perlu. Dengan mengetahui letak objeknya maka kita dapat melakukan proses

cropping secara otomatis untuk memperoleh objeknya. Pemotongan

citra dilakukan menggunakan fungsi imcrop() pada Matlab dengan masukan matriks hasil dari vertical projection dan horizontal

projection. Untuk dapat memperoleh tiap aksara secara otomatis maka

fungsi verProj() dan horzProj() tersebut digabungkan menjadi satu ke dalam fungsi syllable_recognizer() dengan masukan berupa citra hitam-putih.

function [ transliteration ] = syllable_recognizer( im_bw ) ... row = size(im_bw,1); [v_line] = verProj(im_bw); for i=1:2:length(v_line)

im_vline = imcrop(im_bw,[v_line(1) 1 v_line(2)-v_line(1) row]); [h_line] = horzProj(im_vline); if length(h_line) == 4 ... elseif length(h_line) == 6 ... else

im_hline = imcrop(im_vline, [1 h_line(1) v_line(2)-v_line(1) h_line(2)-h_line(1)]);

end ...

Fungsi syllable_recognizer() diatas menerapkan prinsip

projection profile untuk melakukan segmentasi terhadap setiap objek

karakter aksara Jawa pada citra. Setiap citra yang digunakan sebagai

template (training) dan testing dikenai projection profile sehingga

secara visual dapat dinyatakan sebagai berikut:

B = imread('../Citra nama jalan/testing/pajeksan.jpg'); im_gray = rgb2gray(B);

im_bw = im2bw(im_gray);

t = syllable_recognizer(im_bw);

Gambar 4.5 Projection Profile dari Citra Jalan Pajeksan

Gambar 4.5 merupakan represenrasi citra hasil segmentasi menggunakan fungsi syllable_recognizer() yang dikenakan pada Gambar 4.4. Dari hasil segmentasi tersebut dapat dilihat bahwa Gambar 4.4 tersusun dari 8 aksara. Secara visual, jika dibangingkan dengan citra asli pada Gambar 4.5 maka citra hasil segmentasi dapat dikatakan berhasil karena masing-masing aksara dapat dipisahkan dengan sempurna.

Tidak semua data uji yang dikenai segmentasi memperoleh hasil yang baik, artinya terdapat aksara yang tidak dapat dipisahkan secara

sempurna dengan aksara lainnya. Sebagai contoh kita dapat melihat citra data uji Jalan Langensari dan hasil segmentasinya sebagai berikut:

B = imread('../Citra nama jalan/testing/langensari.jpg'); im_gray = rgb2gray(B);

im_bw = im2bw(im_gray); imshow(im_bw);

Gambar 4.6 Citra Biner Jalan Langensari

Gambar 4.6 merupakan representasi citra hitam-putih Jalan Langensari yang berukuran 482 x 2354 pixels. Proses selanjutnya adalah melakukan segmentasi untuk memperoleh tiap aksara yang menyusun citra tersebut dengan menggunakan fungsi syllable_recognizer.

B = imread('../Citra nama jalan/testing/langensari.jpg'); im_gray = rgb2gray(B);

im_bw = im2bw(im_gray);

t = syllable_recognizer(im_bw);

Gambar 4.7 ProjectionProfile dari Citra Jalan Langensari Berdasarkan Gambar 4.7 dapat disimpulkan bahwa pada bagian dua aksara terakhir, yaitu pasangan sa dan aksara ri tidak terpisahkan dengan baik. Hal tersebut bisa terjadi karena penulisan aksara tersebut tidak terpisah dengan baik atau saling berdekatan sehingga ada bagian yang tumpang tindih. Jika kita lihat secara visual, berdasarkan Gambar 4.6 citra Jalan Langensari terdiri dari 8 suku kata, tetapi hasil segmentasi pada Gambar 4.7 menghasilkan hanya 7 suku kata saja. Hal tersebut terjadi karena ada dua suku kata yang menyatu. Keterbatasan segmentasi menggunakan projection profile adalah objek-objek yang ada pada citra harus terpisah secara sempurna, setidaknya memiliki

jarak yang cukup antar objeknya sehingga tidak ada yang tumpang tindih atau menyatu.

4.2.5 Resizing

Berdasarkan hasil dari proses projection profile terhadap citra pada Gambar 4.5 dan Gambar 4.7 dapat kita lihat bahwa hasil segmentasi terhadap citra memiliki ukuran yang berbeda-beda. Hal tersebut bisa terjadi karena terdapat variasi aksara antara aksara asli

(legena), aksara legena yang diberi sandhangan, aksara legena yang

memiliki pasangan maupun gabungan keduanya. Untuk mempermudah proses ekstraksi ciri dan klasifikasi maka semua aksara, baik pada data

training maupun testing akan ditentukan ukurannya sehingga setiap

aksara mempunyai ukuran yang sama. Untuk melakukan proses pengubahan ukuran aksara (resizing) dapat dikerjakan dengan menggunakan fungsi imresize() pada Matlab. Ukuran setiap citra kita tentukan sendiri, sehingga untuk penelitian kali ini ditetapkan 100 x 110 pixel.

function [ transliteration ] = syllable_recognizer( im_bw )

...

aksara = imresize(im_hline, [100 110]); imshow(aksara);

...

Pemilihan ukuran tersebut dipilih karena untuk mempermudah dalam proses pembagian zona yang akan dikerjakan dalam proses ekstraksi ciri yang akan dibagi ke dalam 4 zona secara horizontal dan 4 zona secara vertikal-horizontal. Secara visual, hasil dari proses resizing dapat dinyatakan sebagai berikut:

B = imread('../Citra nama jalan/testing/langensari.jpg'); im_gray = rgb2gray(B);

im_bw = im2bw(im_gray);

t = syllable_recognizer(im_bw);

Gambar 4.8 merupakan citra yang sama dengan Gambar 4.5, yaitu citra hasil segmentasi dari Gambar 4.4, hanya saja yang membedakan adalah hasil segmentasi citra diatas sudah dikenai proses resizing sehingga setiap aksara yang diperoleh mempunyai ukuran yang sama. Proses

resizing diperlukan untuk mempermudah dalam membagi zona citra

dan menghitung nilai feature dari masing-masing citra.

Dalam dokumen Transliterasi nama jalan beraksara Jawa. (Halaman 59-67)

Dokumen terkait