• Tidak ada hasil yang ditemukan

3.2. Arsitektur umum

3.2.2. Prapengolahan Citra

3.2.2.1. Penapisan Derau

Penapisan derau akan menggunakan metode Median filter 3x3 untuk server dan klien. Flowchart dari penapisan derau dengan Median filter 3x3 dapat dilihat pada gambar 3.5.

start

Citra yang akan diproses

Buat matriks dari piksel( i-1,j-i) sampai

piksel(i+1,j+1) Mengambil

piksel(i,j)

Ambil median matriks

Ganti nilai matriks sesuai nilai median

yang didapat

Masih ada piksel pada citra yang belum diproses?

end

ya

tidak

Citra dengan derau yang berkurang

Dapat dilihat pada gambar 3.5, citra hasil pengambilan gambar akan ditapis menggunakan Median Filter dengan ukuran ketetanggaan 3x3. Citra akan diproses mulai dari piksel pertama pada koordinat 0,0 sampai piksel terakhir. Piksel diproses dengan cara diambil tetangganya mulai dari koordinat i-1,j-1 sampai i+1,j+1 yang menandakan ukuran ketetanggaannya adalah 3x3. Hasilnya akan dihimpun dalam bentuk matriks. Matriks itu kemudian akan diambil median dari warna-warnanya, yaitu median dari warna hijau, warna biru dan warna merah yang ada pada matriks tersebut. Median didapat dengan mengurutkan nilai-nilai warna tersebut, dan kemudian diambil nilai tengahnya (median). Nilai tersebut kemudian akan mengganti nilai warna seluruh piksel yang ada pada matriks ketetanggaan tersebut. Setelah selesai, maka piksel akan diproses piksel lain hingga seluruh piksel pada citra terproses. Contoh hasil dari penapisan derau dapat dilihat pada gambar 3.6.

(a) (b)

Gambar 3.6. Hasil penapisan derau. Sebelum (a) dan sesudah (b)

3.2.2.2 Binerisasi

Setelah penapisan derau, citra akan mengalami binerisasi. Citra akan mengalami proses grayscaling terlebih dahulu, sebelum binerisasi. Proses grayscaling adalah proses untuk menghasilkan citra abu-abu yang memiliki derajat keabuan. Proses ini dilakukan sebelum proses binerisasi, karena proses binerisasi akan menggunakan algoritma Otsu yang menerima masukan sebuah citra yang abu-abu. Hal ini dapat dilihat dari algoritma Otsu yang berkerja dengan cara menghitung histogram kemunculan tingkat keabuan, yang hanya dapat dibuat jika citra merupakan citra abu- abu sehingga memiliki derajat keabuan. Flowchart dari proses grayscaling dapat dilihat pada gambar 3.7.

start Citra yang akan diproses Nilai keabuan = (merah*0,21)+(hijau *0,71)+(biru*0,07) Mengambil piksel(i,j)

Ganti semua nilai warna pada piksel(i,j) dengan nilai keabuan yang

didapat

Masih ada piksel pada citra yang belum diproses?

end

ya

tidak

Citra abu-abu

Gambar 3.7. Flowchart Grayscaling

Dapat dilihat pada gambar 3.7, nilai keabuan atau derajat keabuan didapat dengan mengambil nilai warna pada piksel, yaitu warna merah, biru dan hijaunya, kemudian mengalikannya dengan koefisien warna. Koefisien warna yang dipilih adalah 0,21 untuk merah, 0,71 untuk hijau dan 0,07 untuk biru. Citra abu-abu diperoleh dengan mengalikan koefisien warna yang sudah ditentukan tersebut ke nilai

warna yang dimiliki sebuah piksel, kemudian hasilnya dijumlahkan. Nilai yang didapat akan menggantikan semua nilai warna dalam piksel tersebut, sehingga nilai merah, hijau dan birunya menjadi seragam. Nilai yang didapat itulah yang akan menjadi derajat keabuan. Kemudian akan diproses piksel lain hingga semua piksel pada citra selesai diproses.

