Anda di halaman 1dari 258

UNJUK KERJA ALGORITMA BAM DAN ALGORITMA FAM

UNTUK SISTEM PENDETEKSIAN POLA TAJWID


PADA CITRA AL-QUR‟AN

TESIS

LIDYA ROSNITA
147038058

PROGRAM STUDI S2 TEKNIK INFORMATIKA


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2016
UNJUK KERJA ALGORITMA BAM DAN ALGORITMA FAM
UNTUK SISTEM PENDETEKSIAN POLA TAJWID
PADA CITRA AL-QUR‟AN

TESIS

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah


Magister Teknik Informatika

LIDYA ROSNITA
147038058

PROGRAM STUDI S2 TEKNIK INFORMATIKA


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2016
PERSETUJUAN

Judul Tesis : UNJUK KERJA ALGORITMA BAM DAN


ALGORITMA FAM UNTUK SISTEM
PENDETEKSIAN POLA TAJWID PADA CITRA AL-
QUR‟AN
Kategori : TESIS
Nama Mahasiswa : LIDYA ROSNITA
NIM : 147038058
Program Studi : MAGISTER TEKNIK INFORMATIKA
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA

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,

Prof. Dr. Muhammad Zarlis, M.Sc


NIP: 19570701 198601 1 003
ii

PERNYATAAN

UNJUK KERJA ALGORITMA BAM DAN ALGORITMA FAM


UNTUK SISTEM PENDETEKSIAN POLA TAJWID
PADA CITRA AL-QUR‟AN

TESIS

Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 27 September 2016

Lidya Rosnita
147038058
iii

PERNYATAAN PERSETUJUAN PUBLIKASI


KARYA ILMIAH UNTUK KEPENTINGAN
AKADEMIS

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:

UNJUK KERJA ALGORITMA BAM DAN ALGORITMA FAM UNTUK SISTEM


PENDETEKSIAN POLA TAJWID PADA CITRA AL-QUR‟AN

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.

Demikian pernyataan ini dibuat dengan sebenarnya.

Medan, 27 September 2016

Lidya Rosnita
147038058
iv

Telah diuji pada


Tanggal: 27 September 2016

PANITIA PENGUJI TESIS


Ketua : Prof. Dr. Muhammad Zarlis, M.Sc
Anggota : 1. Dr. Syahril Efendi, S.Si., M.IT
2. Prof. Dr. Tulus Vor. Dipl, Math., M.Si
3. Dr. Zakarias Situmorang
v

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

UCAPAN TERIMA KASIH

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

6. Bapak Dr. Zakarias Situmorang. Selaku Dosen Pembanding/Penguji II yang


telah memberikan saran untuk perbaikan dan penyelesaian tesis ini.
7. Bapak dan Ibu Dosen yang telah memberikan materi perkuliahan dan ilmu
pengetahuan selama penulis menyelesaikan Program Studi Pascasarjana
Teknik Informatika.
8. Segenap sivitas akademika Program Studi Pascasarjana Teknik Informatika
Sumatera Utara.
9. Kedua Orangtua saya Ayahanda Ramli dan Ibunda Rusnah, S.Pd.I tercinta
yang telah memberikan kasih sayangnya, doa yang tak pernah putus serta
dorongan moril maupun materil kepada saya sehingga dapat menyelesaikan
tesis ini dengan baik.
10. Adik saya Aulia Rachman, dan Mawaddah Rizki yang telah banyak
memberikan dorongan dan bantuan kepada saya sehingga dapat menyelesaikan
tesis ini.
11. Teman-teman seperjuangan Angkatan 2014 Kom-C yang telah memberikan
dukungan kepada penulis dalam penyelesaian tesis ini.

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.

Medan, 27September 2016


Penulis

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 %.

Kata kunci : Bidirectional Associative Memory, Fuzzy Associative Memory, true


detection, pendeteksian pola.
ix

PERFORMANCE OF BAM ALGORITHM AND FAM ALGORITHM


FOR PATTERN DETECTION SYSTEM TAJWEED
IN IMAGE OF AL-QUR’AN

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 %.

Keywords: Bidirectional Associative Memory, Fuzzy Associative Memory, true


detection, pattern detection.
x

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

BAB 2 LANDASAN TEORI 6


2.1. Citra Digital 6
2.2. Kompleksitas Algoritma 6
2.3. Kompleksitas Waktu Algoritma 7
2.4. Konvolusi 9
2.5. Jaringan Syaraf Tiruan 10
2.6. Al-Qur‟an 12
2.7. Ilmu Tajwid 14
2.8. Hukum Nun Mati / Tanwin 14
2.8.1. Izh-har halqi 15
2.8.2. Idgham bighunnah 15
2.8.3. Izh-har 15
2.8.4. Idgham bilaghunnah 16
2.8.5. Iqlab 16
2.8.6. Ikhfa‟ 16
2.9. Bidirectional Associative Memory (BAM) 16
2.10. Fuzzy Associative Memory (FAM) 18
2.11. Deteksi Tepi Menggunakan Operator Sobel 20
2.12. Riset Terkait 21

BAB 3 METODE PENELITIAN 22


3.1. Diagram Alur Kerja Penelitian 22
3.2. Data dan Peralatan yang Digunakan 22
3.3. Skema Sistem 23
3.4. Skema Proses Grayscale 24
3.5. Skema Proses Konvolusi 25
3.6. Skema Proses Resize 25
xi

3.7. Jaringan Syaraf Tiruan 26


3.8. Parameter Pengukuran Evaluasi Unjuk Kerja Sistem 28

BAB 4 HASIL DAN PEMBAHASAN 29


4.1. Hasil 29
4.1.1. Sampel pelatihan citra Al-Qur‟an 29
4.1.2. Hasil vektor pola citra Al-Qur‟an 30
4.1.3. Hasil deteksi citra Al-Qur‟an 31
4.1.4. Pengukuran unjuk kerja sistem pendeteksi pola
tajwid pada citra Al-Qur‟an 32
4.1.5. Hasil perhitungan kompleksitas big theta (𝜃) 186
4.2 Pembahasan 189

BAB 5 KESIMPULAN DAN SARAN 194


5.1 Kesimpulan 194
5.2 Saran 195

DAFTAR PUSTAKA 196


LAMPIRAN 198
xii

DAFTAR TABEL

Tabel 1.1. Unjuk kerja berbagai pendekatan pengolahan sinyal suara 3


Tabel 4.1. Hasil unjuk kerja sistem dengan nilai sensitif 70 pada
algoritma BAM 33
Tabel 4.2. Hasil unjuk kerja sistem dengan nilai sensitif 70 pada
algoritma FAM 42
Tabel 4.3. Hasil unjuk kerja sistem dengan nilai sensitif 100 pada
algoritma BAM 52
Tabel 4.4. Hasil unjuk kerja sistem dengan nilai sensitif 100 pada
algoritma FAM 61
Tabel 4.5. Hasil unjuk kerja sistem dengan nilai sensitif 130 pada
algoritma BAM 79
Tabel 4.6. Hasil unjuk kerja sistem dengan nilai sensitif 130 pada
algoritma FAM 78
Tabel 4.7. Hasil unjuk kerja sistem dengan nilai sensitif 150 pada
algoritma BAM 89
Tabel 4.8. Hasil unjuk kerja sistem dengan nilai sensitif 150 pada
algoritma FAM 98
Tabel 4.9. Hasil unjuk kerja sistem dengan nilai sensitif 170 pada
algoritma BAM 108
Tabel 4.10. Hasil unjuk kerja sistem dengan nilai sensitif 170 pada
algoritma FAM 117
Tabel 4.11. Hasil unjuk kerja sistem dengan nilai sensitif 200 pada
algoritma BAM 127
Tabel 4.12. Hasil unjuk kerja sistem dengan nilai sensitif 200 pada
algoritma FAM 136
Tabel 4.13. Hasil unjuk kerja sistem dengan nilai sensitif 230 pada
algoritma BAM 146
Tabel 4.14. Hasil unjuk kerja sistem dengan nilai sensitif 230 pada
algoritma FAM 155
Tabel 4.15. Hasil unjuk kerja sistem dengan nilai sensitif 250 pada
algoritma BAM 165

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

Tabel 4.18. Perhitungan big theta algoritma BAM 186


Tabel 4.19. Perhitungan big theta algoritma FAM 188
xiv

DAFTAR GAMBAR

Gambar 2.1. Arsitektur Bidirectional Associative Memory 16


Gambar 2.2. Arsitektur Fuzzy Associative Memor 18
Gambar 3.1. Alur kerja penelitian secara umum 22
Gambar 3.2. Skema sistem pendeteksian pola tajwid menggunakan
algoritma BAM dan algoritma FAM 23
Gambar 3.3. Diagram alir proses grayscale 24
Gambar 3.4. Diagram alir proses konvolusi 25
Gambar 3.5. Diagram proses resize 26
Gambar 3.6. Diagram alir algoritma BAM 27
Gambar 3.7. Diagram alir algoritma FAM 28
Gambar 4.1. Beberapa sampel citra Al-Qur‟an yang digunakan 29
Gambar 4.2. Vektor pola citra Al-Qur‟an hasil koreksi dan pengamatan
pada sejumlah citra Al-Qur‟an yang digunakan sebagai
pelatihan 30
Gambar 4.3. Beberapa hasil true detection pada citra Al-Qur‟an 31
Gambar 4.4. Beberapa hasil false detection pada citra Al-Qur‟an 32
Gambar 4.5. Grafik unjuk kerja sistem pada nilai sensitif 70 51
Gambar 4.6. Grafik unjuk kerja sistem pada nilai sensitif 100 70
Gambar 4.7. Grafik unjuk kerja sistem pada nilai sensitif 130 89
Gambar 4.8. Grafik unjuk kerja sistem pada nilai sensitif 150 108
Gambar 4.9. Grafik unjuk kerja sistem pada nilai sensitif 170 127
Gambar 4.10. Grafik unjuk kerja sistem pada nilai sensitif 200 146
Gambar 4.11. Grafik unjuk kerja sistem pada nilai sensitif 230 165
Gambar 4.12. Grafik unjuk kerja sistem pada nilai sensitif 250 184
Gambar 4.13. Grafik keseluruhan pola dengan delapan nilai sensitif 185
Gambar 4.14. Beberapa contoh citra edge yang memuat lokasi tajwid
yang berhasil dideteksi 190
BAB 1

