T y x g jika
T y x g jika
y x g
) , ( , 1
) , ( , 0
) , (
1
1
2
Dari proses tresholding di atas maka akan didapat hasilnya apabila jumlah
warna piksel mempunyai kedalaman warna yang kurang dari nilai tresholding
maka warna piksel tersebut akan menjadi 0 (hitam) dan juga sebaliknya.
2.1.2.3 Citra Biner
Citra biner adalah citra yang hanya memiliki 2 kemungkinan nilai pada
setiap piksel-pikselnya, yaitu 0 atau 1. Nilai 0 adalah background points, biasanya
bukan merupakan bagian dari citra sesungguhnya. Sedangkan nilai 1 adalah
region points, yaitu bagian dari citra sebenarnya (bukan latar belakang).
30
Citra biner merupakan citra yang telah melalui proses pemisahan piksel
piksel berdasarkan derajat keabuan yang dimiliki. Pembentukan citra biner
memerlukan nilai batas keabuan yang akan digunakan sebagai nilai patokan. Pixel
dengan derajat keabuan lebih besar dari nilai batas akan diberi nilai 1 dan
sebaliknya piksel dengan derajat keabuan lebih kecil dari nilai batas akan diberi
nilai 0.
Jika a
1
= 0 dan a
2
= 1, serta T = gray level/2, maka operasi di atas
mentransformasikan suatu citra menjadi citra biner.
2.1.2.4 Edge Detection
Deteksi tepi (Edge Detection) pada suatu citra adalah suatu proses yang
menghasilkan tepi-tepi dari obyek-obyek citra, tujuannya adalah :
1. Untuk menandai bagian yang menjadi detail citra
2. Untuk memperbaiki detail dari citra yang kabur, yang terjadi karena error atau
adanya efek dari proses akuisisi citra
Suatu titik (x,y) dikatakan sebagai tepi (edge) dari suatu citra bila titik
tersebut mempunyai perbedaan yang tinggi dengan tetangganya. Gambar 8.1
berikut ini meng-gambarkan bagaimana tepi suatu gambar diperoleh.
31
Gambar 2.2 Poses Deteksi Tepi Citra
Perhatikan hasil deteksi dari beberapa citra menggunakan model differensial di
atas:
Gambar 2.3 Hasil Dari Deteksi Tepi
Pada gambar 2.3 terlihat bahwa hasil deteksi tepi berupa tepi-tepi dari suatu
gambar. Bila diperhatikan bahwa tepi suatu gambar terletak pada titik-titik yang
memiliki perbedaan tinggi. Berdasarkan prinsip-prinsip filter pada citra maka tepi
suatu gambar dapat diperoleh menggunakan High Pass Filter (HPF), yang
mempunyai karakteristik:
32
Contoh: Diketahui fungsi citra f(x,y) sebagai berikut:
1 1 1 1 1
1 1 1 1 0
1 1 1 0 0
1 1 0 0 0
1 0 0 0 0
Dengan menggunakan filter : H(x,y)=[-1,1] Maka Hasil filter adalah :
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
Bila digambarkan maka proses filter di atas mempunyai masukan dan keluaran
sebagai berikut
Ada dua metode untuk dapat mendeteksi tepi yaitu:
1. Metode First-Order Derivative Edge Detection
2. Metode Second-Order Derivative Edge Detection
Sedangkan yang termasuk metode pertama (first-order) adalah:
1. The Roberts operators,
2. The Prewitt operators,
33
3. The Sobel operators,
4. First-Order of Gausssian(FDOG).
dan yang termasuk metode kedua (second-order) adalah:
1. Laplacian,
2. Canny.
Dalam Skripsi ini metode yang digunakan adalah metode laplacian. Dasar
pemikiran dari operator laplacian adalah penggunaan turunan kedua untuk
mendeteksi garis pinggir yang dihasilkan oleh perubahan kontras gray level pada
citra. Kemudian mencari titik pelana (zero crossing) untuk digunakan sebagai
lokasi garis tepi (edge).
2.2 GOLONGAN DARAH
2.1.2 Darah
Darah merupakan gabungan dari cairan, sel-sel dan partikel yang
menyerupai sel, yang mengalir dalam arteri, kapiler dan vena yang mengirimkan
oksigen dan zat-zat gizi ke jaringan dan membawa karbon dioksida dan hasil
limbah lainnya. Fungsi utamanya adalah mengangkut oksigen yang diperlukan
oleh sel-sel di seluruh tubuh. Darah juga menyuplai jaringan tubuh dengan nutrisi,
mengangkut zat-zat sisa metabolisme, dan mengandung berbagai bahan penyusun
system imun yang bertujuan mempertahankan tubuh dari berbagai penyakit.
2.1.3 Golongan Darah
Golongan darah adalah ciri khusus darah dari suatu individu karena
adanya perbedaan jenis karbohidrat dan protein pada permukaan membran sel
34
darah merah. Dengan kata lain, golongan darah ditentukan oleh jumlah zat
(kemudian disebut antigen) yang terkandung di dalam sel darah merah.
Golongan darah manusia ditentukan berdasarkan jenis antigen dan
antibodi yang terkandung dalam darahnya, sebagai berikut:
1. Individu dengan golongan darah A memiliki sel darah merah dengan antigen A
di permukaan membran selnya dan menghasilkan antibodi terhadap antigen B
dalam serum darahnya. Sehingga, orang dengan golongan darah A-negatif
hanya dapat menerima darah dari orang dengan golongan darah A-negatif atau
O-negatif.
2. Individu dengan golongan darah B memiliki antigen B pada permukaan sel
darah merahnya dan menghasilkan antibodi terhadap antigen A dalam serum
darahnya. Sehingga, orang dengan golongan darah B-negatif hanya dapat
menerima darah dari orang dengan dolongan darah B-negatif atau O-negatif.
3. Individu dengan golongan darah AB memiliki sel darah merah dengan antigen
A dan B serta tidak menghasilkan antibodi terhadap antigen A maupun B.
Sehingga, orang dengan golongan darah AB-positif dapat menerima darah dari
orang dengan golongan darah ABO apapun dan disebut resipien universal.
Namun, orang dengan golongan darah AB-positif tidak dapat mendonorkan
darah kecuali pada sesama AB-positif.
4. Individu dengan golongan darah O memiliki sel darah tanpa antigen, tapi
memproduksi antibodi terhadap antigen A dan B. Sehingga, orang dengan
golongan darah O-negatif dapat mendonorkan darahnya kepada orang dengan
golongan darah ABO apapun dan disebut donor universal. Namun, orang
35
dengan golongan darah O-negatif hanya dapat menerima darah dari sesama O-
negatif.
Golongan darah berguna pada saat kita mau melakukan transfusi darah.
Yaitu proses tranfer darah ke mereka yang membutuhkan, misal karena
kekurangan darah oleh sebab kecelakaan, penyakit,atau sebab lain. Darah yang di
berikan kepada orang yang menerima harus cocok. Jika tidak akan terjadi
masalah yang fatal, bahkan kematian. Islam menganjurkan seorang muslim atau
muslimah menyumbangkan dearahnya untuk tujuan kemanusiaan, bukan
komersialisasi baik darahnya disumbangkan secara langsung kepada orang yang
memerlukannya, misalakan untuk anggota keluarga sendiri, maupun diserahkan
kepada palang merah atau bank darah untuk disimpan bila sewaktu-waktuuntuk
menolong orang yang memerlukan. Karena menyumbangkan darah dengan iklas
adalahtermasukl amal kemanusiaan yang sangat dihargai dan dianjurkan
(mahbub) oleh islam. karena dapat menyelamatkan jiwa manusia, sesuai dengan
firman Allah QS Al-Maidah Ayat 32:
. _> il: !... _ls _.. _..`.| .. . _. !. . .-. . . :!.
_ N !..! _. !.l !-..> .. !>!,> !..! !,> !.l
!-..> .1 l. `...!> !.l.' ....l!. .. _| .. ... .-. l: _
N _...l '
Artinya:
Oleh karena itu Kami tetapkan (suatu hukum) bagi Bani Israil, bahwa:
Barangsiapa yang membunuh seorang manusia, bukan karena orang itu
36
(membunuh) orang lain
4
, atau bukan karena membuat kerusakan dimuka bumi,
Maka seakan-akan Dia telah membunuh manusia seluruhnya
5
. dan Barangsiapa
yang memelihara kehidupan seorang manusia, Maka seolah-olah Dia telah
memelihara kehidupan manusia semuanya. dan Sesungguhnya telah datang
kepada mereka Rasul-rasul Kami dengan (membawa) keterangan-keterangan
yang jelas, kemudian banyak diantara mereka sesudah itu
6
sungguh-sungguh
melampaui batas dalam berbuat kerusakan dimuka bumi.( QS Al-Maidah Ayat 32)
Dalam firman Allah diatas sangan dianjurkan antar sesama manusia untuk
tolong meolong, mesklipun berlainan agama. Karena Allah sebagai khalik alam
semesta termasuk manusia berkenan memuliakan manusia, sebagaimana firman-
Nya terdapa dalam QS. Al-Isro ayat 70:
. 1l . !.., _.. :. ...l .-. _ .l ,`>.l . .... . ..,Ll
`...l. . _ls .: .. !.1 l> *,. .
Artinya:
Dan Sesungguhnya telah Kami muliakan anak-anak Adam, Kami angkut mereka
di daratan dan di lautan
7
. Kami beri mereka rezki dari yang baik-baik dan Kami
lebihkan mereka dengan kelebihan yang sempurna atas kebanyakan makhluk
yang telah Kami ciptakan. (QS. Al-Isro ayat 70)
2.3 PENGENALAN POLA
2.1.4 Pengertian Pola
Pola adalah entitas yang terdefinisi dan dapat diidentifikasi melalui ciri-
cirinya (features). Ciri-ciri tersebut digunakan untuk membedakan suatu pola
4
Yakni: membunuh orang bukan karena qishaash
5
Hukum ini bukanlah mengenai Bani Israil saja, tetapi juga mengenai manusia seluruhnya. Allah
memandang bahwa membunuh seseorang itu adalah sebagai membunuh manusia seluruhnya,
karena orang seorang itu adalah anggota masyarakat dan karena membunuh seseorang berarti juga
membunuh keturunannya
6
Ialah: sesudah kedatangan Rasul membawa keterangan yang nyata
7
Maksudnya: Allah memudahkan bagi anak Adam pengangkutan-pengangkutan di daratan dan di
lautan untuk memperoleh penghidupan
37
dengan pola lainnya. Ciri yang bagus adalah ciri yang memiliki daya pembeda
yang tinggi sehingga pengelompokan pola berdasarkan ciri yang dimiliki dapat
dilakukan dengan keakuratan yang tinggi. Sebagai contoh
Tabel 2.3 Contoh pengelompokan pola berdasarkan cirinya
Pola Ciri
Huruf Tinggi, tebal, titik sudut, lengkungan garis
Suara Amplitude, frekuensi, nada, intonasi, warna
Tanda tangan Panjang, kerumitan, tekanan
Sidik jari Lengkungan, jumlah garis
Ciri dari suatu pola diperoleh dari hasil pengukuran terhadap objek uji.
Khusus pada pola yang terdapat di dalam citra, ciri-ciri yang dapat diperoleh
berasal dari informasi:
a. Spasial : intensitas piksel dan histogram
b. Tepi : arah dan kekuatan
c. Kontur : garis, elips, dan lingkaran
d. Wilayah/bentuk : keliling, luas, dan pusat massa
e. Hasil transformasi Fourier : frekuensi
Pengenalan pola (pattern recognition) merupakan salah satu cabang ilmu
komputer yang dapat diartikan sebagai pengumpulan data-data mentah untuk
dapat diklasifikasikan dengan maksud dan tujuan tertentu. Pengenalan pola ini
bersifat conceptually driven processing yang berarti bahwa proses dimulai dari
pembentukan konsep pada objek yang dijumpai (informasi dari memori).
Inti dari pengenalan pola adalah proses pengenalan suatu objek dengan
menggunakan berbagai mode dimana dalam proses pengenalannya memiliki
38
tingkat akurasi yang tinggi. Tingkat akurasi yang tinggi memiliki pengertian
bahwa suatu objek yang secara manual (oleh manusia) tidak dapat dikenali tetapi
bila menggunakan salah satu metode pengenalan yang diaplikasikan.
Beberapa metode yang bisa digunakan untuk pengenalan pola adalah
Jaringan Syaraf Tiruan (JST), metode statistik, metode terstruktur dan lain
sebagainya. Dengan JST, menganalogikan cara berfikir pada otak manusia. Jadi,
informasi di proses sebagaimana otak manusia memproses informasi yang di
dapat. Misalnya cara pengenalan wajah pada manusia. Sedangkan metode statistik
berdasarkan hasil analisa data yang sudah terkumpul. Misalnya pengenalan dan
analisa penyakit pada manusia.
2.1.5 Metode Pengenalan
Pengenalan pola bertujuan menentukan kelompok atau kategori pola
berdasarkan ciri-ciri yang dimiliki oleh pola tersebut. Tujuan pengelompokan
adalah untuk mengenali suatu objek dalam citra. Dalam firman Allah QS. Al-
Hujarat/49 ayat: 14:
l! .sN !... _ .l .`... >.l. .l. !..l`. !.l. _>..
...N _ .>..l _|. .`-.L. < .`.. . N .>.l. . .>l..s !:.: _|
< ".s ..> '
Artinya:
Orang-orang Arab Badui itu berkata: "Kami telah beriman". Katakanlah: "Kamu
belum beriman, tapi Katakanlah 'kami telah tunduk', karena iman itu belum
masuk ke dalam hatimu; dan jika kamu taat kepada Allah dan Rasul-Nya, Dia
tidak akan mengurangi sedikitpun pahala amalanmu; Sesungguhnya Allah Maha
Pengampun lagi Maha Penyayang."( Hujarat/49 ayat: 14)
39
l! .sN !... orang-orang arab dusun berkata: kami telah beriman.
orang-orang arab badui (Bani Asad) mengatakan: kami telah beriman kepada
Allah dan Rasul-Nya. Sebenernya mereka belum beriman dengan sempurna dan
keimanan itu belum dijalankan dengan tulus dan iklas. Oleh karena itu Allah
berfirman kepada Nabi Muhammad: _ .l .`... >.l. .l. !..l`.
katakanlah: kamu belum beriman tapi katakanlah kami telah tunduk Hai
Muhammad, katakanlah kepada orang-orang arab dusun tersebut. kamu belum
boleh mengatakan bahwa kamu sudah beriman. Akan tetapi katakanlah, kamu
telah menjalani perintah-perintah agama pada lahiriahnya untuk melepaskan diri
dari pembunuhan dan penawaran serta untuk memperoleh pembagian harta
rampasan. !.l. _>.. ...N _ .>..l iman belum masuk kedalam
jawamu. Namun untuk memenangkan hati mereka, Allah berfirman: sampai
sekarang imanmu belum masuk kedadamu (jiwamu), akan tetapi baru masuk, jika
aku menghendakinya. Iman adah membenarkan dan menundukkan diri serta
memenuhi jiwa dengan keyakinan, sedangkan Islam hanya memperlihatkan
tunduk dan mengerjakan apa yang diperintahkan oleh nabi saja. Dengan demikian
terpeliharalah darah. Tegasnya, islam disini dipakai dalam sebagian artrinya,
demikian pula iman. Apabila kedua kalimat ini dipisahkan, maka masing-masing
mencakup dua makna itu.
8
_|. .`-.L. < .`.. . N .>.l. . .>l..s !:.:
jika kamu taat kepada Allah dan Rasul-Nya, Dia tidak akan mengurangi
8
Said ibn Jubir, Mujahid dan ibnu Zaid berkata: Makna akan tetapi kami telah Islam adalah
kami menyerahkan diri karena takutdibunuh dan di tawan
40
sedikitpun Jika kamu menaati Allah dan rasul-Nya niscaya Allah tidak akan
mengurangi sesuatupun dari amalan-amalanmu. Bahkan akan menbyempurnakan
semua pembalasannya untukmu dengan sesempurna-sesempurnanya.
_| < ".s ..> Sesungguhnya Allah Maha Pengampun lagi Maha
Penyayang Allah mengampuni semua kesalahanmu dan keterlajuranmu, serta
Maha Rahim. Dia tidak akan mengazab seseorang yang bertobat, bahkan
menambah kemuliaannya dan memaafkan dosa-dosanya.
Demikian juga dalam pengenalan pola golongan darah pada manusia ini
juga menggunakan cirri-ciri pengenalan pola yang telah menjadi bagian dari
kecerdasan buatan (artificial intelegence), karena merupakan suatu kecerdasan
maka pengenalan pola memerlukan fungsi-fungsi pengambil keputusan. Dari
fungsi-fungsi inilah maka muncul berbagai teknik atau metode dalam mengenali
suatu pola.
Beberapa metode untuk memecahkan masalah pengenalan tulisan tangan
telah disusun, tetapi sebagian besar metode yang digunakan dipinjam dari bidang
pengenalan pola, pemrosesan sinyal (signal processing), dan analisis gambar
(image analisys). Metode pengenalan dapat diklasifikasikan menjadi 3 kelompok
utama, yaitu: statistical, model matching, model structural dan sintatical (Beigi,
1998)
Pada dasarnya metode pengenalan sangatlah mudah, setelah dilakukan
proses awal, beberapa ciri kemudian diekstrak dari karakter yang tidak dikenal,
kemudian diklasifikasikan ke dalam kelas-kelas yang memiliki banyak kemiripan
dengan ciri-ciri tesebut. Tetapi permasalahannya ketika ditemukan gambaran dan
41
perbedaan ciri, pemilihan cara untuk membandingkannya, dan juga ketika
menciptakan aturan-aturan dalam proses pengklasifikasian.
2.4 JARINGAN SARAF TIRUAN
Jaringan Syaraf Tiruan dibuat pertama kali pada tahun 1943 oleh
neurophysiologist Waren McCulloch dan logician Walter Pits, namun teknologi
yang tersedia pada saat itu belum memungkinkan mereka berbuat lebih jauh.
Jaringan Syaraf Tiruan adalah paradigma pemrosesan suatu informasi
yang terinspirasi oleh sistim sel syaraf biologi, sama seperti otak yang memproses
suatu informasi.
Pembuatan struktur jaringan syaraf tiruan diilhami oleh jaringan otak
manusia. Pada jaringan otak manusia terdapat sel syaraf Neuron yang memiliki
tiga komponen penyusun yang saling bekerja sama untuk mengolah sinyal-sinyal
informasi. Tiga komponen tersebut adalah dendrit(input), soma atau badan sel
dan axon(output).
Gambar 2. 3 Struktur Jaringan Saraf Tiruan
Keterangan dari gambar diatas adalah input akan dikirim ke neuron
dengan bobot kedatangan tertentu. Input ini akan diproses oleh suatu fungsi
perambatan yang menjumlahkan nilai semua bobot yang datang. Hasil
42
penjumlahan itu akan dibandingkan dengan suatu nilai ambang (threshold)
tertentu melalui fungsi aktifasi setiap neuron.
Apabila input melewati nilai ambang tertentu, maka neuron akan
diaktifkan, tetapi kalau tidak, neuron dinonaktifkan. Bila neuron diaktifkan,
neuron mengirimkan output melalui bobot-bobot outputnya ke semua neuron yang
berhubungan dengannya.
2.4.1 Fungsi Aktivasi Sigmoid Biner
Fungsi ini digunakan untuk jaringan syaraf yang dilatih dengan
menggunakan metode backpropagation. Fungsi sigmoid biner memiliki nilai pada
range 0 sampai 1. Oleh karena itu, fungsi ini sering digunakan untuk jaringan
syaraf yang membutuhkan nilai yang terletak pada interval sampai 0 Namun,
fungsi ini bisa juga digunakan oleh jaringan syaraf yang nilai outputnya 0 atau 1.
Fungsi sigmoid biner dirumuskan sebagai berikut:
Gambar 2.4 Fungsi Aktivasi Sigmoid Biner
43
2.4.2 Arsitektur jaringan saraf tiruan
1. Single Layer Net
Gambar 2. 5 Arsitektur JST Single Layer Net
Perwakilan dengan lapisan tunggal hanya memiliki satu lapisan dengan bobot-
bobot terhubung. Jaringan ini hanya mnerima input kmudian scr langsung akn
mngolahnya mnjd output tanpa harus melalui lapisan tersembunyi. Dalam gambar
tersebut, lapisan input memiliki 3 neuron, yaitu X
1,
X
2
, X
3.
Sedangkan pada
lapisan output memiliki 2 neuron yaitu Y
1
dan Y
2
. Neuron-neuron pada kedua
lapisan saling berhubungan. Seberapa besar hubungan antara 2 neuron ditentukan
oleh bobot yang bersesuaian. Semua unit input akan dihubungkan dengan setiap
unit output.
2. Multi Layer Net
Gambar 2. 6 Arsitektur JST Multi Layer Net
44
Jaringan dengan banyak lapisan memiliki 1 atau lebih lapisan yang terletak
diantara lapisan input dan lapisan output (memiliki 1 atau lebih lapisan
tersembunyi). Umumnya, ada lapisan bobot-bobot yang terletak antara 2 lapisan
yang bersebelahan. Jaringan dengan banyak lapisan ini dapat menyelesaikan
permasalahan yang lebih sulit daripada yang dengan lapisan tunggal, tentu saja
dengan pembelajaran yang lebih rumit.
2.4.3 Metode Backpropagation
Algoritma pelatihan Backpropagasi (Back Propagation) atau ada yang
menterjemahkannya menjadi propagasi balik, pertama kali dirumuskan oleh
Werbos dan dipopulerkan oleh Rumelhart dan McClelland untuk dipakai pada
JST, dan selanjutnya algoritma ini biasa disingkat dengan BP. Algoritma ini
termasuk metoda pelatihan supervised dan didesain untuk operasi pada jaringan
feed forward multi lapis.
Secara garis besar, mengapa algoritma ini disebut sebagai propagasi balik,
dapat dideskripsikan sebagai berikut: Ketika Jaringan diberikan pola masukan
sebagai pola pelatihan maka pola tersebut menuju ke unit-unit pada lapisan
tersembunyi untuk diteruskan ke unit-unit lapisan keluaran. Kemudian unit-unit
lapisan keluaran memberikan tanggapan yang disebut sebagai keluaran jaringan.
Saat keluaran jaringan tidak sama dengan keluaran yang diharapkan maka
keluaran akan menyebar mundur (backward) pada lapisan tersembunyi diteruskan
ke unit pada lapisan masukan. Oleh karenanya maka mekanisme pelatihan
tersebut dinamakan backpropagation/propagasi balik.
45
Tahap pelatihan ini merupakan langkah bagaimana suatu jaringan saraf
itu berlatih, yaitu dengan cara melakukan perubahan penimbang (sambungan antar
lapisan yang membentuk jaringan melalui masing-masing unitnya). Sedangkan
pemecahan masalah baru akan dilakukan jika proses pelatihan tersebut selesai ,
fase tersebut adalah fase mapping atau proses pengujian/testing.
Algoritma backpropagation menggunakan error output untuk nilai bobot
bobotnya dalam arah mundur (backward), untuk mendapatkan error ini, tahap
perambatan maju(forward propagation) harus dikerjakan terlebih dahulu. Untuk
jelasnya dapat dijelaskan rinciannya sebagai berikut :
1. Inisialisasi bobot (ambil bobot awal dengan nilai random yang cukup kecil)
2. Mengerjakan langkah langkah berikut selama kondisi berhenti bernilai false:
a. Untuk tiap tiap pasangan elemen yang akan dilakukan pembelajaran, yang
dikerjakan :
Feedforward :
1. Tiap tiap input (X
i
, i=1,2,3,...,n) menerima sinyal X
i
dan meneruskan
sinyal tersebut ke semua unit pada lapisan yang ada diatasnya ( lapisan
tersembunyi)
2. Tiap tiap unit tersembunyi ( Z
i
, j=1,2,3,...,p ) menjumlahkan sinyal
sinyal input terbobot : gunakan fungsi aktifasi untuk menghitung sinyal
outputnya :
Z_in
]
= I
0]
+ `X
I
]
n
=1
dan kirimkan sinyal tersebut ke semua unit di lapisan atasnya (unit unit
output).
46
Z
]
= (Z_in
]
)
3. Tiap tiap unit output ( Y
k
, k=1,2,3,...,m ) menjumlahkan sinyal sinyal
input terbobot.
_in
k
= W
0k
+ `Z
]
w
]k
p
]=1
Gunakan fungsi aktifasi untuk menghitung sinyal outputnya :
y
k
= ( y_in
k
)
dan kirimkan sinyal tersebut ke semua unit di lapisan atasnya ( unit unit
output)
Backpropagation
4. Tiap tiap unit output ( Y
k
, k=1,2,3,...,m ) menerima target pola yang
berhubungan dengan pola input pembelajaran, hitung informasi errornya:
o
k
= ( t
k-
y
k
) ( y_in
k
)
kemudian hitung koreksi bobot ( yang nantinya akan digunakan untuk
memperbaiki nilai w
jk
) :
w
k]
= o o
k
Z
]
hitung juga koreksi bias ( yang nantinya akan digunakan untuk
memperbaiki nilai w
0k
) :
w
0k
= o o
k
Kirimkan
k
ini ke unit unit yang ada di lapisan bawahnya.
5. Tiap tiap unit tersembunyi (Z
i
,j=1,2,3,...,p) menjumlahkan delta
inputnya ( dari unit unit yang berada pada lapisan di atasnya ):
6. o_in
]
= ` o
k
w
]k
m
k=1
47
kalikan nilai ini dengan turunan dari fungsi aktivasinya untuk
menghitung informasi error :
o
]
= o_in
]
(y_in
]
)
kemudian hitung koreksi bobot ( yang nantinya akan digunakan untuk
memperbaiki nilai v
ij
) :
I
]
= o
]
X
hitung juga koreksi bias ( yang nantinya akan digunakan untuk
memperbaiki nilai v
0j
):
I
0]
= o
]
2.5 BORLAND DELPHI
Delphi merupakan versi visual dari Pascal. Berbagai kemudahan
ditawarkan oleh Delphi, mulai dari perancangan aplikasi berbasis form,
kemudahan pemberian komponen visual, manipulasi property dan event yang
terintegrasi melalui object inspector, sampai code insight (Pranata, 2003: 4)
2.5.1 Mengenal IDE Delphi
Pada dasarnya IDE Delphi dibagi menjadi tujuh bagian utama, yaitu
Menu, Speed Bar, Component Palette, Form Designer, Code Explorer, Object
Treeview, dan Object Inspector.
48
Gambar 2.7 Bagian-bagian IDE Delphi
Menu
Menu pada Delphi memiliki kegunaan seperti menu pada aplikasi
windows lainnya, semua yang ada berhubungan dengan IDE Delphi dapat
dilakukan dari menu. contohnya: memanggil atau menyimpan program,
menjalankan program, dan sebagainya.
Speed Bar
Speed Bar atau sering juga disebut toolbar berisi kumpulan tombol
sebagai pengganti beberapa item menu yang sering digunakan. Dengan kata
lain, setiap tombol pada speed bar menggantikan salah satu item menu.
Sebagai contoh, tombol kiri atas adalah pengganti menu File | New, tombol
disebelah kanannya adalah pengganti menu File | Open, dan seterusnya.
M enu
Component Pal l et
Speed Bar
Obj ect Tr eeView
Obj ect Inspect or
For m Desi gner
Code Expl or e
49
Component Palette
Component Palette berisi ikon yang melambangkan komponen-
komponen pada VCL (Visual Component Library) atau CLX (Component
Library for Cross Platform). VCL merupakan pustaka komponen yang
dengannya dapat membangun aplikasi. Pada Component Palette terdapat
beberapa tab, yaitu Standard, Additional, Data Access, dan seterusnya
Form Designer
Form Designer merupakan tempat untuk merancang jendela aplikasi.
Perancangan form dilakukan dengan meletakkan komponen-komponen yang
diambil dari component palette.
Gambar 2.8 Form Designer
Code Explorer
Code Explorer adalah tempat untuk menuliskan program. Pernyataan-
pernyataan tersebut ditulis dalam bentuk bahasa object Pascal. Kita tidak
perlu menuliskan semua kode sumber karena Delphi telah menuliskan
semacam kerangka program.
50
Object TreeView
Object TreeView berisi daftar komponen yang telah diletakkan pada
Form Designer. Sebagai contoh, jika meletakkan 2 komponen, TGroupBox
dan TLabel, Object TreeView terlihat seperti gambar
Gambar 2.9 Object TreeView pada IDE Delphi
Object Inspector
Object inspector digunakan untuk mengubah karakteristik komponen.
Pada object inspector terdapat 2 tab yaitu Properties dan Event. Tab tersebut
dapat diaktifkan salah satu dengan menklik Properties atau Event.
Pada tab properties, bisa digunakan untuk mengubah property dari
komponen yang telah dibuat. Sedsangkan pada tab event, dapat digunakan
untuk menyisipkan kode dalam menengani kejadian tertentu. Kejadian bisa
dibangkitkan karena beberapa hal, seperti pengklikan mouse, penekanan
tombol keyboard, penutupan jendela, dan sebagainya. Misalnya onClick,
yang dibangkitkan bila mengklik form.
51
2.5.2 Struktur File
Tidak seperti Turbo Pascal, Delphi tidak hanya menyimpan file kode
dengan ekstensi .pas, tetapi karena pada Delphi terdapat form beserta
parameternya, maka ada beberapa file yang akan disimpan. Untuk memudahkan,
program disebut dengan Project. Project tersebut akan berisi form, source code
untuk form, dan source code untuk project.
Untuk form akan diberi unit, yang akan berisi kode-kode program
untuk memanipulasi form tersebut, termasuk untuk event-event yang dimiliki oleh
form tersebut.
Beberapa file yang terbentuk ketika program Delphi disimpan dalam
hardisk, antara lain:
1) Project file (*.dpr) adalah file proyek yang dibuat berisi program kecil, berisi
program utama dari aplikasi yang telah dibuat untuk:
Mendefinisikan Unit yang ada dalam file proyek
Menginisialisasi data
Membangun form
Menjalankan aplikasi
2) Unit file (*.pas) adalah unit-unit yang nantinya digunakan untuk menangani
kejadian pada form, bisa terdiri satu atau banyak file. File ini berisi source code
dari obyek-obyek Pascal maupun perintah-perintah yang ingin ditulis
3) Form file (*.dfm) merupakan file binary yang merepresentasikan gambar dari
form/tampilan yang kita buat. File ini biasanya bergabung dengan file .pas.
52
Untuk penambahan form baru, akan selalu dibuat file form/dfm dengan file
pas.
4) Resource file (*.res) adalah file yang berisi resource, biasanya ikon, tertapi
dapat juga kursor, bitmap, dll
5) Option (*.dof) dan konfigurasi (*.cfg) adalah file konfigurasi untuk proyek
yang telah dibuat. File ini dapat diubah konfigurasi proyeknya melalui menu
Project | Options
2.5.3 Code Editor
Tiap form diberikan satu file unit dan file unit itulah yang dipakai untuk
menulis kode program yang berhubungan dengan form. Selain itu, setiap kali
form baru di desain, maka secara otomatis pada code editor akan tampil baris-
baris kode seperti di bawah ini:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
53
BAB III
DESAIN DAN PERANCANGAN
Bab ini membahas tentang desain dan perancangan metode backpropagation
dalam pengenalan pola golongan darah pada citra grayscale ataupun true color.
Desain dan perancangan ini meliputi deskripsi sistem, desain data, desain proses,
dan desain antarmuka. Selain itu dijelaskan juga proses-proses yang digunakan
dalam metode ini serta penjelasan fungsi-fungsi dan parameternya.
A. DESKRIPSI SISTEM
Subbab ini akan membahas mengenai deskripsi sistem yang dikerjakan
pada skripsi. Tujuan pembuatan sistem ini adalah untuk mengenali golongan
darah manusia yang terdiri dari A, B, AB, O. Pada awalnya pengguna
memasukkan input data berupa citra. Citra masukan adalah citra grayscale 8 bit
atau citra warna 24 bit. Kemudian pengguna diminta untuk melakukan
preprocessing yaitu proses awal agar citra tersebut dapat diproses selanjutnya.
Jika semua operasi pada preprocessing telah dikerjakan, maka sistem siap
melakukan proses selanjutnya.
Implementasi metode pengenalan pola golongan darah manusia ini terdiri
dari 3 tahap utama untuk pengenalan pola golongan darah manusia yaitu proses
awal (edge detection), proses pelatihan (process training), dan pengenalan
(recognition). Pada tahap awal, citra masukan dilakukan deksi tepi dan pelatihan
pada citra. Diagram alir dari sistem ini adalah sebagai berikut:
54
Gambar 3.1 Diagram alir sistem secara keseluruhan
Sesuai dengan gambar 3.1, jika pengguna tidak memasukkan citra biner (8
bit) maka citra akan dirubah dulu dalam bentuk citra biner (hitam-putih).
Kemudian dilakukan preprocessing yang menghasilkan citra berukuran 1 piksel
dan berwarna hitam putih. Hasil citra dari proses tersebut, selanjutnya gambar
diproses sampai menghasilkan tepi-tepi objek citra. Kemudian dilakukan proses
55
training dan pengenalan pada citra yang ahirnya menampilkan hasil pengenalan
poal golongan darah dan proses berahir.
B. DESAIN SISTEM
Pada sub bab ini akan dijelaskan mengenai desain aplikasi sistem untuk
implementasi metode backpropagation. Desain aplikasi ini meliputi desain data,
algoritma yang digunakan dalam sistem yang digambarkan dengan diagram alir,
desain proses. Desain data berisikan penjelasan data yang diperlukan untuk
menerapkan beberapa metode pada pengolahan citra dan pengenalan ini. Desain
data meliputi data masukan, data selama proses dan data keluaran. Desain proses
antara lain menjelaskan tentang proses awal (preprocessing), deteksi tepi, dan
pengenalannya. Pada proses awal, terdiri dari konversi ke hitam-putih selanjutnya
gambar diproses sampai menghasilkan tepi-tepi objek citra. Algoritma
backpropagation mengunakan error output untuk mengubah nilai bobot-bobotnya
dalam arah mundur (backward). Untuk mendapatkan error ini dilakukan tahap
perambatan maju (forward propagation) harus di kerjakan terlebih dahulu. Pada
saat perambatan maju, neuron-neuron diaktifkan dengan menggunakn fungi
aktivasiyang dapat dideferensikan, seperti fungsi sigmoid:
y = ( x) =
1
1 + c
-cx
Dengan:
( x) = o( x) [ 1 ( x) ]
1. Desain Data
Data yang digunakan untuk implementasi perangkat lunak ini dibagi
menjadi tiga bagian utama, yaitu data masukan, data yang digunakan selama
proses perbaikan citra preprocessing dan data keluaran.
56
2. Data Masukan
Data masukan yang pertama dari pengguna adalah arsip citra yang dipilih
oleh pengguna. Pada sistem ini citra yang dimasukkan berupa arsip citra warna 24
bit, dengan format .bmp. Data masukan kedua adalah bentuk citra yang akan
dikenal, hal ini dilakukan pada operasi deteksi tepi.
C. PENGENALAN POLA GOLONGAN DARAH MANUSIA
MENGGUNAKAN JST BACKPROPAGATION
Citra masukan yang digunakan adalah citra dengan resolusi 512 x 256
pixel dan memiliki 256 derajat keabuan dengan baris dan kolom menunjukkan
sebuah titik pada citra serta kesesuaian nilai elemen matrik mengidentifikasikan
level pada titik tersebut. Proses komputasi dimensi matrik yang besar
membutuhkan waktu proses yang lama sehingga diperlukan reduksi dimensi
matrik untuk meminimalisir waktu proses. Identifikasi darah didasari pada
pengenalan pola dengan pendekatan jaringan syaraf. Metode jaringan syaraf yang
dipergunakan adalah backpropagation.
Proses identifikasi darah dilakukan dengan membandingkan citra input
dengan citra yang telah dilatih oleh sistem. Secara garis besar, penelitian ini terdiri
dari beberapa tahap yaitu :
1. Pengambilan citra digital.
2. Proses pengolahan citra yang meliputi deteksi tepi dengan operator
Laplacian
57
3. Proses membuat data input yang digunakan dalam proses jaringan syaraf
tiruan.
4. Proses pelatihan dan pengujian.
1. Pengolahan Data
Langkah-langkah proses dari pengenalan pola golongan darah manusia ini
dapat dilihat pada gambar 3.2 di bawah ini:
Gambar 3.2 Flowchart proses pengenalan citra darah
Dari flowchart proses pola golongan darah manusia diatas dapat dilihat
bahwa pada proses pengenalan pola golongan darah manusia terdapat beberapa
proses yang saling berhubungan dan ketika salah satunya tidak dijalankan maka
tidak akan tercapai suatu pengenalan tulisan seperti yang diharapkan. Proses
tersebut diawali dengan input citra, preprocessing, edge detektion, masukkan
58
kedalam metode back propagation dan hasil akhir yang berupa jenis golongan
darah manusia. Secara lengkap urutan prosesnya sebagai berikut:
1. Input image
Input image merupakan proses yang pertama kali dilakukan untuk
mendapatkan data citra yang akan diproses selanjutnya. Dalam tahap ini dilakukan
suatu proses pengubahan suatu citra digital. Citra digital adalah citra yang
diekspresikan oleh sekumpulan bilangan sehingga dapat diproses oleh komputer.
Dalam skripsi ini, pengenalan dilakukan secara offline yaitu image
golongan darah manusia. Setelah data diperoleh, data tersebut harus diubah
menjadi data yang dapat diolah oleh program.
2. Preprocessing
Sebelum suatu citra mengalami pemrosesan lebih lanjut, perlu dilakukan
proses awal (preprocessing) terlebih dahulu, yaitu pengolahan citra (image)
dengan tujuan mendapatkan gambar dengan pola yang dapat digunakan dengan
menggunakan metode backpropagation yang menghasilkan kode tertentu
menurut warna pikselnya. Sehingga dapat digunakan dalam program untuk
pengenalan pola golongan darah manusia ini.
2.1 Binerisasi
Pengkonversian citra true color (24 bit) menjadi citra biner (1 bit)
dilakukan dengan operasi pengambangan (tresholding). Operasi pengambangan
mengelompokkan nilai derajat keabuan setiap piksel ke dalam 2 kelas, hitam dan
putih. Di mana hitam sebagai warna objek dan putih sebagai warna latar
belakangnya.
59
Pemilihan nilai threshold yang digunakan berpengaruh terhadap ketajaman
suatu citra. Biasanya rentangan nilai graylevel yang sering digunakan adalah
antara 0-255. Pada skripsi ini, nilai treshold yang digunakan adalah 180.
Proses pengubahan ini, dilakukan dengan memeriksa piksel citra. Jika piksel
kurang dari 180 maka warna piksel berubah menjadi hitam, begitu juga sebaliknya
jika piksel lebih dari 180 maka warna piksel akan berubah menjadi putih.
Flowchart diagram tersebut dapat dilihat pada gambar 3.4 di bawah ini:
S t ar t
ni l ai : =ge t Rval ue( i mage1.Canvas.Pi x el s[ i ,j ] )
ni l ai <= 18 0 ni l ai : =cl Bl ac k
ni l ai : =c l W h i t e
i : = i +1
N o
y e s
w : =i mage 1.W i d t h
h : =i mage1. H ei gh t
j : = j +1
End
j : = 0
i : = 0
Gambar 3.3 Flowchart proses binerisasi
60
2.2 Edge detection dengan operator laplacian
Turunan kedua untuk mendeteksi garis pinggir yang dihasilkan oleh
perubahan kontras gray level pada citra. Kemudian mencari titik pelana (zero
crossing) untuk digunakan sebagai lokasi garis tepi (edge). Deteksi tepi (edge
detection) dengan operator laplacian merupakan salah satu pengembangan dari
teknik deteksi tepi yang telah dibahas dengan memiliki mask berukuran 3x3
Flowchart diagram tersebut dapat dilihat pada gambar 3.4 di bawah ini:
Gambar 3.4 Diagram Alir Deteksi tepi
61
Sesuai gambar 3.4 citra inputan dibaca dan dimasukkan metode laplacian
kemudian citra dijadikan citra negative dan dilkukan deteksi tepi hingga ahirnya
menampilkan deteksi tepi dari citra masukan yaitu citra darah.
2. Perancangan jaringan saraf tiruan
Arsitektur jaringan syaraf yang digunakan disini terdiri dari 3 layer, yaitu
2 layer input, 1 hidden layer dan 1 layer output. Jumlah neuron input kejaringan
syaraf tiruan dengan algoritma backpropagation adalah 50 neuron yang diperoleh
dari pengolahan data sebagai mana yang telah dibahas sebelumnya. Jumlah
neuron hidden layer yaitu sebanyak n yang dimasukkan oleh user. Untuk jumlah
neuron output layer sebanyak 2 buah neuron dengan fungsi aktivasi yang
digunakan adalah fungsi sigmoid biner dengan nilai range 0 sampai 1. Target
pengujian (target output) yang merupakan hasil keluaran dari neuron output layer
adalah jenis golongan darah manusia.
Proses pelatihan diawali dengan proses inisialisasi yang diikuti dengan
tahapan feedforwad yaitu menjumlahkan sinyal-sinyal input terbobot pada hidden
layer dan output layer. Sinyal-sinyal tersebut diaktivasi dengan fungsi sigmoid
biner. Tahap selanjutnya adalah tahap backpropagation yang dimulai dengan
menghitung informasi error. Informasi error diperoleh dari selisih antara nilai
target yang telah ditentukan dengan nilai keluaran dari output layer. Informasi
error tersebut digunakan untuk mengoreksi bobot pada unit output dan hidden.
Koreksi bias dilakukan pula pada unit output dan unit hidden. Tiap-tiap unit
output dan unit hidden memperbaiki bobot dan biasnya. Langkah tersebut diatas
dikerjakan berulang-ulang selama kurang dari maksimum epoh atau kuadrat error
62
kurang dari target error. Diagram alir proses pelatihan dapat dilihat pada Gambar
3.4 dibawah ini:
Gambar 3.5 Diagram alir proses pelatihan
Untuk Mean Square Error (MSE) dari proses pelatihan diperoleh dari
penjumlahan kuadrat error setiap pelatihan selama satu kali epoh dibagi dengan
63
banyaknya data yang dilatihkan. Iterasi epoh yang semakin banyak cenderung
akan menghasilkan nilai error yang semakin kecil. Tetapi pelatihan yang optimal
dipengaruhi oleh banyak faktor seperti penentuan learning rate, banyaknya
hidden layer serta arsitektur jaringannya sendiri.
Berikut adalah data training citra darah
Golongan Darah B
Tabel 3.1 hasil dari training citra golongan darah
Tabel 3.2 hasil dari training citra golongan darah
Tabel 3.3 hasil dari training citra golongan darah
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 1184 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,0099 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/400 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 2463 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,00995 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 1/400
(0,25%)
Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification
Error
-1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
64
Tabel 3.4 hasil dari training citra golongan darah
Tabel 3.5 hasil dari training citra golongan darah
Golongan darah AB
Tabel 3.6 hasil dari training citra golongan darah
Informasi Training Training Neural Net
Jumlah Epoh 3395 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,00999 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/800 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 3494 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,00998 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/1200(0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 660 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,00997 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/1600 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 3332 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,009995 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 4/2000 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
65
Tabel 3.7 hasil dari training citra golongan darah
Tabel 3.8 hasil dari training citra golongan darah
Tabel 3.9 hasil dari training citra golongan darah
Tabel 3.10 hasil dari training citra golongan darah
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 14654 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,03777 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 43/2400
(1,782%)
Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 15311 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,04165 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/400 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 1478 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,00997 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/400 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
66
Golongan Darah A
Tabel 3.11 hasil dari training citra golongan darah
Tabel 3.12 hasil dari training citra golongan darah
Tabel 3.13 hasil dari training citra golongan darah
Jumlah Epoh 8849 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,03097 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 21/1200 (1,75%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 13498 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,04300 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 0/2000 (3,3%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 2115 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,02698 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 76/3200 (2,357%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 22383 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,02908 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 62/3600
(1,722%)
Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
67
Tabel 3.14 hasil dari training citra golongan darah
Tabel 3.15 hasil dari training citra golongan darah
Golongan Darah O
Tabel 3.16 hasil dari training citra golongan darah
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 23504 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,03460 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 60/4000 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 25080 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,02936 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 58/4400
(1,318%)
Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 26229 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,02622 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 58/4800 (1,208%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
68
Tabel 3.17 hasil dari training citra golongan darah
Tabel 3.18 hasil dari training citra golongan darah
Tabel 3.19 hasil dari training citra golongan darah
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 1184 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,0099 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 5
0
Pixel Classification Error 0/400 (0%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 30744 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,01727 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 64/5600 (1,143%) Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
Gbr Asli Hasil Deteksi Tepi
Keterangan Pada Gambar
Informasi Training Training Neural Net
Jumlah Epoh 31066 Learning Rate 0,001 Input Pattern No of Input Neuron -
Trianing Squared Error 0,01610 Weigh initialization factor 0,5 Heigh 20 No Hidden Neuron 50
Pixel Classification Error 64/6000
(1,067%)
Error Threshold 1 Width 20 No Output Neuron -
Recognition Target Classification Error -1 Target Pattern
B&W Threshold 196 Target Squared Error 0,01 Heigh 20
Noise Threshold 10 Maxsimum Epoh 1000 Width 20
69
D. DESAIN ANTARMUKA
Aplikasi ini dibangun dengan desain user interface form yang terdiri dari 4
form, yaitu form utama, form proses awal, form simpan, dan form pelatihan.
1. Desain Menu Tampilan Utama
Gambar 3.6 Form Utama
Halaman ini berfungsi sebagai layar utama, setiap user yang menjalankan aplikasi
ini, harus menjalankan form ini terlebih dahulu. Pada halaman tersebut terdapat 4
menu, yaitu:
1. Home : untuk kembali ke tampilan awal (form utama)
2. Deteksi Tepi : untuk memproses gambar sampai menghasilkan
tepi-tepi objek citra
3. Process Traininmg : untuk melakukan training pada pola darah
4. Exit : untuk keluar dari program
2. Desain Menu Tampilan proses awal
Desain tampilan menu proses awal adalah sebagai berikut:
Pengenal an Pol a Gol ongan Dar ah Menggunakan Jar i ngan
Sar af Ti r uan Back Pr opagat i on
Pr ocess Det eksi Hom Exi t
70
Button1 TLabel ComboBox ChekBox Button2
Image1 Image2
Gambar 3.7 Form Proses Awal
Halaman ini berfungsi untuk melakukan proses awal pada gambar. Gambar di
load dari menu file selanjutnya gambar diproses sampai menghasilkan tepi-tepi
objek citra. Selanjutnya hasil dari deteksi tepi disimpan dalam button save.
Menu-menu yang terdapat dalam halaman ini antara lain:
1. Ambil citra
2. Operator, terdapat proses memilih operator
3. Button negative, berfungsi uyntuk mengubah gambar menjhadi hitam
putih
4. Tepi, untuk menhasilkan tepi-tepi objek citra
3. Desain Menu Tampilan Halaman Pengenalan Golongan Darah
Desain tampilan menu halaman pengenalan golongan darah. Mengambil
gambar darah yang bertype .bmp gambar akan diproses dan menunjukkan
golongan darah dari gambar yang diambil. Berikut adalah sebagai berikut
tampilannya:
71
Gambar 3.8 Pengenalan Golongan Darah
Pada gambar 3.7 berfungsi untuk melakukan proses process training pada pola
darah manusia. Desain tampilan pada halaman training adalah sewbagai berikut:
Gambar 3.9 Form process tarining
72
BAB IV
HASIL DAN PEMBAHASAN
Dalam bab ini dibahas mengenai hasil uji coba program yang telah
dirancang dan dibuat, serta kontribusi program dalam Islam. Uji coba dilakukan
untuk mengetahui apakah program dapat berjalan sebagaimana mestinya dengan
lingkungan uji coba yang telah ditentukan serta dilakukan sesuai dengan skenario
uji coba.
Ada beberapa hasil uji coba yang telah dilakukan terhadap data yang telah
dipilih, antara lain: menguji citra darah yang diperoleh apakah bisa mengenali
golongan darah manusia (A, B, AB, O). Sebelumnya perlu diketahui lingkungan
uji coba yang digunakan dalam melakukan uji coba dalam tugas akhir ini.
A. LINGKUNGAN UJI COBA
Pada subbab ini dijelaskan mengenai lingkungan uji coba yang meliputi
perangkat lunak dan perangkat keras yang digunakan. Spesifikasi perangkat keras
dan perangkat lunak yang digunakan dalam uji coba antara lain adalah:
Tabel 4.1 Lingkungan Uji Coba
Perangkat
Keras
Prosesor : Intel Pentium 4 2.66 GHz
Memori : 1 GB
Piranti Masukan : - Scanner HP PSC 1410
- Mouse
- Keyboard
Perangkat Lunak
Sistem Operasi : Microsoft Windows XP Professional 2002
Perangkat Pengembang : Borland Delphi 7.0
73
B. DATA UJI COBA
Pada uji coba yang akan dilakukan, digunakan data yang berasal dari
pengambilan gambar darah dengan kamera lalu dimasukkkan di dalam computer.
Gambar tersebut betipe .bmp. Data uji coba yang saya gunakan adalah 40 image.
Untuk menghitung prosentase hasil kebenaran dari aplikasi yang saya buat, saya
menggunakan rumus sebagai berikut:
Proscntosc =
oto Kcbcrosilon
[umlo oto
100
Diketahui: Data Keberhasilan = 31 Data Salah = 9
Jumlah data = 40
Didapat data keberhasilan 31 dari jumlah data dikurangi data salah sehingga
didapat nilai 31.
Proscntosc =
31
40
100
= 77,5
Jadi dari hasil perhitungan diatas didapat hasil prosentase keberhasilan aplikasi
yang saya buat adalah 77,5%
C. PENJELASAN PROGRAM
Di dalam penjelasan program ini dijelaskan tentang alur pembuatan dan
kegunaan program yang dibuat beserta tampilan desain. Berikut ini tampilan-
tampilan halaman yang ada dalam program yang dibuat:
74
1. Proses Menampilkan Halaman Utama
Halaman home merupakan halaman utama yang akan pertama kali diakses
oleh pengguna. Informasi yang ditampilkan adalah pilihan menu untuk menuju
proses selanjutnya. Pada halaman utama terdiri dari 4 menu yang akan
ditampilkan sesuai dengan fasilitas yang disediakan perangkat lunak. Tampilan
halaman utama ditunjukkan pada gambar 4.1 berikut
Gambar 4.1 Form Utama
2. Proses Menampilkan Halaman Deteksi Tepi
Pada halaman deteksi tepi ini dijelaskan mengenai proses deteksi tepi yang
harus dilakukan sebelum melakukan proses pengenalan golongan darah manusia.
Adapun tampilan halamannya adalah:
Gambar 4.2 Form Image Process
75
Pada halaman proses awal terdapat 3 proses antara lain: ambil citra,
memilih operator, mencentang button negative dan deteksi tepi. Penjelasannya
sebagai berikut:
a. Ambil Citra
Pada proses ini terjadi pengubahan citra ke dalam citra digital yang dapat
dibaca dan diproses selanjutnya oleh komputer. Adapun citra hasil pengambilan
gambar dari camera dapat dilihat pada gambar 4.3 dibawah ini:
Gambar 4.3 Contoh dari button ambil citra darah pada manusia
Listing program untuk proses ambil citra:
procedure TFormUtama.ButtonAmbilCitraClick(Sender: TObject);
var
fc: string;
begin
if (OpenPictureDialog.Execute) then
begin
if (FormCitra = nil) then
Application.CreateForm(TFormCitra, FormCitra);
FormCitra.Image.Picture.LoadFromFile(
OpenPictureDialog.FileName);
FormCitra.ClientHeight :=
FormCitra.Image.Picture.Height;
FormCitra.ClientWidth :=
FormCitra.Image.Picture.Width;
FormCitra.ClientHeight :=
FormCitra.Image.Picture.Height;
case (FormCitra.Image.Picture.Bitmap.PixelFormat) of
pf1bit : fc := 'biner';
pf8bit : fc := 'keabuan';
pf24bit : fc := 'true color';
end;
StatusBar.SimpleText := OpenPictureDialog.FileName
+ ' (' + IntToStr(FormCitra.Image.Picture.Width)
76
+ 'x' + IntToStr(FormCitra.Image.Picture.Height)
+ ', ' + fc + ')';
end;
end;
Dibawah ini adalah hasil citra setelah dilakukan pemilihan operator, penegatifan
citra dan deteksi tepi.
Gambar 4.4 Citra Hasil Operator Laplacian, Negative Dan Deteksi Tepi
Listing programnya adalah sebagai berikut:
uses UnitCitra;
type
Mask3x3 = array [-1..1,-1..1] of real;
var
FormHasil: TFormCitra;
Mask: Mask3x3;
const
MaskLaplacian5: Mask3x3 =
(( 0, -1, 0),
( -1, 4, -1),
( 0, -1, 0));
MaskLaplacian91: Mask3x3 =
(( -1, -1, -1),
( -1, 8, -1),
( -1, -1, -1));
MaskLaplacian92: Mask3x3 =
(( 1, -2, 1),
( -2, 4, -2),
( 1, -2, 1));
procedure TFormUtama.Olah;
var
x, y, w, h, u, v: integer;
PC, PH: PByteArray;
Ki, Ri, Gi, Bi, Ko, Ro, Go, Bo: array of array of byte;
77
jumlah: real;
begin
if (ComboBoxOperator.Text = '') then
begin
ShowMessage('Pilih operator gradien deteksi tepi');
exit;
end
else if (ComboBoxOperator.Text = 'Laplacian 5 titik') then
Mask := MaskLaplacian5
else if (ComboBoxOperator.Text = 'Laplacian 9 titik 1') then
Mask := MaskLaplacian91
else if (ComboBoxOperator.Text = 'Laplacian 9 titik 2') then
Mask := MaskLaplacian92;
w := FormCitra.Image.Picture.Width;
h := FormCitra.Image.Picture.Height;
if (FormCitra.Image.Picture.Bitmap.PixelFormat = pf8bit)
then
begin
SetLength(Ki, w, h);
SetLength(Ko, w, h);
for y := 0 to h-1 do
begin
PC := FormCitra.Image.Picture.Bitmap.ScanLine[y];
PH := FormHasil.Image.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
begin
Ki[x, y] := PC[x];
Ko[x, y] := PH[x];
end;
end;
for x := 1 to w-2 do
for y := 1 to h-2 do
begin
jumlah := 0;
for u := -1 to 1 do
for v := -1 to 1 do
jumlah := jumlah+Mask[u,v]*Ki[x-u,y-v];
if (Abs(jumlah)<255) then
Ko[x,y] := Round(Abs(jumlah))
else
Ko[x,y] := 255;
if (CheckBoxNegatif.Checked) then
Ko[x,y] := 255-Ko[x,y];
end;
for y := 0 to h-1 do
begin
PH := FormHasil.Image.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
PH[x] := Ko[x, y];
78
end;
Ki := nil;
Ko := nil;
end;
if (FormCitra.Image.Picture.Bitmap.PixelFormat = pf24bit)
then
begin
SetLength(Ri, w, h);
SetLength(Gi, w, h);
SetLength(Bi, w, h);
SetLength(Ro, w, h);
SetLength(Go, w, h);
SetLength(Bo, w, h);
for y := 0 to h-1 do
begin
PC := FormCitra.Image.Picture.Bitmap.ScanLine[y];
PH := FormHasil.Image.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
begin
Bi[x, y] := PC[3*x];
Gi[x, y] := PC[3*x+1];
Ri[x, y] := PC[3*x+2];
Bo[x, y] := PH[3*x];
Go[x, y] := PH[3*x+1];
Ro[x, y] := PH[3*x+2];
end;
end;
for x := 1 to w-2 do
for y := 1 to h-2 do
begin
jumlah := 0;
for u := -1 to 1 do
for v := -1 to 1 do
jumlah := jumlah+Mask[u,v]*Ri[x-u,y-v];
if (Abs(jumlah)<255) then
Ro[x,y] := Round(Abs(jumlah))
else
Ro[x,y] := 255;
if (CheckBoxNegatif.Checked) then
Ro[x,y] := 255-Ro[x,y];
jumlah := 0;
for u := -1 to 1 do
for v := -1 to 1 do
jumlah := jumlah+Mask[u,v]*Gi[x-u,y-v];
if (Abs(jumlah)<255) then
Go[x,y] := Round(Abs(jumlah))
else
Go[x,y] := 255;
if (CheckBoxNegatif.Checked) then
79
Go[x,y] := 255-Go[x,y];
jumlah := 0;
for u := -1 to 1 do
for v := -1 to 1 do
jumlah := jumlah+Mask[u,v]*Bi[x-u,y-v];
if (Abs(jumlah)<255) then
Bo[x,y] := Round(Abs(jumlah))
else
Bo[x,y] := 255;
if (CheckBoxNegatif.Checked) then
Bo[x,y] := 255-Bo[x,y];
end;
for y := 0 to h-1 do
begin
PH := FormHasil.Image.Picture.Bitmap.ScanLine[y];
for x := 0 to w-1 do
begin
PH[3*x] := Bo[x, y];
PH[3*x+1] := Go[x, y];
PH[3*x+2] := Ro[x, y];
end;
end;
Ri := nil;
Gi := nil;
Bi := nil;
Ro := nil;
Go := nil;
Bo := nil;
end;
end;
procedure TFormUtama.ButtonTepiClick(Sender: TObject);
begin
if (FormCitra = nil) then
begin
ShowMessage('Ambil dulu citra yang akan diolah');
exit;
end;
if (FormHasil = nil) then
Application.CreateForm(TFormCitra, FormHasil);
FormHasil.Caption := 'Citra Hasil';
FormHasil.Image.Picture := FormCitra.Image.Picture;
FormHasil.Top := FormCitra.Top;
FormHasil.Left := FormCitra.Left+FormCitra.Width;
FormHasil.ClientHeight :=
FormHasil.Image.Picture.Height;
FormHasil.ClientWidth :=
FormHasil.Image.Picture.Width;
FormHasil.ClientHeight :=
80
FormHasil.Image.Picture.Height;
Olah;
end;
b. Process Training
Tahap Process Training terdiri dari 3 proses, yaitu file, process dan help.
1) File
Pada tahap ini terdapat 3 proses yaitu:
1. Open training
Open training adalah membuka training yang telah dijalankan sebelumnya.
2. Open picture
Open picture adalah membuka gambar yang telah dijadikan deteksi tepi
untuk dikenali golongan darahnya. Kemudian tekan tombol proses
pengenalan maka aplikasi akan menunjukkan golongan darah hasil dari
gambar yang di masukkan.
3. Exit
Tombol exit adalah untuk melakukan keluar dari aplikasi.
Program lengkap proses Open training, Open picture dan Exit adalah sebagai
berikut:
procedure TMainForm.OpenTraining1Click(Sender: TObject);
begin
CheckKnowledgeSave;
if OpenKnowledgeDialog.Execute then
begin
FKnowledgeFileName := OpenKnowledgeDialog.FileName;
Screen.Cursor := crHourglass;
BackProp.OpenKnowledge(FKnowledgeFileName);
Screen.Cursor := crDefault;
end;
end;
procedure TMainForm.FileOpenPicture(Sender: TObject);
Var
81
Hasil,Hasil1 : String;
Selesai : Boolean;
I : Integer;
begin
CheckPictureSave;
if OpenPictureDialog.Execute then
begin
FPictureFileName := OpenPictureDialog.FileName;
Screen.Cursor := crHourglass;
DCR.OpenPicture(FPictureFileName);
Screen.Cursor := crDefault;
Panel2.Caption:= FPictureFileName;
Hasil:='';
Selesai:=False;
I:= Length(Panel2.Caption)-4;
Repeat
If Panel2.Caption[i]<>'\' Then
Begin
Hasil:=Hasil+Panel2.Caption[i];
End Else
Begin
Selesai:=TRue;
ENd;
Dec(I);
Until Selesai=TRue;
Panel2.Caption:= Hasil;
Hasil1:='';
I:= Length(Hasil);
Repeat
Hasil1:=Hasil1+Hasil[i];
Dec(I);
Until I<=0;
Panel2.Caption:= Hasil1;
end;
end;
procedure TMainForm.FileExit(Sender: TObject);
begin
Close;
end;
2) Process
82
Pada tahap ini terdapat 3 proses yaitu:
1. Training
Training adalah proses pelatihan pada citra masukan yang telah dideteksi tepi,
klik tombol buka gambar training, kemudian tuliskan symbol lalu klik tombol
add training. Kemudian lakukan training dengan menekan tombol train.
Tombol retrain untuk melakukan training ulang. Tombol test untuk melakukan
testing result dari training option untuk mengetahui parameter yang ada dalam
backpropagation dan close untuk keluar dari aplikasi seperti gambar 4. 5
Gambar 4.5 Inpu DataTraining
2. Recognize
Proses terakhir yang dilakukan untuk mendapatkan hasil dari citra apakah
sudah dikenal atau belum yaitu recognize. Jalannya proses ini dapat dilihat
pada gambar 3.7 Flowchart proses pengenalan.
3. Option
Option untuk mengetahui parameter yang ada dalam backpropagation.
Listing program untuk semua proses diatas adalah sebagai berikut:
83
procedure TTrainingForm.btnAddClick(Sender: TObject);
var
AutoFitBitmap: TBitmap;
c, f, s: Integer;
IxInput: Integer;
OrgBitmap: TBitmap;
TrainingPairs: TTrainingPairs;
begin
Screen.Cursor := crHourglass;
if rbInputPattern1.Checked = True then
begin
SetLength(TrainingPairs.InputPatterns,
lbFonts.SelCount * lbSizes.SelCount,
BackProp.NInputNeuron + 1);
SetLength(TrainingPairs.TargetPattern,
BackProp.NOutputNeuron + 1);
OrgBitmap := TBitmap.Create;
OrgBitmap.Height := imgOrgSymbol.Height;
OrgBitmap.Width := imgOrgSymbol.Width;
for c := 0 to lbChars.Items.Count - 1 do
if lbChars.Selected[c] then
begin
if cbSymbol.Items.IndexOf(lbChars.Items.Strings[c]) = -
1 then
cbSymbol.Items.Add(lbChars.Items.Strings[c]);
IxInput := 0;
for f := 0 to lbFonts.Items.Count - 1 do
if lbFonts.Selected[f] then
for s := lbSizes.Items.Count - 1 downto 0 do
if lbSizes.Selected[s] then
begin
with OrgBitmap.Canvas do
begin
FillRect(Rect(0, 0, OrgBitmap.Width,
OrgBitmap.Height));
Font.Name := lbFonts.Items.Strings[f];
Font.Size :=
StrToInt(lbSizes.Items.Strings[s]);
TextOut(0, 0, lbChars.Items.Strings[c]);
end;
AutoFitBitmap := GetAutoFitBitmap(OrgBitmap,
BackProp.InputPatternWidth,
BackProp.InputPatternHeight);
imgNormalSymbol.Canvas.Draw(0, 0, AutoFitBitmap);
TBackProp.BitmapToLayer(AutoFitBitmap,
TrainingPairs.InputPatterns[IxInput]);
AutoFitBitmap.Free;
84
if IxInput = 0 then
begin
AutoFitBitmap :=
GetAutoFitBitmap(OrgBitmap,
BackProp.TargetPatternWidth,
BackProp.TargetPatternHeight);
TBackProp.BitmapToLayer(AutoFitBitmap,
TrainingPairs.TargetPattern);
AutoFitBitmap.Free;
end;
IxInput := IxInput + 1;
TrainingPairs.TargetPatternClass :=
lbChars.Items.Strings[c];
end;
BackProp.AddTrainingPairs(TrainingPairs);
end;
OrgBitmap.Free;
end
else if rbInputPattern2.Checked = True then
begin
if Trim(cbSymbol.Text) = '' then
begin
MessageDlg('Pilih',
mtWarning, [mbOk], 0);
cbSymbol.SetFocus;
end
else
begin
if cbSymbol.Items.IndexOf(cbSymbol.Text) = -1 then
cbSymbol.Items.Add(cbSymbol.Text);
SetLength(TrainingPairs.InputPatterns, 1,
BackProp.NInputNeuron + 1);
SetLength(TrainingPairs.TargetPattern,
BackProp.NOutputNeuron + 1);
AutoFitBitmap :=
GetAutoFitBitmap(imgOrgSymbol.Picture.Bitmap,
BackProp.InputPatternWidth,
BackProp.InputPatternHeight);
imgNormalSymbol.Canvas.Draw(0, 0, AutoFitBitmap);
TBackProp.BitmapToLayer(AutoFitBitmap,
TrainingPairs.InputPatterns[0]);
AutoFitBitmap.Free;
AutoFitBitmap :=
GetAutoFitBitmap(imgOrgSymbol.Picture.Bitmap,
BackProp.TargetPatternWidth,
BackProp.TargetPatternHeight);
TBackProp.BitmapToLayer(AutoFitBitmap,
TrainingPairs.TargetPattern);
AutoFitBitmap.Free;
85
TrainingPairs.TargetPatternClass := cbSymbol.Text;
BackProp.AddTrainingPairs(TrainingPairs);
end;
end;
UpdateForm;
UpdateTrainingInfo;
Screen.Cursor := crDefault;
end;
procedure TTrainingForm.btnClearClick(Sender: TObject);
begin
imgOrgSymbol.Canvas.FillRect(Rect(0, 0, imgOrgSymbol.Width,
imgOrgSymbol.Height));
imgNormalSymbol.Canvas.FillRect(Rect(0,
0,imgNormalSymbol.Width,
imgNormalSymbol.Height));
end;
procedure TTrainingForm.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TTrainingForm.btnOptionsClick(Sender: TObject);
begin
OptionsForm.ShowModal;
UpdateForm;
end;
procedure TTrainingForm.btnRetrainClick(Sender: TObject);
begin
UpdateForm(True);
BackProp.Retrain;
UpdateForm(False);
end;
procedure TTrainingForm.btnStopClick(Sender: TObject);
begin
BackProp.StopTraining := True;
end;
procedure TTrainingForm.btnTestClick(Sender: TObject);
var
Bitmap: TBitmap;
i : Integer;
Symbols, Matchs, Unmatchs: TStringList;
begin
Bitmap := GetAutoFitBitmap(imgOrgSymbol.Picture.Bitmap,
86
BackProp.InputPatternWidth,
BackProp.InputPatternHeight);
imgNormalSymbol.Canvas.Draw(0, 0, Bitmap);
TBackProp.BitmapToLayer(Bitmap, BackProp.InputLayer);
Bitmap.Free;
BackProp.Apply;
Symbols := TStringList.Create;
Matchs := TStringList.Create;
Unmatchs := TStringList.Create;
BackProp.GetResult(Symbols, Matchs, Unmatchs);
for i := sgResult.Cols[0].Count - 1 downto 1 do
sgResult.Rows[i].Clear;
sgResult.RowCount := Symbols.Count + 1;
sgResult.Cols[0].AddStrings(Symbols);
sgResult.Cols[1].AddStrings(Matchs);
sgResult.Cols[2].AddStrings(Unmatchs);
Unmatchs.Free;
Matchs.Free;
Symbols.Free;
end;
procedure TTrainingForm.btnTrainClick(Sender: TObject);
begin
UpdateForm(True);
BackProp.Train;
UpdateForm(False);
end;
procedure TTrainingForm.FormCreate(Sender: TObject);
var
i: Integer;
begin
OptionsForm := TOptionsForm.Create(TrainingForm);
lbFonts.Items := Screen.Fonts;
for i := 33 to 126 do
lbChars.Items.Add(Chr(i));
for i := 6 to 50 do lbSizes.Items.Add(IntToStr(i));
UpdateTrainingInfo;
imgOrgSymbol.Canvas.Pen.Width := DEFAULT_DRAWING_WIDTH;
btnClearClick(Sender);
BackProp.OnTraining := BackPropTraining;
BackProp.OnTrainingFinish := BackPropTrainingFinish;
sgResult.Rows[0].Add('Symbol');
sgResult.Rows[0].Add('Match');
87
sgResult.Rows[0].Add('Unmatch');
end;
procedure TTrainingForm.FormShow(Sender: TObject);
var
i: Integer;
begin
lbFonts.Selected[0] := True;
lbChars.Selected[0] := True;
lbSizes.Selected[14] := True;
lbCharsClick(Sender);
cbSymbol.Clear;
for i := 0 to BackProp.NTrainingPair - 1 do
cbSymbol.Items.Add(BackProp.KnownSymbol[i]);
UpdateForm;
UpdateTrainingInfo;
rbInputPattern2.Checked:=tRUE;
btnClearClick(Sender);
end;
procedure TTrainingForm.imgOrgSymbolMouseDown(
Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) then
begin
FDrawing := True;
rbInputPattern2.Checked := True;
imgOrgSymbol.Canvas.MoveTo(X, Y);
imgOrgSymbolMouseMove(Sender, Shift, X, Y);
end;
end;
procedure TTrainingForm.imgOrgSymbolMouseMove(
Sender: TObject; Shift: TShiftState; X, Y:
Integer);
var
dPos: Integer;
begin
if FDrawing then
with imgOrgSymbol do
if sbPencil.Down then
Canvas.LineTo(X, Y)
else if sbEraser.Down then
begin
dPos := (Canvas.Pen.Width div 2) + (Canvas.Pen.Width
mod 2);
88
Canvas.FillRect(Rect(X - dPos, Y - dPos, X + dPos, Y +
dPos));
end;
end;
procedure TTrainingForm.imgOrgSymbolMouseUp(
Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDrawing := False;
end;
procedure TTrainingForm.lbCharsClick(Sender: TObject);
var
Bitmap: TBitmap;
begin
btnClearClick(Sender);
with imgOrgSymbol.Canvas do
begin
Font.Name := lbFonts.Items.Strings[lbFonts.ItemIndex];
Font.Size :=
StrToInt(lbSizes.Items.Strings[lbSizes.ItemIndex]);
TextOut(0, 0, lbChars.Items.Strings[lbChars.ItemIndex]);
end;
rbInputPattern1.Checked := True;
Bitmap := GetAutoFitBitmap(imgOrgSymbol.Picture.Bitmap,
BackProp.InputPatternWidth,
BackProp.InputPatternHeight);
imgNormalSymbol.Canvas.Draw(0, 0, Bitmap);
Bitmap.Free;
end;
procedure TTrainingForm.lbFontsClick(Sender: TObject);
begin
lbCharsClick(Sender);
end;
procedure TTrainingForm.mmiCopyClick(Sender: TObject);
begin
Clipboard.Assign(imgOrgSymbol.Picture);
end;
procedure TTrainingForm.mmiCutClick(Sender: TObject);
begin
btnClearClick(Sender);
mmiCopyClick(Sender);
end;
procedure TTrainingForm.mmiPasteClick(Sender: TObject);
89
var
Bitmap: TBitmap;
begin
btnClearClick(Sender);
if Clipboard.HasFormat(CF_BITMAP) then
begin
Bitmap := TBitmap.Create;
try
Bitmap.Assign(Clipboard);
imgOrgSymbol.Canvas.Draw(0, 0, Bitmap);
finally
Bitmap.Free;
end;
end;
rbInputPattern2.Checked := True;
end;
procedure TTrainingForm.sgResultDrawCell(Sender: TObject; ACol,
ARow: Integer;
Rect: TRect; State:
TGridDrawState);
const
ALIGNFLAGS: array [TAlignment] of Integer =
(DT_LEFT or DT_VCENTER or DT_WORDBREAK or DT_EXPANDTABS or
DT_NOPREFIX,
DT_RIGHT or DT_VCENTER or DT_WORDBREAK or DT_EXPANDTABS or
DT_NOPREFIX,
DT_CENTER or DT_VCENTER or DT_WORDBREAK or DT_EXPANDTABS
or DT_NOPREFIX);
var
Alignment: TAlignment;
Text: string;
begin
inherited;
Text := sgResult.Cells[ACol, ARow];
if (ARow < sgResult.RowCount) and (ACol < sgResult.ColCount)
then
begin
if (ARow = 0) then
begin
sgResult.Canvas.Font.Style := [fsBold];
Alignment := taCenter;
end
else if (ACol in [0..2]) then
Alignment := taCenter
else
Alignment := taRightJustify;
sgResult.Canvas.FillRect(Rect);
90
DrawText(sgResult.Canvas.Handle,
PChar(Text), Length(Text), Rect,
ALIGNFLAGS[Alignment]);
end;
end;
procedure TTrainingForm.UpdateForm(TrainingInProgress: Boolean
= False);
begin
if TrainingInProgress then
Screen.Cursor := crAppStart
else
Screen.Cursor := crDefault;
btnStop.Enabled := TrainingInProgress;
btnAdd.Enabled := not TrainingInProgress;
btnTrain.Enabled := (BackProp.NTrainingPair > 0) and not
TrainingInProgress;
btnRetrain.Enabled := (BackProp.NTrainingPair > 0) and not
TrainingInProgress;
btnTest.Enabled := (BackProp.NTrainingPair > 0) and not
TrainingInProgress;
btnOptions.Enabled := not TrainingInProgress;
btnClose.Enabled := not TrainingInProgress;
if not (BackProp.NTrainingPair > 0) and (cbSymbol.Items.Count
> 0) then
cbSymbol.Items.Clear;
end;
procedure TTrainingForm.UpdateTrainingInfo;
begin
with BackProp do
begin
lblCurrentEpoch.Caption := IntToStr(NTrainingEpoch);
if NTrainingNeuron > 0 then
begin
lblTrainingError.Caption := FloatToStr(TrainingError /
NTrainingNeuron);
lblPixelError.Caption :=
IntToStr(NNeuronError) + ' / ' +
IntToStr(NTrainingNeuron) + ' ' +
'(' + FloatToStrF((NNeuronError / NTrainingNeuron) *
100,
ffGeneral, 4, 0) + '%)';
end
else
begin
lblTrainingError.Caption := '0';
lblPixelError.Caption := '0';
end;
91
end;
end;
procedure TTrainingForm.Button1Click(Sender: TObject);
begin
If Ole.Execute then
begin
BG:=TJpegImage.Create;
try
imgOrgSymbol.Picture.LoadFromFile(Ole.FileName);
BG.Assign(imgOrgSymbol.picture.Graphic);
except
beep;
imgOrgSymbol.Picture :=Nil;
ShowMessage('Format Grafik Tidak Support !');
end;
BG.Free ;
end;
end;
3. Help
Help berisi tetang pembuat aplikasi dan penulis naskah skripsi.
D. PEMBAHASAN DATA HASIL UJI COBA
Hasil Uji Coba
Setelah dilakukan uji coba dari data yang telah diproses maka akan didapat
hasil golongan darah manusia yaitu golongan A, B, AB, O. Aplikasinya adalah
sebagai berikut:
92
Gambar 4.6 aplikasi pengenalan pola golongan darah pada manusia
Untuk mencetak hasil dari golongan darah maka ditekan tombol print dan
akan keluar halaman sebagai berikut:
Gambar 4.7 hasil cetak setelah dilakukan pengenalan
Contoh diatas adalah salah satu dari 40 sample yang saya ambil, dan 39
diantaranya dalah senagai berikut:
93
Table 4. data uji coba
No Nama Golongan
Darah
Gambar Darah Keterangan
1 Nita B
Benar
2 Nana B
Salah
3 Nina O
Benar
4 Nala B
Salah
5 Mamik B
Salah
6 Misel B
Salah
7 Melka O
Benar
8 Yuyun
A
Salah
9 Hendr
a
O
Benar
10 Dias O
Benar
94
11 Kosim A
Salah
12 Sopin A
Benar
13 Ida A
Benar
14 Aziz A
Salah
15 Hamda
n
A
Benar
16 Huri B
Benar
17 Rian O
Benar
18 Rini O
Benar
19 Fitri A
Benar
20 Wulan AB Benar
21 Nurma O Benar
22 Niya O Benar
95
23 Cemyk O Benar
24 Olis A
Benar
25 Nopi O
Salah
26 Surur B Benar
27 Saipul O Benar
28 Diah B Benar
29 Rahma A
Benar
30 Jamil B
Benar
31 Munir B Benar
32 Sina O
Benar
33 Latif O
Benar
34 Tarjo O
Benar
96
35 Hakim O
Benar
36 Aril AB Benar
37 Frendi AB Benar
38 Zudi A
Salah
39 Topek B
Benar
40 Jabrik B
Benar
97
BAB V
PENUTUP
5.1 Kesimpulan
Berdasarkan aplikasi yang telah di buat beserta uji coba yang telah
dilakukan maka dapat ditarik kesimpulansebagai berikut:
1. Aplikasi ini dapat digunakan untuk menyederhanakan gambar dengan
mengunakan deteksi tepi dengan operator laplacian
2. Golongan darah manusia dapat dikenali sebagai golongan darah A, B,
AB, dan O dengan jaringan syaraf tiruan menggunakan metode
backpropagasi.
3. Keberhasilan aplikasi sangat tergantung pada hasil citra yang diambil
4. Hasil prosentase keberhasilan aplikasi ini adalah 77,5%
5.2 Saran
Dalam pengembangan sistem aplikasi pengenalan pola golongan darah
pada manusia masih banyak bagian yang perlu dilakukan penelitian lebih lanjut
untuk mendapatkan hasil yang lebih maksimal diantaranya adalah:
1. Penggunaan deteksi tepi yang lain seperti operator Prewitt, Sobel, Canny atau
yang lainnya, dalam mengolah citra.
2. Penggunaan jaringan syaraf backpropagation dengan jaringan syraraf tiruan
menggunakan metode yang lain.
3. Untuk pengembangan aplikasi selanjutnya diharapkan lebih baik dan hasil-hasil
dari pengenalan pola tidak terdapat kesalahan karena dalam hasil uji coba dari
40 sampel didapat prosentase keberhasilan 77,5%.
98
DAFTAR PUSTAKA
Abdullah Amin. 2004. Integrasi Sains-Islam: Mempertemukan Epistemologi
Islam dan Sains. Yogyakarta: Pilar Religia
Ahmad Balza & Firdausy Kartika. 2005. Teknik Pengolahan Citra menggunakan
Delphi. Yogyakarta: Ardi Publishing
Ahmad Usman. 2005. Pengolahan Citra Digital dan Teknik Pemrogramannya.
Yogyakarta: GRAHA ILMU
Al-Jazairi, Syaikh, Abu, Bakar, Jabir. Tafsir Al-Quran Al_Aisar, 2007, Darus
Sunnah Press, Jatinegara-Jakarta
Al-Rashaideh Hasan. 2006. Preprocessing phase for Arabic Word Handwritten
Recognition. Russian Federation: Information Transmissions in Computer
Networks
Ash-Shiddieqy, Hasbi, Muhammad. Tafsir al-Quranul Majid An-Nuur jilid 5,
2003, Pusaka Rizki Puta, Semarang
Beigi, Hamayoon SMM. 1998. An Overview of Handwriting Recognition. TJ
Watson Research Center International Bussiness Machines
Fahmy, Maged Mohamed Mahmoud dan Somaya Al Ali. 2000. Automatic
Recognize Of Handwritten Arabic Characters Using Their Geometrical
Features. Diakses dari http://www.ici.ro/ici/revista/sic2001_2/art1.htm;
Internet; diakses pada tanggal 11 Maret 2008.
Hamdani, Deni. 2008. Memahami Tatabahasa Al-Quran. Diakses dari
http://www.denyhamdani.de.vu; Internet; diakses pada tanggal 5 Oktober
2008.
Husni. 2004. Pemrograman Database dengan Delphi. Yogyakarta: GRAHA
ILMU.
Kusumadewi, Sri. Membangun jaringan saraf tiruan menngunakan matlab dan
exel link, 2004, Graha Ilmu, Yogyakarta
Munir, Rinaldi. 2004. Pengolahan Citra Digital dengan Pendekatan Algoritmik.
Bandung: INFORMATIKA
Muis, Saludin. Teknik Jaringan Saraf Tiruan, 2006, Graha Ilmu, Yogyakarta.
99
NOMI, Toshitaka, 2007, Thouch My Heart Mengenal Kepribadian Anak
Menurut Golongan Darah, Andi Publiser, Yogyakarta
Pranata Antony. 2003. Pemrograman Borland Delphi 6 Edisi 4, Yogyakarta: Andi
R.C. Gonzalez, R.E. Woods. 1992. Digital Image Processing. USA: Addison-
Wesley Publishing Company.
Vori, Vuokka. 1998. Adaptive Online Recognition of Handwriting
100