Binerisasi citra akan menggunakan metode ambang batas dengan penentuan ambang batas menggunakan metode Otsu. Flowchart penentuan ambang batas dari metode Otsu dapat dilihat pada gambar 3.8.

start

Citra abu- abu

Membuat kelas probabilitas keluarnya keabuan, rata-rata kelas

tersebut Membuat Histogram derajat

keabuan

Untuk setiap kemungkinan ambang batas, piksel dibagi 2, latar belakang

dan karakter

end

Ambil akar kuadrat dari perbedaan kedua bagian

tersebut

Nilai terbesar setelah iterasi berakhir adalah ambang batas yang

diinginkan

Dapat dilihat pada gambar 3.8, metode Otsu dimulai dengan membuat histogram kemunculan derajat keabuan pada citra abu-abu yang diproses. Histogram derajat keabuan adalah data berapa jumlah kemunculan sebuah derajat keabuan pada sebuah citra. Derajat keabuan yang dimaksud adalah mulai dari 0 atau hitam sampai dengan 255 atau putih. Kemudian dari histogram tersebut dibuat kelas probabilitas munculnya sebuah derajat keabuan dan diambil rata-rata dari kelas tersebut. Setelah itu, dibuat 2 kelas dari proses sebelumnya, yaitu kelas latar belakang dan kelas karakter. Kemudian diambil akar kuadrat dari kedua kelas tersebut, diulang terus menerus untuk semua derajat keabuan. Hasil yang terbesar yang didapat setelah pengulangan berakhir adalah ambang batas yang diinginkan.

start Citra abu- abu Ambil piksel(i,j) end Merah > ambang batas?

Ganti semua warna menjadi 0(hitam)

tidak ya

Ganti semua warna menjadi 255(putih)

Masih ada piksel yang belum

diproses?

Citra hitam putih tidak ya

Metode Ambang Batas adalah metode yang mengganti semua nilai menjadi 1 atau 0, sesuai dengan derajat keabuan sebuah piksel dibandingkan dengan ambang batas yang sudah didapat. Flowchart dari metode ambang batas dengan menggunakan ambang batas yang diperoleh dari metode otsu dapat dilihat pada gambar 3.9.

Sesuai pada gambar 3.9, dapat dilihat bahwa proses ambang batas akan menerima citra abu-abu hasil proses greyscaling yang ada pada tahap sebelumnya. Kemudian akan dicek piksel yang ada pada citra tersebut. Setelah itu, akan dicek apakah warna merah pada piksel tersebut melebihi atau lebih kecil dari ambang batas yang didapat. Pemilihan warna lain selain merah, yaitu hijau atau biru, tidak memiliki perbedaan sama sekali. Hal ini karena pada citra abu abu, semua warna pada piksel sudah memiliki nilai yang sama, yaitu derajat keabuan. Jika warna merahnya lebih besar dari ambang batas, maka piksel akan diubah menjadi piksel putih, dan selain itu akan menjadi piksel hitam. Proses akan dilanjutkan sampai semua piksel pada citra sudah diubah. Hasil yang didapat setelah proses ini adalah, seluruh citra sudah menjadi citra hitam dan putih. Hasilnya dapat dilihat pada gambar 3.10.

(a)

(b)

3.2.2.3 Segmentasi

Proses segmentasi akan dilakukan setelah proses binerisasi. Hal ini karena proses segmentasi akan memeriksa seluruh piksel citra dengan mengandaikan hanya terdapat dua jenis piksel, yaitu piksel latar belakang dan piksel karakter. Penemuan piksel karakter akan dicatat, sedangkan piksel latar belakang akan dilewati. Pembagian piksel dari citra menjadi dua bagian tersebut hanya dapat dilakukan jika citra sudah menjadi citra biner, yaitu citra yang hanya memiliki dua warna, hitam dan putih. Jika citra sudah biner, maka dapat diandaikan piksel karakter adalah piksel hitam dan piksel latar belakang adalah piksel putih. Dengan demikian, piksel putih akan dilewati pada saat sistem sedang menelusiri semua piksel.