PENDAHULUAN

1.1. Latar Belakang

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.

Tabel 1.1. Unjuk kerja berbagai pendekatan pengolahan sinyal suara


Tingkat
No. Metode Peneliti Keakuratan Kelemahan Penelitian
Deteksi
Memiliki kendala untuk
pengenalan satu ke
banyak, karena ada
Mel Frequency kebutuhan untuk
1. Cepstrum Arshad, memperluas proses
100 %
Coefficient N.W., dkk untuk melakukan proses
(MFCC) pencocokan karena
kesederhanaan teknik
pencocokan yang
digunakan.
Mel Frequency
Cepstral 86.928 %, Penggunaan teknik
2. Coefficient and Ismail, A., 94.495 %, hybrid yang lainnya
Vector dkk dan 64.683 harus lah diuji pada
Quantization % aturan tajwid qalqalah.
(MFCC-VQ)
3. Mel-Frequency Razak, Z., Sulitnya membedakan
98.6 %
Cepstral dkk
4

Coefficient antara ucapan bahasa


(MFCC) arab Al-Qur‟an dengan
pengucapan
berdasarkan fitur vektor
yang menghasilkan
ouput.

Pada penelitian ini, pengenalan tajwid automatic haruslah memenuhi kriteria


sebagai berikut:
1. Setiap mushaf Al-Qur‟an yang ada didunia memiliki tidak jauh berbeda polanya
antara satu mushaf ke mushaf yang lain. Dengan pola yang tidak jauh berbeda
mengakibatkan proses belajar yang diperlukan dapat tanpa melakukan
pengawasan (unsupervised).
2. Komputasi yang digunakan adalah komputasi yang dapat dikembangkan untuk
sistem-sistem pendeteksian pola real time.
3. Algoritma yang digunakan bersifat peniruan perilaku manusia. Untuk itu
komputasi dapat flexible dalam peniruan otak manusia.
Berdasarkan kriteria tersebut, algoritma Bidirectional Associative Memory
(BAM) dan algoritma Fuzzy Associative Memory (FAM) dapat memenuhi ke tiga
syarat tersebut dalam membangun pola tajwid pada citra Al-Qur‟an. Alasan pemilihan
algoritma Bidirectional Associative Memory (BAM) dan algortima Fuzzy Associative
Memory (FAM) dikarenakan pada model ini struktur neuron yang digunakan tidak
begitu kompleks dan iterasi komputasi yang diperlukan untuk menyesuaikan bobot
pelatihan tidak terlalu panjang. Di dalam bidang pengolahan citra masih sangat minim
penelitian tentang pengenalan pola tajwid pada citra Al-Qur‟an. Untuk itu di dalam
penelitian ini penulis ingin membandingkan unjuk kerja dua algoritma berdasarkan
delapan nilai sensitif yang berbeda dalam sistem pendeteksian pola tajwid iqlab pada
citra Al-Qur‟an.
5

1.2. Rumusan Masalah

Sistem pendeteksian pola umumnya menggunakan rumpun jaringan yang supervised,


sehingga memerlukan jumlah data yang besar pada tahap pelatihan untuk mengenal
hanya beberapa pola. Disisi lain, dengan mendapatkan data yang besar untuk pelatihan
akan menambah waktu yang lebih lama. Oleh karena itu akan sangat menyulitkan bagi
peneliti 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.

1.3. Batasan Masalah

Batasan masalah dalam penelitian yang akan dilakukan adalah:


1. Citra yang digunakan adalah citra Al-Qur‟an yang menggunakan baris.
2. Pola iqlab yang dideteksi adalah pola nun mati ( ‫ْن‬ ) bertemu dengan ba ( ‫) ب‬,
dan pola tanwin ( ٌ ٍ ً ) bertemu dengan ba ( ‫) ب‬.

1.4. Tujuan Penelitian

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.

1.5. Manfaat Penelitian

Manfaat penelitian yang diharapkan adalah :


1. Membantu para user secara automatic dalam mendeteksi pola tajwid pada citra
Al-Qur‟an.
2. Dapat digunakan sebagai langkah awal untuk penelitian unjuk kerja algoritma
untuk sistem pendeteksian pola tajwid pada citra Al-Qur‟an yang bisa
diaplikasikan pada sistem pendeteksian tajwid lainnya.
3. Sebagai bahan evaluasi perbandingan terhadap berbagai pendekatan lainnya.
BAB 2

LANDASAN TEORI

2.1. Citra Digital

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).

2.2. Kompleksitas Algoritma

Suatu masalah dapat mempunyai banyak algoritma penyelesaian. Algoritma yang


digunakan tidak saja harus benar, namun juga harus efisien. Efisiensi suatu algoritma
dapat diukur dari waktu eksekusi algoritma dan kebutuhan ruang memori. Algoritma
yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang.
Dengan menganalisis beberapa algoritma untuk suatu masalah, dapat diidentifikasi
suatu algoritma yang paling efisien. Besaran yang digunakan untuk menjelaskan
model pengukuran waktu dan ruang ini adalah kompleksitas algoritma.
7

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak


komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara
informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang
singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan
waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Kompleksitas algoritma terdiri dari dua macam yaitu kompleksitas waktu dan
kompleksitas ruang.
Kompleksitas waktu, dinyatakan oleh T(n), diukur dari jumlah tahapan
komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran
masukan n, dimana ukuran masukan (n) merupakan jumlah data yang diproses oleh
sebuah algoritma. Sedangkan kompleksitas ruang S(n), diukur dari memori yang
digunakan oleh struktur data yang terdapat didalam algoritma sebagai fungsi dari
masukan n. Dengan menggunakan kompleksitas waktu atau kompleksitas ruang, dapat
ditentukan laju peningkatan waktu atau ruang yang diperlukan algoritma, seiring
dengan meningkatnya ukuran masukan (n) (Azizah, 2013).

2.3. Kompleksitas Waktu Algoritma

Untuk menentukan kompleksitas waktu suatu algoritma, diperlukan ukuran masukan n


serta running time algoritma tersebut. Pada umumnya, running time algoritma
meningkat seiring dengan bertambahnya ukuran n. Sehingga, running time suatu
algoritma dapat dinyatakan sebagai fungsi dari n.
Ukuran masukan n untuk suatu algoritma bergantung pada masalah yang
diselesaikan oleh algoritma tersebut. Pada banyak kasus, seperti pengurutan, ukuran
yang paling alami adalah jumlah item dalam masukan. Dalam kasus lain, seperti
mengalikan dua bilangan bulat, ukuran input terbaik adalah jumlah bit yang
diperlukan untuk mewakili masukan dalam notasi biner biasa.
Running time algoritma pada masukan n tertentu merupakan jumlah operasi
atau langkah yang dieksekusi. Selanjutnya, jumlah waktu yang konstan diperlukan
untuk mengeksekusi setiap baris pseudocode (kode semu). Satu baris dapat memiliki
jumlah waktu yang berbeda dari baris lain. Namun asumsikan bahwa setiap
pelaksanaan baris ke-i membutuhkan waktu sebesar ci, dimana ci adalah konstanta.
8

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

(c2 + c4 + c5 + c8) ....... (2.5)


2
Running time untuk kasus terburuk ini dapat dinyatakan sebagai an + bn + c
untuk a, b, dan c konstanta yang bergantung pada nilai ci. Sehingga, running time
tersebut merupakan fungsi kuadratik dari n (Cormen, et.al. 2009).

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)


notasi  merupakan operator konvolusi. Untuk fungsi diskrit konvolusi didefinisikan


sebagai,

h x   f  x   g  x    f a g x  a  ....... (2.7)
a  

di mana g x  merupakan kernel konvolusi atau kernel filter.


Untuk fungsi dua dimensi, operasi konvolusi didefinisikan sebagai : (untuk
fungsi kontinu)
 
hx, y   f x, y   g x, y     f a, bg x  a, y  bdadb ....... (2.8)
 

dan untuk fungsi diskrit, didefinisikan sebagai :


 
hx, y   f x, y   g x, y    f a, b g x  a, y  b  ....... (2.9)
 

Fungsi filter g x, y  disebut juga filter konvolusi, mask konvolusi, kernel konvolusi,
atau template (Fadlisyah & Rizal, 2011).

2.5. Jaringan Saraf Tiruan

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

Belajar tanpa pengawasan (unsupervised learning), pada proses belajar tanpa


pengawasan jaringan tidak mendapatkan target, sehingga JST mengatur bobot
interkoneksinya sendiri. Belajar tanpa pengawasan kadang-kadang direferensikan
sebagai self-organizing learning, atau pembelajaran mengklasifikasikan suatu pola
tanpa diperlukan suatu set pelatihan. Pada proses belajar tanpa pengawasan JST akan
mengklasifikasikan sampel pola-pola masukan yang tersedia ke dalam berbagai
kelompok yang berbeda. Contoh JST dengan belajar tanpa pengawasan salah satunya
adalah jaringan kohonen (Fadlisyah & Rizal, 2011).

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)

2.7. Ilmu Tajwid

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).

