42
3.1 GAMBARAN SINGKAT MENGENAI SISTEM PENGENALAN IRIS Pada masa sekarang ini sering kita jumpai system pengenalan individu melalui organ – organ pada tubuh atau lebih dikenal dengan biometric. Teknologi pengenalan biometric adalah sebuah metode yang berjalan secara otomatis mengenali seseorang berdasarkan karakteristik fisik dan karakteristik kebiasaan, misalnya berdasarkan karakteristik fisik adalah pengenalan melalui telapak tangan , sidik jari, wajah, retina dan iris mata. Sedangkan contoh untuk berdasarkan karakteristik kebiasaan adalah pengenalan melalui tanda tangan dan suara.
Pengenalan iris dilakukan dengan membandingkan iris mata dari seseorang dengan data yang ada.
Gambar 3.2 daerah yang akan diproses
Daerah yang akan diambil sebagai acuan untuk melakukan pencocokan adalah lingkaran yang mengelilingi pupil yang berbentuk seperti donat.
Gambar 3.3 proses iris scan Pengambilan citra input melalui kamera Preprosesing pada citra Pengekstrakan template dari citra Modul pembacaan mata Pencocokan template yang diuji dengan template yang disimpan
Auntetifikasi dari hasil matching
Output dari hasil
autentifikasi melaui alat fisik
Template database
3.2 PENGAMBILAN INPUT
Pengambilan sample atau gambar iris mata tidak dapat dilakukan dengan kamera normal tetapi menggunakan kamera dengan spesifikasi khusus. Dengan menggunakan kamera khusus maka akan didapatkan kualitas gambar yang tinggi.
Kamera yang digunakan adalah kamera yang memiliki resolusi yang tinggi dan memiliki sinar inframerah. Sinar inframerah berguna untuk menghalangi sinar pantulan pada iris sehingga akan di dapat gambar pola iris dengan kualitas yang baik.
Gambar 3.5 Contoh Citra hasil Input
3.3 TAHAP PREPROSESING 3.3.1 Tahap Segmentasi
Tahap segmentasi/lokalisasi merupakan tahap yang sangat penting dalam kesuksesan pengenalan iris. Karena jika sebuah citra gagal direpresentasikan dapat mengakibatkan kesalahan/kerusakan pada template yang dihasilkan dan menghasilkan pengenalan iris yang buruk.
Untuk memulai tahap segmentasi, digunakan fungsi transformasi hough. Karena transformasi hough merupakan algoritma pada computer vision yang digunakan untuk mencari bentuk geometrik seperti garis dan lingkaran. Operator ini dapat menentukan lingkaran dalam dan luar iris serta lingkaran dalam dan luar dari pupil, juga dapat menentukan lengkungan dari kelopak mata atas dan bawah.
0
2 2 2+
−
=
r
y
x
c cLangkah pertama yang dilakukan adalah mencari edgemap dengan menggunakan teknik deteksi sisi dari citra mata yang kemudian hasilnya akan dilakukan thresholding. Setelah edgemap didapat, transformasi hough dilakukan dengan mempassing parameter dari nilai x , y dan radius pada lingkaran yang melalui titik batas citra.
Titik maksimum dari ruang hough akan korespon dengan panjang radius dan titik tengah lingkaran yang telah didapat dari hasil edgemap.
Tahap selanjutnya adalah untuk mengisolasi citra iris. Penggunaan transformasi hough parabolic untuk mendeteksi kelopak mata dan bulu mata. Digunakan fungsi berikut:
(
)
(
)
(
x
h
jsin
θ
jy
k
jcos
θ
j)
a
j(
(
x
h
j)
cos
θ
j(
y
k
j)
sin
θ
j)
2
=
−
+
−
−
+
−
−
Dari hasil turunan pertama dibiaskan dengan gradient horizontal untuk mendeteksi kelopak dan bulu mata, sedangkan gradient vertikal untuk mendeteksi iris dan pupil pada mata.
Gambar 3.6 Gradient Horizontal dan Vertical
Gambar 3.7 hasil dari transformasi hough
Dari gambar diatas terlihat bahwa kelopak mata dari citra dideteksi sebagai noise, karenanya hasil output segmentasi menampilkan bentuk persegi panjang berwarna hitam sebagai penanda noise. Hal ini tidak terbatas hanya pada kelopak mata, deteksi juga bisa dilakukan pada glare, atau derau lain yang mungkin bisa terjadi pada mata.
Flowchart untuk segmentasi
Cari lingkaran pada citra
Cari garis pada citra Canny
Cari koordinat garis Citra iris
penuh?
Transformasi hough
Cari koordinat lingkaran tidak
Ya
Baca citra
Hasil segmentasi
Gambar garis pada citra
Gambar lingkaran pada citra Generate edge image
3.3.2 Tahap Normalisasi
Tahap selanjutnya adalah tahap normalisasi. Tahap ini mengubah bentuk pola iris yang berbentuk lingkaran direpresentasikan ke bentuk persegi panjang yang memiliki dimensi tetap untuk perbandingan iris.
Normalisasi dilakukan untuk mengurangi masalah perhitungan yang terjadi pada pola iris karena pengaruh kontraksi dan dilasi dari pupil karena faktor perbedaan cahaya, jarak antar kamera dan pergeseran sudut kepala.
Normalisasi akan menghasilkan daerah iris yang memiliki dimensi tetap, jadi bila ada 2 foto iris yang sama difoto dalam kondisi yang berbeda akan menghasilkan karakteristik yang sama.
Bentuk teknik normalisasi salah satunya ada Daugmann Rubber Sheet, contoh pada gambar di bawah ini
Sistem Daugmann menggunakan koordinat polar untuk normalisasi, oleh karena itu dalam bentuk polar filter dapat dimodelkan sebagai :
Dalam tahap normalisasi, titik tengah pupil digunakan sebagai referensi dalam pembentukan transformasi koordinat polar. Pada figur diatas data dipilih sepanjang garis radius(r) dengan sudut θ . Besarnya nilai garis antara batas luar pupil dan iris disebut sebagai resolusi radial(r). Jumlah garis pada r di sepanjang daerah iris dikatakan sebagai resolusi angular(Θ) 2 2 ' I
r
r
=
α
β
±
αβ
−
α
−
Dengan:⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
−
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
=
+
=
θ
π
β
α
x y y xo
o
o
o
arctan
cos
2 2 Keterangan:Ox = selisih jarak antar koordinat x pada tepi iris dengan tepi pupil Oy = selisih jarak antar koordinat y pada tepi iris dengan tepi pupil
π = besar sudut lingkaran(360) θ = nilai sudut di region iris
'
r = nilai r yang baru
Langkah langkah normalisasi
• Ambil koordinat titik tengah iris (Xr,Yr) • Ambil koordinat titik tengah pupil(Xp,Yp) • Hitung selisih koordinat x (Xr – Xp)
• Hitung selisih koordinat y (Yr – Yp)
• Karena nilai r tidak selalu sama, maka perlu dicari '
r sebagai nilai r di sudut θ
• Cari nilai sisi miring dari = x² + y²
• Cari nilai β, sebagai nilai dari sudut untuk membantu pencarian ' r ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − ⎟⎟ ⎠ ⎞ ⎜⎜ ⎝ ⎛ − = π θ β x y o o arctan cos • Hitung nilai '
r = β ± , sebagai nilai r yang baru • Alokasikan array 2D untuk menampung template
• Untuk setiap r simpan point-point yang ada pada sudut θ pada array 2D template yang telah dibentuk
• Petakan isi template yang telah ditampung sebelumnya ke dalam bentuk persegi panjang dengan dimensi x = r dan dimensi y = θ
Gambar 3.9 Hasil Normalisasi
Pola normalisasi didapat dengan cara backtracking untuk mendapatkan koordinat kartesian pada data di titik angular dan radial. Pola normalisasi 2D akan didapat dengan dimensi horizontal sebagai resolusi angular dan dimensi vertikal sebagai resolusi radial.
Sebuah array 2D dibentuk untuk mendeteksi noise yang telah terdeteksi pada tahap segmentasi. Tanpa adanya array 2D ini, noise yang telah dideteksi sebelumnya akan ikut diproses dalam tahap normalisasi sehingga pola normalisasi yang dihasilkan tidak akan akurat.
3.4 TAHAP FITUR EKSTRAKSI 3.4.1 Log Gabor
Agar dapat menyediakan informasi yang akurat, Pola iris yang diskriminan harus diekstrak. Kebanyakan sistem pengenalan iris menggunakan band pass decomposition untuk citra iris untuk membentuk template biometrik.
Template yang dihasilkan dari pengekstrakan fitur juga membutuhkan ukuran matching yang sesuai, memberikan pengukuran kesamaan antara 2 pola iris yang diuji. Pengukuran akan menghasilkan nilai ketika membandingkan kedua pola iris. Sehingga dari hasil pengukuran kita dapat menentukan keputusan dengan keakuratan tinggi apakah itu iris dari orang yang sama atau bukan.
Salah satu metode dalam pengekstrakan fitur adalah dengan menggunakan Log Gabor filter. Alasan digunakannya log gabor filter, karena filter ini dapat menangani masalah seperti rotasi dan jarak mata lebih baik dibandingkan gabor biasa, dan log gabor dapat mengkodekan citra alami lebih baik karena filter menunjukan hasil translasi pada citra dengan frekuensi tinggi di atas frekuensi rendah, yang berarti log gabor dapat menghasilkan citra dengan lebih akurat.
0 50 100 150 200 250 0 5 10 15 20 -0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04 0.05 angular Grafik nilai real
radial n ila i in te n s it a s 0 50 100 150 200 250 0 5 10 15 20 -0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04 angular Grafik nilai imaginer
radial n ila i in te n s it a s
Gambar 3.10 contoh grafik nilai real dan imaginer
( )
(
(
)
)
(
)
(
)
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛ −
=
2 0 2 0/
log
2
/
log
exp
f
f
f
f
G
σ
f = frekuensi awal fo = frekuensi pusatσ = standar deviasi frekuensi domain
Dari hasil filtering dengan menggunakan log gabor didapatkan hasil berupa nilai kompleks. Dari nilai kompleks tersebut kita bisa mengambil nilai real dan imajinernya, yang akan digunakan untuk transformasi koordinat polar pada citra. Setiap hasil konvolusi yang kurang dari 0 akan di-jadikan 0, dan setiap nilai real dan imaginer akan di letakkan dalam suatu penampung yang sering disebut iris code.
3.5 TAHAP MATCHING
Matching dilakukan dengan perhitungan hamming distance (HD) dari perbandingan iriscode inputan dengan iriscode yang ada pada database. Sebelum proses matching akan dilakukan proses binerisasi terhadap iris code yang telah didapat pada proses sebelumnya. Setelah dilakukan perhitungan HD kepada setiap data pada database, maka pengambilan keputusan akan diambil pada data yang memiliki nilai HD terkecil.
Perhitungan humming distance dengan menggunakan rumus:
Hamming Distance =
(
)
maskB maskA maskB maskA CodeB CodeA ∩ ∩ ∩ ⊗ Dimana:Code A : iris code input Code B : iris code database Mask A : Masking untuk code A Mask B : Masking untuk code B
Penggunaaan Operator Exclusive OR(XOR) digunakan untuk mendeteksi perbedaan dari pasangan bit dari iris yang akan diuji, sementara operator AND digunakan untuk memastikan bit yang dibandingkan, keduanya dianggap tidak rusak karena bulu mata, kelopak mata, pantulan cahaya atau derau lainnya. Nilai 0 akan dihitung sebagai kecocokan antar iris.
Menurut Daugmann, implementasi dari perhitungan Hamming Distance dalam mesin berbasiskan 32 bit memungkinkan perbandingan iris code dengan
tingkat kecepatan yang sangat tinggi dalam mencari dan membandingkan dengan database yang ada untuk menemukan kecocokan.
Pada komputer dengan kecepatan prosesor 300 MHZ pencarian dapat dilakukan dengan pembandingan 100.000 iris dalam waktu 1 detik, sementara komputer dengan kecepatan 3 GHZ dapat membandingkan iris sebanyak 1 juta hanya dalam waktu 1 detik.
Meskipun dalam teori, kenyataannya tidak ada iris dengan tingkat HD 0.0, sekalipun iris dalam database milik orang yang sama dengan iris input. Karena beberapa faktor seperti normalisasi yang tidak sempurna, dan ada kemungkinan noise yang tidak terdeteksi sebelumnya.
Karena itu untuk mengurangi ketidak akuratan seperti ini, maka Hamming Distance dari 2 template dihitung, 1 template dipindahkan bitnya ke kiri dan kanan untuk setiap shift yang berhasil. Perpindahan shift dari bit dilakukan horizontal sesuai dengan perputaran daerah citra iris asli dengan sudut yang diberikan dan resolusi yang digunakan. Jika resolusi sudut yang digunakan adalah 180, maka perpindahan shift dilakukan sebesar 2 derajat pada setiap daerah iris. Metode ini diajukan oleh Daugman dan mengoreksi kesalahan pada Hamming Distande karena normalisasi yang tidak sempurna.
Dari perhitungan yang dilakukan hanya nilai HD terendah yang diambil, karena semakin rendah maka semakin cocok citra input dengan citra database.
Setelah dilakukan nilai HD akan dilakukan proses pergeseran bit untuk mendapatkan nilai yang maksimal.
3.6 RANCANGAN TAMPILAN LAYAR
State transition diagram yang digunakan adalah untuk menunjukan langkah langkah yang ada pada program dari dan kemana program berjalan. Di bawah ini STD yang digunakan
Gambar 3.12 State Transition Diagram Mulai program Load image 1 Load image 2 Dialog Browse Image1 Dialog Browse Image2 Proses Recognition Clear Bersihkan Image Keluar program
Dengan menggunakan STD diatas kita dapat merancang desain program dengan komponen sebagai berikut:
Gambar 3.13 Gambar Rancangan Antar muka Komponen menu berisi:
- Import mata 1 : Digunakan untuk mengambil image mata 1 - Import mata 2 : Digunakan untuk mengambil image mata 2 - Clear : Untuk membersihkan axes
- Exit : Untuk keluar dari program Menu
Axes untuk image1 Axes untuk image2
Proses
Nilai Hamming Distance
3.7 PSEUDO CODE
Baca image
Parameter angular dan radial polar
Parameter fitur ekstraksi
Image sudah diproses sebelumnya?
Ambil nilai koordinat lingkaran iris
Ambil nilai koordinat lingkaran pupil
belum
Sudah Jalankan segment iris
Gambar 3.14 Flow chart create iris templates
Fungsi create iris templates merupakan fungsi utama, yang akan memanggil fungsi fungsi lainnya untuk diproses, Hasil keluaran dari create iris templates adalah image berupa polar template dari citra iris dan polar noise yang berguna untuk mendeteksi noise pada polar template
Lakukan Normalisasi
Jalankan fungsi encode sebagai ekstrak fitur
Template Mask
Baca Image
Hitung nilai theta Ambil nilai parameter
angular dan radial
Ambil nilai jari-jari dan koordinat pusat iris dan pupil
Hitung radius iris per sudut
Cari koordinat kartesian di sekitar region iris
Gambar 3.15 Flow chart untuk normalisasi
Fungsi normalisasi dipanggil melalui create iris template, fungsi ini akan mengembalikan nilai berupa 2 array 2D, yaitu array untuk polar dan yang satu lagi array untuk noise. Kedua array ini akan digunakan untuk proses feature ekstraksi.
Lakukan interpolasi, bentuk polar array
Bentuk noise array dari polar array
Baca Image 1
Create iris tempate untuk image 1
Baca Image 2
Create iris tempate untuk image 2
Ubah kedua template menjadi logical (true/false)
Gambar 3.16 Flow chart untuk Get Hamming Distance Geser bit untuk setiap template
dan mask
1
XOR
Template 1 Template 2
Jumlahkan seluruh bit untuk setiap template Hamming Distance Shift < filter? Shift += 1 Ya Tidak
Fungsi hamming distance akan mengembalikan nilai dari perbandingan bit yang tidak cocok ( bernilai 1 karena penggunaan operator XOR) sehingga akan didapat seberapa mirip template yang dibandingkan
Pendeteksian tepi menggunakan fungsi canny dan juga fungsi-fungsi lainnya untuk membentuk edgeimage digunakan menentukan bagian iris dan kelopak mata dengan membiaskan fungsi gradient pada edgeimage, Secara garis besar tahapan pendeteksian tepi dijalankan sebagai berikut:
1. Tahap Canny
• Baca citra hasil grayscale
• Tentukan ukuran filter yang akan digunakan.
• Lakukan Penghalusan dengan menggunakan fungsi Gauss sebanyak filter yang telah ditentukan sebelumnya
• Citra yang digunakan harus diskalakan ulang ke ukuran yang sesuai agar hasil citra yang diproses lebih dapat diandalkan untuk proses berikutnya • Hitung gradient amplitudo untuk pembiasan citra
• Hitung sudut orientasi untuk peredaman titik non maksimum
2. Tahap Penyesuaian Gamma
• Ambil nilai gradient amplitudo hasil dari tahap canny • Masukan nilai input gamma (gamma > 0)
• Nilai gradient baru didapat dengan mem-pangkatkan matriks gradient dengan 1/nilai gamma
3. Tahap Peredaman titik non maksimum
Tepi harus ditempatkan pada titik maksimum, titik yang non maksimum harus diredam agar tepi yang dihasilkan sesuai dengan yang diinginkan.
• Alokasikan memory untuk citra output
• Hitung nilai awal x dan y off set relatif terhadap titik tengah piksel untuk setiap sudut orientasi yang diuji (sudut orientasi harus dimulai dari 0) dan juga hitung fraksional off set untuk x dan y
• Untuk setiap baris dan kolom dari matriks gradient, hitung nilai batas atas dan batas bawah dari piksel tetangga ((x,y+1);(x-1,y+1);(x-1,y);(x-1,y-1);(x,y-1);(x+1,y-1);(x+1,y);(x+1,y+1)) dari piksel yang diuji(x,y) dengan metode interpolasi bilinear untuk mendapatkan nilai dari piksel yang diuji(x,y)
• Cari selisih batas atas dan batas bawah lalu kalikan dengan penjumlahan batas atas dan fraksional offset y tampung di satu variabel (misalnya a) • Jika matriks output yang telah diprealokasikan sebelumnya memiliki nilai
lebih besar dari a lakukan langkah yang sama untuk piksel di sisi lain, dan tampung hasilnya di variabel b
• Bila matriks output memliki nilai lebih besar dari b maka titik tersebut merupakan titik maksima, dan untuk setiap titik maksima yang didapat tampung hasilnya di matriks output
4. Tahap Hysteresis Threshold
Tahap ini dijalankan untuk mengenerate image output berupa edgeimage, yang mana image dengan edgepoint yang lebih besar dari threshold yang telah dimasukan akan ditandakan sebagai tepi
• Baca image output dari fungsi non maksima • Ambil nilai threshold batas atas dan batas bawah
• Cek threshold, bila lebih kecil dari 0 maka fungsi tidak akan dijalankan
• Ubah matriks citra menjadi kolom, kemudian cari indeks matriks yang nilainya lebih besar dari batas atas threshold kemudian hitung jumlah indeks yang ditemukan
• Bentuk stack array untuk menampung edgepoint
• Indeks yang memiliki nilai lebih besar dari batas atas akan ditampung ke dalam stack array
• Cari matriks piksel tetangga di sekitar piksel yang diuji, kemudian maukkan semuanya ke dalam stack array
• Selama isi stack array masih ada, uji setiap indeks yang ada dalam stack array, bila nilai indeks tersebut lebih besar dari batas bawah threshold maka, tandakan indeks tersebut sebagai edgepoint. Bila lebih kecil dari batas bawah, pop up indeks tersebut dari stack array • Ganti semua nilai matriks selain edgepoint menjadi 0
Segmentasi membutuhkan fungsi untuk menggambar lingkaran pada citra iris, fungsi tersebut berguna dalam pendeteksian batas tepi iris dan pupil.
5. Hough Circle
Fungsi hough circle berguna untuk mendeteksi bentuk geometri sederhana seperti garis dan lingkaran
• Baca edgeimage yang telah digenerate dari fungsi hysthresh
• Masukkan nilai radius minimum(r_min) dan maksimum(r_max) dari lingkaran yang ingin dicari
• Hitung selisih radius (r_max – r_min + 1)
• Untuk setiap edgepoint, gambar lingkaran dengan selisih radius yang telah dihitung sebelumnya dengan menjalankan fungsi addcircle
6. Add Circle
• Input array 2D dari hasil transformasi Hough
• Input nilai weight, dan koordinat (x,y) titik tengah lingkaran • Cari semua koordinat x
• Cari koordinat y
• Masuk koordinat x dan y ke dalam simetri 8 arah untuk mencari koordinat lingkaran
• Pisahkan point-point yang berada di luar batas • Dapatkan array lingkaran
7. Find Circle
• Input matriks citra, radius luar iris dan radius dalam iris • Generate edgeimage
• Lakukan transformasi hough
• Hitung selisih radius luar iris dan radius dalam iris
• Cari nilai maksimum dari ruang hough sebanyak selisih radius, Kelompokan setiap matriks menjadi beberapa layer (bergantung besarnya dimensi), kemudian cari nilai maksimum dari setiap layer
• Kembalikan nilai maksimum yang didapat untuk setiap baris dan kolom 8. Circle Coord
• Ambil nilai variabel yang berisi input array yang berisi koordinat titik tengah dari lingkaran (misalnya c)
• Masukkan nilai radius dari lingkaran (r) • Bentuk matriks θ untuk sudut yang dicari
• Hitung koordinat X yang baru dari perhitungan r*cos θ + c(1) • Hitung koordinat Y yang baru dari perhitungan r*sin θ + c(2)
• Simpan koordinat x dan y yang baru sebagai koordinat piksel dari lingkaran
9. Find Line
• Baca image
• Generate edgeimage
• Lakukan transformasi Radon dengan edge image dan sudut θ (0-180°) • Bentuk koordinat x dan y yang baru dari hasil transformasi Radon • Generate array untuk garis
10. Line Coord
• Simpan koordinat x dan y
• Sesuaikan y dengan ukuran gambar sumbu y • Pemberian nilai y pada sumbu y
11. Gabor Convolve
Fungsi Gabor convolve adalah untuk mengkonvolusikan setiap baris matrisk citra dengan fungsi log gabor
• Baca citra kemudian ubah menjadi bentuk array 2D
• Banyaknya data yang diproses sama dengan banyaknya kolom dari array • Set frekuensi radius antara 0- 0,5
• Inisialisasikan panjang gelombang filter (wavelength)
• Lakukan langkah berikut sebanyak jumlah filter yang digunakan i. Hitung frekuensi pusat dari filter fo = 1/wavelength ii. Hitung radius dari frekuensi pusat rfo = fo/0,5
iii. Gunakan fungsi log gabor
⎟⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜⎜
⎜
⎜
⎜
⎜
⎝
⎛
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
−
2 0 2 0log
2
log
exp
f
f
radius
σ
iv. Kemudian simpan hasil dari fungsi log gabor ke variabel filter v. Sebanyak jumlah baris pada matriks citra, jalankan:
1. Petakan nilai anggota dari matriks untuk tiap-tiap baris ke satu variabel (signal)
2. Gunakan fungsi Fast fourier transform pada variabel signal untuk mengubah sinyal gelombang menjadi bentuk diskrit
3. Kemudian konvolusikan hasil inverse transformasi fourier dengan filter yang telah dicari sebelumnya
vi. Terakhir hitung panjang gelombang untuk filter berikutnya 12. Encode
• Gambar yang telah dinormalisasi di lakukan proses konvolusi gabor • Buat penampung untuk template dan mask
• Lakukan sebanyak filter yang digunakan:
• Pisahkan nilai real dengan imaginer pada baris ke-n
• Lakukan sebanyak ukuran dari gambar yang sudah di normalisasi: • Masukan nilai real dan imaginer kedalam penampung template
dan mask 13. Shift Bits
• Buat penampung untuk template yang baru
• Jika noshiftbit = 0 maka template baru = template lama
• Jika noshiftbit < 0 maka template baru = geser posisi bit template lama ke kiri sebanyak noshiftbit
• Jika noshift bit > 0 maka template baru = geser posisi bit template lama ke kanan sebanyak noshiftbit
14. Find Circle
• Hitung radius dengan cara radius atas dikali dengan scaling faktor lalu radius bawah dikali dengan scaling faktor kemudian hasil dari perkalian radius atas dengan radius bawah dikurangi dan hasil tersebut yang digunakan sebagai nilai radius
• Jalankan fungsi canny untuk mendapatkan gradient amplitudo untuk pembiasan citra dan sudut orientasi untuk peredaman titik non maksimum • Jalankan adjgamma dengan inputan image yang didapat dari fungsi canny • Jalankan fungsi peredaman titik non maksimum dengan inputan hasil
dari adjgamma
• Cari edge image dengan menjalankan fungsi hysthresh dengan inputan hasil dari fungsi peredaman maksimum
• Jalankan houghcircle untuk mendapatkan perkiraan lingkaran
• Cari nilai maksimum yang ada pada lingkaran dari hough circle dari pusat lingkaran sampai radius yang telah dicari