Lampiran 1: Petunjuk Instalasi OpenCV
Berikut adalah langkah-langkah instalasi OpenCV (Open Source Computer Vision Library) untuk pengembangan perangkat lunak, pada Windows 98/2000/XP:
Instalasi Software
1. Dahului dengan instalasi Microsoft Visual C++ versi 6.0 yang terdapat dalam paket Microsoft Visual Studio versi 6.0.
2. Install DirectX SDK (Software Development Kit) versi 8.1, ubah direktori default instalasi dari c:\dxsdk\ menjadi c:\mssdk\
Filename: DX81SDK_FULL.exe
URL:http://download.microsoft.com/download/whistler/dx/8.1/W982KMeXP/
EN-US/DX81SDK_FULL.exe
3. Install IPL (Intel Image Processing Library) versi 2.5, direktori default instalasi adalah: c:\program files\intel\plsuite\
Filename: ipl25.exe
URL: http://developer.intel.com/software/products/perflib/ipl/
4. Install OpenCV (Intel Open Source Computer Vision) versi beta3.1, direktori default instalasi adalah: c:\program files\intel\opencv\
Filename: OpenCV_b3.1.exe
URL: http://sourceforge.net/projects/opencvlibrary/
Setting Path
5. Tambahkan path instalasi program, yaitu:
c:\program files\intel\opencv\bin; c:\program files\intel\plsuite\bin (perhatikan pemakaian karakter ‘;’ untuk memisahkan path).
Untuk Windows 2000/XP:
Klik Start->Settings->Control Panel->System->Advanced->Environment Variables->System Variables->Tambahkan pada variable Path
Untuk Windows 98:
Lampiran 1: Petunjuk Instalasi OpenCV (sambungan)
Tambahkan path pada file autoexec.bat, yang secara default terletak di root directory, yaitu di c:\
Setting Visual C++ 6.0
6. Dahului dengan melakukan build baseclasses dari DirectShow baik untuk versi Win32 Release maupun Debug, yaitu dengan membuka file baseclasses.dsp pada lokasi:
C:\MSSDK\samples\Multimedia\DirectShow\BaseClasses\ melalui Visual C++ dan pilih menu: Build->Batch Build.
7. Tambahkan direktori untuk include, library, dan executable files, melalui menu: Tools->Options->Directories (letakkan direktori-direktori tersebut pada urutan teratas).
a. Direktori untuk Include Files:
c:\mssdk\include
c:\mssdk\samples\multimedia\directshow\baseclasses
c:\mssdk\samples\multimedia\common\include
c:\program files\intel\opencv\cvaux\include
c:\program files\intel\opencv\cv\include
c:\program files\intel\opencv\apps\common
c:\program files\intel\opencv\otherlibs\highgui
c:\program files\intel\plsuite\include
c:\program files\intel\plsuite\bin b. Direktori untuk Library Files:
c:\mssdk\samples\multimedia\directshow\baseclasses\debug
c:\mssdk\samples\multimedia\directshow\baseclasses\release
c:\mssdk\lib
c:\program files\intel\opencv\lib
c:\program files\intel\opencv\otherlibs\highgui
c:\program files\intel\plsuite\lib\msvc c. Direktori untuk Executable Files:
Lampiran 1: Petunjuk Instalasi OpenCV (sambungan)
c:\program files\intel\opencv\bin
c:\program files\intel\plsuite\bin
Development Perangkat Lunak
8. Tahap pengembangan perangkat lunak dalam Visual C++ menggunakan mode Win32 Debug untuk mendukung proses Debugging, setelah proses develop selesai baru aplikasi di-kompile dengan mode Win32 Release, dimana mode ini akan mempercepat eksekusi program, karena informasi debug yang sudah tidak diperlukan akan dihilangkan dari program. Untuk mendukung mode Win32 Debug maka build library versi debug dari OpenCV dan HighGUI yang akan menghasilkan library cvd.lib dan highguid.lib.
Untuk library versi debug dari OpenCV, buka file C:\Program Files\Intel\OpenCV\cv\make\cv.dsp, lakukan build secara batch untuk versi debug dan release.
Untuk library versi debug dari HighGUI, buka file C:\Program Files\Intel\OpenCV\otherlibs\highgui\highgui.dsp, lakukan build secara batch untuk versi debug dan release.
9. Dalam pembuatan aplikasi (proses coding) tambahkan informasi library- library yang digunakan oleh program (untuk keperluan proses linking), yaitu melalui menu: Project->Settings->Link, tambahkan pada pilihan Object/library modules: cvd.lib ipl.lib vfw32.lib highguid.lib (perhatikan pemakaian spasi untuk memisahkan library).
Lampiran 2: Hasil Pengujian Tanda Tangan
Anton lengkap
Anton_asli 1 Anton_asli 2 Anton_asli 3 Anton_asli 4
Anton_asli 5 Anton_asli 6 (s) Anton_asli 7 (s) Anton_asli 8 (s)
Anton_palsu 1 Anton_palsu 2 Anton_palsu 3 Anton_palsu 4
Anton_palsu 5 Anton_palsu 6 Anton_palsu 7 Anton_palsu 8
Anton_asli1 Anton_asli2 0.911504
Anton_asli3 0.855056
Anton_asli4 0.515779
Anton_asli5 0.877784
Anton_asli6 (s) 0.847756 Anton_asli7 (s) 0.786051 Anton_asli8 (s) 0.826428 Anton_asli2 Anton_asli3 0.817969
Anton_asli4 0.582209
Anton_asli5 0.913455
Anton_asli6 (s) 0.838570 Anton_asli7 (s) 0.831213 Anton_asli8 (s) 0.928655
Anton_asli3 Anton_asli4 0.629895
Anton_asli5 0.843150
Anton_asli6 (s) 0.791246 Anton_asli7 (s) 0.772700 Anton_asli8 (s) 0.780105 Anton_asli4 Anton_asli5 0.678336 Anton_asli6 (s) 0.591888 Anton_asli7 (s) 0.635926 Anton_asli8 (s) 0.634637 Anton_asli5 Anton_asli6 (s) 0.925309 Anton_asli7 (s) 0.933043 Anton_asli8 (s) 0.896075 Anton_asli6 (s) Anton_asli7 (s) 0.957982
Anton_asli8 (s) 0.815683 Anton_asli7 (s) Anton_asli8 (s) 0.834149
Anton_asli1 Anton_palsu1 0.550755
Anton_palsu2 0.839297
Anton_palsu3 0.839690
Anton_palsu4 0.643559
Anton_palsu5 0.926341
Anton_palsu6 0.902186
Anton_palsu7 0.713291
Anton_palsu8 0.732831
Anton_asli2 Anton_palsu1 0.615649
Anton_palsu2 0.906635
Anton_palsu3 0.820129
Anton_palsu4 0.705318
Anton_palsu5 0.934242
Anton_palsu6 0.846520
Anton_palsu7 0.710479
Anton_palsu8 0.839789
Anton_asli3 Anton_palsu1 0.655521
Anton_palsu2 0.876509
Anton_palsu3 0.777511
Anton_palsu4 0.678673
Anton_palsu5 0.904112
Anton_palsu6 0.832017
Anton_palsu7 0.645300
Anton_palsu8 0.818951
Anton_asli4 Anton_palsu1 0.842731
Anton_palsu2 0.686665
Anton_palsu3 0.563840
Anton_palsu4 0.710544
Anton_palsu5 0.588590
Anton_palsu6 0.571486
Anton_palsu7 0.480110
Anton_palsu8 0.793774 Anton_asli5 Anton_palsu1 0.749062
Anton_palsu2 0.907878
Anton_palsu3 0.914808
Anton_palsu4 0.828329
Anton_palsu5 0.923258
Anton_palsu6 0.846104
Anton_palsu7 0.786179
Anton_palsu8 0.823769
Anton_asli6 (s) Anton_palsu1 0.699077
Anton_palsu2 0.796756
Anton_palsu3 0.968263
Anton_palsu4 0.871841
Anton_palsu5 0.885474
Anton_palsu6 0.799196
Anton_palsu7 0.904048
Anton_palsu8 0.727459
Anton_asli7 (s) Anton_palsu1 0.765747
Anton_palsu2 0.821482
Anton_palsu3 0.953543
Anton_palsu4 0.923561
Anton_palsu5 0.860076
Anton_palsu6 0.760732
Anton_palsu7 0.896097
Anton_palsu8 0.762931
Anton_asli8 (s) Anton_palsu1 0.609884
Anton_palsu2 0.880523
Anton_palsu3 0.767707
Anton_palsu4 0.713648
Anton_palsu5 0.901111
Anton_palsu6 0.766689
Anton_palsu7 0.717748
Anton_palsu8 0.872265
Arie lengkap
Arie_asli 1 Arie_asli 2 Arie_asli 3 Arie_asli 4
Arie_asli 5 (s) Arie_asli 6 (s) Arie_asli 7 (s)
Arie_palsu 1 Arie_palsu 2 Arie_palsu 3 Arie_palsu 4
Arie_palsu 5 Arie_palsu 6 Arie_palsu 7 Arie_palsu 8
Arie_asli1 Arie_asli2 0.860334
Arie_asli3 0.981986
Arie_asli4 0.580944
Arie_asli5 (s) 0.868143 Arie_asli6 (s) 0.632967 Arie_asli7 (s) 0.884074 Arie_asli2 Arie_asli3 0.883785
Arie_asli4 0.666327
Arie_asli5 (s) 0.689682 Arie_asli6 (s) 0.724531 Arie_asli7 (s) 0.842498 Arie_asli3 Arie_asli4 0.594196 Arie_asli5 (s) 0.844003 Arie_asli6 (s) 0.651631 Arie_asli7 (s) 0.888012 Arie_asli4 Arie_asli5 (s) 0.427234 Arie_asli6 (s) 0.983455 Arie_asli7 (s) 0.573608 Arie_asli5 (s) Arie_asli6 (s) 0.477116
Arie_asli7 (s) 0.859164 Arie_asli6 (s) Arie_asli7 (s) 0.634032
Arie_asli1 Arie_palsu1 0.857187
Arie_palsu2 0.785278
Arie_asli1 Arie_palsu3 0.744079
Arie_palsu4 0.583075
Arie_palsu5 0.849982
Arie_palsu6 0.632366
Arie_palsu7 0.807487
Arie_palsu8 0.854122
Arie_asli2 Arie_palsu1 0.778891
Arie_palsu2 0.848284
Arie_palsu3 0.842522
Arie_palsu4 0.775802
Arie_palsu5 0.751508
Arie_palsu6 0.830482
Arie_palsu7 0.864296
Arie_palsu8 0.909222
Arie_asli3 Arie_palsu1 0.875857
Arie_palsu2 0.800942
Arie_palsu3 0.770484
Arie_palsu4 0.606609
Arie_palsu5 0.847591
Arie_palsu6 0.655448
Arie_palsu7 0.888012
Arie_palsu8 0.860829
Arie_asli4 Arie_palsu1 0.437994
Arie_palsu2 0.510470
Arie_palsu3 0.491550
Arie_palsu4 0.565278
Arie_palsu5 0.445427
Arie_palsu6 0.754208
Arie_palsu7 0.472159
Arie_palsu8 0.779503
Arie_asli5 (s) Arie_palsu1 0.809313
Arie_palsu2 0.674109
Arie_palsu3 0.714982
Arie_palsu4 0.508303
Arie_palsu5 0.932505
Arie_palsu6 0.491440
Arie_palsu7 0.733976
Arie_palsu8 0.684699
Arie_asli6 (s) Arie_palsu1 0.487440
Arie_palsu2 0.561518
Arie_palsu3 0.542350
Arie_palsu4 0.606471
Arie_palsu5 0.497698
Arie_palsu6 0.788982
Arie_palsu7 0.519356
Arie_palsu8 0.830270
Arie_asli7 (s) Arie_palsu1 0.840156
Arie_palsu2 0.777947
Arie_palsu3 0.858864
Arie_palsu4 0.643112
Arie_palsu5 0.909989
Arie_palsu6 0.693486
Arie_palsu7 0.794433
Arie_palsu8 0.847324
Arif lengkap
Arif_asli 1 Arif_asli 2 Arif_asli 3 Arif_asli 4
Arif_asli 5 (s) Arif_asli 6 (s) Arif_asli 7 (s) Arif_asli 8 (s)
Arif_palsu 1 Arif_palsu 2 Arif_palsu 3 Arif_palsu 4
Arif_palsu 5 Arif_palsu 6 Arif_palsu 7 Arif_palsu 8 Arif_asli1 Arif_asli2 0.755708
Arif_asli3 0.801901
Arif_asli4 0.720118
Arif_asli5 (s) 0.759358
Arif_asli6 (s) 0.543955 Arif_asli7 (s) 0.820612 Arif_asli8 (s) 0.744868 Arif_asli2 Arif_asli3 0.799306
Arif_asli4 0.589991
Arif_asli5 (s) 0.742109 Arif_asli6 (s) 0.408047 Arif_asli7 (s) 0.799464 Arif_asli8 (s) 0.926697 Arif_asli3 Arif_asli4 0.639606
Arif_asli5 (s) 0.848847 Arif_asli6 (s) 0.576465 Arif_asli7 (s) 0.757362 Arif_asli8 (s) 0.806946 Arif_asli4 Arif_asli5 (s) 0.579920
Arif_asli6 (s) 0.712763 Arif_asli7 (s) 0.759791 Arif_asli8 (s) 0.587616 Arif_asli5 (s) Arif_asli6 (s) 0.585311
Arif_asli7 (s) 0.799474 Arif_asli8 (s) 0.738905 Arif_asli6 (s) Arif_asli7 (s) 0.561495
Arif_asli8 (s) 0.388208 Arif_asli7 (s) Arif_asli8 (s) 0.771995
Arif_asli1 Arif_palsu1 0.787677
Arif_palsu2 0.609272
Arif_palsu3 0.762704
Arif_palsu4 0.848177
Arif_palsu5 0.664834
Arif_palsu6 0.743941
Arif_palsu7 0.790126
Arif_palsu8 0.640956
Arif_asli2 Arif_palsu1 0.801243
Arif_palsu2 0.631984
Arif_palsu3 0.718541
Arif_palsu4 0.793605
Arif_palsu5 0.716063
Arif_palsu6 0.694399
Arif_palsu7 0.655239
Arif_palsu8 0.583660
Arif_asli3 Arif_palsu1 0.718566
Arif_palsu2 0.602256
Arif_palsu3 0.644060
Arif_palsu4 0.743597
Arif_palsu5 0.600187
Arif_palsu6 0.650927
Arif_asli3 Arif_palsu7 0.856431
Arif_palsu8 0.811833
Arif_asli4 Arif_palsu1 0.574234
Arif_palsu2 0.613008
Arif_palsu3 0.542501
Arif_palsu4 0.674125
Arif_palsu5 0.451180
Arif_palsu6 0.530769
Arif_palsu7 0.588374
Arif_palsu8 0.501433
Arif_asli5 (s) Arif_palsu1 0.777008
Arif_palsu2 0.621361
Arif_palsu3 0.782690
Arif_palsu4 0.779778
Arif_palsu5 0.671467
Arif_palsu6 0.813788
Arif_palsu7 0.907417
Arif_palsu8 0.853389
Arif_asli6 (s) Arif_palsu1 0.399811
Arif_palsu2 0.411089
Arif_palsu3 0.398783
Arif_palsu4 0.432940
Arif_palsu5 0.284006
Arif_palsu6 0.395317
Arif_palsu7 0.584147
Arif_palsu8 0.576450
Arif_asli7 (s) Arif_palsu1 0.826260
Arif_palsu2 0.742293
Arif_palsu3 0.801435
Arif_palsu4 0.897536
Arif_palsu5 0.699865
Arif_palsu6 0.803080
Arif_palsu7 0.704877
Arif_palsu8 0.612961
Arif_asli8 (s) Arif_palsu1 0.814827
Arif_palsu2 0.631813
Arif_palsu3 0.697719
Arif_palsu4 0.827336
Arif_palsu5 0.751260
Arif_palsu6 0.672683
Arif_palsu7 0.682343
Arif_palsu8 0.618313
Indro lengkap
Indro_asli 1 Indro_asli 2 Indro_asli 3 Indro_asli 4
Indro_asli 5 Indro_asli 6 (s) Indro_asli 7 (s) Indro_asli 8 (s)
Indro_palsu 1 Indro_palsu 2 Indro_palsu 3 Indro_palsu 4
Indro_palsu 5 Indro_palsu 6 Indro_palsu 7 Indro_palsu 8 Indro_asli1 Indro_asli2 0.933818
Indro_asli3 0.476242
Indro_asli4 0.872809
Indro_asli5 0.802318
Indro_asli6 (s) 0.910427 Indro_asli7 (s) 0.837441 Indro_asli8 (s) 0.804151 Indro_asli2 Indro_asli3 0.432478
Indro_asli4 0.739289
Indro_asli5 0.687638
Indro_asli6 (s) 0.844211 Indro_asli7 (s) 0.855425 Indro_asli8 (s) 0.786866
Indro_asli3 Indro_asli4 0.468626
Indro_asli5 0.395883
Indro_asli6 (s) 0.355388 Indro_asli7 (s) 0.326252 Indro_asli8 (s) 0.588827 Indro_asli4 Indro_asli5 0.820290
Indro_asli6 (s) 0.847848 Indro_asli7 (s) 0.658504 Indro_asli8 (s) 0.721653 Indro_asli5 Indro_asli6 (s) 0.766492
Indro_asli7 (s) 0.699873 Indro_asli8 (s) 0.680054 Indro_asli6 (s) Indro_asli7 (s) 0.835378
Indro_asli8 (s) 0.704701 Indro_asli7 (s) Indro_asli8 (s) 0.719578
Indro_asli1 Indro_palsu1 0.783942
Indro_palsu2 0.603534
Indro_palsu3 0.654617
Indro_palsu4 0.657829
Indro_palsu5 0.746078
Indro_palsu6 0.553529
Indro_palsu7 0.699180
Indro_palsu8 0.744489
Indro_asli2 Indro_palsu1 0.733335
Indro_palsu2 0.566375
Indro_palsu3 0.621251
Indro_palsu4 0.657278
Indro_palsu5 0.727620
Indro_palsu6 0.532618
Indro_palsu7 0.682189
Indro_palsu8 0.665813
Indro_asli3 Indro_palsu1 0.288457
Indro_palsu2 0.300037
Indro_palsu3 0.253056
Indro_palsu4 0.227098
Indro_palsu5 0.260967
Indro_palsu6 0.194819
Indro_palsu7 0.268081
Indro_palsu8 0.239834
Indro_asli4 Indro_palsu1 0.683816
Indro_palsu2 0.607426
Indro_palsu3 0.666686
Indro_palsu4 0.554377
Indro_palsu5 0.648894
Indro_palsu6 0.531984
Indro_palsu7 0.624369
Indro_palsu8 0.693403 Indro_asli5 Indro_palsu1 0.659446
Indro_palsu2 0.519899
Indro_palsu3 0.500689
Indro_palsu4 0.447889
Indro_palsu5 0.610252
Indro_palsu6 0.362752
Indro_palsu7 0.469672
Indro_palsu8 0.696188
Indro_asli6 (s) Indro_palsu1 0.830213
Indro_palsu2 0.633607
Indro_palsu3 0.754566
Indro_palsu4 0.764285
Indro_palsu5 0.836060
Indro_palsu6 0.689091
Indro_palsu7 0.798245
Indro_palsu8 0.860007
Indro_asli7 (s) Indro_palsu1 0.894887
Indro_palsu2 0.653572
Indro_palsu3 0.642020
Indro_palsu4 0.723961
Indro_palsu5 0.892571
Indro_palsu6 0.835378
Indro_palsu7 0.721221
Indro_palsu8 0.808122
Indro_asli8 (s) Indro_palsu1 0.638271
Indro_palsu2 0.629159
Indro_palsu3 0.491165
Indro_palsu4 0.471738
Indro_palsu5 0.608990
Indro_palsu6 0.394788
Indro_palsu7 0.549680
Indro_palsu8 0.520726
Lampiran 1: Desain Dan Petunjuk Penggunaan Aplikasi
Window utama aplikasi terdiri dari tiga bagian, yaitu:
1. Bagian kiri, berisi database tanda tangan beserta informasi nama pemilik tanda tangan, keterangan dan nomor urut.
2. Bagian kanan atas, berisi tampilan frame tanda tangan dari file gambar.
3. Bagian kanan bawah, berisi informasi.
Elemen-elemen Toolbar
Semua fungsi dasar dari aplikasi bisa dilakukan dengan penekanan tombol toolbar.
1. Untuk melakukan File New.
2. Load Signature Database (berupa file .txt).
3. Load Signature Image (format yang didukung: BMP, JPEG).
4. Membuat database baru serta menentukan lokasi (path) dari file index Signature Database.
Lampiran 1: Desain Dan Petunjuk Penggunaan Aplikasi (sambungan)
5. Menentukan Signature Region (secara keseluruhan), pengubahan ukuran Signature Region bisa dilakukan dengan melakukan drag dengan menggunakan mouse pada Image tersebut.
6. Menambahkan tanda tangan (setelah terlebih dahulu ditentukan ROInya) ke dalam Signature Database.
7. Melakukan pengenalan tanda tangan.
8. About.
Elemen-elemen Menu
1. File, berisi fungsi-fungsi operasi terhadap file yaitu:
New, fungsi sama dengan tombol toolbar (no. 1).
Open Image, fungsi sama dengan tombol toolbar (no. 3).
Open Database, fungsi sama dengan tombol toolbar (no. 2).
Exit, keluar dari aplikasi.
2. View, mengatur tampilan user interface dari aplikasi.
Toolbar, untuk Show/Hide Toolbar.
Status Bar, untuk Show/Hide Status Bar.
3. Help, berisi submenu About.
Lampiran 1: Desain Dan Petunjuk Penggunaan Aplikasi (sambungan)
Elemen Window Informasi (bagian kanan bawah)
Berisi informasi nama dari image tanda tangan yang di-load pada dan nama dari image tanda tangan yang dipilih dari database yang telah ada yang diletakkan pada field “File Name 1” dan “File Name 2”. Serta nilai default dari threshold dan nilai perbedaan dari kedua tanda tangan tersebut pada field “Distance”.
Langkah-langkah dalam melakukan Pengenalan Tanda Tangan
1. Buatlah signature database dengan menekan tombol , kemudian isi field pada dialog berikut:
Tekan tombol untuk melakukan browse lokasi filename.
2. Setelah itu lakukan open signature database dengan menekan tombol
Lampiran 1: Desain Dan Petunjuk Penggunaan Aplikasi (sambungan)
3. Load tanda tangan dengan menekan tombol , dimana input berasal dari file gambar (dengan format: BMP, JPEG).
4. Tentukan daerah fokus/Region of Interest (ROI), yang bisa dilakukan dengan:
Drag mouse (klik kiri, tahan, dan gerakkan mouse, kemudian lepaskan).
Memilih signature region secara keseluruhan, dengan menekan tombol toolbar .
5. Tambahkan tanda tangan yang telah dipilih ROInya ke dalam signature database dengan menekan tombol toolbar , kemudian isi field pada dialog berikut :
Lakukan hal ini seperlunya, sebanyak yang diinginkan.
6. Untuk melakukan pengenalan tanda tangan, hanya bisa dilakukan antara file image yang di-load dengan salah satu image pada database tanda tangan. Cara memilih image pada database tanda tangan yaitu dengan menekan double click pada signature image yang ditampilkan pada database. Setelah image dari database dipilih dan file image di-load, lakukan pengenalan tanda tangan dengan menekan tombol .
7. Hasil dari pengenalan tanda tangan (recognition result) akan ditampilkan pada messagebox berupa kata “asli” atau “palsu”, untuk informasi nilai kemiripan (Distance) dapat dilihat bisa dilihat pada window informasi. Nilai dari threshold dapat diubah semau user yang akan sangat mempengaruhi hasil dari pengenalan namun tidak berpengaruh pada nilai kemiripan.
UNIVERSITAS KRISTEN PETRA
USULAN TUGAS AKHIR
Nama : Arif Wijaya NRP : 26401145
Peminatan : Teknologi Perangkat Lunak
Judul Tugas Akhir : Pembuatan Aplikasi Pengenalan Tanda Tangan menggunakan Metode Stroke Histogram Pembimbing I : Ir. Sukanto Tedjokusuma, M.Sc.
Pembimbing II : Arie W.M, S.kom.
Dilaksanakan : Semester Genap 2004/2005
Surabaya, 18 Januari 2005 Yang mengusulkan,
Arif Wijaya
Mengetahui:
Pembimbing I Pembimbing II
Ir. Sukanto Tedjokusuma, M. Sc. Arie W.M, S.Kom.
Koordinator Tugas Akhir
Silvia Rostianingsih, S.Kom, M.MT.
Stroke Histogram
2. Latar Belakang Masalah
Dengan semakin pesatnya perkembangan teknologi komputer, menyebabkan banyak sekali bermunculan program-program aplikasi yang sangat bermanfaat sebagai alat bantu manusia dalam melakukan pekerjaan.
Dimulai dari program aplikasi yang umum dan sederhana, seperti kalkulator, word processor, database perusahaan, hingga semakin berkembang ke arah computer vision dan biometric.
Biometric authentication, seringkali dimanfaatkan dalam beberapa hal berikut:
• National ID Card
• Airport Security
• Site Access
Dimana bidang biometrics yang mungkin diterapkan dalam situasi di atas, meliputi:
• Fingerprints
• Hand geometry
• Iris
• Retina
• Voice
• Signature
• Face
Dalam beberapa bidang biometrics seperti yang telah disebutkan di atas, tanda tangan merupakan kegiatan yang paling sering dilakukan. Men- tanda tangani suatu dokumen adalah suatu kegiatan yang rutin untuk dilakukan, yang untuk kebanyakan orang hal ini bisa terjadi setiap hari dan tidak menutup kemungkinan bisa terjadi setiap jam untuk beberapa orang tertentu.
Tanda tangan merupakan suatu contoh sederhana dari pengesahan sebuah identitas yang memiliki sedikit persamaan dalam kecepatan dan kesederhanaannya. Pemalsuan tanda tangan merupakan sesuatu yang harus diperhatikan bisnis seperti bank dan agensi kartu kredit, yang bergantung pada tanda tangan sebagai maksud untuk validasi dari suatu transaksi yang melibatkan uang.
Tanda tangan merupakan contoh dari apa yang disebut cursive text dan itu sangat sulit untuk ditafsirkan oleh komputer. Ada banyak variasi dari tanda tangan yaitu pada intensitasnya, gaya tulisannya, ukuran serta proporsinya. Hal ini menyebabkan suatu program komputer yang digunakan untuk mengenali tulisan tangan tidak dapat digunakan untuk mengenali tanda tangan.
Karena diterapkan dalam situasi penting (memberikan ijin akses, pengesahan terhadap sesuatu), maka dibutuhkan sistem pengenalan tanda tangan yang handal yaitu dapat beroperasi dalam beragam kondisi, seperti intensitas, gaya atau jenis tulisan, ukuran tulisan dan proporsi. Selain itu signature recognition system juga harus memiliki recognition rate yang tinggi, dan berusaha menekan error pengenalan yang terjadi menjadi sekecil mungkin.
3. Perumusan Masalah
Penulis ingin mengembangkan suatu perangkat lunak yang dapat digunakan untuk mengenali suatu tanda tangan (recognition) berdasarkan database yang berisi tanda tangan yang telah dibuat dan di-training sebelumnya
Bagaimana cara membuat sistem pengenalan tanda tangan yang mempunyai tingkat error pengenalan yang minimum?
4. Ruang lingkup
Ruang lingkup pengembangan dibatasi pada:
• Inputan tanda tangan berupa file gambar dengan format bitmap (BMP) atau JPG.
• Pengenalan tanda tangan hanya dibatasi terhadap satu objek (bukan multiple objek).
• Bahasa pemrograman yang digunakan adalah C++ dengan menggunakan compiler Microsoft Visual C++ 6.0.
• Library tambahan yang digunakan adalah Intel Image Processing Library (IPL), dan Intel Open Source Computer Vision (OpenCV).
• Filter terhadap noise.
5. Tujuan Tugas Akhir
Mengembangkan sebuah perangkat lunak yang dapat melakukan pengenalan tanda tangan (recognition) dengan menggunakan metode Stroke Histogram, dan memakai file gambar dengan format bitmap (BMP) atau JPG sebagai input data.
6. Tinjauan Pustaka
Untuk setiap input data yang masuk baik berupa BMP atau JPG akan dirubah ke bentuk bi-color. Hal ini dilakukan untuk memudahkan pengenalan program yang mengenali per-pixel. Setelah itu akan dilakukan filter terhadap noise.
Gambar 1. Contoh Tanda Tangan
Metode Stroke Histogram merupakan metode yang mengenali suatu tanda tangan dengan menghitung keseluruhan distribusi dari lekuk yang ada.
Lekuk dari suatu kurva pada setiap titik merupakan sudut dari garis singgung
terhadap kurva di titik itu. Suatu tanda tangan terdiri dari susunan kurva yang kompleks, dan itu seharusnya memungkinkan untuk mengukur lekuk di kebanyakan titik yang ada. Garis singgung tersebut dapat dihitung dengan meletakkan kotak kecil di tengah-tengah setiap batasan pixel, katakan 5*5 pixel. Semakin besar ukuran pixel yang digunakan akan semakin baik, seperti contohnya 11*11.
Berikut adalah contoh peletakan kotak kecil :
Gambar 2. Contoh Meletakkan Kotak Kecil
Idenya yaitu untuk menghitung sudut yang tampak dari garis singgung di setiap pixel dari image tanda tangan. Sudut yang digunakan yaitu -90 derajad sampai 90 derajad. Langkah pertama yaitu dengan membaca image lalu resolusinya diperkecil apabila image yang dibaca memiliki resolusi yang besar. Setelah itu baru dihitung sudutnya yaitu dengan menentukan parameter dari garis lurus yang kira-kira terbaik untuk pixel hitam di area 5*5 yang diletakkan di tengah-tengah pixel yang menjadi target.
Bentuk matematika yang umum untuk garis lurus yaitu : AX + BY + C = 0
Dimana A, B dan C adalah parameter yang mendefinisikan posisi dari garis dan orientasinya. X dan Y merupakan koordinat horizontal dan vertical.
Jika sudut dari garis yang terletak pada poros horizontal adalah Ø maka nilai yang terbaik untuk A yaitu cos ( Ø + PI/2 ) dan nilai B yaitu ( 1 – A*A )1/2.
Formula ini berarti bahwa A2 + B2 = 1. Lalu nilai konstan C dapat diketahui dengan rumus C = -AX – BY.
Garis yang terbaik dapat ditemukan dengan mencoba semua sudut antara -90 derajad sampai 90 derajad, dengan asumsi bahwa garis tersebut melewati paling tidak 1 buah pixel hitam dalam kotak berukuran 5*5 tersebut. Jika semua pixel hitam terbujur tepat pada garis, maka jumlahnya 0 dan dengan memilih garis yang memiliki jumlah paling sedikit maka garis tersebut merupakan garis yang terbaik.
Nilai yang didapatkan akan ditampilkan di dalam bentuk histogram.
Jadi nantinya, untuk setiap tanda tangan akan memiliki histogram dan histogram tersebut yang akan dibandingkan untuk mengecek keaslian tanda tangan.
Gambar 3. Contoh Hasil Gambar Ke Bentuk Histogram
D = a.b / a.a+b.b-a.b
Rumus ini digunakan untuk menghitung jarak atau perbedaan antara 2 histogram. Nilai dari D akan berada diantara 0 dan 1. Jika D bernilai tepat 0
maka kedua tanda tangan tersebut benar-benar berbeda atau palsu, sedangkan bila D nilai nya tepat 1 maka kedua tanda tangan itu benar-benar sama atau asli.
7. Metode Penelitian
Langkah-langkah dalam pengerjaan Tugas Akhir:
1. Studi Literatur
Dilakukan studi literatur untuk mempelajari algoritma Stroke Histogram (algoritma yang digunakan untuk identifikasi tanda tangan), pemakaian Microsoft Visual C++ 6.0, serta library tambahan yaitu Intel Image Processing Library (IPL), dan Intel Open Source Computer Vision (OpenCV).
2. Analisa dan Desain
Dilakukan analisa dan desain terhadap penerapan algoritma tersebut ke dalam perangkat lunak.
3. Pengkodean
Dilakukan proses pengkodean dengan memakai bahasa pemrograman Microsoft Visual C++ dengan bantuan beberapa library tambahan seperti yang telah dijelaskan sebelumnya.
4. Pembuatan Database
Dilakukan pembuatan database tanda tangan yang akan digunakan sebagai acuan dalam implementasi program, dan melakukan training database.
5. Implementasi
Dilakukan implementasi terhadap perangkat lunak yang telah dibuat.
6. Pengujian Sistem
Dilakukan pengujian sistem, yaitu terhadap sistem pengenalan tanda tangan, toleransi slope, variasi noise.
7. Kesimpulan
Dilakukan evaluasi hasil pengujian perangkat lunak sampai didapatkan hasil yang optimal.
8. Relevansi
Aplikasi pelacakan dan pengenalan tanda tangan ini dapat diterapkan dalam kehidupan sehari-hari, misalnya untuk memberikan ijin mencairkan cek terhadap seorang nasabah yang bersangkutan, atau dapat juga dipakai untuk pengesahan suatu dokumen-dokumen penting seperti surat kuasa, surat warisan.
Aplikasi ini dapat dikembangkan lebih lanjut dengan mengenali beberapa objek sekaligus.
9. Jadwal Kegiatan
10. Daftar Pustaka
Intel Open Source Computer Vision Library – Reference Manual. Intel Corporation, U.S.A, 2001. PDF
“Biometric Research” Parker J.R . University of Calgary.
<http://pages.cpsc.ucalgary.ca/~parker/biometrics>.
Deitel, Harvey M. and Deitel, Paul J. C++ How To Program Third Edition.
New Jersey: Prentice-Hall Inc., 2001.
Intel Image Processing Library – Reference Manual. U.S.A: Intel Corporation, 2000.
KEGIATAN BULAN I II III IV Studi Literatur
Analisa dan Desain
Pengkodean Pembuatan Database
Implementasi Pengujian Sistem
Kesimpulan