2.8. Hukum Nun Mati / Tanwin

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

4. Dibaca Idgham bilaghunnah


5. Dibaca Iqlab
6. Dibaca Ikhfa‟
Izh-har yaitu membaca dengan terang atau mengeluarkan huruf dari
makhrajnya dengan tiada bercampur ghunnah (mendengung) dan tasydid. Halqi
artinya tenggerokan. Huruf halqi artinya huruf yang keluarnya suara berasal dari
tenggorokan.
Idgham artinya memasukkan huruf satu ke dalam huruf yang lain (berikutnya).
Ghunnah artinya bacaan yang berdengung. Bilaghunnah artinya tidak mendengung.
Iqlab artinya mengganti bacaan nun atau tanwin dengan bacaan mim yang
disamarkan dan dengan mendengung. Ikhfa‟ artinya samar (Sunarto, 1988).

2.8.1. Izh-har halqi

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 : ‫ح خ‬

‫ءهعغ‬

2.8.2. Idgham bighunnah

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

2.8.4. Idgham bilaghunnah

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 ‫ث ذ ص‬

‫ ظ ض ت ف ز ط د س ق ش ج ك‬, hukumnya dibaca ikhfa.

2.9. Bidirectional Associative Memory (BAM)

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.

Gambar 2.1. Arsitektur Bidirectional Associative Memory


Seperti yang terlihat pada gambar diatas, bahwa arsitektur jaringan ini terdiri
dari dua lapisan neuron yaitu, input dan output. Informasi dari jaringan ini dapat
17

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

2.10. Fuzzy Associative Memory (FAM)

Fuzzy Associative Memory (FAM) memetakan beberapa himpunan fuzzy yang


membentuk aturan (rule). FAM merupakan suatu sistem fuzzy yang memetakan
himpunan-himpunan fuzzy ke himpunan-himpunan fuzzy lainnya. FAM merupakan
versi fuzzy dari Bidirectional Associative Memory (BAM) (Kusumadewi & Sri, 2010).
Jaringan saraf untuk Fuzzy Associative Memory (FAM) memiliki lapisan input dan
lapisan output dengan koneksi penuh di kedua arah, seperti dalam jaringan syaraf
BAM. Gambar 2.2 memperlihatkan arsitektur FAM.

Gambar 2.2. Arsitektur FAM

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

𝐴′ °𝑀 ⊂ 𝐵 , untuk setiap 𝐴′ ....... (2.15)


𝐵 ′ °𝑀𝑇 ⊂ 𝐴 , untuk setiap 𝐵 ′ ....... (2.16)
Kemudian kirim sinyal ke X-layer
Langkah 5: perbaharui aktivasi pada unit neuron X-layer, dengan cara:
Hitung komposisi max-min : B = 𝐴°𝑀 ....... (2.17)
Dengan bj = max min (ai, mij)
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.

2.11. Deteksi Tepi Menggunakan Operator Sobel


Operasi ini digunakan untuk menentukan lokasi titik-titik yang merupakan tepi objek
citra. Secara umum, tepi suatu objek dalam citra dinyatakan sebagai titik yang nilai
warnanya berbeda cukup besar dengan titik yang ada disebelahnya. Metode Sobel
merupakan pengembangan metode robert dengan menggunakan filter HPF (High Pass
Filter) yang diberi satu angka nol penyangga. Operator ini mengambil prinsip dari
fungsi laplacian dan gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF
(High Pass Filter). Kelebihan dari operator sobel ini adalah kemampuan untuk
mengurangi noise sebelum melakukan perhitungan deteksi tepi. Operator sobel lebih
sensitif terhadap tepian diagonal dari pada tepian vertikal dan horisontal. Operator ini
terbentuk dari matriks berukuran 3x3 seperti berikut ini (Darma, 2010).
−1 −2 −1
𝐺𝑥 = 0 0 0
1 2 1
−1 0 1
𝐺𝑦 = 2 0 2
−1 0 1
Sama halnya dengan operator robert, operator sobel juga dapat diterapkan
secara terpisah untuk mendapatkan gradien horisontal dan gradien vertikalnya. Untuk
mendapatkan gradien gabungan dapat dihitung dengan menggunakan persamaan
berikut.
𝐺 = 𝐺𝑥2 + 𝐺𝑥2 ....... (2.18)
𝐺 = 𝐺𝑥 + 𝐺𝑦 ....... (2.19)
21

2.12. Riset Terkait

Beberapa penelitian dalam pengenalan tajwid masih menggunakan pengolahan sinyal


dan suara. Penelitian telah dilakukan peneliti tentang makhraj, harakat dan tajwid,
menurut Zaini, et.al (2014) dalam jurnalnya yang berjudul Speech to Text Engine for
Jawi Language, menggambarkan tentang pengembangan terjemahan pidato karakter
khusus yang berbicara khusus yaitu bahasa melayu teks jawi. Kombinasi Linear
Predictive Coding (LPC) dan Artificial Neural Network (ANN) yang digunakan dalam
penelitian ini untuk mengekstrak dan mengklasifikasikan sinyal pidato dengan
pelatihan metode back propagation, serta membahas tentang penggunaan jawi unicode
dalam proses penandaan karakter akhir untuk mewakili masing-masing jawi karakter
ada pada kata yang diucapkan.
Penelitian lainnya dilakukan oleh Zaidi, et.al (2008) dalam jurnalnya yang
berjudul Quranic Verse Recitation Feature Extraction Using Mel-Frequency Cepstral
Coefficient (MFCC), mengkombinasikan huruf yang sama yang mungkin diucap
secara berbeda karena penggunaan harakat. Jurnal ini mengeksplorasi teknik Mel-
Frequency Cepstral Coefficient (MFCC) untuk mengekstrak fitur dari bacaan ayat Al
Qur‟an. Ekstraksi fitur sangat penting untuk mempersiapkan data untuk proses
klasifikasi.
Nurul, et.al (2013) dalam penelitiannya yang berjudul Makhraj Recognition
for Al-Quran Recitation using MFCC, menyajikan aplikasi baru verifikasi bacaan
berdasarkan makhraj yang benar yang menggunakan sistem Mel Frequency Cepstrum
Coefficient (MFCC) sebagai ekstraksi fitur dan Mean Square Error (MSE) sebagai
teknik pencocokan pola yang dipertimbangkan dalam membangun untuk
mengembangkan sistem pengenalan makhraj.
BAB 3

METODE PENELITIAN

3.1. Diagram Alur Kerja 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

Gambar 3.1. Alur kerja penelitian secara umum

3.2. Data dan Peralatan Penelitian yang Digunakan

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.

3.3. Skema Sistem

Skema sistem pendeteksian pola tajwid yang dibangun dalam penelitian ini
diilustrasikan pada gambar 3.2.

Sekumpulan citra ayat Al-Qur‟an pelatihan

Sumber Resize Grayscale Konvolusi

Lokasi Iqlab

Uji vektor pola BAM dan FAM

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.

3.4. Skema Proses Grayscale

Diagram alir untuk proses grayscale digambarkan sebagai berikut:

Mulai

Input Citra

Kanal R = (R+G+B )/ 3
Kanal G = (R+G+B) / 3
Kanal B = (R+G+B) / 3

tidak

Apakah semua pixel


(nilai intensitas)citra
sudah dikalkulasi

ya

Selesai

Gambar 3.3. Diagram alir proses grayscale

Tahapan grayscale bertujuan untuk menyama-ratakan nilai intensitas ketiga


kanal yang terdapat pada citra. Berturut-turut nilai-nilai intensitas yang terdapat pada
kanal R, kanal G, dan kanal B dijumlahkan dan dibagi dengan jumlah kanal, sehingga
nilai-nilai kanal sekarang diperbaharui dengan nilai jumlah setiap kanal dibagi jumlah
kanal. Proses grayscale citra sangat membantu percepatan dalam komputasi
selanjutnya, karena blok sistem proses hanya cukup mengambil nilai dari salah satu
25

kanal saja sebagai presentasi nilai-nilai intensitas lainnya yang terdapat citra
(Fadlisyah, 2014).

3.5. Skema Proses Konvolusi

Diagram alir untuk proses konvolusi digambarkan sebagai berikut:

Mulai

Citra Grayscale

 (x,y)  (x  n,y) 
      kernel
 
(x,y  n)  (x  n,y  n)

tidak

Apakah semua pixel (nilai


intensitas) citra sudah dikalkulasi

ya

Selesai

Gambar 3.4. Diagram alir proses konvolusi

Konvolusi yang dilakukan dalam blok diagram sistem menggunakan operator


Sobel. Proses konvolusi dilibatkan untuk mentransformasi nilai-nilai intensitas yang
telah terkondisi dari tahapan sebelumnya, menjadi nilai-nilai intensitas yang
merepresentasikan tepi objek (ayat Al Qur‟an). Setiap nilai intensitas akan dipartisi
menjadi matriks 3x3 dan dikonvolusikan dengan sebuah kernel (Fadlisyah, 2014).

3.6. Skema Proses Resize

Diagram alir untuk proses resize digambarkan sebagai berikut:


26

Mulai

Tampung tinggi,
dan lebar gambar

Destination R = sumber pixel vertikal *


sumber pixel horizontal * tinggi tujuan
Destination G = sumber pixel vertikal *
sumber pixel horizontal * tinggi tujuan
Destination B = sumber pixel vertikal *
sumber pixel horizontal * tinggi tujuan
Tidak

Apakah semua pixel (nilai


intensitas) telah dikalkulasi

Ya

Selesai

Gambar 3.5. Diagram alir proses resize

Tahapan resize bertujuan untuk menghemat waktu dan jumlah iterasi.

3.7. Jaringan Syaraf Tiruan

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

Hitung input Y_inj