Pemotongan citra dengan cara ini akan menganggap piksel-piksel yang masih bersatu dan tidak putus sebagai satu buah karakter, sehingga tulisan sambung akan selalu dikenali sebagai satu karakter. Oleh karena itu, sistem tidak akan mengenali tulisan sambung.

Sesuai pada flowchart pada gambar 3.11, proses pemotongan karakter dimulai dengan mencari piksel karakter yang ada pada ujung kiri dengan cara menyelusiri setiap piksel dari atas kebawah. Jika ditemukan, maka piksel paling kiri tersebut akan menjadi ujung kiri kolom. Selanjutnya akan diselurusi lagi piksel berikutnya, jika didapat lagi piksel karakter, maka piksel tersebut akan ditandai sebagai ujung kanan. Kemudian jika ditemukan lagi piksel karakter pada penyelusuran berikutnya, ujung kanan akan berganti menjadi piksel tersebut. Hal ini akan terus dilakukan sampai akhirnya tidak ditemukan lagi piksel karakter pada sebuah pencarian. Ujung kanan kolom adalah piksel karakter terakhir yang didapat. Dengan diketahuinya ujung kanan dan ujung kiri, maka kolom berisi karakter akan dipotong. Hasilnya adalah satu karakter terekstrak dari citra tersebut. Kemudian piksel-piksle lain akan diproses dengan cara yang sama sampai akhirnya tiba di piksel paling akhir dari citra. Hasilnya adalah, citra-citra baru yang berisi satu karakter per citra.

start

Scan citra dari piksel paling atas ke bawah Ditemukan piksel karakter? Citra hitam putih Mulai dari (0,0)

Cek pada aksis x+1

Lanjutkan pengecekan

Sampai pada piksel paling bawah? Piksel yang ditemukan menjadi koordinat kolom paling kiri tidak ya Ditemukan piksel karakter? tidak Piksel yang ditemukan menjadi koordinat kolom paling kanan ya

Cek pada aksis x+1

ya

tidak

Didapat kolom berisi satu karakter.

Potong bagian tersebut dari citra.

Sampai pada piksel paling

akhir dari citra? end

tidak

ya

Gambar 3.11. Flowchart segmentasi kata menjadi kolom yang berisi satu huruf

Contoh dari hasil proses segmentasi dapat dilihat pada gambar 3.12(a) untuk gambar aslinya, dan 3.12(b) sampai dengan 3.12(j) adalah citra hasil segmentasi karakter.

(a)

(b) (c) (d) (e) (f) (g) (h) (i) (j)

Gambar 3.12. Hasil Segmentasi. Sebelum(a) dan Sesudah(b – j)

3.2.2.4. Penskalaan

Tiap tiap karakter yang berhasil diisolasi akan mengalami proses pengskalaan. Proses ini akan menggunakan fungsi penskalaan yang ada pada Android

(createScaledBitmap) sedangkan pada bagian server akan menggunakan

java.awt.geom.AffineTransform. Ukuran yang ditentukan adalah 20 piksel x 25 piksel. Flowchart untuk proses penskalaan dapat dilihat pada gambar 3.13.

start Citra berukuran 20 piksel x 25 piksel Citra karakter Proses penskalaan ke ukuran 20 piksel x 25 piksel end

Sesuai dengan gambar 3.13, dapat dilihat bahwa citra yang akan menjadi masukan pada proses penskalaan adalah citra karakter yang berhasil didapat pada proses segmentasi karakter. Citra tersebut kemudian akan diproses untuk diperkecil menjadi ukuran 20 piksel x 25 piksel dengan bantuan fungsi createScaledBitmap

