Pengenalan citra huruf berderau dengan jaringan syaraf tiruan berdasarkan sifat-sifat statistis.
Pengenalan citra merupakan suatu proses pengolahan citra aras-tinggi yang bertujuan untuk mengenali informasi yang terkandung dalam suatu citra. Untuk dapat melakukan proses pengenalan tersebut, penggunaan metode pengenalan yang berdasarkan pada sifat-sifat statistis merupakan metode yang telah umum digunakan. Disamping metode tersebut, dewasa ini, terdapat pula metode pengenalan lain yang sedang berkembang pesat, yang dinamakan metode jaringan syaraf tiruan.
Dengan menggunakan jaringan syaraf tiruan yang berdasarkan pada sifatsifat statistis, maka pada penelitian ini dilakukan perancangan suatu model sistem pengenalan citra yang dapat mengenali huruf pada suatu citra berderau. Hasil pengujian jaringan syaraf tiruan yang dirancang memperlihatkan bahwa, huruf pada suatu citra berderau yang tingkat deraunya mencapai 35% dapat dikenali, dengan kesalahan tingkat pengenalan kurang dari 5%.
(2)
information contained in the image. In performing this recognition, methods based on statistical properties are the common use. Beside those methods, nowadays, another method which utilizes the artificial neural networks has grown extensively.
By using the artificial neural network which is based on some statistical properties, in this research a model of image recognition system was designed to have the ability to recognize letter from a noisy image. Test results of this model have shown that letter from a noisy image with noise level up to 35% can be recognized, with error recognition rate less than 5%.
(3)
PENGENALAN CITRA HURUF BERDERAU
DENGAN JARINGAN SYARAF TIRUAN
BERDASARKAN SIFAT-SIFAT STATISTIS
Tesis
untuk memenuhi sebagian persyaratan untuk mencapai derajat Sarjana S-2
Program Studi Teknik Elektro Jurusan Ilmu-ilmu Teknik
diajukan oleh Linggo Sumarno
8422/I-1/526/96
Kepada
PROGRAM PASCA SARJANA UNIVERSITAS GADJAH MADA
(4)
(5)
(6)
iii PRAKATA
Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa atas segala karunia yang telah diberikanNya hingga selesainya tesis ini, yang merupakan salah satu syarat untuk mencapai derajat Sarjana S-2 di Program Studi Teknik Elektro Jurusan Ilmu-ilmu Teknik Universitas Gadjah Mada.
Walaupun telah diusahakan sebaik mungkin, penulis menyadari tesis ini masih terdapat kekurangan di sana sini. Untuk itu, saran untuk perbaikan lebih lanjut sangat penulis harapkan.
Pada kesempatan ini, penulis ucapkan terima kasih yang sebesar-besarnya kepada pihak-pihak yang telah sangat membantu kelancaran studi S2 hingga selesainya tesis ini:
1. Bapak Adhi Susanto MSc. PhD., selaku pembimbing pertama yang dengan penuh perhatian membimbing tesis ini
2. Ibu Ir. Litasari MSc., selaku pembimbing kedua yang juga dengan penuh perhatian membimbing tesis ini.
3. Dr. M. Sastrapratedja SJ., selaku Rektor Universitas Sanata Dharma yang telah memberikan kesempatan untuk menempuh studi S2 di UGM.
4. Yayasan Sanata Dharma dan EEDP yang telah membantu pembiayaan studi S2.
5. Karyawan administrasi Jurusan Teknik Elektro Universitas Gadjah Mada yang telah membantu kelancaran studi S2.
(7)
iv
6. Pihak-pihak lain yang tidak dapat penulis sebutkan satu persatu dalam kesempatan ini.
Yogyakarta, Nopember 1998 penulis
(8)
v
DAFTAR ISI
halaman
Halaman Judul ……… i
Halaman Pengesahan ………. ii
Prakata ……… iii
Daftar Isi ………. v
Daftar Tabel ……… ix
Daftar Gambar ………...………. x
Intisari ……… xi
BAB 1 PENDAHULUAN 1.1 Latar Belakang ……… 1
1.1.1 Perumusan masalah ……… 1
1.1.2 Keaslian penelitian ………. 2
1.1.3 Faedah yang diharapkan ……… 3
1.2 Tujuan Penelitian ……….…. 3
BAB 2 TINJAUAN PUSTAKA 2.1 Pengantar ………..……… 4
2.2 Landasan Teori ………. 4
2.2.1 Jaringan syaraf tiruan ……… 4
(9)
vi
2.2.3 Jendela Parzen ………. 8
2.2.4 Optimasi faktor penyekala ………. 11
2.3 Hipotesis ……… 13
2.4 Langkah Penelitian ……… 14
BAB 3 CARA PENELITIAN 3.1 Bahan Penelitian ………. 15
3.2 Alat Penelitian ……… 17
3.3 Jalan Penelitian ………. 17
3.3.1 Perancangan keseluruhan sistem ……… 17
3.3.2 Perancangan jaringan syaraf tiruan ………. 19
3.3.3 Pelatihan dan pengujian jaringan syaraf tiruan ……. 25
3.3.4 Implementasi keseluruhan sistem ……… 25
3.3.5 Pengujian keseluruhan sistem ………... 26
3.3.6 Pengambilan data hasil pengujian ………. 27
3.3.7 Analisis hasil pengujian ……… 27
3.4 Variabel yang Diamati ……… 28
3.5 Kesulitan-kesulitan ……… 29
BAB 4 HASIL PENELITIAN 4.1 Hasil Penelitian ………... 30
4.1.1 Pengujian mayor terhadap citra masukan yang berderau …... 31
(10)
vii
4.1.2 Pengujian minor terhadap citra masukan yang mengalami deformasi proporsi, pergeseran, dan perputaran
…... 32
4.1.3 Pengujian gabungan terhadap citra masukan yang berderau dan mengalami deformasi proporsi, pergeseran dan perputaran
…... 35
4.1.4 Panjang waktu pelatihan dan pengenalan …………. 37 4.1.5 Pengujian pengaruh derau dan faktor penyekala ….. 37 4.1.6 Pengujian pengaruh derau dan bentuk huruf ………. 38 4.2 Pembahasan ……… 39 4.2.1 Pengaruh derau terhadap tingkat pengenalan ……… 39 4.2.2 Pengaruh deformasi proporsi, pergeseran, dan
perputaran terhadap tingkat pengenalan
……. 40
4.2.3 Pengaruh derau serta deformasi proporsi, pergeseran, dan perputaran terhadap tingkat pengenalan
……. 41
4.2.4 Panjang waktu pelatihan dan pengenalan …………. 42 4.2.5 Pengaruh derau dan faktor penyekala ……….. 42 4.2.6 Pengaruh derau dan bentuk huruf ………. 43
BAB 5 KESIMPULAN DAN SARAN
5.1 Kesimpulan ……… 45 5.2 Saran ……… 47
BAB 6 RINGKASAN
(11)
viii
6.2 Tinjauan Pustaka ……… 49
6.3 Landasan Teori ………. 50
6.4 Cara Penelitian ……… 50
6.5 Hasil Penelitian ………. 51
Daftar Pustaka ………. 52
LAMPIRAN L.1 Daftar Kode Sumber ……….. 54
L.2 Listing Kode Sumber ……… 54
(12)
ix
DAFTAR TABEL
halaman Tabel 4.1 Pengaruh deformasi proporsi terhadap tingkat
pengenalan.
……… 33
Tabel 4.2 Pengaruh deformasi pergeseran terhadap tingkat pengenalan.
……… 34
Tabel 4.3 Pengaruh deformasi perputaran terhadap tingkat pengenalan.
……… 35
Tabel 4.4 Pengaruh derau terhadap tingkat pengenalan, pada citra yang mengalami deformasi proporsi, pergeseran, dan perputaran.
……… 36
Tabel 4.5 Panjang waktu pelatihan dan pengenalan, pada jaringan yang terkonstruksi atas 26 kelas pola, dengan dua sampel di setiap kelasnya.
……… 37
Tabel 4.6 Tingkat pengenalan jaringan (%) pada keadaan σ dan derau yang beragam.
……… 37
Tabel 4.7 Rerata kerapatan probabilitas pada keadaan σ dan derau yang beragam.
……… 37
Tabel 4.8 Tingkat pengenalan jaringan untuk citra huruf masukan yang seragam, pada keadaan tingkat derau 40%.
(13)
x
DAFTAR GAMBAR
halaman
Gambar 2.1 Model dasar neuron. ……….. 6
Gambar 2.2 Contoh jaringan umpanmaju tiga-lapis. ……… 7
Gambar 3.1 Dua macam jenis huruf: Roman dan Arial. ………... 16
Gambar 3.2 Sistem pengenalan citra huruf berderau. ……… 18
Gambar 3.3 Jaringan syaraf probabilitas. ……….. 20
Gambar 4.1 Contoh citra huruf berderau; (a) dan (g) citra asli; (b) dan (h) berderau 5 %; (c) dan (i) berderau 15%; (d) dan (j) berderau 25%; (e) dan (k) berderau 30%; (f) dan (l) berderau 35%. ……. 31
Gambar 4.2 Grafik pengaruh derau terhadap tingkat pengenalan untuk citra huruf masukan yang beragam. ……. 32
Gambar 4.3 Contoh citra yang mengalami deformasi proporsi, dengan (a) dan (d) citra asli, (b) dan (e) kurus, (c) dan (f) gemuk. ……. 33
Gambar 4.4 Contoh citra yang mengalami deformasi pergeseran, dengan (a) dan (d) citra asli, (b) tergeser ke kiri satu piksel, (c) tergeser ke kanan 2 piksel, (e) tergeser ke atas dua piksel dan (f) tergeser ke bawah tiga piksel. ……. 34
Gambar 4.5 Contoh citra yang mengalami deformasi perputaran, dengan (a) dan (d) citra asli, (b) dan (e) terputar -5 o , (c) dan (f) terputar 5 o. ……. 35
Gambar 4.6 Contoh citra berderau yang mengalami deformasi proporsi, pergeseran dan perputaran; (a) dan (d) citra asli; (b) dan (e) berderau 10 %, kurus, tergeser ke kiri satu piksel dan terputar 5 o ; (c) dan (f) berderau 10 %, gemuk, tergeser ke kanan satu piksel dan terputar -5 o. ……. 36
Gambar 4.7 Grafik pengaruh derau yang bertingkat terhadap tingkat pengenalan untuk bentuk huruf ‘B’,’X’,’Z’,dan ‘W’. ……. 39
(14)
xi
INTISARI
Pengenalan citra merupakan suatu proses pengolahan citra aras-tinggi yang bertujuan untuk mengenali informasi yang terkandung dalam suatu citra. Untuk dapat melakukan proses pengenalan tersebut, penggunaan metode pengenalan yang berdasarkan pada sifat-sifat statistis merupakan metode yang telah umum digunakan. Disamping metode tersebut, dewasa ini, terdapat pula metode pengenalan lain yang sedang berkembang pesat, yang dinamakan metode jaringan syaraf tiruan.
Dengan menggunakan jaringan syaraf tiruan yang berdasarkan pada sifat-sifat statistis, maka pada penelitian ini dilakukan perancangan suatu model sistem pengenalan citra yang dapat mengenali huruf pada suatu citra berderau. Hasil pengujian jaringan syaraf tiruan yang dirancang memperlihatkan bahwa, huruf pada suatu citra berderau yang tingkat deraunya mencapai 35% dapat dikenali, dengan kesalahan tingkat pengenalan kurang dari 5%.
ABSTRACT
Image recognition is a high-level image processing which is targeted to recognize information contained in the image. In performing this recognition, methods based on statistical properties are the common use. Beside those methods, nowadays, another method which utilizes the artificial neural networks has grown extensively.
By using the artificial neural network which is based on some statistical properties, in this research a model of image recognition system was designed to have the ability to recognize letter from a noisy image. Test results of this model have shown that letter from a noisy image with noise level up to 35% can be recognized, with error recognition rate less than 5%.
(15)
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Pengenalan citra merupakan bagian bidang ilmu pengolahan citra, yang pada dasarnya bermaksud untuk meniru kemampuan sistem penglihatan manusia dalam menganalisis dan memahami suatu citra. Untuk mencapai maksud tersebut, metode yang berdasarkan sifat-sifat statistis merupakan metode yang telah dipakai secara luas. Penggunaan regresi linear, pengelompokan, korelasi, dan pengklasifikasi Bayes merupakan standar yang telah umum dipakai.
Dewasa ini, jaringan syaraf tiruan yang pada dasarnya adalah meniru sistem otak manusia, telah memperlihatkan sejumlah sifat yang menarik seperti unjukkerja yang tangguh ketika menghadapi pola berderau, tolerans yang tinggi terhadap kesalahan, laju komputasi paralel yang tinggi, serta kemampuan generalisasi.
Berdasar pada sifat-sifat statistis dan jaringan syaraf tiruan di atas, pada penelitian ini dirancang suatu jaringan syaraf tiruan yang mampu mengenali citra huruf berderau.
1.1.1 Perumusan masalah
Manusia dapat mengenali dengan mudah suatu citra huruf berderau, dengan kandungan derau hingga suatu tingkat derau tertentu. Akan tetapi, tidak demikian halnya dengan komputer, karena komputer memerlukan adanya
(16)
model-model pengenalan citra tertentu untuk dapat melakukan proses pengenalan citra tersebut. Pada penelitian ini, akan dibuat suatu model pengenalan citra yang dapat dilakukan oleh komputer. Model pengenalan citra yang akan dibuat merupakan model dengan jaringan syaraf tiruan yang berdasarkan sifat-sifat statistis.
1.1.2 Keaslian penelitian
Pengenalan citra huruf berderau ukuran 5x7 piksel dengan jaringan syaraf tiruan yang berdasarkan pada perambatan galat mundur telah diusulkan oleh Demuth dan Beale (1994). Dengan jaringan syaraf tiruan tersebut, kandungan derau hingga 20% masih dapat ditanggulangi.
Model jaringan syaraf tiruan untuk pengenalan citra berderau ukuran 7x9 piksel, dengan berdasarkan perseptron dan pengingat heteroasosiatif, telah diusulkan. Model yang dikenalkan oleh Fausett (1994) tersebut, mampu mengenali citra huruf yang mempunyai kandungan derau hingga 30%.
Suatu model jaringan syaraf tiruan yang berdasarkan sifat-sifat statistis yang mampu mengenali citra huruf berderau ukuran 32x32 piksel, dengan kandungan derau sekitar 20% telah dikenalkan oleh Watanabe (1996). Pemodelan jaringan syaraf tiruan tersebut dilakukan dengan menggunakan jaringan syaraf kompetisi probabilitas.
Penelitian yang dilakukan di sini, dimaksudkan untuk mengembangkan dan memberikan suatu alternatif lain jaringan syarat tiruan yang berdasarkan sifat-sifat statistis yang lain. Jaringan syaraf ini diharapkan mampu menangani citra
(17)
huruf berukuran 32x32 piksel yang mempunyai kandungan derau hingga lebih dari 30%.
1.1.3 Faedah yang dapat diharapkan
Dengan adanya penelitian ini dapat diharapkan akan dihasilkan suatu model alternatif pengenalan citra huruf berderau dengan jaringan syarat tiruan yang berdasarkan sifat-sifat statistis, yang kemampuan pengenalan citranya lebih tinggi dari yang pernah ada sebelumnya sebelumnya.
1.2 Tujuan Penelitian
Tujuan yang ingin dicapai dalam penelitian ini adalah tersusunnya perangkat-lunak suatu model jaringan syaraf tiruan yang berdasarkan sifat-sifat statistis, yang mampu mengenali citra huruf berderau. Watak dan unjukkerja jaringan syaraf tiruan dalam melakukan pengenalan citra huruf berderau, akan diselidiki dalam penelitian ini.
(18)
BAB 2
TINJAUAN PUSTAKA
2.1 Pengantar
Jaringan syaraf tiruan yang berdasarkan sifat-sifat statistis pertama kali diperkenalkan oleh Donald Specht di tahun 1990-an. Jaringan yang dinamakan Jaringan Syaraf Probabilistis ini, mendasarkan diri pada pengklasifikasi Bayes-Parzen. Specht memperlihatkan bahwa algoritma jaringan syaraf ini dapat dipecah ke dalam sejumlah besar pemroses-pemroses mandiri sederhana, yang dapat beroperasi secara paralel. Adanya pemrosesan paralel inilah yang merupakan dasar jaringan syaraf tiruan.
2.2 Landasan Teori 2.2.1 Jaringan syaraf tiruan
Jaringan syaraf tiruan yang berkembang sejak tahun 1940-an, telah memperlihatkan kemajuan yang sangat pesat. Dewasa ini, model-model jaringan syaraf tiruan tersebut telah secara sukses diterapkan pada sistem-sistem untuk mengerjakan tugas-tugas seperti pengenalan pola, kendali robot, dan prediksi runtun waktu.
Pada dasarnya, jaringan syaraf tiruan dimodelkan berdasarkan ciri organisasi otak manusia, yang mampu melakukan pengolahan secara paralel dan non-linear serta mampu pula mengangani informasi-informasi yang kompleks.
(19)
Definisi jaringan syaraf tiruan menurut Lin dan Lee (1996).
Jaringan syaraf tiruan adalah generasi baru sistem pemrosesan informasi yang dikonstruksi dengan berdasarkan pada beberapa ciri yang ada pada otak manusia, yaitu:
1) adanya elemen-elemen pemroses (simpul-simpul) yang saling tersambung, yang biasanya beroperasi secara paralel, dan
2) adanya kelakuan kolektif seperti kemampuan untuk belajar, mengingat kembali dan melakukan generalisasi atas pola pelatihan atau data.
Dalam implementasinya, jaringan syaraf tiruan merupakan paduan tiga hal dasar sebagai berikut.
1. Elemen-elemen pemroses (simpul-simpul) yang disebut sebagai neuron-neuron.
2. Arsitektur sambungan antar elemen-elemen pemroses yang disebut sebagai arsitektur jaringan.
3. Aturan penyimpanan informasi ke dalam jaringan yang disebut sebagai aturan pelatihan.
Setiap neuron pada jaringan syaraf tiruan mempunyai tiga fungsi utama sebagai berikut.
1. Mengumpulkan nilai-nilai masukan dan nilai-nilai pada sambungan yang disebut sebagai bobot.
2. Melakukan operasi matematis tertentu yang telah ditentukan sebelumnya. 3. Mengeluarkan nilai hasil operasi matematis di atas.
(20)
Secara sederhana neuron ini diperlihatkan pada Gambar 2.1 di bawah ini.
x1
g(f(x,w)) wn
w1
w2
x2
y
…
xn
Gambar 2.1 Model dasar neuron
Pada Gambar 2.1 di atas, keluaran neuron dirumuskan secara umum sebagai y = g(f(x, w)), dengan x = [x1, x2, …, xn] adalah vektor nilai masukan dan
w = [w1, w2, …, wn] adalah vektor nilai bobot.
Neuron-neuron yang saling tersambung akan dapat membentuk banyak macam arsitektur jaringan seperti diperlihatkan oleh Fausett (1994), Lin dan Lee (1996), dan Patterson (1996). Gambar 2.2 memperlihatkan contoh arsitektur jaringan umpanmaju tiga-lapis yang merupakan dasar arsitektur jaringan syaraf tiruan yang digunakan dalam penelitian ini.
(21)
keluaran
lapis ke-3
lapis ke-2
lapis ke-1
masukan
Gambar 2.2 Contoh jaringan umpanmaju tiga-lapis.
Bobot-bobot sambungan dalam jaringan merupakan tempat jaringan syaraf menyimpan informasi. Terdapat banyak ragam algoritma pelatihan untuk mengeset nilai-nilai bobot ini. Pada penelitian ini, algoritma yang dipakai adalah algoritma pelatihan terbimbing jaringan syaraf probabilistis. Algoritma pelatihan ini pada dasarnya adalah, pembentukan neuron pada lapis ke-1 yang merupakan anak (turunan) neuron pada lapis ke-2, pada Gambar 2.2 di atas.
2.2.2 Pengklasifikasi Bayes
Jaringan syaraf tiruan yang dipergunakan dalam penelitian ini didasarkan pada pengklasifikasi Bayes, yang melakukan klasifikasi dengan berdasarkan pada sifat-sifat statistis sekelompok data (informasi). Secara sederhana, pengklasifikasi Bayes untuk kasus klasifikasi dua-kelas diperlihatkan sebagai berikut.
(22)
hA cA fA (x) > hB cB fB (x) (2.1)
dengan hA , hB : probabilitas apriori kelas A dan B
cA , cB : risiko pemilihan kelas A dan B
fA (x) , fB (x) : kerapatan probabilitas kelas A dan B untuk
masukan x.
2.2.3 Jendela Parzen
Kerapatan probabilitas kelas pada pengklasifikasi Bayes di atas, biasanya tidak diketahui. Oleh karena itu, digunakan suatu cara untuk mengestimasi kerapatan probabilitas dengan berdasarkan pada jendela Parzen, yang dirumuskan sebagai:
∑
= ⎟⎟⎠
⎞ ⎜⎜
⎝ ⎛ = n
i
i
x x D K n x f
1
) , ( 1
) (
σ (2.2)
dengan n : jumlah sampel σ : faktor penyekala
⎟⎟ ⎠ ⎞ ⎜⎜
⎝ ⎛
σ ) , (x xi D
K : fungsi kernel dengan D(x,xi) adalah fungsi jarak
antara vektor masukan x dan sampel xi.
Fungsi kernel di atas, pada dasarnya bertujuan untuk menghitung nilai kemiripan antara masukan dengan sampel yang ada. Nilai kemiripan ini akan
(23)
makin tinggi bila masukannya makin mirip dengan sampel yang ada dan sebaliknya, makin rendah bila masukannya makin tidak mirip dengan sampel yang ada.
Bentuk fungsi kernel di atas dapat beragam, namun fungsi tersebut harus memenuhi kriteria-kriteria sebagaimana ditulis oleh Masters (1995) sebagai berikut.
1. Fungsi kernel harus berhingga:
∞ <
ϕ ϕ
ϕ |K( )|d
sup (2.3)
2. Fungsi kernel harus dengan cepat menuju nol bila argumennya meningkat dalam nilai absolutnya:
∫
<∞∞ ∞ −
ϕ ϕ d K( )
0 ) (
lim =
∞
→ ϕ ϕ
ϕ K (2.4)
3. Fungsi kernel harus dinormalisasi, bila yang akan diestimasi adalah fungsi kerapatan:
1 )
( =
∫
∞ ∞ −
ϕ ϕ d
(24)
4. Untuk mendapatkan kelakuan asimtotik yang tepat, jendela (faktor penyekala) harus menyempit bila jumlah sampelnya meningkat:
lim =0
∞
→ n
n σ
∞ = ∞
→ n
n
nσ
lim (2.6)
Salah satu contoh fungsi kernel yang memenuhi empat kriteria di atas adalah fungsi Gaussian, yang diperlihatkan pada persamaan:
2 ) (ϕ =e−ϕ
K (2.7)
Dalam fungsi kernel di atas, tercakup adanya fungsi jarak. Fungsi jarak tersebut merupakan fungsi untuk menghitung jarak antara dua buah vektor. Terdapat banyak macam fungsi jarak yang dapat dipergunakan untuk keperluan tersebut (Wilson et al, 1997). Salah satu macam fungsi jarak tersebut adalah fungsi jarak Minkowsky yang diperlihatkan pada persamaan:
r n
i
r i
i y
x y
x D
/ 1
1 ) ,
( ⎟⎟
⎠ ⎞ ⎜
⎜ ⎝ ⎛
− =
∑
=
(2.8)
dengan r adalah bilangan bulat (1,2, …), yang merupakan orde fungsi jarak tersebut.
(25)
2.2.4 Optimasi faktor penyekala
Besar nilai faktor penyekala pada persamaan (2.2), dicari dengan melalui proses optimasi yang memperhatikan hal-hal sebagai berikut.
1. Bila masukan x diketahui merupakan sampel kelas ω, maka diharapkan nilai f(x) yang maksimum. Nilai yang maksimum ini dapat terjadi bila keadaan kandungan derau pada masukan x tersebut adalah 0 %.
2. Bila masukan x diketahui bukan merupakan sampel kelas ω, maka diharapkan nilai f(x) yang minimum. Nilai yang minimum ini dapat terjadi bila keadaan kandungan derau pada masukan x tersebut adalah 50 % 1)
Berdasarkan hal-hal di atas proses optimasi yang memaksimumkan nilai f(x) pada kandungan derau 0 %, dapat ditulis sebagai:
(
0%)
1( )=maks f(x)|derau=
g σ (2.9)
Karena nilai f(x)|derau=0% di atas selalu lebih kecil dari 1, maka persamaan (2.9) di
atas dapat ditulis dalam bentuk minimisasi fungsi:
(
0%)
1( )=min1− f(x)|derau=
g σ (2.10)
1)
Dalam hal ini, dipilih derau 50 %, karena dengan derau setinggi itu, citra masukannya benar-benar sangat tidak mirip dengan citra yang disimpan.
(26)
Selanjutnya, proses optimasi untuk meminimumkan f(x) pada kandungan derau 50 % adalah:
(
50%)
2( )=min f(x)|derau=
g σ (2.11)
Akhirnya, proses optimasi keseluruhannya adalah minimisasi gabungan persamaan (2.10) dan (2.11):
) ( ) ( )
(σ g1 σ g2 σ
g = + (2.12)
(
)
{
1 ( ) 0% ( ) 50%}
min)
( = − f x derau= + f x derau= g σ
(2.13)
Dalam penelitian ini, proses minimisasi pada fungsi g(σ) di atas dilakukan dengan menggunakan pencarian kuadratis (Buchanan dkk., 1992), yang algoritmanya ditulis sebagai berikut.
Algoritma 2.1 Pencarian Kuadratis
Masukan Tetapkan batas minimum σ0 dan batas maksimum σ2
untuk fungsi g.
Tetapkan toleransi ε Hitung
2 2 0 1
σ σ
σ = + dan h = σ1 - σ0
Kalang Ulangi
jika g(σ0) < g(σ1), maka (geser kiri)
σ2 = σ1 ; σ1 = σ0 ; σ 0 = σ 1 - h
jika g(σ 2) < g(σ 1), maka (geser kanan)
(27)
)] ( ) ( . 2 ) ( .[ 2 )] ( ) ( .[ 2 1 0 2 0 1 * σ σ σ σ σ σ σ g g g g g h + − − + =
jika g(σ *) < g(σ 1), maka σ 1 = σ *
2
h
h= ; σ 0 = σ 1 – h ; σ 2 = σ 1 + h
hingga h < ε
Keluaran Minimum fungsi g pada σ 1 dengan galat lebih kecil dari h.
2.3 Hipotesis
Model jaringan syaraf tiruan untuk pengenalan huruf yang dirancang, mempunyai 26 macam kelas, yaitu dari A hingga Z. Setiap kelas mempunyai sejumlah sampel dari 1 hingga n.
Masukan huruf berderau yang telah diubah menjadi vektor, selanjutnya dihitung kerapatan probabilitasnya untuk setiap kelas, dengan menggunakan jendela Parzen. Penghitungan dengan jendela Parzen ini pada dasarnya dilakukan dalam dua tahap berikut.
1. Tahap pertama, penghitungan nilai kemiripan masukan setiap sampel di setiap kelas. Penghitungan nilai kemiripan ini dilakukan dengan menggunakan fungsi kernel yang telah ditentukan sebelumnya.
2. Tahap kedua, penjumlahan ternormalisasi nilai-nilai kemiripan yang terdapat di setiap kelas.
(28)
Dengan berdasarkan pada aturan klasifikasi Bayes, maka keluaran jaringan syaraf tiruan adalah kelas yang mempunyai nilai kerapatan probabilitas terbesar 2).
2.4 Langkah Penelitian
Penelitian dilakukan dengan melalui tahap-tahap sebagai berikut. 1. Perancangan sistem pengenalan citra huruf berderau secara keseluruhan. 2. Perancangan model jaringan syaraf tiruan, dengan berdasarkan pada jaringan
syaraf probabilistis.
3. Pengimplementasian model jaringan syaraf tiruan dalam bentuk program, dengan menggunakan MATLAB.
4. Pengimplementasian sistem pengenalan citra huruf berderau secara keseluruhan dalam bentuk program, dengan menggunakan MATLAB.
5. Pengujian watak dan unjukkerja sistem pengenalan citra huruf berderau secara keseluruhan.
6. Analisis hasil pengujian. 7. Pembuatan laporan penelitian.
2)
(29)
BAB 3
CARA PENELITIAN
Penelitian dilakukan dengan cara merancang sistem pengenalan citra huruf berderau, yang masukan dan keluarannya berupa citra dengan format bitmap. Implementasi sistem dituliskan dalam bentuk program dengan menggunakan MATLAB.
3.1 Bahan Penelitian
Bahan yang dipakai untuk menjalankan penelitian ini berupa citra huruf dengan spesifikasi sebagai berikut.
1. Format citra : Bitmap 2. Ukuran citra : 32x32 piksel 3. Huruf : A hingga Z 4. Jenis huruf : Roman dan Arial
Dalam penelitian ini, citra huruf dengan spesifikasi di atas dibuat dengan menggunakan program PAINT yang terdapat dalam sistem operasi WINDOWS 95. Hasil pembuatan citra huruf tersebut tersebut, secara visual diperlihatkan dalam Gambar 3.1.
(30)
(a) Jenis huruf Roman
(b) Jenis huruf Arial
(31)
3.2 Alat Penelitian
Alat yang dipakai untuk menjalankan penelitian ini dibedakan menjadi dua macam sebagai berikut.
1. Perangkat-keras: Komputer berbasiskan mikroprosesor AMD5X86/133MHz dengan memori 16 MB, harddisk 850 MB, monitor VGA dan pencetak.
2. Perangkat-lunak: MATLAB versi 5.0 yang dilengkapi dengan Image Processing Toolbox.
3.3 Jalan Penelitian
Jalannya penelitian yang dilakukan diuraikan seperti berikut.
3.3.1 Perancangan keseluruhan sistem
Keseluruhan sistem pengenalan citra huruf berderau yang dirancang diperlihatkan secara blok pada Gambar 3.2.
(32)
Citra masukan Deformasi citra Sumber
derau
Klasifikasi dengan jaringan syaraf tiruan
Citra keluaran
Asosiasi citra
Vektorisasi citra
Gambar 3.2 Sistem pengenalan citra huruf berderau.
Pada Gambar 3.2 di atas, citra masukan berupa citra huruf ukuran 32x32 piksel dengan format bitmap. Sebelum dikontaminasi dengan derau, citra huruf ini sebelumnya dideformasi dahulu dalam hal proporsi, perputaran, dan pergeseran. Selanjutnya, dilakukan vektorisasi citra, yaitu mengubah citra 32x32 piksel
(33)
menjadi suatu vektor dengan 1024 elemen. Hal ini dilakukan karena komputasi data dalam bentuk vektor lebih cepat daripada komputasi data dalam bentuk matriks bujursangkar.
Vektor dengan 1024 elemen, merupakan informasi masukan bagi jaringan syaraf tiruan. Dengan informasi ini, jaringan syaraf tiruan mengenali informasi huruf yang ada dalam vektor tersebut. Hasil pengenalan jaringan syaraf tiruan berupa informasi nomor huruf dari 1 hingga 26, yang merupakan urutan nomor alfabet dari A hingga Z. Untuk mendapatkan keluaran sistem yang berupa citra, selanjutnya dilakukan asosiasi citra terhadap keluaran dari jaringan syaraf tiruan.
3.3.2 Perancangan jaringan syaraf tiruan
Arsitektur jaringan syaraf yang dirancang, pada dasarnya bersumber pada jaringan syaraf probabilistis yang dikenalkan oleh Donald Specht. Akan tetapi, dalam penelitian ini dilakukan modifikasi dalam fungsi kernelnya, untuk mendapatkan komputasi yang lebih cepat. Untuk lebih jelasnya, arsitektur jaringan syaraf tiruan ini diperlihatkan dalam Gambar 3.3 sebagai berikut.
(34)
y
…
…
…
fA fZ
ωA1 ωAn ωZ1
wA1 1 wZn 1024
…
…
maks
ωZn
Lapis maksimum
Lapis penjumlahan
Lapis pola
σ x1 x2 x1024
Gambar 3.3 Jaringan syaraf probabilistis.
Jaringan syaraf probabilistis pada Gambar 3.2 di atas, pada dasarnya mempunyai 3 lapis, yaitu lapis pola, lapis penjumlahan, dan lapis maksimum. Berikut ini penjelasan untuk setiap lapis jaringan syaraf tiruan di atas.
1. Lapis pola terdiri atas 26 kelas dari ωA hingga ωZ. Setiap kelas mempunyai
sampel dari 1 hingga n. Oleh karena itu dalam lapis ini akan ada 26xn elemen pemroses. Setiap elemen pemroses berfungsi untuk mencari besar nilai
(35)
kemiripan masukan terhadap sampel di setiap kelas, dengan menggunakan fungsi kernel yang telah ditentukan sebelumnya.
2. Lapis penjumlahan terdiri atas 26 elemen pemroses. Setiap elemen pemroses pada lapis ini berfungsi untuk melakukan penjumlahan ternormalisasi atas nilai-nilai kemiripan di setiap kelas. Hasil penjumlahan ternormalisasi ini adalah nilai fungsi kerapatan probabilitas kelas.
3. Lapis maksimum hanya terdiri atas satu elemen pemroses. Keluaran dari lapis ini berupa nomor kelas yang nilai fungsi kerapatan probabilitas kelasnya tertinggi.
3.3.2.1 Pelatihan
Pelatihan jaringan syaraf probabilistis pada dasarnya hanya terdiri atas dua tahap pengkonstruksian lapis pola sebagai berikut.
1. Tahap pertama: pembentukan elemen pemroses dan penyimpanan bobotnya. 2. Tahap kedua: pencarian nilai faktor penyekala σ yang merupakan nilai
prasikap pada lapis pola.
Dua lapis yang lain yaitu lapis penjumlahan dan lapis maksimum tidak mengalami perubahan. Algoritma untuk pengkonstruksian lapis pola di atas diperlihatkan di bawah ini.
Algoritma 3.1 Pelatihan jaringan syaraf tiruan Langkah 1. Pelatihan tahap pertama:
(36)
Untuk setiap pola masukan x(p) (p=1 … 1024) yang telah ditentukan kelas polanya ωi, (i=A, B, C,…,Y, atau Z) lakukan Langkah 2-3.
Langkah 2. Konstruksi kelas pola ωi
Vektor bobot masukan kelas i, untuk sampel ke j (j =1 … n) :
wij_p = x(p) (3.1)
Langkah 3. Sambungkan keluaran pemrosesan pada kelas pola ωi ke lapis penjumlahan di fi.
Langkah 4. Pelatihan tahap kedua:
Untuk pelatihan tahap kedua ini, lakukan Langkah 5-6.
Langkah 5. Cari besar nilai faktor penyekala optimum σopt dengan melalukan
operasi minimisasi:
( )
⎟ ⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎛ =∑∑
= = n g i n j ij opt 26 min 26 1 1 σσ (3.2)
dengan
(
1 ( ) 0%)
( ) 50%) ( = = + − = derau j i derau j i
ij f x f x
g σ (3.3)
dan
( )
n e x f n i x x j i i j∑
= ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ − − = 1 2 σ (3.4)(37)
adalah nilai kerapatan probabilitas kelas i terhadap masukan xj,
yang merupakan salah satu anggota kelas tersebut.
Gunakan Algoritma 2.1 (Algoritma pencarian kuadratis pada halaman 12) untuk operasi minimisasi fungsi gij(σ) di atas.
Langkah 6. Sambungkan nilai σopt yang didapat, ke setiap elemen pemroses
yang terdapat pada lapis pola.
3.3.2.2 Implementasi komputasi
Implementasi komputasi jaringan syaraf tiruan adalah berupa langkah-langkah komputasi yang dilakukan jaringan bila menerima pola masukan. Langkah-langkah ini dijelaskan dengan algoritma sebagai berikut.
Algoritma 3.2 Implementasi komputasi jaringan syaraf tiruan
Langkah O. Inisialisasi bobot w dan faktor penyekala σ dari hasil pelatihan. Langkah 1. Untuk setiap pola masukan yang akan diklasifikasi, kerjakan
Langkah 2-4. Langkah 2. Lapis pola:
Untuk setiap sampel j (j=1 … n) dari kelas i (i = A … Z):
hitung masukan jaringan dengan rumus jarak Minkowsky orde-1 yang ternormalisasi (lihat persamaan (2.8)):
m w x D
m
k
k ij k
ij
∑
= − = 1
_
(38)
dengan m adalah jumlah elemen vektor x atau wij.
Karena masukan jaringan dan bobotnya berupa bilangan biner,
maka komputasi
∑
= −
m
k
k ij k w x
1
_ dalam MATLAB dapat dilakukan
lebih cepat, dengan menggunakan hal-hal sebagai berikut.
1. Tipe data 1 byte pada xk dan wij_k, sebagai pengganti tipe data
default 8 byte.
2. Operasi logika (xk xor wij_k), sebagai pengganti operasi
aritmatika xk −wij_k .
3. Operasi pencarian banyaknya elemen tidak nol pada vektor hasil operasi (xk xor wij_k), sebagai pengganti operasi
penjumlahan elemen vektor.
Hitung keluaran lapis ini dengan fungsi kernel Gaussian: 2
⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ − = σ
ij D
ij e
K (3.6)
Langkah 3. Lapis penjumlahan:
hitung penjumlahan ternormalisasi untuk setiap kelas i (i = A… Z).
n K f
n
j ij
i
∑
= = 1
(3.7)
dengan n adalah jumlah sampel di setiap kelas. Langkah 4. Lapis maksimum:
hitung keluaran jaringan sebagai: ) max(fi
(39)
3.3.3 Pelatihan dan pengujian jaringan syaraf tiruan
Pelatihan jaringan syaraf tiruan dilakukan dengan melatihkan pola huruf dalam bentuk vektor. Pola huruf ini terdiri atas huruf A hingga Z, dengan dua macam jenis huruf, yaitu Roman dan Arial untuk setiap hurufnya, sebagaimana yang diperlihatkan pada Gambar 3.1.
Dengan adanya pelatihan, maka pada lapis pola akan terdapat sejumlah 52 elemen pemroses, yang terdiri atas 26 kelas elemen pemroses dengan 2 sampel tiap kelasnya. Selain adanya pengkonstruksian elemen-elemen pemroses pada lapis pola, pelatihan juga akan memberikan nilai faktor penyekala, yang merupakan salah satu variabel elemen pemroses pada lapis pola.
Setelah pelatihan selesai, selanjutnya dilakukan pengujian pengenalan jaringan. Untuk itu, jaringan dimasuki citra-citra huruf secara beruntun dari A hingga Z yang terdiri atas dua jenis huruf yaitu Roman dan Arial. Bila semua citra huruf tersebut kemudian dapat dikenali, maka berarti jaringannya telah terlatih.
3.3.4 Implementasi keseluruhan sistem
Sistem pengenalan citra huruf berderau yang telah dirancang di atas, selanjutnya diimplementasikan dalam bentuk program MATLAB. Dalam implementasi ini, terdapat dua macam basis implementasi program sebagai berikut.
1. Implementasi berbasiskan teks, yang bertujuan untuk memperlihatkan unjuk- kerja sistem dalam hal tingkat pengenalan, serta lama waktu pelatihan dan pengujian.
(40)
2. Implementasi berbasiskan GUI (Graphical User Interface), yang bertujuan untuk memvisualisasikan sistem pengenalan citra berderau ini.
Dua macam basis implementasi program di atas dan contoh hasil eksekusinya, diperlihatkan pada lampiran L2 dan L3.
3.3.5 Pengujian keseluruhan sistem
Pengujian sistem pengenalan citra huruf berderau secara keseluruhan, dilakukan dengan melakukan pengujian-pengujian sebagai berikut.
1. Pengujian mayor, merupakan pengujian utama tingkat pengenalan jaringan, bila citra huruf masukannya berderau.
2. Pengujian minor, merupakan pengujian tambahan tingkat pengenalan jaringan, bila citra huruf masukannya mengalami deformasi proporsi, perputaran dan pergeseran.
3. Pengujian gabungan, merupakan gabungan pengujian mayor dan minor di atas, untuk menguji tingkat pengenalan jaringan bila citra huruf masukannya selain berderau juga mengalami deformasi proporsi, pergeseran, dan perputaran.
4. Pengujian lama waktu pelatihan dan pengenalan. 5. Pengujian pengaruh derau dan faktor penyekala. 6. Pengujian pengaruh derau dan bentuk huruf.
(41)
3.3.6 Pengambilan data hasil pengujian
Pengambilan data hasil pengujian pada pengujian mayor, pengujian minor, pengujian gabungan dan pengujian pengaruh derau dan faktor penyekala, dilakukan dengan cara mengambil data tingkat pengenalan, terhadap jaringan yang diberi masukan beragam 300 huruf secara sekuensial, pada keadaan tingkat derau yang beragam. Ketigaratus huruf yang dimasukkan ini, tersusun secara acak baik urutannya (A hingga Z) maupun jenisnya (Roman atau Arial).
Hasil pengujian pengaruh derau dan bentuk huruf diperoleh dengan mengambil data tingkat pengenalan jaringan, bila jaringan tersebut diberi masukan seragam 300 huruf secara sekuensial, pada keadaan tingkat derau yang beragam. Jenis huruf Arial digunakan dalam pengujian ini.
Pada pengujian terhadap lama waktu pelatihan, pengambilan datanya dilakukan dengan mengambil data lama waktu yang diperlukan jaringan syaraf tiruan untuk dilatih dengan menggunakan 26 kelas pola, dengan dua sampel di setiap kelas polanya. Sedangkan pengujian terhadap lama waktu pengujian dilakukan dengan mengambil data lama waktu yang diperlukan oleh jaringan syaraf tiruan, untuk mengenali setiap pola yang diberikan kepadanya.
3.3.7 Analisis hasil pengujian
Pengujian yang dilakukan di atas, pada dasarnya hendak menyelidiki empat macam watak jaringan. Watak yang pertama adalah, tingkat pengenalan jaringan bila citra masukannya beragam dan mempunyai tiga macam bentuk gangguan yaitu :
(42)
1. Tingkat derau yang beragam.
2. Tingkat deformasi proporsi, pergeseran, dan perputaran yang beragam.
3. Tingkat derau serta deformasi proporsi, pergeseran, dan perputaran yang beragam.
Watak yang kedua adalah, lama waktu yang diperlukan jaringan untuk melakukan eksekusi sebagai berikut:
1. Pelatihan dengan 26 kelas pola dengan 2 sampel di setiap kelasnya. 2. Pengenalan terhadap setiap citra masukan.
Watak yang ketiga adalah, tingkat pengenalan jaringan serta rerata kerapatan probabilitas pada keadaan faktor penyekala dan derau yang beragam.
Akhirnya watak yang keempat adalah, tingkat pengenalan jaringan bila citra huruf masukannya seragam dan mempunyai tingkat derau yang beragam.
3.4 Variabel yang diamati
Variabel yang diamati pada penelitian ini adalah sebagai berikut:
1. Tingkat pengenalan jaringan bila citra masukannya beragam dan mempunyai tingkat derau yang beragam pula.
2. Tingkat pengenalan jaringan bila citra masukannya beragam dan mengalami deformasi proporsi, perputaran dan pergeseran.
3. Tingkat pengenalan jaringan bila citra masukannya beragam, berderau dan juga mengalami deformasi proporsi, pergeseran, dan perputaran.
(43)
5. Tingkat pengenalan dan rerata kerapatan probabilitas, pada keadaan faktor penyekala dan derau yang beragam.
6. Tingkat pengenalan jaringan bila citra masukannya seragam dan mempunyai tingkat derau yang beragam.
3.5 Kesulitan-kesulitan
Kesulitan-kesulitan yang muncul selama penelitian ini terutama terjadi pada saat pengujian keseluruhan sistem. Jaringan syaraf probabilistis yang digunakan dalam penelitian ini mempunyai ciri beban komputasi yang tinggi, akibat adanya pelatihan prinsipnya adalah menyimpan semua data pelatihan. Oleh karena itu, jika tidak terdapat komputer yang berkecepatan tinggi, komputer yang berkecepatan rendah akan memerlukan waktu pengujian yang panjang.
(44)
BAB 4
HASIL PENELITIAN
4.1 Hasil Penelitian
4.1.1 Pengujian mayor terhadap citra masukan yang berderau
Pengujian mayor jaringan syaraf tiruan yang diteliti, dilakukan terhadap masukan citra huruf berderau. Contoh citra huruf berderau untuk pengujian mayor ini diperlihatkan pada Gambar 4.1.
Hasil pengujian mayor jaringan syaraf tiruan untuk keadaan derau yang bertingkat dari 0 % hingga 50 % terhadap tingkat pengenalan, diperlihatkan pada Gambar 4.2.
(45)
a b c
d e f
g h i
j k l
Gambar 4.1 Contoh citra huruf berderau; (a) dan (g) citra asli; (b) dan (h) berderau 5 %; (c) dan (i) berderau 15%; (d) dan (j) berderau 25%; (e) dan (k) berderau 30%; (f) dan (l) berderau 35%.
(46)
100 100 100 100 99.3 99 95.7
76
34.7
4.3 0
10 20 30 40 50 60 70 80 90 100
5 10 15 20 25 30 35 40 45 50 Tingkat derau (%)
Tingkat pengenalan (%
)
Gambar 4.2 Grafik pengaruh derau terhadap tingkat pengenalan untuk citra huruf masukan yang beragam.
4.1.2 Pengujian minor terhadap citra masukan yang mengalami deformasi proporsi, pergeseran, dan perputaran
4.1.2.1 Pengujian terhadap citra yang mengalami deformasi proporsi
Pada pengujian minor jaringan terhadap citra masukan yang mengalami deformasi proporsi, contoh citranya diperlihatkan pada Gambar 4.3.
(47)
a b c
d e f
Gambar 4.3 Contoh citra yang mengalami deformasi proporsi, dengan (a) dan (d) citra asli, (b) dan (e) kurus, (c) dan (f) gemuk.
Hasil pengujian minor terhadap citra yang mengalami deformasi proporsi di atas, diperlihatkan pada Tabel 4.1.
Tabel 4.1. Pengaruh deformasi proporsi terhadap tingkat pengenalan.
Proporsi Kurus Normal Gemuk
Tingkat pengenalan (%) 76,7 100 85,0
4.1.2.2 Pengujian terhadap citra yang mengalami deformasi pergeseran Contoh citra yang dipergunakan untuk pengujian minor terhadap citra yang mengalami deformasi pergeseran diperlihatkan pada Gambar 4.4.
(48)
a b c
d e f
Gambar 4.4 Contoh citra yang mengalami deformasi pergeseran, dengan (a) dan (d) citra asli, (b) tergeser ke kiri satu piksel, (c) tergeser ke kanan 2 piksel, (e) tergeser ke atas dua piksel dan (f) tergeser ke bawah tiga piksel.
Hasil pengujian minor untuk menyelidiki pengaruh deformasi pergeseran terhadap tingkat pengenalan diperlihatkan pada Tabel 4.2.
Tabel 4.2 Pengaruh deformasi pergeseran terhadap tingkat pengenalan. Jarak geser (piksel) 0 1 2 3
kiri 100 80,3 40,0 6,3 kanan 100 79,3 22,0 5,3 atas 100 82,0 71,0 41,4 Tingkat
pengenalan pada arah geser ke … (%)
bawah 100 90,3 76,0 40,0
4.1.2.3 Pengujian terhadap citra yang mengalami deformasi perputaran Citra masukan yang mengalami deformasi perputaran, yang dipergunakan dalam penelitian ini diperlihatkan contohnya pada Gambar 4.5.
(49)
a b c
d e f
Gambar 4.5 Contoh citra yang mengalami deformasi perputaran, dengan (a) dan (d) citra asli, (b) dan (e) terputar -5 o , (c) dan (f) terputar 5 o.
Hasil pengujian jaringan untuk pengaruh deformasi perputaran terhadap tingkat pengenalan, diperlihatkan pada Tabel 4.3.
Tabel 4.3 Pengaruh deformasi perputaran terhadap tingkat pengenalan. Perputaran ( … o) -15 -10 -5 0 5 10 15 Tingkat
pengenalan (%)
76,7 93,0 100 100 96,7 91,3 76,0
4.1.3 Pengujian gabungan terhadap citra masukan yang berderau dan mengalami deformasi proporsi, pergeseran dan perputaran
Pengujian gabungan, merupakan gabungan dari pengujian mayor dengan pengujian minor. Contoh citra yang dipergunakan untuk pengujian gabungan ini diperlihatkan pada Gambar 4.6.
(50)
a b c
d e f
Gambar 4.6. Contoh citra berderau yang mengalami deformasi proporsi, pergeseran dan perputaran; (a) dan (d) citra asli; (b) dan (e) berderau 10 %, kurus, tergeser ke kiri satu piksel dan terputar 5 o ; (c) dan (f) berderau 10 %, gemuk, tergeser ke kanan satu piksel dan terputar -5 o.
Hasil pengujian pengaruh derau terhadap tingkat pengenalan jaringan, pada citra yang mengalami deformasi proporsi, pergeseran, dan perputaran diperlihatkan pada Tabel 4.4.
Tabel 4.4 Pengaruh derau terhadap tingkat pengenalan, pada citra yang mengalami deformasi proporsi, pergeseran, dan perputaran.
Derau (%) 0 5 10 15 20 25 30 35 40 45 50 Tingkat pengenalan
pada citra huruf yang kurus, tergeser ke kiri satu piksel dan terputar 5o (%)
52,3 51,7 51,0 50,0 48,7 45,7 43,7 34,3 21,0 12,7 4,0
Tingkat pengenalan pada citra huruf yang gemuk, tergeser ke kanan satu piksel dan terputar -5o (%)
(51)
4.1.4 Panjang waktu pelatihan dan pengenalan
Panjang waktu pelatihan dan pengenalan jaringan yang terkonstruksi atas 26 kelas pola, dengan dua sampel di setiap kelasnya, diperlihatkan pada Tabel 4.5.
Tabel 4.5 Panjang waktu pelatihan dan pengenalan, pada jaringan yang terkonstruksi atas 26 kelas pola, dengan dua sampel di setiap kelasnya.
Panjang waktu (detik) Tahap I 4,6
Pelatihan
Tahap II 161,4
Pengenalan/huruf 0,7
4.1.5 Pengujian pengaruh derau dan faktor penyekala
Pengaruh derau dan faktor penyekala (σ) pada jaringan syaraf tiruan terhadap tingkat pengenalan dan kerapatan probabilitas, diperlihatkan pada Tabel 4.6 dan 4.7.
Tabel 4.6 Tingkat pengenalan jaringan (%) pada keadaan σ dan derau yang beragam.
Derau ( % ) σ = 0,01 σ = 0,24 (optimum)
σ = 100
0 100 100 100
50 3,7 4,3 4
Tabel 4.7 Rerata kerapatan probabilitas pada keadaan σ dan derau yang beragam.
Derau ( % ) σ = 0,01 σ = 0,24 (optimum)
σ = 100
0 0,502 0,933 1,000
(52)
4.1.6 Pengujian pengaruh derau dan bentuk huruf
Pengaruh derau dan bentuk huruf (‘A’, ‘B’, ‘C’, …, ‘Z‘) terhadap tingkat pengenalan, diperlihatkan pada Tabel 4.7.
Tabel 4.7 Tingkat pengenalan jaringan untuk citra huruf masukan yang seragam, pada keadaan tingkat derau 40%.
(a) Urut huruf. (b) Urut tingkat pengenalan. Huruf Tingkat
pengenalan (%)
Huruf Tingkat
pengenalan (%)
A 88,7 B 62,0 B 62,0 D 64,7 C 65,0 C 65,0 D 64,7 U 65,3 E 73,0 N 72,0 F 84,0 E 73,0
G 76,3 T 73,7
H 86,0 X 75,7 I 86,0 G 76,3 J 87,0 Q 79,3
K 80,0 P 79,7
L 83,0 K 80,0
M 88,3 R 81,7
N 72,0 V 81,7
O 86,0 L 83,0
P 79,7 F 84,0
Q 79,3 Z 84,0
R 81,7 S 84,7
S 84,7 Y 84,7 T 73,7 H 86,0
U 65,3 I 86,0
V 81,7 O 86,0
W 96,7 J 87,0
X 75,7 M 88,3 Y 84,7 A 88,7 Z 84,0 W 96,7
(53)
Dengan mengacu pada Tabel 4.7(b), dipilih huruf-huruf ‘B’, ‘X’, ‘Z’, dan ‘W’ dengan berdasarkan pada peringkat tingkat pengenalannya, yaitu dari peringkat terbawah hingga peringkat teratas. Pengujian lebih lanjut keempat huruf ini diperlihatkan hasilnya pada Gambar 4.7.
0 20 40 60 80 100
Tingkat derau (%)
Tingkat pengenalan (%
)
Huruf 'B' 100 100 100 100 99.7 98.7 91.3 62 23.7 3
Huruf 'X' 100 100 100 100 100 100 96.3 75.7 33 3
Huruf 'Z' 100 100 100 100 100 100 98 84 39.7 4.3
Huruf 'W' 100 100 100 100 100 100 100 96.7 61 9.7
5 10 15 20 25 30 35 40 45 50
Gambar 4.7. Grafik pengaruh derau yang bertingkat terhadap tingkat pengenalan untuk bentuk huruf ‘B’,’X’,’Z’,dan ‘W’.
4.2 Pembahasan 4.2.1 Pengaruh derau terhadap tingkat pengenalan
Hasil pengujian pada Gambar 4.1 memperlihatkan bahwa pada keadaan derau yang mencapai 20% jaringan syaraf masih dapat mengenali semua
(54)
masukannya. Pada keadaan derau antara 20 % hingga 35 %, jaringan syaraf mengalami kemerosotan tingkat pengenalan yang kecil, yaitu kurang dari 5 %. Selanjutnya pada keadaan antara 35 % hingga 50 %, kemerosotan tingkat pengenalannya menjadi sangat besar, yaitu hingga mencapai 93 %.
Berdasarkan uraian di atas, dapat dikatakan bahwa jaringan syaraf yang diteliti tidak begitu terpengaruh (tidak sensitif) terhadap derau, pada keadaan tingkat derau dari 0 % hingga 35 %. Hal ini diindikasikan dengan adanya kesalahan tingkat pengenalan yang kurang dari 5 %.
4.2.2 Pengaruh deformasi proporsi, pergeseran dan perputaran terhadap tingkat pengenalan
Pengaruh deformasi proporsi pada citra masukan diperlihatkan pada Tabel 4.2. Pada tabel tersebut diperlihatkan bahwa proporsi huruf yang kurus maupun gemuk sangat mempengaruhi tingkat pengenalan jaringan. Proporsi huruf yang kurus mempunyai tingkat pengenalan yang lebih rendah sekitar 10 % dari pada yang gemuk.
Tabel 4.3 memperlihatkan pengaruh pergeseran terhadap tingkat pengenalan jaringan. Pada tabel tersebut terlihat bahwa tingkat pengenalan jaringan syaraf sangat terpengaruh walaupun pergeserannya hanya sejauh satu piksel. Selain itu terlihat juga bahwa pergeseran ke bawah dan ke atas lebih bisa diterima oleh jaringan syaraf daripada pergeseran yang ke kiri dan ke kanan.
Pengaruh perputaran terhadap tingkat pengenalan yang diperlihatkan pada Tabel 4.4 mengindikasikan bahwa, untuk perputaran hingga sekitar +/- 5o, tingkat
(55)
pengenalan jaringan syaraf masih tidak begitu terpengaruh, karena kesalahan tingkat pengenalan kurang dari 5 %. Akan tetapi, jika perputarannya makin lebih besar dari 5o, tingkat pengenalan jaringan syarafnya makin terpengaruh oleh perputaran tersebut.
Dengan menggunakan perkataan yang lebih umum, Tabel 4.2 hingga 4.4 memperlihatkan bahwa jaringan syaraf yang diteliti sangat terpengaruh (sensitif) terhadap proporsi, pergeseran dan perputaran yang dialami masukannya.
4.2.3 Pengaruh derau serta deformasi proporsi, pergeseran, dan perpu-taran terhadap tingkat pengenalan
Pengujian gabungan untuk menyelidiki pengaruh derau serta deformasi proporsi, pergeseran, dan perputaran yang diperlihatkan pada Tabel 4.5, mengindikasikan bahwa kemerosotan tingkat pengenalan jaringan dari tingkat derau 0 % hingga 20 % masih relatif kecil, yaitu kurang dari 5 %. Bila hal ini dibandingkan dengan tingkat pengenalan jaringan pada citra yang tanpa mengalami penyekalaan, pergeseran dan perputaran pada Tabel 4.1, maka kemerosotan tingkat pengenalan jaringan yang kurang dari 5 % ini berkurang rentangnya sebanyak 15 %.
Dari uraian di atas, dapat diindikasikan pula bahwa ketidaksensitifan jaringan terhadap derau pada rentang tingkat derau tertentu masih nampak. Namun, akibat pengaruh deformasi proporsi, perputaran dan pergeseran ini, ketidaksensitifan jaringan pada rentang derau tertentu berkurang sebanyak 15 %.
(56)
4.2.4 Panjang waktu pelatihan dan pengenalan
Panjang waktu pelatihan dan pengujian, selain ditentukan oleh konfigurasi jaringan syaraf pada lapis pola yang menyimpan sampel-sampel pola, juga ditentukan oleh konfigurasi komputer yang digunakan. Pada Tabel 4.5, konfigurasi jaringan syaraf yang lapis polanya terdiri atas 26 kelas, dengan dua sampel di setiap kelasnya, serta menggunakan komputer yang konfigurasinya berbasiskan prosesor AMD5X86/133MHz, panjang waktu pengujian untuk setiap citra huruf hanya 0,7 detik. Selain itu, Tabel 4.5 juga memperlihatkan bahwa dalam hal pelatihan, panjang waktu pelatihan tahap I paling pendek, karena pada tahap tersebut hanya berlangsung proses penyimpanan semua citra yang dilatihkan dalam bentuk vektor pada lapis pola, sedangkan pelatihan tahap II lebih lama, pada tahap ini berlangsung proses iterasi untuk mencari nilai faktor penyekala yang optimum.
4.2.6 Pengaruh derau dan faktor penyekala
Derau dan faktor penyekala menurut Tabel 4.6(a), terlihat tidak mempunyai pengaruh yang signifikan terhadap tingkat pengenalan jaringan. Namun, pada Tabel 4.6(b), derau dan faktor penyekala ini terlihat mempunyai pengaruh yang signifikan terhadap rerata kerapatan probabilitas. Pada keadaan derau 0 % hingga 50 %, nilai faktor penyekala yang makin jauh dari nilaa optimumnya, memberikan rentang rerata kerapatan probabilitas yang makin sempit. Proses komputasi pada rentang rerata kerapatan probabilitas yang makin sempit ini, memerlukan bilangan pecahan (floating point) yang makin panjang.
(57)
Bila bilangan pecahan ini terlalu panjang sampai melebihi yang dapat ditangani oleh komputernya, hasil penghitungan kerapatan probabilitasnya akan selalu 0 (untuk faktor penyekala yang terlalu kecil) atau selalu 1 (untuk faktor penyekala yang terlalu besar), pada semua tingkatan derau. Ini berarti, jaringan syaraf sudah benar-benar tidak dapat mengenali lagi masukannya.
4.2.6 Pengaruh derau dan bentuk huruf
Derau dan bentuk huruf mempunyai pengaruh terhadap tingkat pengenalan jaringan syaraf tiruan yang diteliti, seperti diperlihatkan pada Tabel 4.7. Sebagai contoh yang ekstrim, huruf ‘B’ mempunyai tingkat pengenalan sekitar 34% lebih rendah daripada huruf ‘W’, pada keadaan tingkat derau 40%. Adanya kejadian ini dikarenakan, huruf ‘B’ jarak huruf yang lebih dekat dengan huruf-huruf yang lainnya seperti huruf ‘D’, ‘E’, dan ‘R’, pada keadaan tingkat derau 40% tersebut.
Penelitian lebih jauh terhadap pengaruh derau dan bentuk huruf, dilakukan dengan melakukan pengujian terhadap huruf-huruf terpilih ‘B’, ‘X’, ‘Z’, dan ‘W’, untuk keadaan derau yang beragam dari 0% hingga 50%. Sebagaimana terlihat pada Gambar 4.7, huruf ‘B’ mempunyai titik patah (cut-off) tingkat pengenalan yang terendah, bila dibandingkan dengan huruf-huruf ’X’, ‘Z’ dan ‘W’. Seperti halnya pada kejadian di atas, hal ini dikarenakan karena huruf ‘B’ mempunyai jarak huruf yang lebih dekat dengan huruf-huruf yang lainnya bila dibandingkan dengan huruf-huruf ‘X’, ‘Z’, dan ‘W’.
Dari dua kejadian di atas, dapat dikatakan bahwa jaringan syaraf yang diteliti sensitif terhadap bentuk huruf pada kondisi derau tinggi. Berdasarkan
(58)
Gambar 4.7, sifat sensitif ini mulai nampak pada tingkat derau 35%, yang diindikasikan dengan adanya perbedaan tingkat pengenalan yang lebih dari 5%, antara tingkat pengenalan huruf ‘B’ dengan huruf ‘W’.
(59)
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan hasil penelitian tentang pengenalan citra huruf berderau dengan jaringan syaraf tiruan yang berdasarkan sifat-sifat statistis, disimpulkan hal-hal sebagai berikut.
1. Pemrosesan data yang berdasarkan sifat-sifat statistis merupakan dasar jaringan syaraf tiruan yang diteliti. Sifat-sifat statistis yang digunakan adalah yang berkaitan dengan distribusi kerapatan probabilitas pola masukan terhadap pola-pola yang disimpan. Distribusi kerapatan probabilitas ini dihitung secara non-parametris dengan menggunakan jendela Parzen. Selanjutnya, distribusi kerapatan probabilitas ini diproses lebih lanjut dengan berdasarkan pada pengklasifikasi Bayes untuk menghasilkan keluaran jaringan.
2. Unjukkerja jaringan syaraf tiruan yang diteliti telah memperlihatkan hasil yang mengagumkan dalam pengenalan citra huruf berderau. Huruf dengan kandungan tingkat derau hingga 35 %, masih dapat ditangani oleh jaringan, dengan tingkat kesalahan pengenalan kurang dari 5 %. Hal ini berarti, jaringan syaraf yang diteliti tidak sensitif terhadap huruf dengan kandungan tingkat derau hingga 35 %. Bila dibandingkan dengan kemampuan pengenalan oleh mata manusia, maka jaringan syaraf yang diteliti ini lebih unggul, karena
(60)
huruf dengan kandungan tingkat derau hingga 35 % sangat sulit dikenali oleh mata manusia.
3. Adanya deformasi huruf dalam hal proporsi, pergeseran dan perputaran, mengakibatkan turun dengan drastisnya tingkat pengenalan jaringan. Jaringan syaraf yang diteliti, memperlihatkan watak pengenalan yang sensitif terhadap deformasi huruf. Bila dibandingkan dengan mata manusia, maka unjukkerja jaringan syaraf dalam hal deformasi huruf ini lebih rendah, karena mata manusia tidak mempunyai watak pengenalan yang sesensitif jaringan syaraf yang diteliti terhadap deformasi huruf ini.
4. Watak pengenalan jaringan syaraf terhadap huruf berderau yang mengalami deformasi dalam hal proporsi, pergeseran, dan perputaran masih menunjukkan adanya ketidaksentitifan jaringan terhadap derau pada rentang tertentu. Namun rentang ketidaksensitifan ini lebih sempit bila dibandingkan dengan pengenalan jaringan terhadap huruf yang tidak mengalami deformasi.
5. Pelatihan jaringan syaraf yang diteliti dilakukan dengan dua tahap. Tahap yang pertama adalah, penyimpanan semua pola pelatihan ke dalam jaringan. Sedangkan tahap yang kedua adalah, pencarian secara iteratif nilai faktor penyekalanya yang optimum.
6. Tingkat pengenalan jaringan syaraf tidak memperlihatkan kesensitifan terhadap perubahan nilai faktor penyekala, yang merupakan salah satu variabel pada fungsi kernel. Akan tetapi, nilai faktor penyekala yang terlalu jauh dari optimumnya akan dapat menyebabkan jaringan benar-benar tidak dapat lagi mengenali masukannya.
(61)
7. Bentuk huruf (‘A’, ‘B’, ‘C’, …, atau ‘Z’) mempunyai pengaruh terhadap tingkat pengenalan jaringan pada tingkat derau yang tinggi. Jaringan syaraf terlihat mulai menampakkan kesensitifan terhadap bentuk huruf ini pada keadaan tingkat derau 35%.
5.2 Saran
1. Jaringan syaraf tiruan yang digunakan dalam penelitian ini, melakukan pemrosesan terhadap sejumlah 1024 data masukan, di setiap elemen pemroses pada lapis pola. Adanya pemrosesan data yang jumlahnya sangat besar ini berakibat, bila jaringan syaraf tiruan ini diberikan banyak pola pelatihan, maka jumlah elemen pemrosesnya akan makin banyak. Ini berarti, waktu pelatihan dan pengujian jaringan akan menjadi makin panjang. Untuk mengatasi hal ini, penelitian ini dapat dikembangkan lebih lanjut dengan menambahkan suatu pengolah awal yang akan mengekstraksi ciri-ciri pola, sebelum pola tersebut masuk ke jaringan. Dengan cara ini, setiap pola dapat diwakili oleh sederetan nilai koefisien (Chandran et al, 1997). Dengan demikian, akan terjadi pengurangan yang sangat drastis pada ukuran pola-pola ini, yang akan menaikkan kecepatan jaringan secara signifikan baik dalam pelatihan maupun pengujiannya.
2. Bentuk huruf (‘A’, ‘B’, ‘C’, …, atau ‘Z’) yang digunakan dalam penelitian ini, mempunyai jarak huruf yang beragam antara huruf yang satu dengan lainnya. Sebagai contoh, huruf ‘B’ mempunyai jarak huruf yang lebih kecil dengan
(62)
huruf-huruf yang lainnya seperti huruf ‘D’, ‘E’, dan ‘R’, daripada huruf ‘W’. Hal ini berakibat, pada keadaan tingkat derau yang tinggi (misalnya 40%), tingkat pengenalan jaringan terhadap huruf ‘B’ lebih rendah daripada huruf ‘W’. Oleh karena itu, tingkat pengenalan jaringan masih dapat ditingkatkan lagi dengan menggunakan seperangkat huruf masukan yang jarak hurufnya makin berjauhan antara suatu huruf dengan huruf-huruf lainnya.
3. Secara perangkat-lunak, kecepatan pelatihan dapat ditingkatkan lagi dengan menggunakan algoritma minimisasi fungsi yang lebih cepat.
4. Secara perangkat-keras, kecepatan pelatihan dan juga pengenalan jaringan dapat ditingkatkan lagi dengan cara menggunakan komputer yang mempunyai kecepatan lebih tinggi.
(63)
BAB 6
RINGKASAN
Penelitian yang dilakukan dapat diringkas menjadi beberapa topik bahasan seperti di bawah ini.
6.1 Latar Belakang
Pengenalan citra huruf berderau pernah diselidiki oleh beberapa peneliti. Penelitian yang terakhir (Watanabe, 1996) menghasilkan suatu jaringan syaraf tiruan yang mampu mengenali citra huruf berderau ukuran 32x32 piksel dengan kandungan derau sekitar 20 %.
Dalam penelitian ini, penulis bermaksud untuk menghasilkan sesuatu yang lebih dari yang pernah ada sebelumnya, yaitu suatu jaringan syaraf tiruan yang mampu mengenali citra huruf berderau berukuran 32x32 piksel dengan kandungan derau yang lebih dari 30 %.
6.2 Tinjauan Pustaka
Jaringan syaraf tiruan adalah suatu jaringan yang dimodelkan berdasarkan ciri organisasi otak manusia, yang mampu melakukan pengolahan secara paralel dan non-linear, serta mampu pula mengangani informasi-informasi yang kompleks. Dengan berdasar pada hal tersebut, Donald Specht telah memperkenalkan suatu jaringan syaraf tiruan yang berdasarkan sifat-sifat statistis yang dinamakan jaringan syaraf probabilistis. Dalam penelitian ini, jaringan
(64)
syaraf probabilistis inilah yang dikembangkan untuk dapat melakukan pengenalan terhadap citra huruf berderau.
6.3 Landasan Teori
Jaringan syaraf tiruan yang dikembangkan dalam penelitian ini, merupakan jaringan syaraf yang memanfaatkan sifat-sifat statistis kelas pola, dalam melakukan proses klasifikasi. Dalam hal ini proses klasifikasinya menggunakan pengklasifikasi Bayes. Ada suatu hal yang rumit dalam pengklasifikasi Bayes ini yaitu, penentuan nilai fungsi kerapatan probabilitas suatu kelas pola. Untuk mendapatkan nilai fungsi ini, maka setiap pola masukan harus dievaluasi terhadap setiap sampel pola yang ada di setiap kelas. Ini berarti, memerlukan suatu proses komputasi yang ekstensif.
6.4 Cara Penelitian
Penelitian ini, pada dasarnya dilakukan dengan cara memodifikasi jaringan syaraf probabilistis yang telah ada sebelumnya. Modifikasi di sini dilakukan terhadap fungsi kernel yang terdapat pada lapis pola pada jaringan syaraf tersebut. Secara ringkas, modifikasi ini mencakup dua hal berikut.
1. Menggunakan fungsi jarak Minkowski orde-1 yang diimplementasikan secara operasi logika XOR untuk pengolahan data biner, sebagai pengganti fungsi jarak Eucledian. Dengan cara ini, proses komputasi menjadi lebih cepat.
2. Memperkenalkan pencarian nilai faktor penyekala yang umum untuk setiap pola huruf yang dilatihkan, dengan memperhatikan sifat-sifat jaringan pada
(65)
keadaan derau 0 % dan derau 50 %. Hal ini memberikan hasil tingkat pengenalan jaringan menjadi lebih akurat, terutama bila berhadapan dengan citra huruf dengan kandungan derau yang tinggi.
6.5 Hasil Penelitian
Penelitian yang dilakukan telah menghasilkan suatu jaringan yang tidak sensitif terhadap derau. Hal ini didasarkan atas hasil pengujian yang memperlihatkan bahwa, tingkat kesalahan pengenalan yang kurang dari 5% masih dapat diperoleh, pada keadaan tingkat derau yang mencapai 35 %.
Meskipun tidak sensitif terhadap derau, namun jaringan yang dirancang ternyata sensitif terhadap adanya deformasi proporsi, pergeseran, dan perputaran. Hasil pengujian memperlihatkan adanya deformasi tersebut yang relatif kecil, telah menyebabkan turun dengan drastisnya tingkat pengenalan jaringan. Sebagai contoh, tingkat pengenalan jaringan untuk citra dengan huruf yang kurus, tergeser ke kiri satu piksel dan terputar 5o hanya mencapai 52,3 %.
Bentuk huruf masukan (‘A’, ‘B’, ‘C’ …, atau ‘Z’), mempunyai pengaruh terhadap tingkat pengenalan jaringan pada keadaan tingkat derau yang tinggi. Jaringan mulai memperlihatkan kesensitifannya terhadap bentuk huruf pada tingkat derau 35%, yang diindikasikan dengan adanya perbedaan tingkat pengenalan yang lebih dari 5% antara huruf ‘B’ dengan huruf ‘W’.
(66)
DAFTAR PUSTAKA
Buchanan, James L., dan Turner, Peter R., 1994, Numerical Methods and Analysis, McGraw-Hill Inc. New York.
Chandran, Vinod, Carswell, Brett, Boashash, Boualem, dan Elgar, Steve, 1997, "Pattern Recognition Using Invariants Defined from Higher Order Spectra: 2-D Image Inputs", IEEE Transactions on Image Processing, Vol. 6. No. 5, pp 703-712.
Demuth, Howard dan Beale, Mark, 1994, Neural Networks Toolbox: For Use with MATLAB, The Mathworks, Inc., Massachusetts.
Fausett, Laurene, 1994, Fundamentals of Neural Networks, Prentice Hall, Inc., New Jersey.
Lin, Chin-Teng dan Lee, George C.S., 1996, Neural Fuzzy Systems, Prentice Hall, Inc. New Jersey.
Masters, Timothy, 1995, Advanced Algorithm for Neural Networks: A C++ Sourcebook, John Wiley & Sons, Inc., Toronto.
Patterson, Dan W., 1996, Artificial Neural Networks, Simon & Schuster (Asia) Pte. Ltd., Singapore.
Watanabe, Sumio, 1996, "An Ultrasonic 3-D Robot Vision System Based on the Statistical Properties of Neural Networks", Neural Networks for Robotic Control: Theory and Applications, Edited by A.M.S. Zalzala and A.S. Morris, Ellis Horwood Limited, London.
Wilson, Randall D. dan Martinez, Tony R., 1997, "Improved Heterogeneous Distance Functions", Journal of Artificial Intelligence Research, No. 6, pp 1-34.
(67)
(68)
L.1 Daftar Kode Sumber
Kode-kode sumber yang dirancang dalam penelitian ini diperlihatkan pada daftar sebagai berikut.
1. Kode sumber pengujian berbasiskan teks.
txtpnn.m - Pengujian PNN berbasiskan teks
2. Kode sumber pengujian berbasiskan GUI.
guipnn.m - Callback untuk pengujian PNN berbasiskan GUI
guipnnfg.m - Figure untuk pengujian PNN berbasiskan GUI
3. Kode sumber pelatihan
latih.m - Pelatihan PNN
4. Kode sumber bersama yang digunakan oleh kode sumber pegujian berbasiskan teks dan GUI, serta pelatihan.
simupnn.m - Simulasi PNN
lhlayer.m - Simulasi lapis pola dan penjumlahan pada PNN
imdc.m - Vektorisasi dan pengkontaminasian derau pada citra
geser.m - Pergeseran citra
*) Keterangan: PNN (Probabilistic Neural Network) GUI (Graphical User Interface)
L.2 Listing Kode Sumber
(69)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 function txtpnn
% TXTPNN Pengujian PNN berbasiskan teks %
% (c) Linggo S. - 1998 clc
tic
% =================================================== % Variabel masukan dan jaringan
% ===================================================
JumlahUji=300; % Jumlah pengujian
Derau=0; % Derau : 0,1,...,50 (persen)
Proporsi='normal'; % Proporsi huruf:
% 'normal','gemuk_','kurus_'
Rotasi=0; % Rotasi huruf: -15,..,0,...,15 (derajad)
ArahGeser='atas_'; % Arah geser:
% ‘atas_','bawah','kanan','kiri_'
JarakGeser=0; % Jarak geser: 0,1,2,... (piksel)
RuntunHuruf='acak'; % Runtun huruf : 'acak','atur'
load sampel % Ambil data jumlah sampel per kelas
load sigma % Ambil data sigma
% =================================================== % Pengujian berulang
% =================================================== disp('Pengujian berulang berbasiskan teks')
disp('===================================') fprintf('Persen derau : %g\n\n',Derau) fprintf('Proporsi huruf : %s\n',Proporsi) fprintf('Sudut rotasi : %g\n',Rotasi) fprintf('Arah pergeseran : %s\n',ArahGeser)
fprintf('Jarak pergeseran : %g piksel\n\n',JarakGeser) fprintf('Jumlah pengujian : %g\n\n',JumlahUji)
% Pembentukan runtun huruf
% ---
DaftarHuruf=['A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';... ‘M’;'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z']; if RuntunHuruf=='acak'
% Huruf dan jenis huruf acak
DaftarAngka=1+round((100*rand(JumlahUji,1))/4); JHuruf=randn(JumlahUji,1)>0;
else
% Huruf teratur dengan jenis huruf Arial NomorHuruf=find(DaftarHuruf==Huruf); DaftarAngka=NomorHuruf*ones(JumlahUji,1); JHuruf=ones(JumlahUji,1);
end
(70)
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 tic salah=0; Density=zeros(JumlahUji,1); for i=1:JumlahUji HurufIn=DaftarHuruf(DaftarAngka(i));
if JHuruf(i)==0
JenisHuruf='Roman'; else
JenisHuruf='Arial'; end
fprintf('Pengujian ke %3.3g - Masukan : %s ',i,HurufIn) fprintf('(%s)',JenisHuruf)
fprintf(' , Keluaran : ')
% Konversi citra BMP ke matriks biner
% ---
if JenisHuruf=='Roman'
Citra0=~(imread([HurufIn 'roman'],'bmp'));
else
Citra0=~(imread([HurufIn 'arial'],'bmp'));
end % Mode huruf
% ---
switch Proporsi
case 'normal'
Citra=Citra0;
case 'gemuk_'
Citra=bwmorph(Citra0,'dilate');
case 'kurus_'
Citra=bwmorph(Citra0,'thin'); end
% Pergeseran citra
% ---
Citra=geser(Citra,ArahGeser,JarakGeser); % Rotasi citra
% ---
Citra=imrotate(Citra,Rotasi,'nearest','crop'); % Penambahan derau acak dan vektorisasi
% ---
Citra=imdc(Citra,Derau); % Simulasi PNN
% ---
CitraIn=repmat(Citra,1,sampel);
[HurufOut,Density(i)]=simupnn(CitraIn,sigma,DaftarHuruf,sampel);
% Keluaran PNN
(71)
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
if HurufIn==HurufOut Out='benar'; else
salah=salah+1; Out='S A L A H'; end
fprintf('%s - %s\n',HurufOut,Out) end
Waktu1=toc;
Waktu2=Waktu1/JumlahUji;
PersenTepat=((JumlahUji-salah)/JumlahUji)*100;
% =================================================== % Hasil Pengujian
% =================================================== % Kerapatan Probabilitas
fprintf('\nRerata kerapatan probabilitas : %f\n',mean(Density)) % Meleset dan tepat
fprintf('\nJumlah pengujian : %g \n',JumlahUji) fprintf('Jumlah meleset : %g \n',salah)
fprintf('Persen tepat : %g \n\n',PersenTepat) % Waktu pengujian
fprintf('Waktu keseluruhan pengujian : %g detik \n',Waktu1) fprintf('Waktu pengujian/huruf : %g detik \n\n',Waktu2)
(72)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 function guipnn(aksi)
% Definisi callback pada GUIPNNFG
% ============================================================ % FUNGSI UTAMA
% ============================================================ load sigma sigma=mean(mean(sigma)); load sampel blank=~uint8(zeros(32,32)); DaftarHuruf=['A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';... 'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z']; global ImgHnd if nargin <1
aksi='inisialisasi'; end
switch aksi
case 'inisialisasi'
ImgHnd=[0 0];
guipnnfg [x1,map]=imread('aroman','bmp'); axes(ImgHnd(1)); imshow(x1,map); axis('on') axes(ImgHnd(2)); imshow(x1,map); axis('on') case 'perputaran' Rot=get(gcbo,'Value'); Hnd=findobj(gcbf,'Tag','TextPerputaran'); set(Hnd,'String',sprintf('%3.1f',Rot)) case 'derau' Derau=get(gcbo,'Value'); Hnd=findobj(gcbf,'Tag','TextDerau'); set(Hnd,'String',sprintf('%3.1f',Derau)) case 'reset'
Hnd=findobj(gcbf,'Tag','PopUpJenis'); set(Hnd,'Value',1)
Hnd=findobj(gcbf,'Tag','PopUpProporsi'); set(Hnd,'Value',1)
Hnd=findobj(gcbf,'Tag','SliderPerputaran'); set(Hnd,'Value',0)
Hnd=findobj(gcbf,'Tag','PopUpArahGeser'); set(Hnd,'Value',1)
Hnd=findobj(gcbf,'Tag','PopUpJarakGeser'); set(Hnd,'Value',1)
Hnd=findobj(gcbf,'Tag','TextPerputaran'); set(Hnd,'String',sprintf('0.0'))
(73)
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 case 'eksekusi'
% Ambil masukan
% --- Hnd=findobj(gcbf,'Tag','PopUpHuruf'); List=get(Hnd,'UserData'); HurufIn=List(get(Hnd,'Value')); Hnd=findobj(gcbf,'Tag','SliderDerau'); Derau=get(Hnd,'Value'); Hnd=findobj(gcbf,'Tag','PopUpJenis'); List=get(Hnd,'UserData'); Jenis=List(get(Hnd,'Value'),:); Hnd=findobj(gcbf,'Tag','PopUpProporsi'); List=get(Hnd,'UserData'); Proporsi=List(get(Hnd,'Value'),:); Hnd=findobj(gcbf,'Tag','SliderPerputaran'); Perputaran=get(Hnd,'Value'); Hnd=findobj(gcbf,'Tag','PopUpArahGeser'); List=get(Hnd,'UserData'); ArahGeser=List(get(Hnd,'Value'),:); Hnd=findobj(gcbf,'Tag','PopUpJarakGeser'); List=get(Hnd,'UserData'); JarakGeser=List(get(Hnd,'Value')); % Konversi citra BMP ke matriks biner
% ---
switch Jenis
case 'roman'
img0=~(imread([HurufIn 'roman'],'bmp'));
case 'arial'
img0=~(imread([HurufIn 'arial'],'bmp'));
end % Proporsi
% ---
switch Proporsi
case 'normal'
img=img0;
case 'gemuk_'
img=bwmorph(img0,'dilate');
case 'kurus_'
img=bwmorph(img0,'thin'); end % Pergeseran % --- img=geser(img,ArahGeser,JarakGeser); % Perputaran % ---
(74)
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 img=imrotate(img,Perputaran,'nearest','crop'); % Penambahan derau acak dan vektorisasi
% ---
img=imdc(img,Derau); % Tampilan masukan
% ---
axes(ImgHnd(1));imshow(~kol2kot(img),2);axis('on') % Hapus citra keluaran
% ---
axes(ImgHnd(2)); imshow(blank,2); axis('on'); drawnow
% Simulasi PNN
% ---
img_in=repmat(img,1,sampel);
HurufOut=simupnn(img_in,sigma,DaftarHuruf,sampel); % Tampilan keluaran
% ---
[Hrf,Map]=imread([HurufOut 'roman'],'bmp');
axes(ImgHnd(2));imshow(Hrf,Map);axis('on') end
% ============================================================ % ============================================================ % SUB FUNGSI
% ============================================================ % ============================================================ function kotak=kol2kot(kolom)
% KOL2KOT Fungsi untuk mengubah matriks kolom (1024 x 1)
% menjadi matriks kotak (32 x 32)
%
% (c) Linggo S. - 1998 kotak=uint8(zeros(32,32)); j=1; for i=1:32 kotak(1:32,i)=kolom(j:i*32); j=j+32; end % ============================================================
(75)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 function guipnnfg()
% This is the machine-generated representation of a MATLAB object % and its children. Note that handle values may change when these % objects are re-created. This may cause problems with some callbacks. % The command syntax may be supported in the future, but is currently % incomplete and subject to change.
%
% To re-open this system, just type the name of the m-file at the MATLAB % prompt. The M-file and its associtated MAT-file must be on your path. global ImgHnd
load guipnnfg a = figure('Units','normalized', ...
'Color',[0.8 0.8 0.8], ...
'Colormap',mat0, ...
'DithermapMode','auto', ...
'Name','Uji Coba PNN berbasiskan GUI', ...
'NumberTitle','off', ...
'PointerShapeCData',mat1, ...
'Position',[0.059375 0.0958333 0.875 0.779167], ...
'Renderer','zbuffer', ...
'RendererMode','manual', ...
'Tag','Fig1'); b = uicontrol('Parent',a, ...
'Units','normalized', ...
'Callback','guipnn eksekusi', ...
'FontSize',16, ...
'FontWeight','bold', ...
'Position',[0.4 0.7 0.2 0.1], ...
'String','PNN', ...
'Tag','Pushbutton1'); b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'HorizontalAlignment','left', ...
'Position',[0.098 0.392 0.8 0.109], ...
'Style','frame', ...
'Tag','Frame1'); b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[0.8 0.8 0.8], ...
'HorizontalAlignment','left', ...
'Position',[0.098 0.005 0.8 0.306], ...
'Style','frame', ...
'Tag','Frame2'); b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[1 1 1], ...
'Position',[0.225 0.414 0.14 0.06], ...
'String',mat2, ...
'Style','popupmenu', ...
'Tag','PopUpHuruf', ...
'UserData',mat3, ...
(76)
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[1 1 1], ...
'Position',[0.225 0.216 0.14 0.06], ...
'String',['Roman';'Arial'], ...
'Style','popupmenu', ...
'Tag','PopUpJenis', ...
'UserData',['roman';'arial'], ...
'Value',1);
b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[1 1 1], ...
'Position',[0.225 0.133 0.14 0.06], ... 'String',['Normal';'Gemuk ';'Kurus '], ...
'Style','popupmenu', ...
'Tag','PopUpProporsi', ...
'UserData',['normal';'gemuk_';'kurus_'], ...
'Value',1);
b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[0.753 0.753 0.753], ... 'Callback','guipnn derau', ...
'Max',50, ...
'Position',[0.596 0.415 0.14 0.06], ...
'String','Derau', ...
'Style','slider', ...
'Tag','SliderDerau'); b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[0.753 0.753 0.753], ... 'Callback','guipnn perputaran', ...
'Max',15, ...
'Min',-15, ...
'Position',[0.225 0.05 0.14 0.06], ...
'String','Perputaran', ...
'Style','slider', ...
'Tag','SliderPerputaran'); b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[1 1 1], ...
'Position',[0.596 0.216 0.14 0.06], ...
'String',['Kanan';'Kiri ';'Atas ';'Bawah'], ...
'Style','popupmenu', ...
'Tag','PopUpArahGeser', ...
'UserData',['kanan';'kiri_';'atas_';'bawah'], ...
'Value',1);
b = uicontrol('Parent',a, ...
'Units','normalized', ...
'BackgroundColor',[1 1 1], ...
'Position',[0.596 0.133 0.14 0.06], ...
'String',['0 piksel';'1 piksel';'2 piksel';'3 piksel'], ...
'Style','popupmenu', ...
'Tag','PopUpJarakGeser', ...
'UserData',mat4, ...
'Value',1);
(1)
Kode sumber:
simupnn.m73
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function [huruf,density]=simupnn(img,sigma,DaftarHuruf,sampel) % SIMUPNN Simulasi PNN
%
% (c) Linggo S. - 1998
% ============================================================ % Lapis pola dan lapis penjumlahan
pdfcond=zeros(26,1); for i=1:26
hrf=DaftarHuruf(i); load (['imgc_' hrf]);
pdfcond(i)=lhlayer(imgc,img,sigma,sampel); end
% ============================================================ % Lapis maksimum
density=max(pdfcond);
% ============================================================ % Keluaran jaringan
NomorKelas=find(pdfcond==density);
% ============================================================ % NomorKelas ke huruf
(2)
Kode sumber:
lhlayer.m74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function [cpdr]=lhlayer(ctrf,ctri,sig,sampel)
% LHLAYER Simulasi lapis pola dan penjumlahan pada PNN %
% (c) Linggo S. - 1998 % Lapis pola
beda=xor(ctri,ctrf); for i=1:sampel
jarak(i)=length(find(beda(:,i)))/1024; end
cpd=exp(-(jarak/sig).^2); % Lapis penjumlahan
(3)
Kode sumber:
imdc.m75
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function img=imdc(citra,pderau)
% IMDC Vektorisasi dan pengkontaminasian derau pada citra %
% (c) Linggo S. - 1998 img=citra(:);
kderau=pderau/50; % kerapatan derau = persen derau / 50 x=rand(1024,1); % total piksel = 1024
d=find(x < kderau/2); img(d)=0;
d=find(x >= kderau/2 & x < kderau); img(d)=1;
(4)
Kode sumber:
geser.m76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function gcitra=geser(citra,arah,jarak) % GESER Pergeseran citra%
% (c) Linggo S. - 1998 if jarak==0
gcitra=citra; else
switch arah case 'kanan'
tambah=uint8(zeros(32,jarak)); citra=citra(:,1:(32-jarak)); gcitra=[tambah citra];
case 'kiri_'
tambah=uint8(zeros(32,jarak)); citra=citra(:,(jarak+1):32); gcitra=[citra tambah];
case 'atas_'
tambah=uint8(zeros(jarak,32)); citra=citra((jarak+1):32,:); gcitra=[citra;tambah];
case 'bawah'
tambah=uint8(zeros(jarak,32)); citra=citra(1:(32-jarak),:); gcitra=[tambah;citra];
end end
(5)
77
L.3 Contoh Hasil Eksekusi Kode Sumber
1.) Tampilan berbasiskan GUI (kode sumber
guipnn.m)_
2) Tampilan berbasiskan teks (kode sumber
txtpnn.m)
Pengujian berulang berbasiskan teks=================================== Persen derau : 10
Proporsi huruf : normal Sudut rotasi : 0 Arah pergeseran : atas_ Jarak pergeseran : 0 piksel Jumlah pengujian : 30
Pengujian ke 1 - Masukan : M (Roman) , Keluaran : M - benar Pengujian ke 2 - Masukan : B (Roman) , Keluaran : B - benar Pengujian ke 3 - Masukan : G (Arial) , Keluaran : G - benar Pengujian ke 4 - Masukan : I (Arial) , Keluaran : I - benar
(6)
78
Pengujian ke 5 - Masukan : W (Roman) , Keluaran : W - benar Pengujian ke 6 - Masukan : I (Arial) , Keluaran : I - benar Pengujian ke 7 - Masukan : G (Arial) , Keluaran : G - benar Pengujian ke 8 - Masukan : L (Roman) , Keluaran : L - benar Pengujian ke 9 - Masukan : V (Arial) , Keluaran : V - benar Pengujian ke 10 - Masukan : F (Arial) , Keluaran : F - benar Pengujian ke 11 - Masukan : N (Roman) , Keluaran : N - benar Pengujian ke 12 - Masukan : L (Arial) , Keluaran : L - benar Pengujian ke 13 - Masukan : I (Roman) , Keluaran : I - benar Pengujian ke 14 - Masukan : K (Arial) , Keluaran : K - benar Pengujian ke 15 - Masukan : W (Roman) , Keluaran : W - benar Pengujian ke 16 - Masukan : T (Arial) , Keluaran : T - benar Pengujian ke 17 - Masukan : W (Arial) , Keluaran : W - benar Pengujian ke 18 - Masukan : L (Arial) , Keluaran : L - benar Pengujian ke 19 - Masukan : U (Roman) , Keluaran : U - benar Pengujian ke 20 - Masukan : D (Roman) , Keluaran : D - benar Pengujian ke 21 - Masukan : C (Arial) , Keluaran : C - benar Pengujian ke 22 - Masukan : J (Roman) , Keluaran : J - benar Pengujian ke 23 - Masukan : J (Arial) , Keluaran : J - benar Pengujian ke 24 - Masukan : M (Arial) , Keluaran : M - benar Pengujian ke 25 - Masukan : Y (Roman) , Keluaran : Y - benar Pengujian ke 26 - Masukan : J (Arial) , Keluaran : J - benar Pengujian ke 27 - Masukan : G (Arial) , Keluaran : G - benar Pengujian ke 28 - Masukan : P (Roman) , Keluaran : P - benar Pengujian ke 29 - Masukan : N (Roman) , Keluaran : N - benar Pengujian ke 30 - Masukan : E (Arial) , Keluaran : E - benar Rerata kerapatan probabilitas : 0.732289
Jumlah pengujian : 30 Jumlah meleset : 0 Persen tepat : 100
Waktu keseluruhan pengujian : 21.48 detik Waktu pengujian/huruf : 0.716 detik