Tidak Hitung input X_inj

Apakah vektor aktivasi X dan Y


mempunyai nilai yang seimbang

Ya

Selesai

Gambar 3.6. Diagram alir algoritma BAM

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

Hitung korelasi minimum


encoding

Tidak Hitung komposisi max-min

Apakah vektor aktivasi X dan Y


mempunyai nilai yang seimbang

Ya

Selesai

Gambar 3.7. Diagram alir algoritma FAM

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.

3.8. Parameter Pengukuran Evaluasi Unjuk Kerja Sistem

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

HASIL DAN PEMBAHASAN

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.

4.1.1. Sampel pelatihan citra Al-Qur‟an


Sampel pelatihan citra Al-Qur‟an yang digunakan didalam penelitian ini adalah citra
Al-Qur‟an surat Ali-Imran yang memiliki karakteristik vektor citra Al-Qur‟an yang
berbeda. Pelatihan dilakukan menggunakan algoritma Bidirectional Associative
Memory dan algoritma Fuzzy Associative Memory. Gambar 4.1 menunjukkan
beberapa sampel citra Al-Qur‟an yang digunakan sebagai pelatihan.

Gambar 4.1. Beberapa sampel citra Al-Qur’an yang digunakan


30

4.1.2. Hasil vektor pola citra Al-Qur‟an


Setiap citra Al-Qur‟an memiliki vektor pola yang spesifik atau berbeda antara satu
citra Al-Qur‟an satu dengan citra Al-Qur‟an yang lain. Pada algoritma Bidirectional
Associative Memory dan algoritma Fuzzy Associative Memory, vektor pola citra Al-
Qur‟an harus ditentukan terlebih dahulu sebelum dilakukan pengujian. Pada gambar
4.2 menunjukkan vektor pola citra Al-Qur‟an yang dihasilkan dari pengamatan citra
Al-Qur‟an surat Ali-Imran. Vektor pola citra Al-Qur‟an acuan terkait dengan
kemunculan nilai 0 atau 1 pada sejumlah citra Al-Qur‟an pelatihan. Nilai 0 pada
vektor mewakili nilai yang bukan termasuk fitur citra Al-Qur‟an tetapi didalam
wilayah citra Al-Qur‟an, sedangkan nilai 1 mewakili nilai yang termasuk didalam fitur
citra Al-Qur‟an.

Gambar 4.2. Vektor pola citra Al-Qur’an hasil koreksi dan pengamatan pada sejumlah citra Al-
Qur’an yang digunakan sebagai pelatihan
31

4.1.3. Hasil deteksi citra Al-Qur‟an


Didalam hasil deteksi tajwid pada citra Al-Qur‟an, pengujian sistem menggunakan
empat pola. Pola yang pertama adalah apabila nun mati ( ‫ْن‬ ) bertemu dengan huruf ba

( ‫) ب‬, 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).

Gambar 4.3. Beberapa hasil true detection pada citra Al-Qur’an


32

Gambar 4.4. Beberapa hasil false detection pada citra Al-Qur’an

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

3 2 0

4 0 0

5 3 0
35

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

6 2 0

7 1 0

8 1 0
36

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

9 3 0

10 0 0

11 0 0
37

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

12 0 0

13 1 0

14 0 0
38

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

15 2 0

16 1 0

17 0 0
39

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

18 0 0

19 0 0

20 3 0
40

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

21 0 0

22 2 0

23 1 0
41

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

24 0 0

25 1 0

26 0 0
42

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

3 2 0

4 0 0

5 3 0
44

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

6 2 0

7 1 0

8 1 0
45

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

9 1 0

10 0 0

11 0 0
46

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

12 0 0

13 1 0

14 0 0
47

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

15 2 0

16 1 0

17 0 0
48

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

18 0 0

19 0 0

20 3 0
49

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

21 1 0

22 2 0

23 1 0
50

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

24 0 0

25 1 0

26 0 0
51

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 70 detection detection

27 1 0

Untuk nilai sensitif 70, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.5.

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 70


3,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

Gambar 4.5. Grafik unjuk kerja sistem dengan nilai sensitif 70

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

4 0 0

5 3 0

6 2 0
54

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

7 1 0

8 1 0

9 3 0
55

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

10 0 0

11 0 0

12 0 0
56

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

13 1 0

14 0 0

15 2 0
57

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

16 1 0

17 0 0

18 0 0
58

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

19 0 0

20 3 0

21 0 0
59

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

22 2 0

23 1 0

24 0 0
60

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

4 0 0

5 3 0

6 2 0
63

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

7 1 0

8 1 0

9 1 0
64

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

10 0 0

11 0 0

12 0 0
65

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

13 2 0

14 0 0

15 2 0
66

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

16 1 0

17 0 0

18 0 0
67

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

19 0 0

20 3 0

21 1 0
68

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

22 2 0

23 1 0

24 0 0
69

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 100 detection detection

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

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 100


3,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

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

2 1 0

3 2 0

4 0 0
72

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

5 3 0

6 2 0

7 1 0
73

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

8 1 0

9 3 0

10 0 0
74

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

11 0 0

12 0 0

13 2 0
75

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

14 1 0

15 2 0

16 1 0
76

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

17 0 0

18 0 0

19 0 0
77

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

20 3 0

21 0 0

22 2 0
78

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

23 1 0

24 0 0

25 1 0
79

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

2 1 0

3 2 0

4 0 0
81

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

5 3 0

6 2 0

7 1 0
82

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

8 1 0

9 2 0

10 0 0
83

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

11 0 0

12 0 0

13 2 0
84

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

14 0 0

15 2 0

16 1 0
85

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

17 0 0

18 0 0

19 0 0
86

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

20 3 0

21 1 0

22 2 0
87

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

23 1 0

24 0 0

25 1 0
88

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 130 detection detection

26 0 0

27 1 0

Untuk nilai sensitif 130, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.7.
89

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 130


3,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

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

2 1 0

3 2 0

4 0 0
91

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

5 3 0

6 2 0

7 1 0
92

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

8 1 0

9 3 0

10 0 0
93

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

11 0 1

12 0 0

13 2 0
94

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

14 1 0

15 2 0

16 1 0
95

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

17 0 0

18 0 0

19 0 0
96

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

20 3 0

21 1 0

22 2 0
97

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

23 1 1

24 0 0

25 1 0
98

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

2 1 0

3 2 0

4 0 0
100

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

5 3 0

6 2 0

7 1 0
101

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

8 1 0

9 2 0

10 0 0
102

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

11 0 0

12 0 0

13 2 0
103

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

14 1 0

15 2 0

16 1 0
104

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

17 0 0

18 0 0

19 0 0
105

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

20 3 0

21 2 0

22 2 0
106

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

23 1 0

24 0 0

25 1 0
107

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 150 detection detection

26 0 0

27 1 0

Untuk nilai sensitif 150, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.8.
108

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 150


3,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

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

2 1 1

3 2 0

4 0 0
110

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

5 3 0

6 2 0

7 1 0
111

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

8 1 0

9 3 1

10 0 1
112

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

11 0 2

12 0 0

13 2 0
113

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

14 1 0

15 2 0

16 1 0
114

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

17 0 0

18 0 0

19 0 0
115

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

20 3 0

21 1 1

22 2 0
116

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

23 1 1

24 0 2

25 1 0
117

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

2 1 0

3 2 0

4 0 0
119

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

5 3 0

6 2 0

7 1 0
120

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

8 1 0

9 2 0

10 0 0
121

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

11 0 3

12 0 1

13 2 0
122

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

14 1 0

15 2 0

16 1 0
123

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

17 0 0

18 0 0

19 0 0
124

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

20 3 0

21 2 1

22 2 0
125

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

23 1 1

24 0 1

25 1 0
126

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 170 detection detection

26 0 0

27 1 0

Untuk nilai sensitif 170, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.9.
127

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 170


3,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

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

2 1 3

3 2 1

4 0 3
129

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

5 3 1

6 2 0

7 1 0
130

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

8 1 2

9 3 4

10 0 2
131

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

11 0 6

12 0 2

13 2 4
132

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

14 1 3

15 2 0

16 1 0
133

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

17 0 0

18 0 0

19 0 0
134

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

20 3 3

21 1 2

22 2 0
135

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

23 1 4

24 0 11

25 1 1
136

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

2 1 0

3 2 0

4 0 0
138

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

5 3 1

6 2 0

7 1 0
139

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

8 1 5

9 2 3

10 0 2
140

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

11 0 4

12 0 4

13 2 2
141

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

14 1 1

15 2 0

16 1 0
142

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

17 0 0

18 0 0

19 0 0
143

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

20 3 3

21 2 1

22 2 0
144

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

23 1 4

24 0 15

25 1 1
145

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 200 detection detection

26 0 0

27 1 1

Untuk nilai sensitif 200, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.10.
146

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 200


3,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

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

2 1 40

3 2 30

4 0 30
148

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

5 3 6

6 2 1

7 1 1
149

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

8 1 20

9 3 20

10 0 25
150

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

11 0 35

12 0 30

13 2 35
151

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

14 1 30

15 2 8

16 1 0
152

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

17 0 0

18 0 0

19 0 0
153

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

20 3 40

21 2 25

22 2 4
154

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

23 1 35

24 0 60

25 1 7
155

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

2 1 8

3 2 4

4 0 5
157

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

5 3 6

6 2 1

7 1 2
158

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

8 1 24

9 2 10

10 0 11
159

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

11 0 16

12 0 20

13 2 24
160

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

14 1 17

15 2 8

16 1 0
161

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

17 0 0

18 0 0

19 0 0
162

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

20 3 40

21 2 13

22 2 2
163

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

23 1 34

24 0 48

25 1 7
164

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 230 detection detection

26 0 1

