BAB III PERENCANAAN DAN PERANCANGAN PERANGKAT LUNAK Pada bab ini akan membahas mengenai perancangan dan pembuatan software. Dalam pembuatan Proyak Akhir ini menggunkan bahasa pemrograman Visual Basic 6.0, dan database menggunakna MySql yang dijalankan pada sistem operasi Windows. 3.1 Perancangan Form Desain ini dimaksudkan untuk membuat sebuah cara komunikasi ke user agar bisa dipahami dan dilihat hasilnya. Desain form yang akan digunakan pada aplikasi ini terdiri adri 2 form utama yaitu Form Pengambilan Sidik Jari (Tahap Pembelajaran) dan Form Verifikasi (Tahap Pengenalan) seperti berikut : a) Form Pengambilan Sidik Jari 1
2 3
5
4
6
7
8
11
10
9
14
15
12 16
13 17
18
19
20
21
Gambar 3.1 Desain Form Pengambilan Sidik Jari
27
Keterangan : 1. Picture box citra sidik jari Online dan Offline 2. Counter untuk pengambilan sidik jari 3. Picture box citra sidik jari hasil Tresholding 4. Picture box citra sidik jari hasil Thinning 5. Picture box citra sidik jari hasil Minusi 6. Tanggal, bulan dan tahun pengambilan sidik jari 7. Button untuk mengambil sidik jari secara Online menggunnakan alat Fingerprint 8. Button proses Tresholding untuk memperjelas sidik jari 9. Button proses Thinning untuk menipiskan sidik jari 10. Button proses Minusi yaitu berfungsi mencari titik minusi 11. Button untuk load citra sidik jari secara Offline 12. Button proses Jarak Minusi yaitu berfungsi mencari jarak minusi 13. Button Backpropagation untuk memulai proses backpropagation 14. Button Verifikasi untuk masuk dalam form verifikasi 15. Button Ulangi untuk mengulang lagi pengambilan sidk jari 16. Button Keluar untuk keluar dari form pengambilan sidik jari 17. Progress Bar pada saat proses backpropagation berjalan 18. Waktu mulai pengambilan sidik jari 19. Waktu selesai pengambilan sidik jari 20. Total waktu pengambilan sidik jari 21. Hasil jumlah percabangan dari proses Minusi
28
b) Form Verifikasi
1 2
4
3
8
5
9
10
6 7
11
14
13
12
15 20
16
17
18
19
Gambar 3.2 Desain Form Verifikasi
Keterangan : 1. Tanggal, bulan dan tahun pengambilan sidik jari 2. Picture box citra sidik jari Online dan Offline 3. Picture box citra sidik jari hasil Tresholding 4. Picture box citra sidik jari hasil Thinning 5. Picture box citra sidik jari hasil Minusi 6. Button untuk mengambil sidik jari secara Online menggunnakan alat Fingerprint 7. Button untuk load citra sidik jari secara Offline 8. Button proses Tresholding untuk memperjelas sidik jari 9. Button proses Thinning untuk menipiskan sidik jari 10. Button proses Minusi yaitu berfungsi mencari titik minusi 11. Button proses Jarak Minusi yaitu berfungsi mencari jarak minusi
29
12. Button Normalisasi untuk menormalisasi data input backpropagation 13. Button Backpropagation untuk memulai proses backpropagation 14. Button Matching untuk mencocokkan sidik jari 15. Button Keluar untuk keluar dari form verifikasi 16. Waktu mulai pengambilan sidik jari 17. Hasil jumlah percabangan dari proses Minusi 18. Waktu selesai pengambilan sidik jari 19. Hasil nilai output backpropagation 20. Total waktu proses verifikasi 3.2. BLOK DIAGRAM Pada Proyek Akhir ini untuk mengenali suatu sidik jari dibagi menjadi dua (2) system yaitu: a. Sistem Pembelajaran b. Dan Sistem Pengenalan 3.2.1. Sistem Pembelajaran Pada tahapan ini user terlebih dahulu registrasi untuk mendapatkan sidik jari. Setelah user mendaftar, sidik jari diambil menggunakkan fingerprint, image / citra sidik jari akan di Enhancement (perbaikan citra) dengan cara di tresholding, thinning untuk penipisan alur sidik jari. Hasil dari proses thinning ini akan diekstraksi dengan ekstraksi minusi, setelah mendapatkan titik minusi, maka hitung jarak antar titik minusi tersebut. Data hasil jarak antar titik tersebut nantinya akan dijadikan data input / yang akan dihitung dalam proses selanjutnya yaitu Backpropagation. Hasil dari Backpropagation berupa sebuah nilai dari output layer yang mewakili ID dari masing-masing sidik jari (akan disebut ciri I ) ini nantinya akan disimpan ke dalam database (MySql), sebagai matrik / sidik jari referensi. Untuk lebih jelasnya bisa dilihat pada gambar 3.1 yaitu blok diagram pada sistem pembelajaran.
30
Images Enhancement Tresholding sampel.bmp
Thinning
Simpan: Identitas, Jarak minusi, Backpropagation (nilai bobot, nilai output),
Ekstraksi
Minusi
Jarak Minusi Backpropagation (Ciri I)
Normalisasi
Gambar 3.3 Blok Diagram Sistem Pembelajaran
START
Biodata
Simpan biodata Ke dalam database
Sidik jari
1
2
Gambar 3.4a Flowchart Pada Sistem Pembelajaran
31
1
2
Image Enhancement
Ekstraksi Fitur (Minutiae) Ya Ambil sidik jari lagi
Tidak Backpropagation
Simpan ke dalam database : 1. Data sidik jari (jarak minusi) 2. Backpropagation (nilai bobot, nilai output)
END Gambar 3.4b Flowchart Pada Sistem Pembelajaran
32
User mendaftar / mengisi form pendaftaran, biodata disimpan ke dalam database, selanjutnya sidik jari user diambil. sql = "select idPegawai from daftar order by idPegawai desc" Set rs1 = Conn.Execute(sql, , adCmdText) If rs1.EOF = False Then id = rs1!idPegawai ida = id + 1 Else ida = 1 End If sql1 = "insert into daftar(idPegawai, nama, nip, jabatan) values('" & ida & "','" & txtnama.Text & "','" & txtnip.Text & "','" & cbjabatan.Text & "')" Set Rs2 = Conn.Execute(sql1, , adCmdText) frmambilSidikJari.txtidPegawai.Text = ida
Gambar 3.5 Listing Program Simpan Biodata.
Dalam pengambilan sidik jari ini dapat dilakukan dengan dua (2) cara yaitu secara offline maupun online (menggunakan fingerprint). Untuk pre-processingnya adalah dilakukan perbaikan citra / images (Image Enhancement) sidik jari. Setelah dilakukan perbaikan maka sidik jari tersebut akan diekstraksi dengan menggunakan ekstraksi Minutiae. Setiap titik percabangan akan dihitung jaraknya. Hasil perhitungan (jarak) ini digunakan sebagai data / input untuk proses Backpropagation. Jarak antar titik minusi / percabangan dan hasil nilai bobot serta output Backpropagation disimpan ke dalam database.
33
3.2.2. Sistem Pengenalan Pada tahapan ini langkah – langkahnya hampir sama seperti pada sistem pembelajaran tetapi yang membedakan adalah user tidak lagi perlu mendaftar. Images Enhancement Tresholding sampel.bmp
Thinning
Ekstraksi
Minusi Ciri I (dalam database)
Jarak Minusi
Ecludean Distance
Backpropagation (Ciri II)
Gambar 3.6 Blok Diagram Sistem Pengenalan.
34
Normalisasi
START
Sidik jari
Image Enhancement
Ekstraksi Fitur (Minutiae)
Backpropagation
Ecludean Distance
ED = 0 atau error < 10%
Tidak Ya MsgBox Tidak Cocok
Biodata
Ya
Tidak Ulangi
END
Gambar 3.7 Flowchart Pada Sistem Pengenalan
35
Sidik jari diambil menggunakkan fingerprint, image / citra sidik jari akan di Enhancement (perbaikan citra) dengan cara di tresholding, thinning untuk penipisan alur sidik jari. Hasil dari proses thinning ini akan diekstraksi dengan ekstraksi Minutiae, setelah mendapatkan titik minusi, maka hitung jarak antar titik minusi tersebut. Data hasil jarak antar titik tersebut nantinya akan dijadikan data input / yang akan dihitung dalam proses selanjutnya yaitu Backpropagation. Hasil dari Backpropagation berupa suatu nilai output (akan disebut ciri II ) ini nantinya akan dibandingkan dengan ciri I (yang ada dalam database) menggunakan metode Ecludean Distance. Jika hasil dari Ecludean sama dengan nol (0) atau error kurang dari 10 % maka sidik jari dianggap cocok. Listing program awal (image enhancement dan ekstraksi) sama seperti pada sistem pembelajaran. Sedangkan listing program untuk menampilkan biodata jika error < 10% atau selisih = 0 adalah sql2 = "select * from jst, daftar,absensi where jst.ecludean = 0 and jst.idPegawai=daftar.idPegawai and absensi.idpegawai=daftar.idpegawai" Set Rs3 = Conn.Execute(sql2, , adCmdText) If Rs3.EOF = False And If Rs3.BOF = False Then frmcocok.txtnama.Text = Rs3!Nama frmcocok.txtnip.Text = Rs3!nip frmcocok.lblid.Caption = Rs3!idPegawai frmcocok.lblgaji.Caption = Rs3!totalGaji ck = 1 Else sql2 = "select * from jst, daftar,absensi where jst.ecludean < '" & presjst & "' and jst.idPegawai=daftar.idPegawai and absensi.idpegawai=daftar.idpegawai" Set Rs3 = Conn.Execute(sql2, , adCmdText) If Rs3.EOF = False And If Rs3.BOF = False Then frmcocok.txtnama.Text = Rs3!Nama frmcocok.txtnip.Text = Rs3!nip frmcocok.lblid.Caption = Rs3!idPegawai frmcocok.lblgaji.Caption = Rs3!totalGaji frmcocok.Visible = True MsgBox "ECLUDEAN < 10 % ID=" & Rs3!idSidikJari & " " Else ck = 2 MsgBox "Sidik Jari anda Tidak Dikenali! " End If End If
Gambar 3.8 Listing Program Untuk Menampilkan Biodata
36
3.3. IMAGES ENHANCEMENT Image Enhancement ini merupakan proses untuk memperbaiki image / citra sidik jari pada tahap ini dilakukan dua (2) tahap, yaitu: a. Tresholding. b. Thinning. 3.3.1. Tresholding Image / citra sidik jari yang telah diambil, selanjutnya mengalami proses threshold untuk memperjelas alur sidik jari. Proses ini sangat berguna jika image yang didapat, terdapat warna pixel yang tidak jelas (blok hitam). Pada tahap ini terlebih dahulu mencari filter rata-rata / mean dari image sidik jari, pada program ini mean yang merupakan hasil dari jumlah pixel dibagi dengan hasil perkalian scale width dengan scale height dan dengan 1.38 untuk meminimalkan /mengurangi warna hitam (hitam yang mengeblok) jika pengambilan secara offine. Nilai pixel baru / hasil treshold didapat dari hasil pixel lebih dari mean maka image / picTresholding dirubah RGB nya menjadi 255, 255, 255 sebaliknya jika kurang dari mean maka diubah menjadi 0,0,0.
37
START
x(lebar), y(tinggi)
Mean
Tidak Nilai RGB > mean
Ya
Nilai RGB = (0,0,0)
Nilai RGB = (255,255,255)
END
Gambar 3.9 Flowchart Tresholding
3.3.2. Thinning Algoritma thinning yang digunakan pada proyek Akhir ini adalah Zhang – Suen. Algoritma ini adalah salah satu algoritma thinning yang cukup populer dan telah digunakan sebagai suatu basis perbandingan untuk thinning. Algoritma ini cepat dan mudah di implementasikan. Setiap iterasi dari metode ini terdiri dari dua sub-iterasi yang berurutan yang dilakukan terhadap contour points dari wilayah citra. Contour point adalah setiap pixel dengan nilai 1 dan memiliki setidaknya satu 8-neighbor yang memiliki nilai 0.
38
Gambar 3.10a Listing Program Thinning
Dengan informasi ini, langkah pertama adalah menandai contour point p untuk dihapus jika semua kondisi ini dipenuhi: (a) 2 ≤ N(p1) ≤ 6; (b) S(p1) = 1; (c) p2 . p4 . p6 = 0; (d) p4 . p6 . p8 = 0; dimana N(p1) adalah jumlah tetangga dari p1 yang tidak 0; yaitu N(p1) = p2 + p3 + ... + p8 + p9
39
p9
p2
p3
p8
p1
p4
p7
p6
p5
dan S(p1) adalah jumlah dari transisi 0-1 pada urutan p2, p3, ..., p8, p9. Dan pada langkah kedua, kondisi (a) dan (b) sama dengan langkah pertama, sedangkan kondisi (c) dan (d) diubah menjadi: (c‟) p2 . p4 . p8 = 0; (d‟) p2 . p6 . p8 = 0;
Gambar 3.10b Listing Program Thinning
40
Langkah pertama dilakukan terhadap semua border pixel di citra. Jika salah satu dari keempat kondisi di atas tidak dipenuhi atau dilanggar maka nilai piksel yang bersangkutan tidak diubah. Sebaliknya jika semua kondisi tersebut dipenuhi maka piksel tersebut ditandai untuk penghapusan. Piksel yang telah ditandai tidak akan dihapus sebelum semua border points selesai diproses. Hal ini berguna untuk mencegah perubahan struktur data. Setelah langkah 1 selesai dilakukan untuk semua border points maka dilakukan penghapusan untuk titik yang telah ditandai (diubah menjadi 0). Setelah itu dilakukan langkah 2 pada data hasil dari langkah 1 dengan cara yang sama dengan langkah 1 sehingga, dalam satu kali iterasi urutan algoritmanya terdiri dari: (1) Menjalankan langkah 1 untuk menandai border points yang akan dihapus, (2) hapus titik-titik yang ditandai dengan menggantinya menjadi angka 0, (3) menjalankan langkah 2 pada sisa border points yang ada pada langkah 1 yang belum dihapus lalu yang sesuai dengan semua kondisi yang seharusnya dipenuhi pada langkah 2 kemudian ditandai untuk dihapus, (4) hapus titik-titik yang ditandai dengan menggantinya menjadi angka 0. Prosedur ini dilakukan secara iteratif sampai tidak ada lagi titik yang dapat dihapus, pada saat algoritma ini selesai maka akan dihasilkan skeleton dari citra awal. 3.4. EKSTRAKSI 3.4.1. Ekstraksi Minutiae Minusi dicari dengan mendeteksi adanya percabangan saja. Cabang hitam pada suatu citra biner merupakan ujung hitam pada citra biner inversnya. Thinning dilakukan pada object hitam dari citra biner, sehingga hasil penulangan suau citra akan berbeda dengan hasil penulangan citra inversnya. Selain itu proses tersebut dapat mengatasi kerusakan pada citra yang mengakibatkan hilangnya minusi. Hasil penulangan adalah garis dengan ketebalan satu pixel.. Pada citra thinning adanya percabangan dideteksi dengan cara menelusuri setiap pixel hitam pada citra yang delapan titik tetangganya sesuai salah satu dari dua belas (12) matriks 3 x 3 pixel
41
yang merupakan konfigurasi dari matriks percabangan. Minusi yang diperoleh dari penulangan citra biner awal merupakan alur cabang (ridge bifurcation), sedngkan minusi yang diperoleh dari penulangan citra biner hasil inversnya merupakan alur berhenti (ridge ending). 3.4.2. Ekstraksi Daerah Minutiae / Jarak Pada proses ekstraksi minusi semua minusi dideteksi lalu minusi – minusi tersebut kemudian ditandai dengan diberi titik pada tiap minusi. Sehingga hasil dari proses ekstraksi minusi adalah beberapa titik yang menandai adanya minusi baik jalur percabangan (ridge bifurcation) maupun alur perhentian (ridge ending). Kemudian tiap – tiap minusi diekstraksi untuk mendeteksi tetanganya. Dengan memposisikan salah satu minusi (yang diekstraksi) berada di tengah, sedangkan yang disekitarnya merupakan minusi – minusi tetangga. Jarak minusi tetangga nantinya akan bervariasi ada yang dekat dan ada yang jauh. Data awal / jarak ini dijadikan sebagai inputan / sumber data yang akan diolah mengunakan Backpropagation. Langkah awal sebelum mencari Backpropagation.
Gambar 3.11 Listing Program Jarak
3.5. NORMALISASI Sebelum melakukan proses backpropagation maka akan dilakukan normalisasi terhadap data input untuk backpropagation tersebut. Untuk data input yang akan di normalisasi adalah hasil data jarak dari proses minusi. Normalisasi ini bertujuan agar didapatkan nilai antara 0 sampai 1. Alasan pertama adalah data menjadi lebih kecil karena sudah nol koma dan alasan kedua adalah dengan data yang kecil pengolahan tidak memerlukan memori yang besar sehingga akan menambah kecepatan proses pembelajaran.
42
'--------------------JARAK NORMALISASI-----------------For fl = 1 To 60 'loop sebanyak 60 (kolom) For i = 1 To cabang - 2 For j = i + 1 To cabang - 1 If data_urut(j) <= data_urut(i) Then temp = data_urut(i) data_urut(i) = data_urut(j) data_urut(j) = temp End If Next j Next i maks_new = data_urut(cabang - 1) Next fl For j = 1 To cabang - 1 'looping sebanyak cabang jarak(j) = Round((jarak(j) / maks_new), 10) sql8 = "update normalisasi set p" & j & "='" & jarak(j) & "' where idSidikJari ='" & ida & "'" Set Rs9 = Conn.Execute(sql8, , adCmdText) f = j cx = "" & f & " " & jarak(j) & "" frmkovarian.listkovarian.AddItem cx ditampilkan ke dalam list Next j
'jarak
Gambar 3.12 Listing Program Normalisasi Jarak
3.6. BACKPROPAGATION Jaringan syaraf tiruan digunakan untuk mengenali sidik jari yang menghasilkan suatu nilai sebagai ciri yang nantinya dianggap sebagai ID seseorang. Teknik yang digunakan adalah metode propagasi balik dengan arsitektur jaringan lapisan input sebanyak 1 layer yang terdiri dari 60 unit neuron, lapisan tersembunyi sebanyak 1 layer yang terdiri dari 7 neuron serta lapisan output sebanyak 1 layer yang terdiri dari 1 neuron.
43
Gambar 3.13 Arsitektur Jaringan Syaraf Tiruan
Algoritma Pelatihan Propagasi Balik terdiri dari dua proses, feed forward dan backpropagation dari galatnya. Untuk jelasnya dapat dijelaskan rinciannya sebagai berikut : 1. 2. 3.
Pemberian inisialisasi penimbang (diberi nilai kecil secara acak) Ulangi langkah 3 hingga 10 sampai kondisi akhir iterasi dipenuhi Untuk masing-masing pasangan data pelatihan (training data) lakukan langkah 4 hingga 9
Propagasi maju (Feedforward) 4. Masing-masing unit masukan (Xi , i = 1,....n) menerima sinyal masukan Xi dan sinyal tersebut disebarkan ke unitunit bagian berikutnya (unit-unit lapisan tersembunyi) 5. Masing-masing unit dilapisan tersembunyi dikalikan dengan faktor penimbang dan dijumlahkan serta ditambah dengan biasnya: n
Z _ in j
Voj
X iVij i 1
Kemudian menghitung sesuai dengan fungsi aktifasi yang digunakan:
Zj
f (Z _ inj )
bila yang digunakan adalah fungsi sigmoid maka bentuk fungsi tersebut adalah:
44
Zj
6.
1 1
exp
(
z _ in j )
Kemudian mengirim sinyal tersebut ke semua unit keluaran (unit keluaran ). Masing-masing unit keluaran (yk., k=l,2,3...m) dikalikan dengan faktor penimbang dan dijumlahkan: p
Y _ ink
Wok
ZW jk j 1
Menghitung kembali sesuai dengan fungsi aktifasi
yk
f ( y _ ink )
BackPropagasi dan Galatnya 7. Masing-masing unit keluaran (Yk, k=l,...,m) menerima pola target sesuai dengan pola masukan saat pelatihan/training dan dihitung galatnya: k
(t k yk ) f ' ( y _ ink )
karena f ‟(y_ink)= yk menggunakan fungsi sigmoid , maka :
f ' ( y _ ink )
f ( y _ ink )(1 f ( y _ ink ))
y k (1 y k ) Menghitung perbaikan faktor penimbang (kemudian untuk memperbaiki wjk).
Wkj
a. k .Z j
Menghitung perbaikan koreksi:
W0 k
a.
k
dan menggunakan nilai k pada semua unit lapisan sebelumnya. 8. Masing-masing penimbang yang menghubungkan unit-unit lapisan keluaran dengan unit-unit pada lapisan tersembunyi (Zj ,j=1..,p) dikalikan delta dan dijumlahkan sebagai masukan ke unit-unit lapisan berikutnya. m
_ in j
k
W jk
k 1
45
Selanjutnya dikalikan dengan turunan aktifasinya untuk menghitung galat. j
dari
fungsi
_ in j f ' ( y _ in j )
Kemudian menghitung perbaikan penimbang (digunakan untuk memperbaiki Vij).
Vij
a
j
Xi
Kemudian menghitung perbaikan bias (untuk memperbaiki v0j)
V0 j
a
i
Memperbaiki penimbang dan bias 9. Masing-masing keluaran unit (yk, k=1,..,m) diperbaiki bias dan penimbangnya (j=0,...,p),
W jk (baru) W jk (lama)
W jk
masing-masing unit tersembunyi (Zj, j: 1,....,p) diperbaiki bias dan penimbangnya (j=0,...,n).
V jk (baru) V jk (lama)
V jk
10. Uji kondisi pemberhentian (akhir iterasi). Daftar Notasi Xp = Pola masukan pelatihan ke-p, p=1,2,. . ..,p<=1 Xp = (X1, Xz, X3,...,Xn) tp = pola keluaran target dari pelatihan tp = (t1, t2, t3, . . . ,tn) xi = Unit ke-I pada lapisan masukan Xi = nilai aktifasi dari unit Xi Zj = Unit ke-j pada lapisan tersembunyi Z_inj = keluaran untuk unitZj zj = nilai aktifasi dafi unit Zj Yk = unit ke -k pada lapisan keluaran Y_ink = net masukan untuk unit Yk Yk = nilai aktifasi dari unit Yk Wk0 = nilai penimbang sambungan pada bias untuk unit Y k Wkj = nilai penimbang sambungan dari Zij ke unit Yk Wkj = selisih antara Wkj(t) denganWkj(t+1) Vi0 = nilai penimbang sambungan pada bias untuk unit Z i Vij: nilai penimbang sambungan dari unit Xi ke unit Zi
46
Wij = selisih antara Vij (t) denganVij(t+1) k = faktor pengaturan nilai penimbang sambungan pada lapisan keluaran j = faktor pengaturan nilai penimbang sambungan pada lapisan tersembunyi = konstanta laju pelatihan (leaming rate) 0< <1 E = Total galat Jika rumus diatas dirubah ke dalam listing program maka akan menjadi sebagai berikut. For jum_data = 1 To abc Do '------------------- FORWARD --------------'----------------- input-hidden -----------For i = 1 To HU 'to hidden temporarry = 0 For j = 1 To IU 'to input temporarry = temporarry + (input_nya(j, i) * Weights1(j, i)) Next j Neuron_lum(1, i) = temporarry + (weigthsbias1(i) * 1) Neuron_aktif(1, i) = 1 / (1 + Exp(1) ^ Neuron_lum(1, i)) Next i '-------------------- hidden-output --------------For i = 1 To OU 'to hidden temporarry = 0 For j = 1 To HU 'to input temporarry = temporarry + (Neuron_aktif(1, j) * Weights2(j, i)) Next j Neuron_lum(2, i) = temporarry + (weigthsbias2(i) * 1) Neuron_aktif(2, i) = 1 / (1 + Exp(1) ^ Neuron_lum(2, i)) output(jum_data) = Neuron_aktif(2, i) Next i '--------------------- BACKWARD --------------'----------------------Error y---------------error_train(jum_data) = Target(jum_data) output(jum_data)
-
47
'------------------ Error Hidden---------Error_Neu(2, 1) = error_train(jum_data) output(jum_data) * (1 - output(jum_data)) 'Error Y
*
For i = 1 To OU For j = 1 To HU DWeigth2(j, i) = LEARNING_RATE * Error_Neu(2, 1) * Neuron_aktif(1, j) Weights2(j, i) = Weights2(j, i) + DWeigth2(j, i) Next j Next i For i = 1 To OU DWbias2(i) = LEARNING_RATE * Error_Neu(2, 1) * 1 weigthsbias2(i) = DWbias2(i) + weigthsbias2(i) Next i For j = 1 To HU Error_Neu_lum(1, j) = Error_Neu(2, 1) * Weights2(j, 1) 'Error net Error_Neu(1, j) = Error_Neu_lum(1, j) * Neuron_aktif(1, j) * (1 - Neuron_aktif(1, j)) DWbias1(j) = LEARNING_RATE * Error_Neu(1, j) * 1 weigthsbias1(j) = DWbias1(j) + weigthsbias1(j) Next j For i = 1 To IU For j = 1 To HU DWeigth1(i, j) = LEARNING_RATE * Error_Neu(1, j) * input_nya(i, j) Weights1(i, j) = Weights1(i, j) + DWeigth1(i, j) Next j Next i Loop Until error_tot(jum_data) < 0.001 Next jum_data
Gambar 3.14 Listing Program Backpropagation
3.7. ECLUDEAN DISTANCE Metode ini digunakkan untuk mencocokan sidik jari yang ada pada database dengan sidik jari yang akan diverifikasi / dicocokan. Suatu sidik jari dianggap cocok / sesuai jikan selisih antara ciri I dengan ciri II kurang dari 10 %.
48
Implementasi dari rumus tersebut adalah seperti dibawah ini For i = 1 To ab tamp4 = 0 tamp3 = 0 tamp2 = (output(i) - output2) ^ 2 tamp3 = tamp3 + tamp2 tamp4 = Sqr(tamp3) eclu(i) = Round((tamp4), 10) sql4 = "update jst set ecludean ='" & eclu(i) & "' where idSidikJari ='" & i & "'" Set Rs5 = Conn.Execute(sql4, , adCmdText) Next i
Gambar 3.15 Listing Program Ecludean Distance
3.8. DATABASE Database yang digunakan adalah MySql. Sedangkan provider yang digunakan untuk koneksi database menggunakan localhost. Cara koneksinya sebagai berikut. Set Conn = New Connection Conn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=localhost"
Gambar 3.16 Listing Program Koneksi Ke Database
Tabel yang digunakan dalam proyek akhir ini adalah: Tabel 3.1 daftar Field Type Int(50) idPegawai (pk) nama Varchar(50) nip Varchar(50) jabatan Varchar(50) Tabel 3.2 absensi Field Type idPegawai Int(50) jamMasuk Varchar(50) jamKeluar Varchar(50) tglAbsen Varchar(50) totalJam Int(50) totalMasuk Int(50)
49
totalGaji gajiHarian
Int(255) Int(255)
Tabel 3.3 jst Field idSidikJari idPegawai t output Ecludean
Type Int(50) Int(50) Double Double Double
Tabel 3.4 refjst Field Type Int(50) idrefjst (pk) output Double Tabel 3.5 sidikjari Field Type Int(50) idSidikJari (pk) idPegawai Int(50) t Double J1 Double J2 Double J3 Double ... ... … … J60 Double Tabel 3.6 normalisasi Field Type Int(50) idSidikJari (pk) idPegawai Int(50) t Double p1 Double p2 Double p3 Double ... ... p60 Double
50
Tabel 3.7 weights1 Field Type Int(50) idWeights1(pk) n1 Double n2 Double n3 Double n4 Double n5 Double n6 Double n7 Double Tabel 3.8 wbias1 Field Type Int(50) idwbias1(pk) n1 Int(50) n2 Double n3 Double n4 Double n5 Double n6 Double n7 Double Tabel 3.9 weights2 Field Type Int(50) idWeights2 (pk) y Double Tabel 3.10 wbias2 Field Type Int(50) idwbias2 (pk) y Double
Sedangkan untuk mengakses tabel menggunakkan localhost dibawah ini adalah contoh listing programnya
sql2 = "select * from jst, daftar,absensi where jst.ecludean= 0 and jst.idPegawai=daftar.idPegawai and absensi.idpegawai=daftar.idpegawai" Set Rs3 = Conn.Execute(sql2, , adCmdText) If Rs3.EOF = False Then
51
frmcocok.txtnama.Text = Rs3!Nama frmcocok.txtnip.Text = Rs3!nip frmcocok.lblid.Caption = Rs3!idPegawai frmcocok.lblgaji.Caption = Rs3!totalGaji ck = 1 End If
Gambar 3.17a Listing Program Untuk Mengakses Tabel sql2 = "select * from jst, daftar,absensi where jst.ecludean = '" & min & "' and jst.idPegawai=daftar.idPegawai and absensi.idpegawai=daftar.idpegawai" Set Rs3 = Conn.Execute(sql2, , adCmdText) If Rs3.EOF = False Then frmcocok.txtnama.Text = Rs3!Nama frmcocok.txtnip.Text = Rs3!nip frmcocok.lblid.Caption = Rs3!idPegawai frmcocok.lblgaji.Caption = Rs3!totalGaji frmcocok.Visible = True MsgBox "ECLUDEAN < 20 % ID=" & Rs3!idSidikJari & " " ck = 1 End If
Gambar 3.17b Listing Program Untuk Mengakses Tabel
3.9. PENGAMBILAN SIDIK JARI Dalam proyek akhir ini pengambilan sidik jari dapat dilakukan dengan dua (2) cara, yaitu online dan offline. 3.9.1.
ONLINE Pengambilan sidik jari secara online adalah menggunakan alat fingerprint. Untuk program pengambilan sidik jari secara online, tinggal memanggil komponen / fungsi yang ada (dari driver fingerprint). Cara mengaktifkan komponen driver fingerprint adalah mencari library (hasil install driver) pada menu reference disini menggunakan driver UareUSDK, tampilan pada reference seperti dibawah ini.
52
Gambar 3.18 Cara Mengaktifkan / Menggunakan Driver Fingerprint
Setelah mengaktifkan library, langkah selanjutnya adalah membuat desain form (picturebox, dan button) dan listing program. Listing program pada button adalah sebagai berikut.
Gambar 3.19 Listing Program Sidik Jari Online
53
Jika program tersebut dieksekusi, dengan menekan button dan device / fingerprint telah terhubung maka akan muncul tampilan seperti dibawah ini
Gambar 3.20 Tampilan Picturebox Pengambilan Sidik Jari Online
3.9.2.
OFFLINE Pengambilan sidik jari offline adalah pengambilan sidik jari dari hasil scanning / yang telah didapat dan disimpan di computer. Untuk pengambilan secara offline ini terlebih dahulu mengaktifkan komponen MS. Common Dialog Control 6.0 seperti gambar dibawah ini.
54
Gambar 3.21 Mengaktifkan Ms. Common Dialog
Pada button Load Gambar (offline) masukkan program dibawah ini
Gambar 3.22 Listing Program Sidik Jari Offline
55
Jika program diatas dieksekusi maka akan tampil gambar seperti dibawah ini
Gambar 3.23 Tampilan Open File Sidik Jari Offline
56