untuk klien dan untuk server akan menggunakan fungsi java.awt.geom.AffineTransform. Fungsi tersebut telah disediakan oleh android dan java untuk digunakan, sehingga tidak diperlukan untuk membuat metode sendiri. Hasil dari proses penskalaan dapat dilihat pada gambar 3.14.

Gambar 3.14. Hasil Penskalaan dari sebuah karakter. Sebelum(kiri) dan sesudah(kanan)

3.2.2.5. Thinning

Tiap karakter terisolasi kemudian akan mengalami proses thinning. Metode yang digunakan adalah metode Zhang-Suen. Proses thinning akan menghasilkan tulang dari citra karakter. tulang yang dihasilkan akan memiliki ketebalan sebesar satu piksel.

Proses pengambilan tulang dari citra dilakukan karena akan ditemukan huruf dengan ketebalan piksel yang berbeda-beda. Citra huruf yang memiliki ketebalan berbeda tersebut, tetap memiliki citra tulang yang sama, sebagai penanda bahwa huruf tersebut adalah sama. Oleh karena itu, bagian yang diekstrak dari citra karakter adalah tulang dari citra tersebut. Flowchart dari metode Zhang-Suen dapat dilihat pada gambar 3.15.

start

Citra biner huruf Cyrillic

Piksel tersebut hitam dan punya 8 tetangga? Memproses piksel(i,j) dan

membuat matriks tetangganya sebesar 3x3 2 <= B(p1) <= 6 A(p1) = 1 P2 atau p4 atau p6 putih P4 atau p6 atau p8 putih ya ya ya ya Hapus piksel(i,j)

Masih ada piksel pada citra yang belum diproses?

end tidak tidak tidak tidak tidak ya ya tidak

Gambar 3.15. Flowchart proses thinning dengan metode Zhang-Suen Sesuai dengan gambar 3.14, maka dapat dilihat bahwa proses thinning dimulai dengan input citra huruf Cyrilic. Citra karakter Cyrillic tersebut kemudian akan cek tiap pikselnya dengan ukuran ketetanggaan 3x3. Kemudian dicek apakah piksel

tersebut hitam dan punya 8 tetangga. Kemudian dicek kembali apakah jumlah tetangga yang hitam dari piksel tersebut lebih besar atau sama dengan 2 dan lebih kecil atau sama dengan 6. Kemudian dicek lagi apakah jumlah transisi dari putih ke hitam dengan urutan P2, P3, P4, P5, P6, P7, P8, P9, P2 yang sesuai dengan gambar 2.3, adalah sama dengan 1. Kemudian dicek kembali apakah P2, P4 atau P6 putih. Setelah itu dicek lagi apakah P4, P6 dan P8 adalah putih. Jika semua kondisi yang dicek tersebut benar, maka piksel akan dihapus. Proses akan berakhir setelah semua piksel diproses. Hasil dari metode ini dapat dilihat pada gambar 3.16.

Gambar 3.16. Hasil proses thinning. Sebelum(kiri) dan sesudah(kanan)

3.2.3. Ekstraksi Fitur

Hasil dari prapengolahan citra adalah karakter-karakter yang berhasil diisolasi dari citra kata. Setiap karakter tersebut akan diekstrak fiturnya dengan metode pemetaan piksel. Piksel hitam akan bernilai 1, dan piksel putih akan bernilai 0. Nilai akan disimpan sebagai sebuah untaian string. Karena ukuran dari citra karakter terisolasi adalah 20 x 25 piksel, maka ukuran dari untaian tersebut adalah 20x25 = 500 satuan. Piksel pada koordinat f(0,0) akan berada pada indeks untaian 0, f(0,1) akan berada pada indeks 1, dan selanjutnya sampai seluruh indeks terisi. Hasil dari ekstraksi fitur ini akan dikirimkan ke mesin yang sudah dilatih untuk dikenali.

Dokumen terkait