27 1 7

Untuk nilai sensitif 230, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.11.
165

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 230


3,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

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

2 1 70

3 2 60

4 0 50
167

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

5 3 35

6 2 9

7 1 8
168

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

8 1 45

9 3 50

10 0 47
169

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

11 0 53

12 0 59

13 2 56
170

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

14 1 39

15 2 30

16 1 0
171

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

17 0 1

18 0 0

19 0 1
172

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

20 3 53

21 2 38

22 2 18
173

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

23 1 40

24 0 61

25 1 30
174

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

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

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

2 1 43

3 2 29

4 0 41
176

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

5 3 40

6 2 16

7 1 20
177

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

8 1 47

9 3 43

10 0 38
178

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

11 0 40

12 0 38

13 2 40
179

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

14 1 36

15 2 30

16 1 1
180

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

17 0 3

18 0 0

19 0 0
181

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

20 3 43

21 2 42

22 2 19
182

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

23 1 42

24 0 53

25 1 31
183

Citra Al-Qur‟an yang Citra Al-Qur‟an dengan True False


No
digunakan nilai sensitif 250 detection detection

26 0 22

27 1 34

Untuk nilai sensitif 250, maka hasil unjuk kerja true detection yang diperoleh
ditunjukkan pada gambar 4.12.
184

Grafik Unjuk Kerja Sistem Pada Nilai Sensitif 250


3,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

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.

Tabel 4.17. Tabel keseluruhan pola dengan delapan nilai sensitif


Algoritma
No Nilai Sensitif Bidirectional Fuzzy
Associative Associative
Memory Memory
True Detection 25 24
1 Sensitif 70
False Detection 0 0
True Detection 25 25
2 Sensitif 100
False Detection 0 0
True Detection 27 26
3 Sensitif 130
False Detection 0 0
185

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.

Grafik Keseluruhan Dari Delapan Nilai Sensitif Yang Digunakan


35

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

Gambar 4.13. Grafik keseluruhan pola dengan delapan nilai sensitif


186

Pada gambar 4.13, grafik mengilustrasikan hasil true detection dari


keseluruhan delapan nilai sensitif yang digunakan dalam pendeteksian pola tajwid
pada citra Al-Qur‟an. Pada nilai sensitif 70, algoritma BAM lebih unggul satu tingkat
dibandingkan algoritma FAM. Pada nilai sensitif 100, kedua algoritma tersebut
memiliki nilai true detection yang sama. Pada nilai sensitif 130, algoritma BAM lebih
unggul satu tingkat dibandingkan algoritma FAM. Sedangkan pada tiga nilai sensitif
yang berikutnya, yaitu sensitif 150, sensitif 170, dan sensitif 200, kedua algoritma
tersebut berada pada tingkatan nilai true detection yang sama. Hal ini dikarenakan
jumlah true detection yang didapat bernilai sama, walaupun jumlah false detection
yang didapat berbeda, dan terus semakin meningkat pada setiap nilai sensitif
berikutnya. Selanjutnya pada nilai sensitif 230, algoritma BAM lebih unggul satu
tingkat dibandingkan algoritma FAM. Dan pada nilai sensitif 250, kedua algoritma ini
memiliki nilai true detection yang sama.

4.1.5. Hasil perhitungan kompleksitas big theta (𝜃)


Untuk mengetahui algoritma mana yang paling efektif melakukan pendeteksian pola
tajwid pada citra Al-Qur‟an, maka dibutuhkan perhitungan kompleksitas waktu. Pada
tabel 4.18 perhitungan kompleksitas big theta menggunakan algoritma BAM dan pada
tabel 4.19 perhitungan big theta menggunakan algoritma FAM.

Tabel 4.18. Perhitungan big theta algoritma BAM


Baris Pseudocode T(n)
1 procedure TForm2.Button12Click(Sender: TObject); C # C#
2 var C1 1 C1
3 i,j : integer; C2 1 C2
4 x,y : integer; C2 1 C2
5 bobot : byte; C3 1 C3
6 pos_x,pos_y : integer; C2 1 C2
7 begin C4 1 C4
8 pos_y:=0; C5 1 C5
9 NamaArsip:='bitB.txt'; C6 1 C6
10 AssignFile(Fi,NamaArsip); C7 1 C7
187

Baris Pseudocode T(n)


11 rewrite(Fi); C8 1 C8
12 for j:=Y_atas to Y_baw-1 do C9 n n(C9)
13 begin C4 1 C4
14 i:=X_atas; C10 n n(C10)
15 inc(pos_y,1); C11 1 C11
16 pos_x:=1; C12 n n(C12)
17 repeat C13 n C13
18 x:=t_edge[j,i]; C14 n n(C14)
19 if x=0 then y:=1 else y:=0; C15 n n(C15)
20 if x=0 then x:=-1 else x:=1; C15 n n(C15)
21 bobot:=x+y; C16 n n(C16)
22 templating1[pos_y,pos_x]:=bobot; C17 n n(C17)
23 inc(i,1); C11 1 C11
24 inc(pos_x,1); C11 1 C11
25 writeln(Fi,inttostr(templating1[pos_y,pos_x])); C18 1 C18
26 inc(i,1); C11 1 C11
27 inc(pos_x,1); C11 1 C11
28 until i >= X_baw-1; C19 n n(C19)
29 end; C20 1 C20
30 CloseFile(Fi); C21 1 C21
31 end; C20 1 C20

T(n) = C1 + C2 + C2 + C3 + C2 + C4 + C5 + C6 + C7 + C8 + C8 + n(C9) + C4 + n(C10)


C11 + n(C12) + nC13 + n(C14) + n(C15) + n(C15) + n(C16) + n(C17) + C11 +
C11+ C18 + C11 + C11 + n(C19) + C20 + C21 + C20
= C1 + 3C2 + C3 + 2C4 + C5 + C6 + C7 + 2C8 + n(C9) + n(C10) + 5C11 + (C12) +
nC13 + n(C14) + 2n(C15) + n(C16) + n(C17) + C18 + n(C19) + 2C20 + C21
= 𝜃(n)
188

Tabel 4.19. Perhitungan big theta algoritma FAM


Baris Pseudocode T(n)
1 procedure Tform3.Button12Click(Sender: TObject); C # C#
2 var C1 1 C1
3 i,j : integer; C2 1 C2
4 x,y : integer; C2 1 C2
5 bobot, bobot_max : byte; C3 1 C3
6 pos_x,pos_y : integer; C2 1 C2
7 Begin C4 1 C4
8 pos_y:=0; C5 1 C5
9 NamaArsip:='bitF.txt'; C6 1 C6
10 AssignFile(Fi,NamaArsip); C7 1 C7
11 rewrite(Fi); C8 1 C8
12 for j:=Y_atas to Y_baw-1 do C9 n n(C9)
13 Begin C4 1 C4
14 i:=X_atas; C10 n n(C10)
15 inc(pos_y,1); C11 1 C11
16 pos_x:=1; C12 n n(C12)
17 Repeat C13 n n(C13)
18 x:=t_edge[j,i]; C14 n n(C14)
19 if x=0 then y:=1 else y:=2; C15 n n(C15)
20 bobot:=min(x,y); C16 n n(C16)
21 bobot_max:=max(x,bobot); C17 n n(C17)
22 templating1[pos_y,pos_x]:=bobot_max; C18 n n(C18)
23 inc(i,1); C11 1 C11
24 inc(pos_x,1); C11 1 C11
25 writeln(Fi,inttostr(templating1[pos_y,pos_x])); C19 1 C19
26 inc(i,1); C11 1 C11
27 inc(pos_x,1); C11 1 C11
28 until i >= X_baw-1; C20 n n(C20)
29 end; C21 1 C21
189

Baris Pseudocode T(n)


30 CloseFile(Fi); C22 1 C22
31 end; C21 1 C21

T(n) = C1 + C2 + C2 + C3 + C2 + C4 + C5 + C6 + C7 + C8 + C8 + n(C9) + C4 + n(C10)


C11 + n(C12) + n(C13) + n(C14) + n(C15) + n(C16) + n(C17) + n(C18) + C11 +
C11 + C19 + C11 + C11 + n(C20) + C21 + C22 + C21
= C1 + 3C2 + C3 + 2C4 + C5 + C6 + C7 + 2C8 + n(C9) + n(C10) + 5C11 + (C12) +
n(C13) + n(C14) + n(C15) + n(C16) + n(C17) + n(C18) + C19 + n(C20) + 2C21 + C22
= 𝜃(n)

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

kasrah ( ًٍ ) bertemu dengan huruf ba ( ‫ب‬ ), dan 10 pola tanwin dhammah ( ًٌ )

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

Didalam sistem yang dibangun, pada proses pembelajaran sistem akan


melakukan resize pada citra Al-Qur‟an yang digunakan. Hal ini dikarenakan untuk
menghemat waktu dan jumlah iterasi. Selanjutnya sistem akan mengubah citra Al-
Qur‟an kedalam citra grayscale, hal ini dilakukan untuk menyederhanakan model
citra. Citra Al-Qur‟an berwarna terdiri dari tiga layer matriks yaitu R-layer, G-layer,
B-layer. Sehingga untuk melakukan proses-proses selanjutnya tetap diperhatikan
ketiga layer tersebut. Bila setiap proses perhitungan dilakukan menggunakan tiga
layer, berarti dilakukan tiga perhitungan yang sama. Sehingga konsep itu diubah
dengan mengubah tiga layer tersebut menjadi satu layer matriks grayscale dan
hasilnya adalah citra Al-Qur‟an grayscale.

Kemudian akan dilakukan proses konvolusi, hal ini bertujuan untuk


