TESIS
LIDYA ROSNITA
147038058
TESIS
LIDYA ROSNITA
147038058
Komisi Pembimbing
Pembimbing 2, Pembimbing 1,
Dr. Syahril Efendi, S.Si, M.IT Prof. Dr. Muhammad Zarlis, M.Sc
Diketahui/disetujui oleh
Program Studi S2 Teknik Informatika
Ketua,
PERNYATAAN
TESIS
Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Lidya Rosnita
147038058
iii
Sebagai sivitas akademika Universitas Sumatera Utara, saya yang bertanda tangan
dibawah ini:
Nama : Lidya Rosnita
NIM : 147038058
Program Studi : Magister Teknik Informatika
Jenis Karya Ilmiah : Tesis
Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada
Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive
Royalty Free Right) atas tesis saya yang berjudul:
Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non-
Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media,
memformat, mengelola dalam bentuk database, merawat dan mempublikasikan tesis
saya tanpa meminta izin dari saya selama tetap mencantumkan nama saya sebagai
penulis dan sebagai pemegang dan/atau sebagai pemilik hak cipta.
Lidya Rosnita
147038058
iv
RIWAYAT HIDUP
DATA PRIBADI
Nama Lengkap : Lidya Rosnita
Tempat dan Tanggal Lahir : Lhokseumawe, 14 Juli 1992
Alamat Rumah : Jl. Cendana, No. 18, Lancang Garam
Kecamatan Banda Sakti, Kota Lhokseumawe
Telepon/Fax/HP : 085362716267
Email : lidya.coretz@gmail.com
Instansi Tempat Bekerja :-
Alamat Kantor :-
DATA PENDIDIKAN
SD : SD Swasta Muhammadiyah 6 Lhokseumawe TAMAT : 2003
SMP : SMP Negeri 1 Lhokseumawe TAMAT : 2006
SMA : SMA Negeri 2 Lhokseumawe TAMAT : 2009
S1 : Teknik Informatika Universitas Malikussaleh TAMAT : 2014
S2 : Teknik Informatika Universitas Sumatera Utara TAMAT : 2016
vi
Puji dan syukur penulis panjatkan kehadirat Allah SWT atas berkah, rahmat dan
karunianya berupa pengetahuan, kesehatan dan kesempatan yang diberikan kepada
penulis sehingga dapat menyelesaikan tesis dengan judul “UNJUK KERJA
ALGORITMA BAM DAN ALGORITMA FAM UNTUK SISTEM
PENDETEKSIAN POLA TAJWID PADA CITRA AL-QUR‟AN”.
Dalam penyusunan untuk menyelesaikan tesis ini, penulis banyak mendapati
pelajaran yang besar, baik berupa saran maupun nasehat dari berbagai pihak terutama
dari dosen pembimbing serta dari dosen pembanding, sehingga pengerjaan tesis ini
dapat diselesaikan dengan baik. Tidak lepas dari dukungan orang tua, yang juga telah
banyak memberikan bantuan sehingga penulis dapat sampai pada tahap penyelesaian
tesis ini.
Untuk itu penulis ingin menyampaikan ucapan terima kasih yang sebesar-
besarnya kepada:
1. Bapak Prof. Dr. Runtung Sitepu, S.H., M.Hum., selaku Rektor Universitas
Sumatera Utara atas kesempatan yang telah diberikan kepada penulis sehingga
bisa mengikuti dan menyelesaikan pendidikan Magister Teknik Informatika
2. Bapak Prof. Dr. Opim Salim Sitompul, selaku Dekan Fakultas Ilmu Komputer
dan Teknologi Informasi Universitas Sumatera Utara Medan.
3. Bapak Prof. Dr. Muhammad Zarlis, M.Sc. Ketua Program Studi Pascasarjana
Teknik Informatika Fakultas Ilmu Komputer dan Teknologi Informasi
Universitas Sumatera Utara Medan dan juga Selaku Dosen Pembimbing I yang
telah bersedia memberikan bimbingan serta pengarahan hingga selesainya
penulisan tesis ini.
4. Bapak Dr. Syahril Efendi, S.Si., M.IT. Selaku Dosen Pembimbing II yang
telah bersedia memberikan bimbingan serta pengarahan hingga selesainya
penuliasn tesis ini.
5. Bapak Prof. Dr. Tulus Vor. Dipl, Math., M.Si. Selaku Dosen
Pembanding/Penguji I yang telah memberikan saran untuk perbaikan dan
penyelesaian tesis ini.
vii
Penulis menyadari bahwa masih ada kekurangan dalam penulisan tesis ini, untuk itu,
penulis mengharapkan kritik dan saran dari pembaca demi kesempurnaan penelitian
selanjutnya.Akhir kata penulis berharap semoga karya ilmiah ini dapat bermanfaat
bagi semua pihak, khususnya dalam bidang pendidikan.Penulis menyadari bahwa
masih ada kekurangan dalam penulisan tesis ini, untuk itu, penulis mengharapkan
kritik dan saran dari pembaca demi kesempurnaan penelitian selanjutnya.
Lidya Rosnita
147038058
viii
ABSTRAK
Pada umumnya didalam dunia pengolahan citra untuk mengenali sebuah pola dapat
diberikan beberapa pelatihan terlebih dahulu. Didalam penelitian ini pendeteksian pola
tajwid pada citra Al-Qur‟an menggunakan empat pola tajwid iqlab, dengan dua
algoritma yang berbeda, yaitu algoritma Bidirectional Associative Memory dan
algoritma Fuzzy Associative Memory yang kemudian akan diukur unjuk kerjanya
berdasarkan delapan nilai sensitif yang berbeda. Berdasarkan hasil komplesitas
algoritma, sistem pendeteksian pola tajwid pada citra Al-Qur‟an menggunakan
algoritma Bidirectional Associative Memory sama efektifnya dengan algoritma Fuzzy
Associaitve Memory. Hasil penelitian menunjukkan bahwa sistem pendeteksian pola
tajwid pada citra Al-Qur‟an menggunakan algoritma Bidirectional Associative
Memory memiliki kisaran true detection sebesar 72 % hingga 84 %. Sedangkan
dengan menggunakan algoritma Fuzzy Associative Memory memiliki kisaran true
detection sebesar 69 % hingga 84 %.
ABSTRACT
In general, in the world of image processing to recognize a pattern can be given some
training beforehand. In this paper, the pattern detection in the image of tajweed of the
Al-Qur'an uses four iqlab tajweed pattern, with two different algorithms, ie
Bidirectional Associative Memory algorithm and Fuzzy Associative Memory
algorithm which will then measured their performance based on eight different
sensitive values. Based on the results of the algorithm complexity, the detection
system in the image pattern of tajweed of the Al-Qur'an uses a Bidirectional
Associative Memory algorithm is same effective with Fuzzy Associative Memory
algorithm. The results showed that the detection system in the image pattern tajweed
of the Al-Qur'an uses a Bidirectional Associative Memory algorithm has a true
detection range of 72 % to 84 %. While using Fuzzy Associative Memory algorithm
has a true detection range of 69 % to 84 %.
DAFTAR ISI
PERSETUJUAN i
PERNYATAAN ii
PERNYATAAN PERSETUJUAN PUBLIKASI iii
PANITIA PENGUJI TESIS iv
RIWAYAT HIDUP v
UCAPAN TERIMA KASIH vi
ABSTRAK viii
ABSTRACT ix
DAFTAR ISI x
DAFTAR TABEL xii
DAFTAR GAMBAR xiv
BAB 1 PENDAHULUAN 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 5
1.3. Batasan Masalah 5
1.4. Tujuan Penelitian 5
1.5. Manfaat Penelitian 5
DAFTAR TABEL
Tabel 4.16. Hasil unjuk kerja sistem dengan nilai sensitif 250 pada
algoritma FAM 174
Tabel 4.17. Tabel keseluruhan pola dengan delapan nilai sensitif 184
xiii
DAFTAR GAMBAR
PENDAHULUAN
Al-Qur‟an adalah kitab suci umat islam dan Al-Qur‟an ditulis dalam bahasa arab
(Arshad, 2013). Bagi muslim, Al-Qur‟an merupakan firman Allah yang diwahyukan
kepada Nabi Muhammad SAW melalui malaikat jibril dengan lafal dan maknanya.
Al-Qur‟an merupakan mukjizat Nabi Muhammad SAW yang sangat berharga bagi
umat Islam hingga saat ini. Di dalammnya terkandung petunjuk dan pedoman bagi
umat manusia dalam mencapai kebahagiaan hidup baik di dunia maupun di akhirat.
Dalam membaca Al-Qur‟an agar dapat mempelajari, memahami isi dan makna
dari setiap ayat Al-Qur‟an yang dibaca, tentunya perlu mengenal dan mempelajari
ilmu tajwid, yakni tanda-tanda baca di dalam setiap huruf ayat Al-Qur‟an. Guna
tajwid ialah sebagai alat untuk mempermudah, mengetahui panjang pendek,
melafazkan dan hukum dalam membaca Al-Qur‟an. Ilmu tajwid ialah pengetahuan
tentang kaidah serta cara-cara membaca Al Qur‟an dengan sebaik-baiknya. Tujuan
ilmu tajwid ialah memelihara bacaan Al Qur‟an dari kesalahan dan perubahan serta
memelihara lisan (mulut) dari kesalahan membaca (Zarkasyi, 1987).
Jaringan syaraf tiruan telah dipercaya sebagai metode yang berguna untuk
menyelesaikan berbagai macam tipe permasalahan, salah satunya yaitu pengenalan
pola. Pola yang dimaksudkan di sini dapat berupa simbol, karakter, atau bentuk-
bentuk lain yang dapat dipakai untuk dijadikan kode privasi seperti sidik jari, deteksi
retina, deteksi wajah, deteksi karakter, dan lain sebagainya.
Dalam pendeteksian karakter, banyak algoritma yang dapat digunakan untuk
mengenali pola karakter tersebut, diantaranya yaitu algoritma Bidirectional
Associative Memory (BAM) dan algoritma Fuzzy Associative Memory (FAM).
Algoritma BAM adalah model jaringan syaraf yang memiliki dua lapisan, yaitu
lapisan input dan lapisan output yang mempunyai hubungan timbal balik antara
keduanya. Hubungan ini bersifat bidirectional, artinya jika bobot matriks dari sinyal
2
yang dikirim dari lapisan input X ke lapisan output Y adalah W, maka bobot matriks
dari sinyal yang dikirim dari lapisan output Y ke lapisan input X adalah WT (Sutojo,
T. et.al., 2011). Algortima BAM memungkinkan agar komputer mampu mengenali
pola yang kurang bagus dengan cara membandingkan pola masukan dengan pola yang
telah tersimpan didalam komputer.
Dalam penelitian yang dilakukan oleh Singh, et.al (2009) dalam jurnalnya
yang berjudul Bidirectional Associative Memory Neural Network Method in The
Character Recognition, melakukan penelitian menggunakan Bidirectional Associative
Memory untuk pengenalan pola abjad inggris (A-Z). Pendekatan optimal arsitektur
jaringan ini telah ditemukan, sehingga benar dapat mengklasifikasi atau mengenali
pola yang disimpan. Ketika bobot yang bervariasi secara acak untuk efek pada noise,
ketika angka acak yang ditambahkan dalam matriks bobot hanya karakter A telah
diakui benar. Ketika nomor acak ditambahkan setelah dibagi dengan 10 dalam matriks
bobot, dari semua enam karakter diakui dengan benar. Dalam BAM pola input
terdistorsi mungkin juga menyebabkan heteroassociation secara benar pada output.
Simetri logis dari interkoneksi sangat menghambat efisiensi BAM dipenyimpanan
pola dan kemampuan pemanggilan. Juga membatasi penggunanya untuk representasi
pengetahuan dan inferensi. Ada batasan pada angka dari pasangan pola, yang dapat
disimpan dan berhasil diambil.
Sedangkan algoritma FAM adalah jaringan yang bobot-bobotnya ditentukan
sedemikian rupa sehingga jaringan tersebut dapat menyimpan kumpulan
pengelompokan pola. Masing-masing kelompok merupakan pasangan vektor (s(p),
t(p)) dengan p = 1, 2, ..., p. Tiap-tiap vektor s(p) memiliki n komponen, dan tiap-tiap
t(p) memiliki m komponen. Bobot-bobot tersebut dapat ditentukan dengan
menggunakan Hebb rule atau delta rule. Jaringan ini nanti akhirnya akan
mendapatkan vektor ouput yang sesuai dengan vektor inputnya (x) yang merupakan
salah satu vektor s(p) atau merupakan vektor lain diluar s(p). Algoritma pembelajaran
yang biasa digunakan oleh jaringan ini adalah hebb rule dan delta rule. Algoritma
FAM dipilih karena metode ini lebih alami karena didasarkan pada pola kemiripan
sampel data yang sudah ada didalam sistem (Dewi, E.M. 2012).
Pada penelitian yang dilakukan oleh Zeng, et.al (2008) dalam jurnalnya yang
berjudul Research on Properties of Max-Product Fuzzy Associative Memory Network,
3
melakukan penelitian secara umum, adanya gangguan kecil antara pola yang diperoleh
dengan cara akuisisi tertentu dan sesuai pola yang sebenarnya dalam waktu nyata.
Seperti gangguan kecil dapat menyebabkan kerugian bagi beberapa kinerja dari
jaringan saraf fuzzy. Dengan demikian konsep baru didirikan dalam penelitian ini
bahwa ketahanan dari feed-forward fuzzy associative memory terhadap gangguan dari
pasangan pola pelatihan. Kemudian untuk fuzzy associative memory berbasis max-
produk (FAM Max-Produk), penyelidikan mengungkapkan bahwa seperti ketahanan
memori yang baik ketika algoritma pembelajaran fuzzy hebbian digunakan. Namun
menjadi buruk ketika algoritma pembelajaran lain yang digunakan.
Umumnya penelitian dalam pengenalan tajwid masih menggunakan
pengolahan sinyal dan suara. Berbagai pendekatan dan unjuk kerja dari berbagai
penelitian yang pernah dilakukan sebelumnya menggunakan pengolahan sinyal suara
disajikan dalam tabel 1.1.
Tujuan penelitian ini adalah untuk mengukur perbandingan unjuk kerja kedua
algoritma yaitu algoritma BAM dan algoritma FAM berdasarkan delapan nilai sensitif
yang berbeda dalam sistem pendeteksian pola tajwid iqlab pada citra Al-Qur‟an.
LANDASAN TEORI
Menurut Darma Putra (2010) secara umum, pengolahan citra digital menunjuk pada
pemrosesan gambar dua dimensi menggunakan komputer. Dalam konteks yang lebih
luas, pengolahan citra digital mengacu pada pemrosesan setiap data dua dimensi. Citra
digital merupakan sebuah larik (array) yang berisi nilai-nilai real maupun kompleks
yang dipresentasikan dengan deretan bit tertentu.
Komputer dapat mengolah isyarat-isyarat elektronik digital yang merupakan
sinyal biner (bernilai dua: 0 dan 1). Untuk itu citra digital harus mempunyai format
tertentu yang sesuai sehingga dapat mempresentasikan objek pencitraan dalam bentuk
kombinasi data biner (Nugroho, et.al. 2012).
Agar citra digital dapat diolah oleh komputer digital, maka suatu citra harus
direpresentasikan secara numerik dengan nilai-nilai yang diskrit atau diistilahkan
sebagai nilai intensitas cahaya. Nilai-nilai intensitas cahaya tersebut direpresentasikan
sebagai nilai-nilai kanal pada citra digital. Untuk citra 8 bit akan memiliki satu kanal
yang mengandung sekumpulan nilai berkisar dari 0 – 255, untuk citra 16 bit akan
memiliki dua kanal, dan citra 24 bit akan memiliki tiga kanal yang dikenal sebagai
kanal R(red), G(green), dan B(blue) (Fadlisyah, 2014).
Dalam menentukan running time dalam suatu baris pada pseudocode (kode
semu) kalikan konstanta ci dengan jumlah waktu yang diperlukan untuk mengeksekusi
baris tersebut. Untuk kasus dimana terdapat perintah loop while atau for dengan
panjang n, maka perintah tersebut dieksekusi dengan waktu n+1. Sedangkan untuk
baris berisi komentar, dinyatakan sebagai baris yang tidak dieksekusi, sehingga
jumlah waktu untuk baris tersebut adalah nol.
Selanjutnya, running time dari algoritma adalah jumlah dari running time
setiap perintah yang dieksekusi. Sebuah perintah yang membutuhkan ci langkah n
waktu untuk dieksekusi akan memiliki pengaruh sebesar cin pada running time total
(T(n)).
Contohnya, untuk suatu prosedur algoritma pengurutan A berikut, dimulai
dengan menghitung nilai waktu yang digunakan oleh suatu perintah dan jumlah
pengulangan perintah tersebut dieksekusi. Untuk setiap j= 2,3,...,n, dimana n adalah
panjang dari A (A.lenght). tj merupakan notasi dari jumlah banyaknya loop while yang
dieksekusi untuk nilai j pada baris ke 5.
PENGURUTAN (A) nilai waktu
1. for j = 2 to A.lenght c1 n
2. key = A [ j ] c2 n–1
3. // Insert A [ j ] into the sorted
sequence A [ 1 .. j – 1 ]. 0 n–1
4. i=j–1 c4 n–1
𝑛
5. While i > 0 and A [ i ] > key c5 𝑗 2 𝑡𝑗
𝑛
6. A [ i + 1] = A [ i ] c6 𝑗 2 (𝑡𝑗 − 1)
𝑛
7. i=i–1 c7 𝑗 2 (𝑡𝑗 − 1)
8. A [ i + 1 ] = key c8 n–1
Untuk menghitung T(n), running time dari algoritma pengurutan dengan nilai
masukan n, jumlahkan hasil kali nilai dengan waktu. Diperoleh,
𝑛 𝑛
T(n) = c1n + c2(n – 1) + c4(n – 1) + c5 𝑗 2 𝑡𝑗 + c6 𝑗 2 (𝑡𝑗 − 1) +
𝑛
c7 𝑗 2 (𝑡𝑗 − 1) + c8 (n – 1) ....... (2.1)
9
Kasus terbaik untuk algoritma ini adalah jika array sudah berurutan. Untuk
setiap j = 2, 3, ... , n, diperoleh A [ i ] ≤ key pada baris ke 5 ketika i menjadi nilai awal
dari j -1. Maka tj = 1 untuk j = 2, 3, ... , n, dan running time untuk kasus pengurutan
terbaik adalah
T(n) = c1n + c2 (n – 1) + c4(n – 1) + c5(n – 1) + c8(n – 1)
= ( c1 + c2 + c4 + c5 + c8) n – (c2 + c4 + c5 + c8) ....... (2.2)
Running time ini dapat dinyatakan sebagai a n + b untuk a dan b konstanta
yang bergantung pada nilai ci, artinya running time ini merupakan fungsi linier dari n,
atau dijelaskan sebagai.
Jika array berada pada kondisi susunan yang terbalik, maka algoritma tersebut
melalkukan pengurutan untuk kasus terburuk. Setiap elemen dalam A [ j ] harus
dibandingkan dengan semua elemen lain yang sudah tersusun dalam a [1 ... j-1], dan tj
= j untuk setiap j = 2, 3, ..., n. Perhatikan bahwa
𝑛 𝑛(𝑛+1)
𝑗 =2 𝑗 =
2
−1 ....... (2.3)
dan
𝑛 𝑛(𝑛−1)
𝑗 =2(𝑗 − 1) = 2
....... (2.4)
Pada kasus terburuk diperoleh running time untuk algoritma pengurutan adalah
𝑛 𝑛 +1 𝑛 𝑛 −1
T(n) = c1n + c2(n – 1) + c4(n – 1) + c5( − 1) + c6( )+
2 2
𝑛 𝑛 −1
c7( ) + c8(n – 1)
2
𝑐5 𝑐6 𝑐7 𝑐5 𝑐6 𝑐7
= + + 𝑛2 + ( 𝑐1 + 𝑐2 + 𝑐4 + − − + 𝑐8 )𝑛 –
2 2 2 2 2 2
2.4. Konvolusi
Suatu cara untuk mengkombinasikan dua buah sinyal disebut konvolusi (Fadlisyah,
2014). Konvolusi 2 buah fungsi f x dan g x didefinisikan sebagai:
10
h x f x g x f a g x a da ....... (2.6)
Fungsi filter g x, y disebut juga filter konvolusi, mask konvolusi, kernel konvolusi,
atau template (Fadlisyah & Rizal, 2011).
Jaringan saraf tiruan adalah paradigma pengolahan informasi yang terinspirasi oleh
sistem saraf secara biologis, seperti proses informasi pada otak manusia. Elemen
kunci dari paradigma ini adalah struktur dari sistem pengolahan informasi yang terdiri
dari sejumlah besar elemen pemrosesan yang saling berhubungan (neuron), bekerja
serentak untuk menyelesaikan masalah tertentu. Cara kerja JST seperti cara kerja
manusia, yaitu belajar melalui contoh. Sebuah JST dikonfigurasikan untuk aplikasi
tertentu, seperti pengenalan pola atau klasifikasi data, melalui proses pembelajaran.
Belajar dalam sistem biologis melibatkan penyesuaian terhadap koneksi synaptic yang
ada antara neuron. Hal ini berlaku juga untuk JST (Sutojo, et.al. 2011).
11
JST belajar dari sampel yang disebut set pelatihan. Karena belajar dari sampel,
JST mempunyai potensi membangun sistem komputasi sebagai hasil pemetaan
hubungan masukan dan keluaran yang ada dalam sistem. Set pelatihan dikenal sebagai
pola pelatihan berupa suatu vektor dan didapatkan dari sumber seperti citra, sinyal
suara, dan berbagai informasi lainnya (Pandjaitan, 2007).
Proses belajar JST diklasifikasikan menjadi dua :
1. Belajar dengan pengawasan (supervised learning)
2. Belajar tanpa pengawasan (unsupervised learning)
Belajar dengan pengawasan (supervised learning), Jaringan memberikan
tanggapan dengan mendapatkan target tertentu. Sebelum jaringan mengubah sendiri
bobotnya untuk mencapai target, bobot interkoneksi diinisialisasi. Proses belajar JST
dengan pengawasan adalah proses belajar dengan memberikan latihan untuk mencapai
suatu target keluaran yang ditentukan. JST mendapatkan latihan untuk mengenal pola-
pola tertentu. Dengan memberikan target keluaran, perubahan masukan akan
diadaptasi oleh keluaran dengan mengubah bobot interkoneksinya mengikuti
algoritma belajar yang ditentukan. Set pelatihan dipilih dari fungsi keluaran
maksimum setiap keadaan parameter yang diubah. Dengan menginisialisasi bobot tiap
sel, JST akan mencari error terkecil, sehingga bentuk fungsi keluaran mendekati target
yang diinginkan.
Proses belajar dilakukan dengan melakukan suatu set pelatihan. Dalam
menyusun suatu set pelatihan, ada beberapa hal yang harus diperhatikan :
1. Urutan pola target
2. Kriteria perhitungan error
3. Kriteria proses belajar
4. Jumlah iterasi yang harus dilalui
5. Inisialisasi bobot dan parameter awal
Pelatihan dilakukan dengan memberikan pasangan pola-pola masukan dan
keluaran. Untuk keperluan pengawasan, pasangan pola tidak perlu mengikuti rumusan
tertentu. JST harus dapat mengadaptasikan masukan yang bersifat random sehingga
diperoleh suatu set keluaran yang tetap mengikuti target. Salah satu proses belajar
dengan pengawasan yang begitu populer digunakan adalah proses belajar
menggunakan algoritma jaringan propagasi balik (back-propagation).
12
2.6. Al - Qur’an
Secara umum pengertian Al-Qur‟an menurut kalangan ushul fiqih, fiqih, dan bahasa
arab adalah Kalam Allah SWT yang diturunkan kepada Nabi-Nya, Muhammad,
lafazh-lafazhnya mengandung mukjizat, membacanya mempunyai nilai ibadah,
diturunkan secara mutawatir dan ditulis pada mushaf, mulai dari awal surat Al-Fatihah
[1] sampai akhir surat An-Nas [114] (Anwar, 2000).
Al-Qur‟an diturunkan dalam waktu 22 tahun 2 bulan dan 22 hari, yaitu mulai
malam 17 Ramadhan tahun 41 kelahiran Nabi sampai 9 Dzulhijjah Haji Wada‟ tahun
63 dari kelahiran Nabi atau tahun 10 H (Anwar, 2000). Al-Qur‟an memiliki 114 surat,
dan 6.236 ayat. Untuk memudahkan pembaca dan penghafalan, para ulama membagi
Al-Qur‟an dalam 30 juz yang sama panjang, dan dalam 60 hibz. Masing-masing hibz
dibagi lagi menjadi empat dengan tanda-tanda ar-rub‟ (seperempat), an-nisf
(seperdua), as-salasah (tiga perempat). Selanjutnya Al-Qur‟an dibagi pula dalam 554
ruku‟, yaitu bagian yang terdiri atas beberapa ayat. Setiap ruku‟ ditandai beberapa
huruf „ain disebelah pinggirnya. Surat yang panjang berisi beberapa ruku‟, sedangkan
surat yang pendek hanya berisi satu ruku‟.
Al-Qur‟an diturunkan dalam dua periode, yang pertama periode Mekah, yaitu
saat Nabi Muhammad SAW bermukim di Mekkah (610-622 M) sampai Nabi
Muhammad SAW melakukan hijrah. Ayat-ayat yang diturunkan pada masa itu disebut
ayat-ayat Makkiyah, yang berjumlah 4.726 ayat, meliputi 89 surat. Kedua adalah
periode Madinah, yaitu masa setelah Nabi Muhammad SAW hijrah ke Madinah (622-
13
632 M). Ayat-ayat yang turun dalam periode ini dinamakan ayat-ayat Madaniyyah,
meliputi 1.510 ayat, dan mencakup 25 surat.
Proses turunnya Al-Qur‟an kepada Nabi Muhammad SAW ini melalui tiga
tahapan, yaitu:
1. Al-Qur‟an turun secara sekaligus dari Allah SWT ke Lauh Al-Mahfuzh, yaitu
suatu tempat yang merupakan catatan tentang segala ketentuan dan kepastian
Allah. Proses pertama ini diisyaratkan dalam Al-Qur‟an surat Al-Buruj ayat 21-
22, yang artinya:
“Bahkan yang didustakan mereka ialah Al-Qur‟an yang mulia. Yang
(tersimpan) dalam Lauh Al-Mahfuzh.” (Q.S. Al-Buruj [85]: 21-22)
Diisyaratkan pula oleh firman Allah SWT dalam Al-Qur‟an surat Al-Waqi‟ah
ayat 77-80, yang artinya:
“Sesungguhnya Al-Qur‟an ini adalah bacaan yang sangat mulia, pada kitab
yang terpelihara (Lauh Mahfuzh), tidak menyentuhnya, kecuali hamba-hamba
yang disucikan. Diturunkan dari Tuhan semesta alam.” (Q.S. Al-Waqi‟ah [56]:
77-80)
2. Al-Qur‟an diturunkan dari Lauh Al-Mahfuzh ke Bait Al-Izzah (tempat yang
berada dilangit dunia). Proses kedua ini diisyaratkan Allah SWT dalam Al-
Qur‟an surat Al-Qadar ayat 1, yang artinya:
“Sesungguhnya Kami telah menurunkannya (Al-Qur‟an) pada malam
kemuliaan.” (Q.S. Al-Qadar [97]: 1)
Juga diisyaratkan dalam firman-Nya pada Al-Qur‟an surat Ad-Dukhan ayat 3,
yang artinya:
“Sesungguhnya Kami menurunkannya pada suatu malam yang diberkahi dan
sesungguhnya Kami-lah yang memberi peringatan.” (Q.S. Ad-Dukhan [44]: 3)
3. Al-Qur‟an diturunkan dari Bait Al-Izzah kedalam hati Nabi melalui malaikat
Jibril dengan cara berangsur-angsur sesuai dengan kebutuhan. Adakalanya satu
ayat, dua ayat, bahkan kadang-kadang satu surat. Mengenai proses turunnya Al-
Qur‟an dalam tahap ketiga diisyaratkan dalam Al-Qur‟an surat Asy-Syu‟ara‟
ayat 193-195, yang artinya:
“... Dia dibawa turun oleh Ar-Ruh Al „Amin (Jibril), ke dalam hatimu
(Muhammad) agar kamu menjadi salah seorang diantara orang yang memberi
14
peringatan, dengan bahasa Arab yang jelas.” (Q.S. Asy-Syu‟ara‟ [26]: 193-
195)
Sering pula waktu wahyu diturunkan untuk menjawab pertanyaan para sahabat
yang dilontarkan kepada Nabi atau membenarkan tindakan Nabi SAW. Disamping itu,
banyak pula ayat atau surat yang diturunkan tanpa melalui latar belakang pertanyaan
atau kejadian tertentu.
Diturunkannya Al-Qur‟an secara berangsur-angsur mengandung hikamh dan
faedah yang besar, sebagaimana dijelaskan dalam Al-Qur‟an surat Al-Furqan ayat 32,
yang artinya:
“Berkatalah orang-orang kafir, “Mengapa Al-Qur‟an itu tidak diturunkan kepadanya
sekali turun saja ?” Demikianlah supaya Kami perkuat hatimu dengannya dan Kami
membacakannya secara tartil (teratur dan benar).” (Q.S. Al-Furqan [25]: 32)
Ilmu tajwid ialah pengetahuan tentang kaidah serta cara-cara membaca Al Qur‟an
dengan sebaik-baiknya. Tujuan ilmu tajwid ialah memelihara bacaan Al Qur‟an dari
kesalahan dan perubahan serta memelihara lisan (mulut) dari kesalahan membaca.
Yang terutama dibahas atau dipelajari dalam ilmu tajwid ialah huruf-huruf hijaiyah
yang 29, dalam bermacam-macam harakah (barisnya) serta dalam bermacam-macam
hubungan. Huruf yang ke 29 itu ialah:
ابتثجحخدذرزسشصضطظعغفقكلمنوهءي
Belajar ilmu tajwid itu hukumnya fardlu kifayah, sedangkan membaca Al Qur‟an
dengan baik (sesuai dengan ilmu tajwid) itu hukumnya fardlu „ain (Zarkasyi, 1987).
Tanwin atau nun mati apabila bertemu dengan salah satu huruf hijaiyah maka
hukumnya ada enam bacaan:
1. Dibaca Izh-har halqi
2. Dibaca Izh-har
3. Dibaca Idgham bighunnah
15
Apabila ada tanwin atau nun mati bertemu dengan salah satu huruf halaq, hukumnya
wajib dibaca Izh-har Halqi. Adapun huruf halaq itu jumlahnya ada enam, yaitu : ح خ
ءهعغ
Apabila ada tanwin atau nun mati bertemu dengan salah satu huruf ي ن م وhukumnya
wajib dibaca idgham bighunnah.
2.8.3. Izh-har
Apabila ada nun mati bertemu dengan salah satu huruf empat ( ) ي ن م وdalam satu
kalimat, hukumnya tidak boleh dibaca idgham tetapi wajib dibaca izh-har.
16
Apabila ada tanwin atau nun mati bertemu dengan لdan ر, hukumnya wajib dibaca
idgham bilaghunnah.
2.8.5. Iqlab
Apabila ada tanwin atau nun mati bertemu dengan huruf ب, hukumnya wajib dibaca
iqlab.
2.8.6. Ikhfa‟
Apabila ada tanwin atau nun mati bertemu dengan salah satu huruf lima belas ث ذ ص
Model BAM memiliki jaringan syaraf dari dua lapisan dan terhubung sepenuhnya dari
setiap lapisan yang lain. Artinya, ada hubungan timbal balik antara dari lapisan output
ke lapisan input (Rao, 1995). BAM sebagai model neural network memiliki kelebihan
yaitu dapat memproses input yang tidak lengkap (incomplete input atau input with
noise). Adapun kelemahan BAM adalah terletak pada kapasitas memori yang sangat
kecil. Gambar 2.1 memperlihatkan arsitektur BAM.
masuk dalam dua arah (dari input ke output dan kembali ari output ke input). Masing-
masing lapisan tersebut dihubungkan dengan vektor bobotnya. Iterasi jaringan
dilakukan dengan pengiriman sinyal keluar dan kembali diantara kedua lapisan,
sehingga semua neuron yang menyusun jaringan memiliki nilai yang seimbang.
Pada jaringan Bidirectional Associative Memory (BAM) ini interaksi antara
kedua lapisan terjadi secara bidirectional yaitu:
1. Jika jaringan mengirim sinyal dari X-layer ke Y-layer maka bobot jaringan
dituliskan sebagai vektor berbentuk W.
2. Jika jaringan mengirim sinyal dari Y-layer ke X-layer maka bobot jaringan
dituliskan sebagai vektor bentuk WT.
Algoritma jaringan syaraf tiruan Bidirectional Associative Memory (BAM)
adalah sebagai berikut:
Langkah 0: inisialisasi bobot untuk disimpan pada P vektor.
Langkah 1: untuk masing-masing masukan, lakukan langkah 2-6.
Langkah 2a: berikan pola masukan x pada X-layer (dengan pensettingan aktivasi pada
pola masukan X terlebih dahulu).
Langkah 2b: berikan pola masukan y pada Y-layer (dengan pemberian nilai yang lain
dari pola masukan X).
Langkah 3: saat nilai aktivasi tidak dapat ditemukan, lakukan langkah 4-6.
Langkah 4: perbaharui aktivasi pada unit neuron Y-layer, dengan cara:
Hitung jaringan input : Y_inj 𝑖 𝑊𝑖𝑗 𝑋𝑖 ....... (2.10)
Hitung aktivasi yj = f (Y_inj)
Kemudian kirim sinyal ke X-layer
Langkah 5: perbaharui aktivasi pada unit neuron X-layer, dengan cara:
Hitung jaringan input : X_inj 𝑗 𝑊𝑖𝑗 𝑌𝑗 ....... (2.11)
Hitung aktivasi xi = f(X_inj)
Kemudian kirim sinyal ke Y-layer
Langkah 6: lakukan test kembali, jika vektor aktivasi x dan y mempunyai nilai yang
seimbang, maka hentikan proses test; jika tidak lakukan kembali.
18
Gambar ini sama dengan gambar 2.1 karena modelnya sama, kecuali fuzzy vektor
yang digunakan dengan model ini.
Penelitian tentang model FAM berasal dari awal 1990 an dengan munculnya
FAM Kosko. Seperti kebanyak model assosiatif lainnya, FAM Kosko terdiri dari
lapisan tunggal FNN yang menyimpan rule fuzzy “jika x adalah 𝑋𝑘 maka y adalah 𝑌𝑘”
menggunakan pembelajaran fuzzy hebbian rule dalam hal max-min atau max-produk
komposisi untuk sintesis dari matriks bobot W. Matriks FAM menghasilkan output
fuzzy yang kemudian dikombinasikan untuk menghasilkan hasil akhir. Untuk
mengatasi keaslian FAM yang memiliki keterbatasan dalam kapasitas penyimpanan,
beberapa peneliti telah mengembangkan tingkatan versi FAM yang mampu
menyimpan beberapa pola pasangan fuzzy.
Setiap elemen dari himpunan fuzzy memiliki derajat keanggotaan dalam
himpunan. Kecuali derajat keanggotaannya adalah 1. Dalam sebuah jaringan syaraf
19
dari sistem fuzzy input, output dan semua bobot yang berhubungan, memiliki fuzzy ke
ruang yang mendefinisikannya. Matriks bobot akan menjadi matriks fuzzy dan
aktivasi neuron dalam jaringan tersebut harus ditentukan oleh aturan logika fuzzy dan
operasi himpunan fuzzy. Encoding untuk FAM mirip dengan konsep proses BAM
dengan beberapa perbedaan dalam operasi yang terlibat. Dalam pengkodean BAM,
versi bipolar vektor biner yang digunakan hanya untuk encoding. Matriks dari jenis
𝑿𝑖𝒀𝑖𝑇 ditambah bersama-sama untuk mendapatkan matriks bobot koneksi. Ada dua
operasi dasar dengan elemen vektor yaitu perkalian dan penambahan produk. Disini
tidak ada konversi nilai yang fit sebelum pengkodean oleh fuzzy set. Perkalian dari
elemen digantikan oleh operasi minimum dan penambahan digantikan oleh operasi
maksimal. Ada dua metode untuk encoding, metode yang baru saja dijelaskan adalah
komposisi max-min. Ini digunakan untuk mendapatkan matriks bobot koneksi dan
juga untuk mendapatkan output dari neuron pada FAM jaringan syaraf. Metode kedua
disebut korelasi produk. Hal ini diperoleh dengan cara yang sama sebagai hubungan
matriks bobot yang diperoleh BAM. Komposisi max-min adalah apa yang sering
digunakan dalam pelatihan (Rao, 1995).
Algoritma jaringan syaraf tiruan Fuzzy Associative Memory (FAM) adalah
sebagai berikut:
Langkah 0: inisialisasi bobot untuk disimpan pada P vektor.
Langkah 1: untuk masing-masing masukan, lakukan langkah 2-6.
Langkah 2a: berikan pola masukan x pada X-layer (dengan pensettingan aktivasi pada
pola masukan X terlebih dahulu).
Langkah 2b: berikan pola masukan y pada Y-layer (dengan pemberian nilai yang lain
dari pola masukan X).
Langkah 3: saat nilai aktivasi tidak dapat ditemukan, lakukan langkah 4-6.
Langkah 4: perbaharui aktivasi pada unit neuron Y-layer, dengan cara:
Hitung korelasi minimum encoding : M = 𝐴𝑇 °𝐵 ....... (2.12)
Dengan mij = min (ai, bj)
Jika M = 𝐴𝑇 °𝐵 , maka:
𝐴 ° 𝑀 = 𝐵 , jika dan hanya jika H(A) ≥ H(B), ....... (2.13)
𝐵°𝑀𝑇 = 𝐴 , jika dan hanya jika H(B) ≥ H(A), ....... (2.14)
20
METODE PENELITIAN
Diagram alur kerja yang akan dilakukan pada penelitian ini diilustrasikan pada
gambar 3.1.
Identifikasi
Masalah
Menetapkan
Tujuan Penelitian
Desain Sistem
Pengumpulan
Sampel
Implementasi
Sistem
Tidak
Uji Coba
Sistem
Ya
Pengukuran Unjuk
Kerja Sistem
Kesimpulan
Penelitian
Data yang digunakan dalam penelitian ini terdiri dari beberapa citra ayat Al-Qur‟an
untuk pelatihan (training data set) dan beberapa citra ayat Al-Qur‟an untuk pengujian
(testing data set). Citra ayat Al-Qur‟an untuk pelatihan maupun pengujian diperoleh
23
dari internet. Citra ayat Al-Qur‟an yang digunakan hanya dibatasi dengan ekstensi
BMP.
Skema sistem pendeteksian pola tajwid yang dibangun dalam penelitian ini
diilustrasikan pada gambar 3.2.
Lokasi Iqlab
Gambar 3.2. Skema Sistem Pendeteksian Pola Tajwid Menggunakan Algoritma BAM dan
Algoritma FAM
Adapun tahapan yang dilakukan setelah sistem menerima input citra Al-
Qur‟an adalah tahapan resize, grayscale, konvolusi, uji pengenalan pola ayat Al-
Qur‟an menggunakan Bidirectional Associative Memory (BAM) dan Fuzzy
Associative Memory (FAM). Pada tahap pre-processing, sumber citra yang menjadi
inputan akan di-resize terlebih dahulu untuk menghemat waktu dan jumlah iterasi.
Setelah resizing, citra akan direpresentasikan dalam bentuk satu kanal, dan diakhiri
dengan pendeteksian tepi melalui proses konvolusi. Pada proses utama, komputasi
24
menggunakan algoritma BAM dan algoritma FAM, vektor pola ayat Al Qur‟an akan
dilatih untuk mendapatkan sebuah matriks bobot, yang selanjutnya matriks bobot
tersebut digunakan sebagai matriks pengujian.
Mulai
Input Citra
Kanal R = (R+G+B )/ 3
Kanal G = (R+G+B) / 3
Kanal B = (R+G+B) / 3
tidak
ya
Selesai
kanal saja sebagai presentasi nilai-nilai intensitas lainnya yang terdapat citra
(Fadlisyah, 2014).
Mulai
Citra Grayscale
(x,y) (x n,y)
kernel
(x,y n) (x n,y n)
tidak
ya
Selesai
Mulai
Tampung tinggi,
dan lebar gambar
Ya
Selesai
Jaringan syaraf tiruan yang digunakan pada sistem ini menggunakan jenis
Bidirectional Associative Memory (BAM) dan Fuzzy Associative Memory (FAM).
Dimana diagram alir dari algoritma tersebut ditunjukkan pada gambar berikut:
27
Mulai
Inisialisasi bobot
Ya
Selesai
Pada tahap ini, jaringan menerima inputan struktur pola. Struktur pola inputan
merupakan sebarisan pola tepi-tepi objek yang mungkin mengandung tajwid atau
bukan tajwid, dan selanjutnya jaringan melakukan perhitungan input Y_inj. Setelah
perhitungan input Y_inj dilakukan, jaringan melakukan perhitungan input X_inj.
Langkah-langkah ini terus diulang hingga tercapai nilai aktivasi yang seimbang.
28
Mulai
Inisialisasi bobot
Ya
Selesai
Pada tahap ini, jaringan menerima inputan struktur pola. Struktur pola inputan
merupakan sebarisan pola tepi-tepi objek yang mungkin mengandung tajwid atau
bukan tajwid, dan selanjutnya jaringan melakukan perhitungan korelasi minimum
encoding. Setelah perhitungan korelasi minimum encoding dilakukan, jaringan
melakukan perhitungan komposisi max-min. Langkah-langkah ini terus diulang
hingga tercapai nilai aktivasi yang seimbang.
Pengukuran evaluasi unjuk kerja sistem pendeteksian pola tajwid pada citra Al-Qur‟an
pada umumnya menggunakan dua parameter, yaitu true detection dan false detection.
True detection merupakan perbandingan atau presentase jumlah pola tajwid iqlab yang
berhasil dideteksi per seluruh jumlah pola tajwid iqlab yang diuji, sedangkan false
detection adalah jumlah objek bukan pola tajwid iqlab yang dideteksi sebagai pola
tajwid iqlab.
BAB 4
4.1. Hasil
Hasil yang dibahas meliputi pemilihan sampel pelatihan citra Al-Qur‟an, vektor pola
citra Al-Qur‟an acuan, pengujian sistem, pengukuran unjuk kerja sistem, dan
perhitungan kompleksitas algoritma.
Gambar 4.2. Vektor pola citra Al-Qur’an hasil koreksi dan pengamatan pada sejumlah citra Al-
Qur’an yang digunakan sebagai pelatihan
31
( ) ب, pola yang kedua adalah apabila tanwin fattah ( ً ) bertemu dengan huruf ba ( ب
), pola yang ketiga adalah apabila tanwin kasrah ( ًٍ ) bertemu dengan huruf ba ( ) ب,
dan pola yang keempat adalah apabila tanwin dhammah ( ًٌ ) bertemu dengan huruf ba
( ) ب. Gambar 4.3 menunjukkan beberapa hasil pendeteksian citra Al-Qur‟an secara
benar (true detection), sedangkan gambar 4.4 menunjukkan beberapa hasil
pendeteksian citra Al-Qur‟an yang salah (false detection).
4.1.4. Pengukuran unjuk kerja sistem pendeteksi pola tajwid pada citra Al-Qur‟an
Pengukuran unjuk kerja sistem dilakukan secara pertahap. Pada nilai sensitif 70,
keempat pola tajwid yang digunakan memiliki tingkat keakurasian 72 % untuk
algoritma BAM dan 69 % untuk algoritma FAM. Pada nilai sensitif 100, keempat pola
tajwid yang digunakan memiliki tingkat keakurasian 72 % untuk algoritma BAM dan
74 % untuk algoritma FAM. Pada nilai sensitif 130, keempat pola tajwid yang
digunakan memiliki tingkat keakurasian 78 % untuk algoritma BAM dan 75 % untuk
algoritma FAM. Pada nilai sensitif 150, keempat pola tajwid yang digunakan memiliki
tingkat keakurasian 81 % untuk algoritma BAM dan 81 % untuk algoritma FAM.
Pada nilai sensitif 170, keempat pola tajwid yang digunakan memiliki tingkat
keakurasian 81 % untuk algoritma BAM dan 81 % untuk algoritma FAM. Pada nilai
33
sensitif 200, keempat pola tajwid yang digunakan memiliki tingkat keakurasian 81 %
untuk algoritma BAM dan 81 % untuk algoritma FAM. Pada nilai sensitif 230,
keempat pola tajwid yang digunakan memiliki tingkat keakurasian 84 % untuk
algoritma BAM dan 81 % untuk algoritma FAM. Pada nilai sensitif 250, keempat pola
tajwid yang digunakan memiliki tingkat keakurasian 84 % untuk algoritma BAM dan
84 % untuk algoritma FAM. Tabel 4.1, tabel 4.2, tabel 4.3, tabel 4.4, tabel 4.5, tabel
4.6, tabel 4.7, tabel 4.8, tabel 4.9, tabel 4.10, tabel 4.11, tabel 4.12, tabel 4.13, tabel
4.14, tabel 4.15, dan tabel 4.16 mengilustrasikan beberapa hasil pengukuran unjuk
kerja sistem pendeteksi pola tajwid pada citra Al-Qur‟an menggunakan algoritma
BAM dan algoritma FAM.
Tabel 4.1. Hasil unjuk kerja sistem dengan nilai sensitif 70 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 70 detection detection
1 0 0
2 1 0
34
3 2 0
4 0 0
5 3 0
35
6 2 0
7 1 0
8 1 0
36
9 3 0
10 0 0
11 0 0
37
12 0 0
13 1 0
14 0 0
38
15 2 0
16 1 0
17 0 0
39
18 0 0
19 0 0
20 3 0
40
21 0 0
22 2 0
23 1 0
41
24 0 0
25 1 0
26 0 0
42
27 1 0
Tabel 4.2. Hasil unjuk kerja sistem dengan nilai sensitif 70 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 70 detection detection
1 0 0
2 1 0
43
3 2 0
4 0 0
5 3 0
44
6 2 0
7 1 0
8 1 0
45
9 1 0
10 0 0
11 0 0
46
12 0 0
13 1 0
14 0 0
47
15 2 0
16 1 0
17 0 0
48
18 0 0
19 0 0
20 3 0
49
21 1 0
22 2 0
23 1 0
50
24 0 0
25 1 0
26 0 0
51
27 1 0
Untuk nilai sensitif 70, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.5.
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Pada awal pengujian dilakukan pada sistem yang memiliki nilai sensitif 70,
keempat pola tajwid yang digunakan memiliki nilai true detection 72 % untuk
algoritma BAM dan 69 % untuk algoritma FAM.
52
Tabel 4.3. Hasil unjuk kerja sistem dengan nilai sensitif 100 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 100 detection detection
1 0 0
2 1 0
3 2 0
53
4 0 0
5 3 0
6 2 0
54
7 1 0
8 1 0
9 3 0
55
10 0 0
11 0 0
12 0 0
56
13 1 0
14 0 0
15 2 0
57
16 1 0
17 0 0
18 0 0
58
19 0 0
20 3 0
21 0 0
59
22 2 0
23 1 0
24 0 0
60
25 1 0
26 0 0
27 1 0
61
Tabel 4.4. Hasil unjuk kerja sistem dengan nilai sensitif 100 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 100 detection detection
1 0 0
2 1 0
3 2 0
62
4 0 0
5 3 0
6 2 0
63
7 1 0
8 1 0
9 1 0
64
10 0 0
11 0 0
12 0 0
65
13 2 0
14 0 0
15 2 0
66
16 1 0
17 0 0
18 0 0
67
19 0 0
20 3 0
21 1 0
68
22 2 0
23 1 0
24 0 0
69
25 1 0
26 0 0
27 1 0
Untuk nilai sensitif 100, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.6.
70
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.6. Grafik unjuk kerja sistem dengan nilai sensitif 100
Pada nilai sensitif 100, keempat pola tajwid yang digunakan memiliki nilai
true detection 72 % untuk algoritma BAM dan 74 % untuk algoritma FAM.
Tabel 4.5. Hasil unjuk kerja sistem dengan nilai sensitif 130 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 130 detection detection
1 0 0
71
2 1 0
3 2 0
4 0 0
72
5 3 0
6 2 0
7 1 0
73
8 1 0
9 3 0
10 0 0
74
11 0 0
12 0 0
13 2 0
75
14 1 0
15 2 0
16 1 0
76
17 0 0
18 0 0
19 0 0
77
20 3 0
21 0 0
22 2 0
78
23 1 0
24 0 0
25 1 0
79
26 0 0
27 1 0
Tabel 4.6. Hasil unjuk kerja sistem dengan nilai sensitif 130 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 130 detection detection
1 0 0
80
2 1 0
3 2 0
4 0 0
81
5 3 0
6 2 0
7 1 0
82
8 1 0
9 2 0
10 0 0
83
11 0 0
12 0 0
13 2 0
84
14 0 0
15 2 0
16 1 0
85
17 0 0
18 0 0
19 0 0
86
20 3 0
21 1 0
22 2 0
87
23 1 0
24 0 0
25 1 0
88
26 0 0
27 1 0
Untuk nilai sensitif 130, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.7.
89
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.7. Grafik unjuk kerja sistem dengan nilai sensitif 130
Pada nilai sensitif 130, keempat pola tajwid yang digunakan nilai true
detection 78 % untuk algoritma BAM dan 75 % untuk algoritma FAM.
Tabel 4.7. Hasil unjuk kerja sistem dengan nilai sensitif 150 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 150 detection detection
1 0 0
90
2 1 0
3 2 0
4 0 0
91
5 3 0
6 2 0
7 1 0
92
8 1 0
9 3 0
10 0 0
93
11 0 1
12 0 0
13 2 0
94
14 1 0
15 2 0
16 1 0
95
17 0 0
18 0 0
19 0 0
96
20 3 0
21 1 0
22 2 0
97
23 1 1
24 0 0
25 1 0
98
26 0 0
27 1 0
Tabel 4.8. Hasil unjuk kerja sistem dengan nilai sensitif 150 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 150 detection detection
1 0 0
99
2 1 0
3 2 0
4 0 0
100
5 3 0
6 2 0
7 1 0
101
8 1 0
9 2 0
10 0 0
102
11 0 0
12 0 0
13 2 0
103
14 1 0
15 2 0
16 1 0
104
17 0 0
18 0 0
19 0 0
105
20 3 0
21 2 0
22 2 0
106
23 1 0
24 0 0
25 1 0
107
26 0 0
27 1 0
Untuk nilai sensitif 150, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.8.
108
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.8. Grafik unjuk kerja sistem dengan nilai sensitif 150
Pada nilai sensitif 150, keempat pola tajwid yang digunakan memiliki nilai
true detection 81 % untuk algoritma BAM dan 81 % untuk algoritma FAM.
Tabel 4.9. Hasil unjuk kerja sistem dengan nilai sensitif 170 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 170 detection detection
1 0 1
109
2 1 1
3 2 0
4 0 0
110
5 3 0
6 2 0
7 1 0
111
8 1 0
9 3 1
10 0 1
112
11 0 2
12 0 0
13 2 0
113
14 1 0
15 2 0
16 1 0
114
17 0 0
18 0 0
19 0 0
115
20 3 0
21 1 1
22 2 0
116
23 1 1
24 0 2
25 1 0
117
26 0 0
27 1 0
Tabel 4.10. Hasil unjuk kerja sistem dengan nilai sensitif 170 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 170 detection detection
1 0 0
118
2 1 0
3 2 0
4 0 0
119
5 3 0
6 2 0
7 1 0
120
8 1 0
9 2 0
10 0 0
121
11 0 3
12 0 1
13 2 0
122
14 1 0
15 2 0
16 1 0
123
17 0 0
18 0 0
19 0 0
124
20 3 0
21 2 1
22 2 0
125
23 1 1
24 0 1
25 1 0
126
26 0 0
27 1 0
Untuk nilai sensitif 170, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.9.
127
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.9. Grafik unjuk kerja sistem dengan nilai sensitif 170
Pada nilai sensitif 170, keempat pola tajwid yang digunakan memiliki nilai
true detection 81 % untuk algoritma BAM dan 81 % untuk algoritma FAM.
Tabel 4.11. Hasil unjuk kerja sistem dengan nilai sensitif 200 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 200 detection detection
1 0 3
128
2 1 3
3 2 1
4 0 3
129
5 3 1
6 2 0
7 1 0
130
8 1 2
9 3 4
10 0 2
131
11 0 6
12 0 2
13 2 4
132
14 1 3
15 2 0
16 1 0
133
17 0 0
18 0 0
19 0 0
134
20 3 3
21 1 2
22 2 0
135
23 1 4
24 0 11
25 1 1
136
26 0 0
27 1 1
Tabel 4.12. Hasil unjuk kerja sistem dengan nilai sensitif 200 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 200 detection detection
1 0 1
137
2 1 0
3 2 0
4 0 0
138
5 3 1
6 2 0
7 1 0
139
8 1 5
9 2 3
10 0 2
140
11 0 4
12 0 4
13 2 2
141
14 1 1
15 2 0
16 1 0
142
17 0 0
18 0 0
19 0 0
143
20 3 3
21 2 1
22 2 0
144
23 1 4
24 0 15
25 1 1
145
26 0 0
27 1 1
Untuk nilai sensitif 200, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.10.
146
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.10. Grafik unjuk kerja sistem dengan nilai sensitif 200
Pada nilai sensitif 200, keempat pola tajwid yang digunakan memiliki nilai
true detection 81 % untuk algoritma BAM dan 81 % untuk algoritma FAM.
Tabel 4.13. Hasil unjuk kerja sistem dengan nilai sensitif 230 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 230 detection detection
1 0 40
147
2 1 40
3 2 30
4 0 30
148
5 3 6
6 2 1
7 1 1
149
8 1 20
9 3 20
10 0 25
150
11 0 35
12 0 30
13 2 35
151
14 1 30
15 2 8
16 1 0
152
17 0 0
18 0 0
19 0 0
153
20 3 40
21 2 25
22 2 4
154
23 1 35
24 0 60
25 1 7
155
26 0 1
27 1 6
Tabel 4.14. Hasil unjuk kerja sistem dengan nilai sensitif 230 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 230 detection detection
1 0 30
156
2 1 8
3 2 4
4 0 5
157
5 3 6
6 2 1
7 1 2
158
8 1 24
9 2 10
10 0 11
159
11 0 16
12 0 20
13 2 24
160
14 1 17
15 2 8
16 1 0
161
17 0 0
18 0 0
19 0 0
162
20 3 40
21 2 13
22 2 2
163
23 1 34
24 0 48
25 1 7
164
26 0 1
27 1 7
Untuk nilai sensitif 230, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.11.
165
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.11. Grafik unjuk kerja sistem dengan nilai sensitif 230
Pada nilai sensitif 230, keempat pola tajwid yang digunakan memiliki nilai
true detection 84 % untuk algoritma BAM dan 81 % untuk algoritma FAM.
Tabel 4.15. Hasil unjuk kerja sistem dengan nilai sensitif 250 pada algoritma BAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 250 detection detection
1 0 60
166
2 1 70
3 2 60
4 0 50
167
5 3 35
6 2 9
7 1 8
168
8 1 45
9 3 50
10 0 47
169
11 0 53
12 0 59
13 2 56
170
14 1 39
15 2 30
16 1 0
171
17 0 1
18 0 0
19 0 1
172
20 3 53
21 2 38
22 2 18
173
23 1 40
24 0 61
25 1 30
174
26 0 25
27 1 31
Tabel 4.16. Hasil unjuk kerja sistem dengan nilai sensitif 250 pada algoritma FAM
Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False
No
digunakan nilai sensitif 250 detection detection
1 0 40
175
2 1 43
3 2 29
4 0 41
176
5 3 40
6 2 16
7 1 20
177
8 1 47
9 3 43
10 0 38
178
11 0 40
12 0 38
13 2 40
179
14 1 36
15 2 30
16 1 1
180
17 0 3
18 0 0
19 0 0
181
20 3 43
21 2 42
22 2 19
182
23 1 42
24 0 53
25 1 31
183
26 0 22
27 1 34
Untuk nilai sensitif 250, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.12.
184
2,5
True detection
2
BAM
1,5 FAM
0,5
0
1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627
Citra Al-Qur'an yang digunakan
Gambar 4.12. Grafik unjuk kerja sistem dengan nilai sensitif 250
Pada tahap terakhir pengujian dilakukan pada sistem yang memiliki nilai
sensitif 250, keempat pola tajwid yang digunakan memiliki nilai true detection 84 %
untuk algoritma BAM dan 84 % untuk algoritma FAM.
Secara keseluruhan keempat pola tajwid yang memiliki delapan nilai sensitif
dapat dirangkum dalam tabel 4.17.
Algoritma
No Nilai Sensitif Bidirectional Fuzzy
Associative Associative
Memory Memory
True Detection 28 28
4 Sensitif 150
False Detection 2 0
True Detection 28 28
5 Sensitif 170
False Detection 10 7
True Detection 28 28
6 Sensitif 200
False Detection 56 48
True Detection 29 28
7 Sensitif 230
False Detection 529 354
True Detection 29 29
8 Sensitif 250
False Detection 969 831
Berdasarkan tabel diatas dapat disimpulkan bahwa semakin tinggi nilai sensitif suatu
citra, maka semakin besar pula kemungkin kesalahan pendeteksian yang akan terjadi
pada citra tersebut. Gambar 4.13 menunjukkan grafik keseluruhan dari delapan nilai
sensitif yang digunakan.
30
25
True detection
20
BAM
15 FAM
10
0
Sensitif Sensitif Sensitif Sensitif Sensitif Sensitif Sensitif Sensitif
70 100 130 150 170 200 230 250
Nilai sensitif citra yang digunakan
Dari kedua table diatas dapat dilihat bahwa algoritma BAM dan algoritma
FAM memiliki waktu running time yang berbeda. Algoritma BAM memiliki
kompleksitas sebesar T(n) = 𝜃(n), sedangkan algoritma FAM memiliki kompleksitas
sebesar T(n) = 𝜃(n). Artinya sistem pendeteksian pola tajwid pada citra Al-Qur‟an
menggunakan algoritma BAM dan algoritma FAM sama-sama efektif dalam
kompleksitas big theta.
4.2. Pembahasan
Berdasarkan hasil penelitian yang dilakukan, hasil unjuk kerja sistem pendeteksian
pola tajwid pada citra Al-Qur‟an sangat dipengaruhi oleh keempat pola yang dilatih,
pengamatan terhadap vektor pola acuan untuk pengujian, kekompleksitasan objek-
objek yang terdapat dalam citra, dan tingkat keberhasilan sistem dalam memetakan
vektor pola tajwid masukan menjadi vektor pola tajwid edge. Lokasi tajwid pada citra
Al-Qur‟an dapat dideteksi oleh sistem jika vektor pola tajwid edge atau citra edge
betul-betul mengandung fitur pola tajwid. Keempat pola tersebut yaitu, pola yang
pertama adalah apabila nun mati ( ْن ) bertemu dengan huruf ba ( ) ب, pola ini ditandai
dengan warna hijau, pola yang kedua adalah apabila tanwin fattah ( ً ) bertemu
dengan huruf ba ( ) ب, pola ini ditandai dengan warna merah, pola yang ketiga adalah
apabila tanwin kasrah ( ًٍ ) bertemu dengan huruf ba ( ) ب, pola ini ditandai dengan
190
warna kuning, dan pola yang keempat adalah apabila tanwin dhammah ( ًٌ ) bertemu
dengan huruf ba ( ب ), pola ini ditandai dengan warna biru. Pada surat Ali-Imran
terdiri dari 35 tajwid iqlab, yang terdiri dari 17 pola nun mati ( ْن ) bertemu dengan
huruf ba ( ) ب, 7 pola tanwin fattah ( ً ) bertemu dengan huruf ba ( ) ب, 1 pola tanwin
bertemu dengan huruf ba ( ب ). Gambar 4.14 mengilustrasikan keadaan citra Al-
Qur‟an edge pada citra yang memuat lokasi pola tajwid yang berhasil dideteksi.
Gambar 4.14. Beberapa contoh citra edge yang memuat lokasi tajwid yang berhasil dideteksi
𝑥1 = 1, 0, 0, 1 , 𝑦1 = (0, 1, 1)
𝑥2 = 0, 1, 1, 0 , 𝑦2 = (1, 0, 1)
1 −1
𝑤 = −1 −1 1 1 + 1 1 −1 1
−1 1
1 −1
−1 1 1 −1 1 −1
𝑤= 1 −1 −1 + 1 −1 1
1 −1 −1 1 −1 1
−1 1 1 −1 1 −1
−2 2 0
−2 2 2 −2
𝑤= 2 −2 0 dan 𝑤 𝑇 = 2 −2 −2 2
2 −2 0
0 0 0 0
−2 2 0
0.3 𝑚𝑖𝑛 0.3 0.4 𝑚𝑖𝑛 0.3 0.3 𝑚𝑖𝑛 0.3 0.9
0.7 𝑚𝑖𝑛 0.7 0.4 𝑚𝑖𝑛 0.7 0.3 𝑚𝑖𝑛 0.7 0.9
𝑤= 0.4 0.3 0.9 =
0.4 𝑚𝑖𝑛 0.4 0.4 𝑚𝑖𝑛 0.4 0.3 𝑚𝑖𝑛 0.4 0.9
0.2 𝑚𝑖𝑛 0.2 0.4 𝑚𝑖𝑛 0.2 0.3 𝑚𝑖𝑛 0.2 0.9
0.3 0.3 0.3
𝑤 = 0.4 0.3 0.7
0.4 0.3 0.4
0.2 0.2 0.2
193
Kemudian dilakukan komposisi max-min jika input vektor 0.3 0.7 0.4 0.2 dan
output vektor 𝑏1 , 𝑏2 , 𝑏3
𝑏1 = 𝑚𝑎𝑥 𝑚𝑖𝑛 0.3 0.3 , 𝑚𝑖𝑛 0.7 0.4 , 𝑚𝑖𝑛 0.4 0.4 , 𝑚𝑖𝑛 0.2 0.2
𝑏1 = 𝑚𝑎𝑥 0.3 0.4 0.4 0.2 = 0.4
𝑏2 = 𝑚𝑎𝑥 𝑚𝑖𝑛 0.3 0.3 , 𝑚𝑖𝑛 0.7 0.3 , 𝑚𝑖𝑛 0.4 0.3 , 𝑚𝑖𝑛 0.2 0.2
𝑏2 = 𝑚𝑎𝑥 0.3 0.3 0.3 0.2 = 0.3
𝑏3 = 𝑚𝑎𝑥 𝑚𝑖𝑛 0.3 0.3 , 𝑚𝑖𝑛 0.7 0.7 , 𝑚𝑖𝑛 0.4 0.4 , 𝑚𝑖𝑛 0.2 0.2
𝑏3 = 𝑚𝑎𝑥 0.3 0.7 0.4 0.2 = 0.7
Peran blok proses konvolusi dalam memetakan berbagai fitur-fitur yang terdapat
didalam lokasi citra Al-Qur‟an sangat penting. Pada unjuk kerja algoritma ini, sistem
masih ditemukan kelemahan, yakni sistem tidak dapat mendeteksi ulang apabila pola
yang telah disimpan kemudian ditimpa dengan pola yang berbeda lainnya.
Berdasarkan hasil true detection yang telah dicapai, maka skema sistem yang diajukan
telah mampu melakukan pendeteksian pola tajwid pada citra Al-Qur‟an dengan
menggunakan komputasi yang efisien.
BAB 5
PENUTUP
5.1. Kesimpulan
Dari hasil dan pembahasan yang telah dibahas, dapat disimpulkan bahwa:
1. Hasil penelitian menunjukkan bahwa sistem pendeteksian pola tajwid pada
citra Al-Qur‟an menggunakan algoritma Bidirectional Associative Memory
memiliki kisaran true detection sebesar 72 % hingga 84 %. Sedangkan dengan
menggunakan algoritma Fuzzy Associative Memory memiliki kisaran true
detection sebesar 69 % hingga 84 %.
2. Hasil pengujian pada nilai sensitif 70, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 72 % untuk algoritma BAM dan 69 % untuk
algoritma FAM.
3. Hasil pengujian pada nilai sensitif 100, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 72 % untuk algoritma BAM dan 72 % untuk
algoritma FAM.
4. Hasil pengujian pada nilai sensitif 130, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 78 % untuk algoritma BAM dan 75 % untuk
algoritma FAM.
5. Hasil pengujian pada nilai sensitif 150, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 81 % untuk algoritma BAM dan 81 % untuk
algoritma FAM.
6. Hasil pengujian pada nilai sensitif 170, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 81 % untuk algoritma BAM dan 81 % untuk
algoritma FAM.
7. Hasil pengujian pada nilai sensitif 200, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 81 % untuk algoritma BAM dan 81 % untuk
algoritma FAM.
8. Hasil pengujian pada nilai sensitif 230, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 84 % untuk algoritma BAM dan 81 % untuk
algoritma FAM.
195
9. Hasil pengujian pada nilai sensitif 250, keempat pola tajwid yang digunakan
memiliki tingkat keakurasian 84 % untuk algoritma BAM dan 84 % untuk
algoritma FAM.
10. Persentase true detection tersebut menunjukkan bahwa algoritma Bidirectional
Associative Memory dan algoritma Fuzzy Associative Memory dapat digunakan
sebagai salah satu pendekatan untuk pendeteksian pola tajwid pada citra Al-
Qur‟an.
11. Algoritma Bidirectional Associative Memory memiliki kompleksitas sebesar
T(n) = 𝜃(n), sedangkan algoritma Fuzzy Associative Memory memiliki
kompleksitas sebesar T(n) = 𝜃(n). Artinya sistem pendeteksian pola tajwid
pada citra Al-Qur‟an menggunakan algoritma Bidirectional Associative
Memory sama efektifnya dengan algoritma Fuzzy Associative Memory.
12. Pada sistem ini masih ditemukan kelemahan, yakni sistem tidak dapat
mendeteksi apabila pola yang telah disimpan kemudian ditimpa dengan pola
yang berbeda lainnya.
5.2. Saran
1. Untuk meningkatkan unjuk kerja dari sistem pendeteksi pola tajwid
menggunakan citra Al-Qur‟an, dapat dilakukan dengan memberikan pelatihan
lebih lanjut dengan tambahan data training yang lebih banyak dan nilai sensitif
yang lebih bervariasi.
2. Dalam pendeteksian pola tajwid dapat dilakukan pelatihan lebih lanjut dengan
menggunakan jarak spasi antara satu huruf hijaiyah ke huruf hijaiyah yang
lainnya agar dapat ditentukan kriteria untuk dapat mendeteksi pola tajwid
tersebut.
3. Teknologi pendeteksian pola tajwid pada citra Al-Qur‟an adalah salah satu
bidang penelitian yang masih terus berkembang. Hasil dari pendeteksian pola
tajwid pada citra Al-Qur‟an ini dapat dimanfaatkan lebih lanjut untuk
membangun sistem pengenalan pola tajwid lainnya pada citra Al-Qur‟an, serta
dapat menggunakan pengolahan sinyal dan suara dalam mendeteksi pola
tajwid pada Al-Qur‟an.
DAFTAR PUSTAKA
Azizah, U.N. 2013. Perbandingan Detektor Tepi Prewit dan Detektor Tepi
Laplacian Berdasarkan Kompleksitas Waktu dan Citra Hasil. Skripsi.
Universitas Pendidikan Indonesia.
Kusumadewi, S. & Sri, H. 2010. Neuro-Fuzzy Integrasi Sistem Fuzzy & Jaringan
Syaraf Edisi 2. Yogyakarta: Graha Ilmu.
Othman, Z., et.al.Speech to Text Engine for Jawi Language. The International
Arab Journal of Information Technology, Vol.11, No. 5, September 2014.
Rao, V.B. 1995. C++ Neural Networks and Fuzzy Logic: Preface. MTBooks,
IDG Books Worldwide, Inc.
Razak, Z., et.al. 2008. Quranic Verse Recitation Feature Extraction Using Mel-
Frequency Cepstral Coefficient (MFCC). 4th International Colloquium on
Signal Processing and its Applications, March 7-9, Kuala Lumpur,
Malaysia.
Tanggal Tempat
No Penulis Seminar
Seminar Seminar
Seminar Nasional Teknologi Hotel Grand
Lidya 1 – 2 September
1 Informasi dan Komunikasi Kanaya
Rosnita 2015
2015 (SNASTIKOM 2015) Medan
Lidya Seminar Nasional Teknologi
2 12 Desember 2015 Tapaktuan
Rosnita Rekayasa (SNTR 2)
SOURCE CODE PROGRAM
Halaman Utama
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, sSkinProvider,
sSkinManager, ComCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Image1: TImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
sSkinManager1: TsSkinManager;
sSkinProvider1: TsSkinProvider;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Algoritma Bidirectional Associative Memory
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls, ExtDlgs, jpeg;
type
TForm2 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
MainMenu1: TMainMenu;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Preprocessing1: TMenuItem;
OReGrayKon1: TMenuItem;
Latih1: TMenuItem;
Lokalisir1: TMenuItem;
Refleksi1: TMenuItem;
UpdateKoordinat1: TMenuItem;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Label2: TLabel;
Button9: TButton;
Button10: TButton;
Label3: TLabel;
Button11: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
GroupBox2: TGroupBox;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Label4: TLabel;
Label5: TLabel;
Button16: TButton;
GroupBox3: TGroupBox;
StaticText1: TStaticText;
StaticText2: TStaticText;
Memo1: TMemo;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Refleksi1Click(Sender: TObject);
procedure UpdateKoordinat1Click(Sender: TObject);
procedure OReGrayKon1Click(Sender: TObject);
procedure Lokalisir1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
citra1,citra2, citra3, citra4 : TBitmap;
citra5, citra6 : TBitmap;
sw,sh : word;
X_atas, Y_atas, X_baw, Y_baw : integer;
t_edge : array [0..1000, 0..1000] of byte;
t_edge_bipo : array [0..1000, 0..1000] of
integer;
Fi : Textfile;
NamaArsip : String;
koor_x_atas_waj : integer;
koor_y_atas_waj : integer;
koor_x_baw_waj : integer;
koor_y_baw_waj : integer;
luasframe : integer;
tampungkoordinat : string;
sensitif : integer;
templating1 : array [0..1000, 0..1000] of
integer;
templating2 : array [0..1000, 0..1000] of
integer;
templating3 : array [0..1000, 0..1000] of
integer;
templating4 : array [0..1000, 0..1000] of
integer;
implementation
uses Unit1;
{$R *.dfm}
Image1.Picture.Bitmap := citra1;
sw := citra1.width;
sh := citra1.height;
statictext1.caption := inttostr(sw);
statictext2.caption := inttostr(sh);
end;
Image2.Picture.Bitmap := citra2;
citra2.SaveToFile('resizinghasil.bmp');
end;
sum:=sum+(sobel[0,i+1,j+1]*row[i+1,x+j*3]);
jum:=0;
for i:=-1 to 1 do
for j:=-1 to 1 do
jum:=jum+(sobel[1,i+1,j+1]*row[i+1,x+j*3]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum<0 then sum:=0;
for k:=0 to 2 do col[x+k]:=sum;
t_edge[pos_y,pos_x]:=sum;
if t_edge[pos_y,pos_x]<20 then begin
t_edge[pos_y,pos_x]:=0;
t_edge_bipo[pos_y,pos_x]:=-1;
end else
if t_edge[pos_y,pos_x]>=20 then begin
t_edge[pos_y,pos_x]:=1;
t_edge_bipo[pos_y,pos_x]:=1;
end;
//t_edge bipolar
inc(x,3);
inc(pos_x,1);
until x>=3*(citra4.Width-4);
end;
Image4.Picture.bitmap := citra4;
citra4.SaveToFile('convolusi.bmp');
citra_tampung.free;
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitB.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];
if x=0 then y:=1 else y:=0;
//SET BIPOLAR
if x=0 then x:=-1 else x:=1;
//SET WT
bobot:=x+y;
writeln(Fi,inttostr(templating1[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitB2.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];y:=1;
if x=0 then y:=1 else y:=0;
//SET BIPOLAR
if x=0 then x:=-1 else x:=1;
//SET WT
bobot:=x+y;
writeln(Fi,inttostr(templating2[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
begin
Image5.Picture.bitmap := citra2;
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating1[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
//------------------loading Tanwin Fattah
pos_y:=0;
//Arsip
NamaArsip:='bitB2.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating2[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
//------------------loading Tanwin Kasrah
pos_y:=0;
//Arsip
NamaArsip:='bitB3.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating3[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
//------------------loading Tanwin Dhammah
pos_y:=0;
//Arsip
NamaArsip:='bitB4.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating4[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
ini_y:=0;
cac_1:=0;
cac_2:=0;
cac_3:=0;
cac_4:=0;
//----------------------------------set to 0
jarak_bc_weed_1:=0;
tampung_bc_atas:=0;
tampung_bc_baw:=0;
jarak_bc_weed_2:=0;
tampung_bc_atas2:=0;
tampung_bc_baw2:=0;
jarak_bc_weed_3:=0;
tampung_bc_atas3:=0;
tampung_bc_baw3:=0;
jarak_bc_weed_4:=0;
tampung_bc_atas4:=0;
tampung_bc_baw4:=0;
tampung_bc_atas2:=tampung_bc_atas2+abs(templating2[ini_y,ini
_x]-t_edge[cac_y, cac_x]);
tampung_bc_baw2:=+tampung_bc_baw2+(templating2[ini_y,ini_x]+
t_edge[cac_y, cac_x]);
tampung_bc_atas3:=tampung_bc_atas3+abs(templating3[ini_y,ini
_x]-t_edge[cac_y, cac_x]);
tampung_bc_baw3:=+tampung_bc_baw3+(templating3[ini_y,ini_x]+
t_edge[cac_y, cac_x]);
tampung_bc_atas4:=tampung_bc_atas4+abs(templating4[ini_y,ini
_x]-t_edge[cac_y, cac_x]);
tampung_bc_baw4:=+tampung_bc_baw4+(templating4[ini_y,ini_x]+
t_edge[cac_y, cac_x]);
tampung_bc_bagi:=tampung_bc_atas/tampung_bc_baw;
jarak_bc_weed_1:=jarak_bc_weed_1+(tampung_bc_bagi);
tampung_bc_bagi2:=tampung_bc_atas2/tampung_bc_baw2;
jarak_bc_weed_2:=jarak_bc_weed_2+(tampung_bc_bagi2);
tampung_bc_bagi3:=tampung_bc_atas3/tampung_bc_baw3;
jarak_bc_weed_3:=jarak_bc_weed_3+(tampung_bc_bagi3);
tampung_bc_bagi4:=tampung_bc_atas4/tampung_bc_baw4;
jarak_bc_weed_4:=jarak_bc_weed_4+(tampung_bc_bagi4);
if cac_1>=(luasframe-sensitif) then
if (jarak_bc_weed_1>0) AND (jarak_bc_weed_1<=1) then
begin
label4.caption:=inttostr(cac_1);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clgreen;
image5.Canvas.Ellipse(koor_x_atas_waj,koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_1:=0;
end; // end if cac_1
if cac_2>=(luasframe-sensitif) then
if (jarak_bc_weed_2>0) AND (jarak_bc_weed_2<=1) then
begin
label5.caption:=inttostr(cac_2);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clred;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_2:=0;
end; // end if cac_2
if cac_3>=(luasframe-sensitif) then
if (jarak_bc_weed_3>0) AND (jarak_bc_weed_3<=1) then
begin
label5.caption:=inttostr(cac_3);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clyellow;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_3:=0;
end; // end if cac_3
if cac_4>=(luasframe-sensitif) then
if (jarak_bc_weed_4>0) AND (jarak_bc_weed_4<=1) then
begin
label5.caption:=inttostr(cac_4);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clblue;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_4:=0;
end; // end if cac_4
writeln(Fi,inttostr(X_atas));
writeln(Fi,inttostr(Y_atas));
writeln(Fi,inttostr(X_baw));
writeln(Fi,inttostr(Y_baw));
CloseFile(Fi);
end;
end;
CloseFile(Fi);
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
sensitif:=strtoint(edit10.Text);
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitB3.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
for j:=Y_atas to Y_baw-1 do
begin
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];y:=1;
if x=0 then y:=1 else y:=0;
//SET BIPOLAR
if x=0 then x:=-1 else x:=1;
//SET WT
bobot:=x+y;
writeln(Fi,inttostr(templating3[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitB4.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
for j:=Y_atas to Y_baw-1 do
begin
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];y:=1;
if x=0 then y:=1 else y:=0;
//SET BIPOLAR
if x=0 then x:=-1 else x:=1;
//SET WT
bobot:=x+y;
writeln(Fi,inttostr(templating4[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
initialization
citra1 := Tbitmap.create;
with citra1 do
begin
pixelformat := pf24bit;
width := 100; height := 100;
end;
citra2 := TBitmap.create;
with citra2 do
begin
pixelformat := pf24bit;
width := 100; height := 100;
end;
sw := 100; sh := 100;
finalization
citra1.free;
citra2.free;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls,ExtDlgs, jpeg, math;
type
TForm3 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
MainMenu1: TMainMenu;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Preprocessing1: TMenuItem;
OReGrayKon1: TMenuItem;
Latih1: TMenuItem;
Lokalisir1: TMenuItem;
Refleksi1: TMenuItem;
UpdateKoordinat1: TMenuItem;
Button5: TButton;
Label1: TLabel;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Label2: TLabel;
Button9: TButton;
Button10: TButton;
Label3: TLabel;
Button11: TButton;
GroupBox2: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Label4: TLabel;
Label5: TLabel;
GroupBox3: TGroupBox;
StaticText1: TStaticText;
StaticText2: TStaticText;
Memo1: TMemo;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure OReGrayKon1Click(Sender: TObject);
procedure Lokalisir1Click(Sender: TObject);
procedure Refleksi1Click(Sender: TObject);
procedure UpdateKoordinat1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
citra1,citra2, citra3, citra4 : TBitmap;
citra5, citra6 : TBitmap;
sw,sh : word;
X_atas, Y_atas, X_baw, Y_baw : integer;
t_edge : array [0..1000, 0..1000] of byte;
t_edge_bipo : array [0..1000, 0..1000] of
integer;
Fi : Textfile;
NamaArsip : String;
koor_x_atas_waj : integer;
koor_y_atas_waj : integer;
koor_x_baw_waj : integer;
koor_y_baw_waj : integer;
luasframe : integer;
tampungkoordinat : string;
sensitif : integer;
templating1 : array [0..1000, 0..1000] of
integer;
templating2 : array [0..1000, 0..1000] of
integer;
templating3 : array [0..1000, 0..1000] of
integer;
templating4 : array [0..1000, 0..1000] of
integer;
implementation
uses Unit1;
{$R *.dfm}
Image1.Picture.Bitmap := citra1;
sw := citra1.width;
sh := citra1.height;
statictext1.caption := inttostr(sw);
statictext2.caption := inttostr(sh);
end;
begin
destwidth := strtoint(edit1.text);
f := sw / destwidth;
fi2 := 1/f;
fi2 := fi2*fi2;
//destheight := trunc(citra1.height/f);
destheight := 600;
with citra2 do
begin
width := destwidth;
height := destheight;
end;
//---
for y := 0 to destheight-1 do //vertical
destination pixels
begin
sy1 := f * y;
sy2 := sy1 + f;
for x := 0 to destwidth-1 do //horizontal
destination pixels
begin
sx1 := f * x;
sx2 := sx1 + f;
destR := 0; destG := 0; destB := 0; //clear
colors
for j := floor(sy1) to ceiling(sy2)-1 do //vertical
source pixels
begin
dy := 1;
if sy1 > j then begin
dy := dy-(sy1-j);
end;
if sy2 < j+1 then begin
dy := dy-(j+1-sy2);
end;
for i := floor(sx1) to ceiling(sx2)-1 do //horizontal
source pixels
begin
dx := 1;
if sx1 > i then begin
dx := dx-(sx1-i);
end;
if sx2 < i+1 then begin
dx := dx-(i+1-sx2);
end;
color := citra1.canvas.pixels[i,j];
sR := color and $ff;
sG := (color shr 8) and $ff;
sB := (color shr 16) and $ff;
PC := dx*dy*fi2;
destR := destR + sR*PC;
destG := destG + sG*PC;
destB := destB + sB*PC;
end;//for i
end;//for j
citra2.Canvas.pixels[x,y] :=
RGB(trunc(destR),trunc(destG),trunc(destB));
end;//for x
end;//for y
Image2.Picture.Bitmap := citra2;
citra2.SaveToFile('resizinghasil.bmp');
end;
begin
citra3 := TBitmap.Create;
citra3.LoadFromFile('resizinghasil.bmp');
sum:=sum+(sobel[0,i+1,j+1]*row[i+1,x+j*3]);
jum:=0;
for i:=-1 to 1 do
for j:=-1 to 1 do
jum:=jum+(sobel[1,i+1,j+1]*row[i+1,x+j*3]);
sum := (sum + jum)+p;
if sum>255 then sum:=255;
if sum<0 then sum:=0;
for k:=0 to 2 do col[x+k]:=sum;
t_edge[pos_y,pos_x]:=sum;
if t_edge[pos_y,pos_x]<20 then begin
t_edge[pos_y,pos_x]:=0;
t_edge_bipo[pos_y,pos_x]:=-1;
end else
if t_edge[pos_y,pos_x]>=20 then begin
t_edge[pos_y,pos_x]:=1;
end;
//t_edge bipolar
inc(x,3);
inc(pos_x,1);
until x>=3*(citra4.Width-4);
end;
Image4.Picture.bitmap := citra4;
citra4.SaveToFile('convolusi.bmp');
citra_tampung.free;
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitF.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];
if x=0 then y:=1 else y:=2;
writeln(Fi,inttostr(templating1[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitF2.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
writeln(Fi,inttostr(templating2[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
begin
Image5.Picture.bitmap := citra2;
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating1[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
//------------------loading Tanwin Fattah
pos_y:=0;
//Arsip
NamaArsip:='bitF2.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating2[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
//------------------loading Tanwin Kasrah
pos_y:=0;
//Arsip
NamaArsip:='bitF3.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating3[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
//------------------loading Tanwin Fattah
pos_y:=0;
//Arsip
NamaArsip:='bitF4.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
readln(Fi,baca);
templating4[pos_y,pos_x]:=strtoint(baca);
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
end;
CloseFile(Fi);
//------------------------------------
ini_y:=0;
cac_1:=0;
cac_2:=0;
cac_3:=0;
cac_4:=0;
//----------------------------------set to 0
jarak_bc_weed_1:=0;
tampung_bc_atas:=0;
tampung_bc_baw:=0;
jarak_bc_weed_2:=0;
tampung_bc_atas2:=0;
tampung_bc_baw2:=0;
jarak_bc_weed_3:=0;
tampung_bc_atas3:=0;
tampung_bc_baw3:=0;
jarak_bc_weed_4:=0;
tampung_bc_atas4:=0;
tampung_bc_baw4:=0;
tampung_bc_atas2:=tampung_bc_atas2+abs(templating2[ini_y,ini
_x]-t_edge[cac_y, cac_x]);
tampung_bc_baw2
:=+tampung_bc_baw2+(templating2[ini_y,ini_x]+t_edge[cac_y,
cac_x]);
tampung_bc_atas3:=tampung_bc_atas3+abs(templating3[ini_y,ini
_x]-t_edge[cac_y, cac_x]);
tampung_bc_baw3
:=+tampung_bc_baw3+(templating3[ini_y,ini_x]+t_edge[cac_y,
cac_x]);
tampung_bc_atas4:=tampung_bc_atas4+abs(templating4[ini_y,ini
_x]-t_edge[cac_y, cac_x]);
tampung_bc_baw4
:=+tampung_bc_baw4+(templating4[ini_y,ini_x]+t_edge[cac_y,
cac_x]);
tampung_bc_bagi:=tampung_bc_atas/tampung_bc_baw;
jarak_bc_weed_1:=jarak_bc_weed_1+(tampung_bc_bagi);
tampung_bc_bagi2:=tampung_bc_atas2/tampung_bc_baw2;
jarak_bc_weed_2:=jarak_bc_weed_2+(tampung_bc_bagi2);
tampung_bc_bagi3:=tampung_bc_atas3/tampung_bc_baw3;
jarak_bc_weed_3:=jarak_bc_weed_3+(tampung_bc_bagi3);
tampung_bc_bagi4:=tampung_bc_atas4/tampung_bc_baw4;
jarak_bc_weed_4:=jarak_bc_weed_4+(tampung_bc_bagi4);
if cac_1>=(luasframe-sensitif) then
if (jarak_bc_weed_1>0) AND (jarak_bc_weed_1<=1) then
begin
label4.caption:=inttostr(cac_1);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clgreen;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_1:=0;
end; // end if cac_1
if cac_2>=(luasframe-sensitif) then
if (jarak_bc_weed_2>0) AND (jarak_bc_weed_2<=1) then
begin
label5.caption:=inttostr(cac_2);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clred;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_2:=0;
end; // end if cac_2
if cac_3>=(luasframe-sensitif) then
if (jarak_bc_weed_3>0) AND (jarak_bc_weed_3<=1) then
begin
label5.caption:=inttostr(cac_3);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clyellow;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_3:=0;
end; // end if cac_3
if cac_4>=(luasframe-sensitif) then
if (jarak_bc_weed_4>0) AND (jarak_bc_weed_4<=1) then
begin
label5.caption:=inttostr(cac_4);
//maka catat koordinat awal dan ahir frame
koor_x_atas_waj:=pos_x;
koor_y_atas_waj:=pos_y;
koor_x_baw_waj:=koor_x_atas_waj+ X_baw-X_atas ;
koor_y_baw_waj:=pos_y+ Y_baw-Y_atas;
//frame
image5.Canvas.Brush.Style:=bsclear;
image5.Canvas.Pen.Width:=5;
image5.Canvas.Pen.Color:=clblue;
image5.Canvas.Ellipse(koor_x_atas_waj, koor_y_atas_waj,
koor_x_baw_waj, koor_y_baw_waj);
cac_4:=0;
end; // end if cac_4
end; //end for awal
//if cac_1>1500 then edit8.Text:=inttostr(cac_1);
end;
writeln(Fi,inttostr(X_atas));
writeln(Fi,inttostr(Y_atas));
writeln(Fi,inttostr(X_baw));
writeln(Fi,inttostr(Y_baw));
CloseFile(Fi);
end;
CloseFile(Fi);
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
sensitif:=strtoint(edit10.Text);
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitF3.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];y:=1;
if x=0 then y:=1 else y:=2;
writeln(Fi,inttostr(templating3[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
begin
//plating
pos_y:=0;
//Arsip
NamaArsip:='bitF4.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);
i:=X_atas;
inc(pos_y,1);
pos_x:=1;
repeat
x:=t_edge[j,i];y:=1;
if x=0 then y:=1 else y:=2;
writeln(Fi,inttostr(templating4[pos_y,pos_x]));
inc(i,1);
inc(pos_x,1);
until i >= X_baw-1;
//writeln(Fi);
end;
CloseFile(Fi);
edit6.Text:=inttostr(pos_x);
edit7.Text:=inttostr(pos_y);
//---------------------------------------------------------
---------------------
end;
initialization
citra1 := Tbitmap.create;
with citra1 do
begin
pixelformat := pf24bit;
width := 100; height := 100;
end;
citra2 := TBitmap.create;
with citra2 do
begin
pixelformat := pf24bit;
width := 100; height := 100;
end;
sw := 100; sh := 100;
finalization
citra1.free;
citra2.free;
end.