menyederhanakan bentuk citra Al-Qur‟an kedalam bentuk tepi. Selanjutnya akan
dilakukan proses pendeteksian tepi menggunakan operator sobel. Operasi
pendeteksian tepi ini digunakan untuk menentukan lokasi titik-titik yang merupakan
tepi objek citra Al-Qur‟an. Secara umum, tepi suatu objek dalam citra Al-Qur‟an
dinyatakan sebagai titik yang nilai warnanya berbeda cukup besar dengan titik yang
ada disebelahnya. Berikut adalah matriks dari operator sobel:
191

Operator sobel horizontal


−1 0 1
−2 0 2
−1 0 1
Operator sobel vertikal
−1 −2 −1
0 0 0
1 2 1
Kombinasi antar kedua hasil operasi dengan matriks tersebut bisa dilakukan
dengan mengambil hasil penjumlahan.
𝐺 = 𝐺𝑥 + 𝐺𝑦
Contoh perhitungan horizontal dan vertikal menggunakan operator sobel.
15 20 13
17 35 20
14 15 15

Horizontal = 𝐺𝑥 = |(-1*15) + (-2*17) + (-1*14) + (1*13) + (2*20) + (1*15)|


= |5| = 5
Vertikal = 𝐺𝑦 = |(-1*15) + (-2*20) + (-1*13) + (1*14) + (2*15) + (1*15)|
= |-9| = 9
𝐺 = 𝐺𝑥 + 𝐺𝑦 = 5 + 9 = 14

Kemudian sistem akan melakukan pelatihan terhadap citra Al-Qur‟an yang


telah dideteksi tepi dengan cara menggeser bagian detektor ke dalam posisi area Al-
Qur‟an yang mengandung fitur-fitur tajwid. Setelah itu akan dilakukan perekaman
peta tajwid. Yang dimaksudkan disini adalah, posisi tajwid yang akan direkam dalam
detektor yang nantinya akan disimpan kedalam file notepad bernama “bitB.txt” atau
“bitF.txt”. Selanjutnya sistem akan menggunakan metode yang telah ditentukan, yaitu
Bidirectional Associative Memory dan Fuzzy Associative Memory. Pada metode
Bidirectional Associative Memory pencarian nilai bobot dilakukan dengan cara
mengubah matriks biner kedalam matriks bipolar, yang selanjutnya akan dilakukan
pencarian bobot.
Contoh pencarian bobot pada algoritma Bidirectional Associative Memory yang
diambil dari sembarang vektor fitur.
192

𝑥1 = 1, 0, 0, 1 , 𝑦1 = (0, 1, 1)
𝑥2 = 0, 1, 1, 0 , 𝑦2 = (1, 0, 1)

Matriks biner tersebut selanjutnya diubah kedalam matriks bipolar menjadi:

𝑥1 = 1, −1, −1, 1 , 𝑦1 = (−1, 1, 1)


𝑥2 = −1, 1, 1, −1 , 𝑦2 = (1, −1, 1)

Maka untuk pencarian bobot dilakukan dengan menggunakan rumus 𝑤 = 𝑖=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

Sedangkan pada metode fuzzy Associative Memory pencarian nilai bobot


dilakukan dengan menggunakan komposisi max-min. Contoh pencarian bobot pada
algoritma Fuzzy Associative Memory yang diambil dari sembarang vektor fitur.

𝑥 = 0.3 0.7 0.4 0.2 , 𝑦 = 0.4 0.3 0.9

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

Anwar, R. 2000. Ulumul Qur‟an. Bandung: CV Pustaka Setia.

Arshad, N.W. Makhraj Recognition for Al-Quran Recitation using MFCC.


International Journal of Intelligent Information Processing(IJIIP).
Volume4, Number2, June 2013.

Azizah, U.N. 2013. Perbandingan Detektor Tepi Prewit dan Detektor Tepi
Laplacian Berdasarkan Kompleksitas Waktu dan Citra Hasil. Skripsi.
Universitas Pendidikan Indonesia.

Cormen, T.H., et.al. 2009. Introduction to Algorithms. Thrid Edition. London:


The MIT Press.

Dewi, E.M. 2012. Model-model Neural Network. web.unair.ac.id, 24 Maret 2012


(diakses 9 Juni 2016)

Fadlisyah. 2014. Sistem Pendeteksian Wajah Pada Video Menggunakan Jaringan


Adaptive Linear Neuron (ADALINE). Tesis. Universitas Sumatra Utara.

Fadlisyah & Rizal. 2011. Pemograman Computer Vision Menggunakan Delphi +


Vision Lab VCL 4.0.1. Yogyakarta: Graha Ilmu.

Ismail, A., et.al. 2014. MFCC-VQ APPROACH FOR QALQALAH TAJWEED


RULE CHECKING. Malaysian Journal of Computer Science. Vol. 27(4).

Kusumadewi, S. & Sri, H. 2010. Neuro-Fuzzy Integrasi Sistem Fuzzy & Jaringan
Syaraf Edisi 2. Yogyakarta: Graha Ilmu.

Nugroho, E.C., et.al. Pengembangan Program Pengolahan Citra Untuk


Radiografi Digital. Jurnal MIPA (1) (2012).

Othman, Z., et.al.Speech to Text Engine for Jawi Language. The International
Arab Journal of Information Technology, Vol.11, No. 5, September 2014.

Pandjaitan, L.W. 2007. Dasar-dasar Komputasi Cerdas. Yogyakarta: Andi.

Putra, D. 2010. Pengolahan Citra Digital. Yogyakarta : Andi.

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.

Singh, Y.P., et.al. 2009. Bidirectional Associative Memory Neural Network


Method In The Character Recognition. Journal of Theoretical and Applied
Information Technology.

Sunarto, A. 1988. Pelajaran Tajwid Praktis dan Lengkap. Jakarta: Bintang


Terang.

Sutojo, T. , et.al. 2010. Kecerdasan Buatan. Yogyakarta: Andi.

Zarkasyi, I. 1987. Pelajaran Tajwid Qaidah Bagaimana Mestinya Membaca Al


Qur‟an. Gontor: Trimurti Gontor Ponorogo.

Zeng, S., et.al. 2008. Research on Properties of Max-Product Fuzzy Associative


Memory Networks. Eighth International Conference on Intelligent Systems
Design and Applications.
PUBLIKASI KARYA TULIS

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

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);


begin
Form2.Show;
Form1.Hide;
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
Form3.Show;
Form1.Hide;
end;

procedure TForm1.Button3Click(Sender: TObject);


begin
Application.Terminate
end;

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}

procedure TForm2.Button1Click(Sender: TObject);


//load picture
begin
opendialog1.filter := 'bitmaps | *bmp' ;
if opendialog1.execute then
citra1.loadfromfile(opendialog1.filename);
citra1.pixelformat := pf24bit; //in case other format
loaded

Image1.Picture.Bitmap := citra1;
sw := citra1.width;
sh := citra1.height;
statictext1.caption := inttostr(sw);
statictext2.caption := inttostr(sh);
end;

function floor(a : single) : word;


begin
result := trunc(a);
end;

function ceiling(a : single) : word;


begin
result := trunc(a);
if frac(a) > 0.0001 then inc(result);
end;

procedure TForm2.Button2Click(Sender: TObject);


//reduce or enlarge
var sx1,sy1,sx2,sy2 : single; //source field positions
x,y : word; //dest field pixels
destR,destG,destB : single; //destination colors
sR,sG,sB : byte; //source colors
destWidth, destheight : word;
f,fi2 : single;
i,j : word;
dx,dy,PC : single;
color : longInt;
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;

procedure TForm2.Button3Click(Sender: TObject);


var temp : PByteArray;
i,j : integer;
x : byte;
digit : byte;
begin
citra3 := TBitmap.Create;
citra3.LoadFromFile('resizinghasil.bmp');

for j:=0 to citra3.Height-1 do


begin
temp := citra3.ScanLine[j];
i:=0;
repeat
x
:=round((0.11*temp[i])+(0.59*temp[i+1])+(0.3*temp[i+2]));
for digit:=0 to 2 do
temp[i+digit]:=x;
inc(i,3);
until i >= 3*citra3.Width-1;
end;
Image3.Picture.Bitmap := citra3;
citra3.SaveToFile('grayscale.bmp');
citra4:=citra3;
end;

procedure TForm2.Button4Click(Sender: TObject);


const sobel : array[0..1,0..2,0..2] of smallint =
(((-1,0,1),(-2,0,2),(-1,0,1)),
((-1,-2,-1),(0,0,0),(1,2,1)));

var row : array[0..8] of pbytearray;


col : pbytearray;
x,y : smallint;
i,j,k,p : smallint;
citra_tampung : tbitmap;
sum,jum : longint;
pos_x,pos_y : integer;
begin
P:=-100;
pos_y:=0;
citra_tampung := tbitmap.Create;
citra_tampung.Assign(citra3);
for y:=1 to citra4.Height-2 do
begin
for i:=-1 to 1 do
row[i+1]:= citra_tampung.ScanLine[y+i];
col := citra4.ScanLine[y];
x:=3;
inc(pos_y,1);
pos_x:=1;
repeat
sum := 0;
for i:=-1 to 1 do
for j:=-1 to 1 do

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

//if t_edge[pos_y,pos_x]<>0 then


//memo1.Lines.Add('['+ inttostr(pos_y) +
','+inttostr(pos_x)+ ']'+'='+' '+inttostr(
t_edge[pos_y,pos_x]));

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;

procedure TForm2.Button5Click(Sender: TObject);


begin
X_atas:=X_atas+2;
X_baw:=X_baw+2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm2.Button6Click(Sender: TObject);


begin
X_atas:=X_atas-2;
X_baw:=X_baw-2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm2.Button7Click(Sender: TObject);


begin
Y_atas:=Y_atas+2;
Y_baw:=Y_baw+2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm2.Button8Click(Sender: TObject);


begin
Y_atas:=Y_atas-2;
Y_baw:=Y_baw-2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm2.Button9Click(Sender: TObject);


begin
X_atas:=X_atas-1;
Y_atas:=Y_atas-1;
X_baw:=X_baw+1;
Y_baw:=Y_baw+1;
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
end;

procedure TForm2.Button10Click(Sender: TObject);


begin
X_atas:=X_atas+1;
Y_atas:=Y_atas+1;
X_baw:=X_baw-1;
Y_baw:=Y_baw-1;
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
end;

procedure TForm2.Button11Click(Sender: TObject);


begin
Image2.Picture.Bitmap := citra2;
lokalisir1.click;
refleksi1.click;
Updatekoordinat1.Click;
end;

procedure TForm2.Button15Click(Sender: TObject);


begin
sensitif:=sensitif-1;
edit10.Text:=inttostr(sensitif);
label7.caption:=floattostr((sensitif/luasframe)*100)+' %';
end;

procedure TForm2.Button14Click(Sender: TObject);


begin
sensitif:=sensitif+1;
edit10.Text:=inttostr(sensitif);
label6.caption:=floattostr((sensitif/luasframe)*100)+' %';
end;

procedure TForm2.Button12Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot : byte;
pos_x,pos_y : integer;

begin
//plating
pos_y:=0;

//Arsip
NamaArsip:='bitB.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];
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;

//templating adalah template base yg akan dimatch


dgn t_edge d detek
templating1[pos_y,pos_x]:=bobot;

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;

procedure TForm2.Button13Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot : byte;
pos_x,pos_y : integer;

begin
//plating
pos_y:=0;

//Arsip
NamaArsip:='bitB2.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;

//templating adalah template base yg akan dimatch


dgn t_edge d detek
templating2[pos_y,pos_x]:=bobot;

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;

procedure TForm2.Button16Click(Sender: TObject);


var pos_x,pos_y : integer;
cac_x,cac_y : integer;
ini_x,ini_y : integer;
cac_1, cac_2 : integer;
cac_3, cac_4 : integer;
baca : string;
i,j : integer;
jarak_bc_weed_1 : real;
tampung_bc_baw : integer;
tampung_bc_atas : integer;
tampung_bc_bagi : real;
jarak_bc_weed_2 : real;
tampung_bc_baw2 : integer;
tampung_bc_atas2 : integer;
tampung_bc_bagi2 : real;
jarak_bc_weed_3 : real;
tampung_bc_baw3 : integer;
tampung_bc_atas3 : integer;
tampung_bc_bagi3 : real;
jarak_bc_weed_4 : real;
tampung_bc_baw4 : integer;
tampung_bc_atas4 : integer;
tampung_bc_bagi4 : real;

begin
Image5.Picture.bitmap := citra2;

//------------------loading Nun Mati


pos_y:=0;
//Arsip
NamaArsip:='bitB.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);

for j:=Y_atas to Y_baw-1 do


begin

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);

for j:=Y_atas to Y_baw-1 do


begin

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);

for j:=Y_atas to Y_baw-1 do


begin

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);

for j:=Y_atas to Y_baw-1 do


begin

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);

//------------------------------------

for pos_y:=1 to citra2.height-40 do


for pos_x:=1 to (citra2.width-40) do
//if pos_y mod 2 = 0 then
begin

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;

for cac_y:=pos_y to (pos_y+Y_baw-Y_atas-1) do


begin
inc(ini_y,1);
ini_x:=0;
for cac_x:=pos_x to (pos_x+X_baw-X_atas-1) do
begin
inc(ini_x,1);

//bagian vip pembanding pola

if t_edge[cac_y, cac_x]=templating1[ini_y,ini_x] then


inc(cac_1,1);
if t_edge[cac_y, cac_x]=templating2[ini_y,ini_x] then
inc(cac_2,1);
if t_edge[cac_y, cac_x]=templating3[ini_y,ini_x] then
inc(cac_3,1);
if t_edge[cac_y, cac_x]=templating4[ini_y,ini_x] then
inc(cac_4,1);
tampung_bc_atas:=tampung_bc_atas+abs(templating1[ini_y,ini_x
]-t_edge[cac_y, cac_x]);
tampung_bc_baw
:=+tampung_bc_baw+(templating1[ini_y,ini_x]+t_edge[cac_y,
cac_x]);

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]);

end; //end for cac_x


end; //end for cac_y

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;

procedure TForm2.Refleksi1Click(Sender: TObject);


begin
//--------melokalisir---------------
image2.Canvas.Brush.Style:=bsclear;
image2.Canvas.Pen.Width:=3;
image2.Canvas.Pen.Color:=clred;
image2.Canvas.Rectangle(X_atas, Y_atas, X_baw, Y_baw);
//--------melokalisir---------------
end;

procedure TForm2.UpdateKoordinat1Click(Sender: TObject);


begin
edit2.Text:=inttostr(X_atas);
edit3.Text:=inttostr(Y_atas);
edit4.Text:=inttostr(X_baw);
edit5.Text:=inttostr(Y_baw);
//Arsip
NamaArsip:='koordinat.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);

writeln(Fi,inttostr(X_atas));
writeln(Fi,inttostr(Y_atas));
writeln(Fi,inttostr(X_baw));
writeln(Fi,inttostr(Y_baw));

CloseFile(Fi);
end;

procedure TForm2.OReGrayKon1Click(Sender: TObject);


begin
button1.click;
button2.click;
button3.click;
button4.click;
Image5.Picture.bitmap := citra2;
end;

procedure TForm2.Lokalisir1Click(Sender: TObject);


begin
Image4.Picture.bitmap := citra4;
//--------melokalisir---------------
image4.Canvas.Brush.Style:=bsclear;
image4.Canvas.Pen.Width:=3;
image4.Canvas.Pen.Color:=clred;
image4.Canvas.Rectangle(X_atas, Y_atas, X_baw, Y_baw);
//--------melokalisir---------------
end;

procedure TForm2.FormActivate(Sender: TObject);


begin
X_atas:=34;
Y_atas:=45;
X_baw:=74;
Y_baw:=85;
//---------------------------------- BOBOT
NamaArsip:='koordinat.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
//--------------------------------
while not Eof(Fi) do
begin
Readln(Fi,tampungkoordinat);
X_atas:=strtoint(tampungkoordinat);
Readln(Fi,tampungkoordinat);
Y_atas:=strtoint(tampungkoordinat);
Readln(Fi,tampungkoordinat);
X_baw:=strtoint(tampungkoordinat);
Readln(Fi,tampungkoordinat);
Y_baw:=strtoint(tampungkoordinat);

end;

CloseFile(Fi);
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
sensitif:=strtoint(edit10.Text);
end;

procedure TForm2.Button17Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot : byte;
pos_x,pos_y : integer;

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;

//templating adalah template base yg akan dimatch dgn t_edge


d detek
templating3[pos_y,pos_x]:=bobot;

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;

procedure TForm2.Button18Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot : byte;
pos_x,pos_y : integer;

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;

//templating adalah template base yg akan dimatch dgn t_edge


d detek
templating4[pos_y,pos_x]:=bobot;

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;

procedure TForm2.Button19Click(Sender: TObject);


begin
Application.Terminate
end;

procedure TForm2.Button20Click(Sender: TObject);


begin
Form1.Show;
Form2.Hide;
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.

Algoritma Fuzzy Associative Memory


unit Unit3;

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}

procedure TForm3.Button1Click(Sender: TObject);


//load picture
begin
opendialog1.filter := 'bitmaps | *bmp' ;
if opendialog1.execute then
citra1.loadfromfile(opendialog1.filename);
citra1.pixelformat := pf24bit; //in case other format
loaded

Image1.Picture.Bitmap := citra1;
sw := citra1.width;
sh := citra1.height;
statictext1.caption := inttostr(sw);
statictext2.caption := inttostr(sh);
end;

function floor(a : single) : word;


begin
result := trunc(a);
end;

function ceiling(a : single) : word;


begin
result := trunc(a);
if frac(a) > 0.0001 then inc(result);
end;

procedure TForm3.Button2Click(Sender: TObject);


//reduce or enlarge
var sx1,sy1,sx2,sy2 : single; //source field positions
x,y : word; //dest field pixels
destR,destG,destB : single; //destination colors
sR,sG,sB : byte; //source colors
destWidth, destheight : word;
f,fi2 : single;
i,j : word;
dx,dy,PC : single;
color : longInt;

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;

procedure TForm3.Button3Click(Sender: TObject);


var temp : PByteArray;
i,j : integer;
x : byte;
digit : byte;

begin
citra3 := TBitmap.Create;
citra3.LoadFromFile('resizinghasil.bmp');

for j:=0 to citra3.Height-1 do


begin
temp := citra3.ScanLine[j];
i:=0;
repeat
x
:=round((0.11*temp[i])+(0.59*temp[i+1])+(0.3*temp[i+2]));
for digit:=0 to 2 do
temp[i+digit]:=x;
inc(i,3);
until i >= 3*citra3.Width-1;
end;
Image3.Picture.Bitmap := citra3;
citra3.SaveToFile('grayscale.bmp');
citra4:=citra3;
end;

procedure TForm3.Button4Click(Sender: TObject);


const sobel : array[0..1,0..2,0..2] of smallint =
(((-1,0,1),(-2,0,2),(-1,0,1)),
((-1,-2,-1),(0,0,0),(1,2,1)));

var row : array[0..8] of pbytearray;


col : pbytearray;
x,y : smallint;
i,j,k,p : smallint;
citra_tampung : tbitmap;
sum,jum : longint;
pos_x,pos_y : integer;
begin
P:=-100;
pos_y:=0;
citra_tampung := tbitmap.Create;
citra_tampung.Assign(citra3);
for y:=1 to citra4.Height-2 do
begin
for i:=-1 to 1 do
row[i+1]:= citra_tampung.ScanLine[y+i];
col := citra4.ScanLine[y];
x:=3;
inc(pos_y,1);
pos_x:=1;
repeat
sum := 0;
for i:=-1 to 1 do
for j:=-1 to 1 do

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

//if t_edge[pos_y,pos_x]<>0 then


//memo1.Lines.Add('['+ inttostr(pos_y) +
','+inttostr(pos_x)+ ']'+'='+' '+inttostr(
t_edge[pos_y,pos_x]));

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;

procedure TForm3.Button5Click(Sender: TObject);


begin
X_atas:=X_atas+2;
X_baw:=X_baw+2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm3.Button6Click(Sender: TObject);


begin
X_atas:=X_atas-2;
X_baw:=X_baw-2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm3.Button7Click(Sender: TObject);


begin
Y_atas:=Y_atas+2;
Y_baw:=Y_baw+2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm3.Button8Click(Sender: TObject);


begin
Y_atas:=Y_atas-2;
Y_baw:=Y_baw-2;
lokalisir1.click;
Updatekoordinat1.Click;
end;

procedure TForm3.Button9Click(Sender: TObject);


begin
X_atas:=X_atas-1;
Y_atas:=Y_atas-1;
X_baw:=X_baw+1;
Y_baw:=Y_baw+1;
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
end;
procedure TForm3.Button10Click(Sender: TObject);
begin
X_atas:=X_atas+1;
Y_atas:=Y_atas+1;
X_baw:=X_baw-1;
Y_baw:=Y_baw-1;
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
end;

procedure TForm3.Button11Click(Sender: TObject);


begin
Image2.Picture.Bitmap := citra2;
lokalisir1.click;
refleksi1.click;
Updatekoordinat1.Click;
end;

procedure TForm3.Button16Click(Sender: TObject);


begin
sensitif:=sensitif-1;
edit10.Text:=inttostr(sensitif);
label7.caption:=floattostr((sensitif/luasframe)*100)+' %';
end;

procedure TForm3.Button15Click(Sender: TObject);


begin
sensitif:=sensitif+1;
edit10.Text:=inttostr(sensitif);
label6.caption:=floattostr((sensitif/luasframe)*100)+' %';
end;

procedure TForm3.Button12Click(Sender: TObject);


var
i,j : integer;
x : integer;
y : integer;
bobot,bobot_max : byte;
pos_x,pos_y : integer;

begin
//plating
pos_y:=0;

//Arsip
NamaArsip:='bitF.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];
if x=0 then y:=1 else y:=2;

//SET W komposisi min-max


bobot:=min(x,y);
//kompos max
bobot_max:=max(x,bobot);

//templating adalah template base yg akan dimatch


dgn t_edge d detek
templating1[pos_y,pos_x]:=bobot_max;

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;

procedure TForm3.Button13Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot,bobot_max : byte;
pos_x,pos_y : integer;

begin
//plating
pos_y:=0;

//Arsip
NamaArsip:='bitF2.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:=2;

//SET W komposisi min-max


bobot:=min(x,y);
//kompos max
bobot_max:=max(x,bobot);

//templating adalah template base yg akan dimatch


dgn t_edge d detek
templating2[pos_y,pos_x]:=bobot;

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;

procedure TForm3.Button14Click(Sender: TObject);


var pos_x,pos_y : integer;
cac_x,cac_y : integer;
ini_x,ini_y : integer;
cac_1, cac_2 : integer;
cac_3, cac_4 : integer;
baca : string;
i,j : integer;
jarak_bc_weed_1 : real;
tampung_bc_baw : integer;
tampung_bc_atas : integer;
tampung_bc_bagi : real;
jarak_bc_weed_2 : real;
tampung_bc_baw2 : integer;
tampung_bc_atas2 : integer;
tampung_bc_bagi2 : real;
jarak_bc_weed_3 : real;
tampung_bc_baw3 : integer;
tampung_bc_atas3 : integer;
tampung_bc_bagi3 : real;
jarak_bc_weed_4 : real;
tampung_bc_baw4 : integer;
tampung_bc_atas4 : integer;
tampung_bc_bagi4 : real;

begin
Image5.Picture.bitmap := citra2;

//------------------loading Nun Mati


pos_y:=0;
//Arsip
NamaArsip:='bitF.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);

for j:=Y_atas to Y_baw-1 do


begin

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);

for j:=Y_atas to Y_baw-1 do


begin

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);

for j:=Y_atas to Y_baw-1 do


begin

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);

for j:=Y_atas to Y_baw-1 do


begin

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);
//------------------------------------

for pos_y:=1 to citra2.height-40 do


for pos_x:=1 to (citra2.width-40) do
//if pos_y mod 2 = 0 then
begin

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;

for cac_y:=pos_y to (pos_y+Y_baw-Y_atas-1) do


begin
inc(ini_y,1);
ini_x:=0;
for cac_x:=pos_x to (pos_x+X_baw-X_atas-1) do
begin
inc(ini_x,1);

//bagian vip pembanding pola

if t_edge[cac_y, cac_x]=templating1[ini_y,ini_x] then


inc(cac_1,1);
if t_edge[cac_y, cac_x]=templating2[ini_y,ini_x] then
inc(cac_2,1);
if t_edge[cac_y, cac_x]=templating3[ini_y,ini_x] then
inc(cac_3,1);
if t_edge[cac_y, cac_x]=templating4[ini_y,ini_x] then
inc(cac_4,1);
tampung_bc_atas:=tampung_bc_atas+abs(templating1[ini_y,ini_x
]-t_edge[cac_y, cac_x]);
tampung_bc_baw
:=+tampung_bc_baw+(templating1[ini_y,ini_x]+t_edge[cac_y,
cac_x]);

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]);

end; //end for cac_x


end; //end for cac_y

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;

procedure TForm3.OReGrayKon1Click(Sender: TObject);


begin
button1.click;
button2.click;
button3.click;
button4.click;
Image5.Picture.bitmap := citra2;
end;

procedure TForm3.Lokalisir1Click(Sender: TObject);


begin
Image4.Picture.bitmap := citra4;
//--------melokalisir---------------
image4.Canvas.Brush.Style:=bsclear;
image4.Canvas.Pen.Width:=3;
image4.Canvas.Pen.Color:=clred;
image4.Canvas.Rectangle(X_atas, Y_atas, X_baw, Y_baw);
//--------melokalisir---------------
end;
procedure TForm3.Refleksi1Click(Sender: TObject);
begin
//--------melokalisir---------------
image2.Canvas.Brush.Style:=bsclear;
image2.Canvas.Pen.Width:=3;
image2.Canvas.Pen.Color:=clred;
image2.Canvas.Rectangle(X_atas, Y_atas, X_baw, Y_baw);
//--------melokalisir---------------
end;
procedure TForm3.UpdateKoordinat1Click(Sender: TObject);
begin
edit2.Text:=inttostr(X_atas);
edit3.Text:=inttostr(Y_atas);
edit4.Text:=inttostr(X_baw);
edit5.Text:=inttostr(Y_baw);
//Arsip
NamaArsip:='koordinat.txt';
AssignFile(Fi,NamaArsip);
rewrite(Fi);

writeln(Fi,inttostr(X_atas));
writeln(Fi,inttostr(Y_atas));
writeln(Fi,inttostr(X_baw));
writeln(Fi,inttostr(Y_baw));

CloseFile(Fi);
end;

procedure TForm3.FormActivate(Sender: TObject);


begin
X_atas:=34;
Y_atas:=45;
X_baw:=74;
Y_baw:=85;
//---------------------------------- BOBOT
NamaArsip:='koordinat.txt';
AssignFile(Fi,NamaArsip);
reset(Fi);
//--------------------------------
while not Eof(Fi) do
begin
Readln(Fi,tampungkoordinat);
X_atas:=strtoint(tampungkoordinat);
Readln(Fi,tampungkoordinat);
Y_atas:=strtoint(tampungkoordinat);
Readln(Fi,tampungkoordinat);
X_baw:=strtoint(tampungkoordinat);
Readln(Fi,tampungkoordinat);
Y_baw:=strtoint(tampungkoordinat);
end;

CloseFile(Fi);
luasframe:=(Y_baw-Y_atas)*(X_baw-X_atas);
edit9.Text:=inttostr(luasframe);
sensitif:=strtoint(edit10.Text);
end;

procedure TForm3.Button17Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot,bobot_max : byte;
pos_x,pos_y : integer;

begin
//plating
pos_y:=0;

//Arsip
NamaArsip:='bitF3.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:=2;

//SET W komposisi min-max


bobot:=min(x,y);
//kompos max
bobot_max:=max(x,bobot);

//templating adalah template base yg akan dimatch


dgn t_edge d detek
templating3[pos_y,pos_x]:=bobot;

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;

procedure TForm3.Button18Click(Sender: TObject);


var
i,j : integer;
x,y : integer;
bobot,bobot_max : byte;
pos_x,pos_y : integer;

begin
//plating
pos_y:=0;

//Arsip
NamaArsip:='bitF4.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:=2;

//SET W komposisi min-max


bobot:=min(x,y);
//kompos max
bobot_max:=max(x,bobot);

//templating adalah template base yg akan dimatch


dgn t_edge d detek
templating4[pos_y,pos_x]:=bobot;

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;

procedure TForm3.Button19Click(Sender: TObject);


begin
Application.Terminate
end;

procedure TForm3.Button20Click(Sender: TObject);


begin
Form1.Show;
Form3.Hide;
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.

Anda mungkin juga menyukai