Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010. ANALISIS PENGARUH KUALITAS RESOLUSI CITRA TERHADAP KINERJA METODE PENDETEKSI TEPI SKRIPSI AFNISYAH TAURISNA 051401033 PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA MEDAN 2009
167
Embed
ANALISIS PENGARUH KUALITAS RESOLUSI CITRA …repository.usu.ac.id/bitstream/123456789/7873/1/10E01077.pdf · FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM . UNIVERSITAS SUMATERA UTARA
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
ANALISIS PENGARUH KUALITAS RESOLUSI CITRA TERHADAP KINERJA METODE
PENDETEKSI TEPI
SKRIPSI
AFNISYAH TAURISNA 051401033
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2009
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
ANALISIS PENGARUH KUALITAS RESOLUSI CITRA TERHADAP KINERJA METODE PENDETEKSI TEPI
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar
Sarjana Komputer
AFNISYAH TAURISNA 051401033
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2009
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
ii
PERSETUJUAN
Judul : ANALISIS PENGARUH KUALITAS RESOLUSI CITRA TERHADAP KINERJA METODE PENDETEKSI TEPI
Kategori : SKRIPSI Nama : AFNISYAH TAURISNA Nomor Induk Mahasiswa : 051401033 Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen : ILMU KOMPUTER Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN
Diketahui/Disetujui oleh Program Studi S1 Ilmu Komputer Ketua, Prof. Dr. Muhammad Zarlis NIP. 195707011986011003
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
iii
PERNYATAAN
ANALISIS PENGARUH KUALITAS RESOLUSI CITRA TERHADAP KINERJA METODE PENDTEKSI TEPI
SKRIPSI
Saya mengakui bahwa SKRIPSI ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya. Medan, Desember 2009 Afnisyah Taurisna 051401033
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
iv
PENGHARGAAN
Bismillaahirrohmaanirrohiim.. Puji dan syukur penulis panjatkan kepada Allah Subhanahu Wa Ta’alaa Yang Maha Pengasih dan Maha Penyayang, dengan limpahan karunia-Nya skripsi ini berhasil diselesaikan. Ucapan terima kasih penulis sampaikan kepada Bapak Syahriol Sitorus, S.Si, M.IT dan Bapak Ir. Arman Sani, MT selaku pembimbing serta Ibu Maya Silvi Lydia, B.Sc, M.Sc dan Bapak Syahril Effendi S.Si, M.IT selaku pembanding pada penyelesaian skripsi ini, yang telah memberikan panduan dan penuh kepercayaan kepada saya untuk menyempurnakan kajian ini. Panduan padat dan ringkas dan profesional telah diberikan kepada penulis agar penulis dapat menyelesaikan tugas ini. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Ilmu Komputer, Bapak Prof. Muhammad Zarlis dan Bapak Syahriol Sitorus, S.Si, M.IT, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen pada Departemen Ilmu Komputer FMIPA USU, seluruh pegawai di Departemen Ilmu Komputer FMIPA USU (khususnya kak Ayi), dan bagi pihak Poliklinik USU yang memberikan izin untuk melakukan riset. Skripsi ini juga penulis dedikasikan bagi almarhumah Ibunda, Siti Erfiah Harahap yang kasih sayangnya masih penulis rasakan. Serta terima kasih yang tak berhingga juga penulis sampaikan untuk Ayahanda H. Bahriun Rambe, Ibunda Elly Syafrida Tanjung, saudara-saudari penulis, Kak Lina, Elmi, Mita, Ito, Rahmat dan Ongku, kemanakan penulis Aldi dan Tasya, serta seluruh keluarga besar yang tak henti-hentinya memberikan semangat dan dukungan bagi penulis untuk tetap berjuang. Dan spesial untuk Bobbie, Lijok, Tince, Maya, Fitra, Dwi, Anne, Kak Rika, Kak Silvi, Kak Eli, Vida, dan Moko, orang-orang terbaik yang pernah dimiliki penulis. Teman-teman penulis di kampus, khususnya penduduk 05 Kom A dan Kom B, di lingkungan Gg. Aman, dan seluruh pihak yang tidak disebutkan namanya yang telah banyak membantu penulis dalam menyelesaikan skripsi ini, penulis ucapkan banyak terima kasih. Penulis sadar bahwa masih terdapat banyak kekurangan dalam penulisan skripsi ini. Karna itu, penulis dengan ikhlas hati menerima kritik dan saran yang membangun untuk memperbaiki penulisannya. Akhirnya, semoga skripsi ini dapat memberikan manfaat bagi perkembangan ilmu pengetahuan.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
v
ABSTRAK
Pengolahan citra digital merupakan satu cabang ilmu pengetahuan yang saat ini banyak dikembangkan demi mempermudah kehidupan manusia. Salah satunya adalah pendeteksian tepi, yang salah satu manfaatnya banyak membantu tugas kepolisian dalam membongkar kasus kejahatan, yaitu deteksi sidik jari. Ada banyak metode pendeteksi tepi yang saat ini dikenal dalam perkembangan ilmu pengetahuan. Diantaranya, Sobel, Laplacian of Gaussian, dan Canny (metode yang diteliti). Tiap-tiap metode pasti memiliki kelemahan dan kelebihan. Untuk itu, penulis mencoba membandingkan kinerja metode pendeteksi tepi tersebut dengan mengujinya terhadap kualitas resolusi citra. Ditetapkan tiga buah parameter pembanding untuk melihat kehandalan tiap metode, yaitu morfologi garis tepi yang dihasilkan, sensitifitas terhadap noise dikenal sebagai sensitivity rate, dan kecepatan proses dikenal sebagai timing run. Untuk mempermudah penelitian ini, dibangun sebuah aplikasi pendeteksi tepi citra menggunakan Matlab 7.5.0.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
vi
ANALYSIS OF IMAGES RESOLUTION QUALITY INFLUENCES TO
PERFORMANCE OF EDGE DETECTOR METHOD
ABSTRACT
Digital image processing is a part of knowledge that developed to make human’s live easier. One of them is edge detector, one of the use is helping police department duty to discover crime cases, known as finger print detection. There are a lot of edge detector methods in knowledge advance that we have known this time. Some of them are Sobel, Laplacian of Gaussian, and Canny (Researched methods). Each method has it’s disadvantages and advantages. Therefore, the writer will try to compare the edge detectors performance by testing it whit quality of image resolutions. There are three kinds of comparing parameters to see the excellent of each method, they are the morphology of edge lines that resulted, the sensitivity of noise known as sensitivity rate, and processing speed known as timing run. For make it easier, an application of image edge detector is built using Matlab 7.5.0.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
vii
DAFTAR ISI
Halaman
Persetujuan ii Pernyataan iii Penghargaan iv Abstrak v Abstract vi Daftar Isi vii Daftar Tabel ix Daftar Gambar x Bab 1 Pendahuluan 1 1.1 Latar Belakang 1 1.2 Rumusan Masalah 2 1.3 Batasan Masalah 3 1.4 Tujuan Penelitian 4 1.5 Manfaat Penelitian 4 1.6 Metode Penelitian 4 1.7 Sistematika Penulisan 5
Bab 2 Landasan Teori 7 2.1 Citra Digital 7 2.2 Resolusi Citra 10 2.3 Pengolahan Citra Digital 12 2.4 Operasi Bertetangga/Persekitaran 13 2.5 Deteksi Tepi 14 2.5.1 Konvolusi 17 2.5.2 Pendeteksi Tepi Sobel 20 2.5.3 Pendeteksi Tepi Laplacian of Gaussian (LoG) 21 2.5.4 Pendeteksi Tepi Canny 22 2.5.5 Pengambangan 23 2.5.6 Parameter Pembanding 25 2.6 Bahasa Pemrograman Matlab 26 Bab 3 Analisis dan Perancangan Sistem 28 3.1 Analisis Metode Sobel 28 3.1.1 Analisis Kualitas Citra Tepi 29 3.1.2 Analisis Timing Run 30 3.1.3 Analisis Sensitivity Rate 33 3.2 Analisis Metode LoG 33 3.2.1 Analisis Kualitas Citra Tepi 34 3.2.2 Analisis Timing Run 35 3.2.3 Analisis Sensitivity Rate 37
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
viii
3.3 Analisis Metode Canny 38 3.3.1 Analisis Kualitas Citra Tepi 39 3.3.2 Analisis Timing Run 40 3.3.3 Analisis Sensitivity Rate 43 3.4 Akuisisi Data 44 3.5 Perancangan Sistem 45 3.5.1 Perancangan DFD dan Spesifikasi Proses 45 3.5.2 Perancangan Kamus Data 50 3.5.3 Perancangan Antarmuka Pemakai 52 3.5.3.1 Antarmuka Figur PendeteksianTepi 52 3.5.3.2 Antarmuka Figur MetodeSobel 53 3.5.3.3 Antarmuka Figur MetodeLoG 54 3.5.3.4 Antarmuka Figur MetodeCanny 55 3.5.3.5 Antarmuka Figur InfoProgrammer 56 3.5.3.6 Antarmuka Figur InfoProgram 57 3.5.3.7 Antarmuka Figur Keluar 58 Bab 4 Implementasi dan Pengujian 59 4.1 Implementasi 59 4.1.1 Figur PendeteksianTepi 60 4.1.2 Figur MetodeSobel 62 4.1.3 Figur MetodeLoG 64 4.1.1 Figur MetodeCanny 66 4.1.2 Figur InfoProgrammer 68 4.1.3 Figur InfoProgram 69 4.2 Pengujian 71 4.2.1 Hasil 71 4.2.1.1 Metode Sobel 71 4.2.1.2 Metode LoG 75 4.2.1.3 Metode Canny 79 4.2.2 Pembahasan 84 Bab 5 Kesimpulan dan Saran 86 5.1 Kesimpulan 86 5.2 Saran 87 Daftar Pustaka 88 Lampiran A: Listing Program 89
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
ix
DAFTAR TABEL
Halaman
Tabel 3.1 Spesifikasi Proses DFD Level 0 46 Tabel 3.2 Spesifikasi Proses DFD Level 1 47 Tabel 3.3 Spesifikasi Proses DFD Level 2 Proses P1 Deteksi Tepi Sobel 48 Tabel 3.4 Spesifikasi Proses DFD Level 2 Proses P2 Deteksi Tepi LoG 49 Tabel 3.5 Spesifikasi Proses DFD Level 2 Proses P3 Deteksi Tepi Canny 50 Tabel 3.6 Kamus Data 51
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
x
DAFTAR GAMBAR
Halaman Gambar 2.1 Citra Biner 8 Gambar 2.2 Citra Skala Keabuan 9 Gambar 2.3 Citra Warna (True Color) 9 Gambar 2.4 Citra Warna Berindeks 10 Gambar 2.5 Citra dengan Beberapa Tingkat Resolusi 11 Gambar 2.6 Tahapan dalam Pengolahan Citra 12 Gambar 2.7 Operasi-operasi Dasar pada Pengolahan Citra Digital 13 Gambar 2.8 Model Tepi Satu Dimensi 14 Gambar 2.9 Jenis-jenis Tepi 15 Gambar 2.10 Proses Deteksi Tepi Citra 16 Gambar 2.11 Proses Konvolusi 18 Gambar 2.12 Matriks Citra dan Kernel Sebelum Konvolusi 18 Gambar 2.13 Tahapan Proses Pembentukan Konvolusi 19 Gambar 2.14 Hasil Konvolusi Citra dan Kernel 19 Gambar 2.15 Kernel Konvolusi Sobel 20 Gambar 2.16 Kernel Pseudo-Convolution 21 Gambar 2.17 Kernel Konvolusi Laplacian 22 Gambar 2.18 Citra dengan Pengambangan Tunggal 24 Gambar 2.19 Citra dengan Pengambangan Ganda 25 Gambar 3.1 Data Masukan 44 Gambar 3.2 DFD Level 0 45 Gambar 3.3 DFD Level 1 46 Gambar 3.4 DFD Level 2 Proses P1 Deteksi Tepi Sobel 47 Gambar 3.5 DFD Level 2 Proses P2 Deteksi Tepi LoG 48 Gambar 3.6 DFD Level 2 Proses P3 Deteksi Tepi Canny 49 Gambar 3.7 Rancangan Antarmuka Figur PendeteksianTepi 53 Gambar 3.8 Rancangan Antarmuka Figur MetodeSobel 54 Gambar 3.9 Rancangan Antarmuka Figur MetodeLoG 55 Gambar 3.10 Rancangan Antarmuka Figur MetodeCanny 56 Gambar 3.11 Rancangan Antarmuka Figur InfoProgrammer 57 Gambar 3.12 Rancangan Antarmuka Figur InfoProgram 57 Gambar 3.13 Rancangan Antarmuka Figur Keluar 58 Gambar 4.1 Tampilan Figur PendeteksianTepi 60 Gambar 4.2 Menu Metode pada Figur PendeteksianTepi 61 Gambar 4.3 Menu Info pada Figur PendeteksianTepi 61 Gambar 4.4 Tampilan Figur MetodeSobel 62 Gambar 4.5 Menu File pada Figur MetodeSobel 63 Gambar 4.6 Tampilan Figur MetodeLoG 65 Gambar 4.7 Menu File pada Figur MetodeLoG 66 Gambar 4.8 Tampilan Figur MetodeCanny 67 Gambar 4.9 Menu File pada Figur MetodeCanny 68
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
xi
Gambar 4.10 Tampilan Figur InfoProgrammer 69 Gambar 4.11 Tampilan Figur InfoProgram 70 Gambar 4.12 Tampilan Menu Keluar 70 Gambar 4.13 Hasil Pengujian Metode Sobel untuk Citra_asli1 72 Gambar 4.14 Hasil Pengujian Metode Sobel untuk Citra_asli2 73 Gambar 4.15 Hasil Pengujian Metode Sobel untuk Citra_asli3 74 Gambar 4.16 Hasil Pengujian Metode Sobel untuk Citra_asli4 75 Gambar 4.17 Hasil Pengujian Metode LoG untuk Citra_asli1 76 Gambar 4.18 Hasil Pengujian Metode LoG untuk Citra_asli2 77 Gambar 4.19 Hasil Pengujian Metode LoG untuk Citra_asli3 78 Gambar 4.20 Hasil Pengujian Metode LoG untuk Citra_asli4 79 Gambar 4.21 Hasil Pengujian Metode Canny untuk Citra_asli1 80 Gambar 4.22 Hasil Pengujian Metode Canny untuk Citra_asli2 81 Gambar 4.23 Hasil Pengujian Metode Canny untuk Citra_asli3 82 Gambar 4.24 Hasil Pengujian Metode Canny untuk Citra_asli4 83
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
BAB 1
PENDAHULUAN
Untuk memulai penulisan sebuah Karya Ilmiah, baik itu berupa makalah, jurnal,
maupun Tugas Akhir diperlukan satu Bab Pendahuluan yang berisi tentang gambaran
umum dari Karya Ilmiah yang akan ditulis. Bab pendahuluan ini berisi latar belakang,
rumusan masalah, batasan masalah, tujuan dan manfaat penelitian, metodologi
penelitian, serta sistematika penulisan dari Karya Ilmiah yang akan dikerjakan.
Adapun Bab Pendahuluan dari penulisan Tugas Akhir ini, meliputi:
1.1 Latar Belakang
Citra atau yang biasa disebut dengan gambar sering diartikan sebagai hasil duplikasi
suatu objek ke dalam bentuk lain. Proses duplikasi ini dapat dilakukan dengan
berbagai cara, salah satunya melalui media kamera. Hasilnya disebut sebagai citra
digital.
Citra digital merupakan hasil representasi dari suatu objek yang ditampilkan
dalam bentuk sekumpulan titik, yang dalam istilah ilmu pengetahuan disebut piksel
yang merupakan akronim bahasa Inggris dari picture element.
Sekumpulan titik dalam satuan panjang untuk suatu citra dikenal dengan istilah
resolusi. Semakin banyak titik yang terkandung dalam citra, resolusi akan semakin
besar dan hasil visualisasi dari citra tersebut juga akan semakin halus atau baik.
Suatu citra digital dapat diolah menjadi citra digital yang lain, proses
pengolahan ini disebut dengan pengolahan citra digital. Banyak operasi yang dapat
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
2
dilakukan dalam pengolahan citra digital. Salah satunya adalah pendeteksian tepi.
Pendeteksi Tepi digunakan untuk mendapatkan tepi dari suatu objek yang berfungsi
untuk mengidentifikasi sesuatu.
Banyak karya ilmiah atau makalah yang mengangkat masalah pendeteksi tepi
sebagai objek penelitiannya. Kebanyakan penelitian ini bertujuan untuk menganalisis
kinerja metode pendeteksi tepi dalam mengidentifikasikan sesuatu.
Tugas Akhir ini mengangkat metode pendeteksi tepi sebagai objek
penelitiannya. Tujuan penelitian ini tetap untuk mengidentifikasi sesuatu, disamping
itu penulis juga mencoba menganalisis faktor atau variabel yang mungkin dapat
mempengaruhi kinerja metode pendeteksi tepi.
Saat ini resolusi kamera terus berkembang, bahkan telah mencapai ratusan
Megapiksel. Atas dasar tersebut maka penulis memilih kualitas resolusi citra sebagai
variabel yang mungkin dapat mempengaruhi kinerja metode pendeteksi tepi, mulai
dari kualitas resolusi yang dianggap rendah sampai kualitas resolusi yang dianggap
tinggi.
Ada beberapa metode pendeteksi tepi yang dikenal saat ini. Diantaranya adalah
metode pendeteksi tepi Sobel, Laplacian of Gaussian (LoG), dan Canny. Dalam
Tugas Akhir ini, ketiga metode pendeteksi tepi tersebut dipilih sebagai metode yang
menjadi objek penelitian.
1.2 Rumusan Masalah
Adapun rumusan masalah yang dibahas dalam penulisan Tugas Akhir ini adalah:
1. Apa yang dimaksud dengan citra digital, kualitas resolusi citra, dan
pendeteksian tepi (edge detection) pada proses pengolahan citra digital.
2. Bagaimana kinerja metode Sobel, LoG, dan Canny sebagai metode pendeteksi
tepi yang digunakan pada penelitian dalam melakukan pendeteksian tepi
terhadap suatu citra.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
3
3. Bagaimana kinerja tiap-tiap metode pendeteksi tepi jika citra yang dijadikan
sebagai citra masukan merupakan beberapa citra dengan tingkat kualitas
resolusi yang berbeda.
1.3 Batasan Masalah
Batasan-batasan masalah yang dipakai dalam penulisan Tugas Akhir ini adalah
sebagai berikut :
1. Metode yang akan dianalisis dan dibandingkan adalah metode pendeteksi tepi
Sobel, LoG, dan Canny.
2. Citra yang akan dijadikan objek penelitian adalah citra digital dari sampel
darah manusia dengan format *.jpg (jpeg) dengan beberapa tingkatan resolusi,
yaitu 0,3 Megapiksel (MP), 2 MP, 7 MP, 10 MP. Keempat resolusi ini
dianggap mewakili citra dengan resolusi tinggi dan rendah.
3. Parameter yang akan diukur untuk mengetahui hasil kinerja masing-masing
metode pendeteksi tepi adalah sensitivitas tiap-tiap metode terhadap noise
(sensitivity rate), morfologi garis yang dihasilkan pada citra keluaran hasil
metode pendeteksi tepi, dan waktu yang diperlukan untuk melakukan proses
(timing run).
4. Bahasa pemrograman yang akan digunakan untuk membangun aplikasi ini
adalah Matlab versi 7.5.0(R2007b).
1.4 Tujuan Penelitian
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
4
Tujuan dari penulisan Tugas Akhir ini adalah menganalisis pengaruh kualitas resolusi
citra terhadap kinerja metode pendeteksi tepi yang dalam penelitian ini dipilih tiga
metode pendeteksi tepi yaitu Sobel, LoG, dan Canny dan kemudian membandingkan
output yang dihasilkannya untuk disimpulkan sejauh mana resolusi citra dapat
mempengaruhi kinerja metode pendeteksi tepi.
1.5 Manfaat Penelitian
Penulisan Tugas Akhir ini dapat bermanfaat dalam memberikan informasi mengenai
pengaruh kualitas resolusi citra terhadap kinerja metode pendeteksi tepi dimana
informasi tersebut dapat dikembangkan dalam penelitian mengenai proses pengolahan
citra yang lain, misalnya deteksi sidik jari yang saat ini banyak dikembangkan.
1.6 Metodologi Penelitian
Dalam melakukan penelitian ini, ada beberapa tahap yang dilakukan yaitu :
1. Studi Literatur
Penelitian ini dimulai dengan melakukan studi literatur yaitu proses
pengumpulan data sebagai bahan referensi baik dari buku, artikel, jurnal,
makalah, atau situs internet yang berkaitan dengan penulisan Tugas Akhir ini.
2. Akuisisi Data
Proses akuisisi data merupakan proses pengambilan data citra, yang akan
digunakan pada proses pengujian (testing).
3. Perancangan Sistem
Melakukan perancangan terhadap sistem yang akan dibangun, mulai dari
perancangan untuk user interface dan juga list program untuk deteksi tepi
dengan metode filter Sobel, LoG, dan Canny.
4. Implementasi Sistem
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
5
Melakukan implementasi program yang telah ada ke dalam suatu bentuk
perangkat lunak untuk mendeteksi tepi citra.
5. Pengujian dan Analisis Hasil
Dari hasil implementasi dilanjutkan dengan proses pengujian terhadap sistem
yang telah selesai dibangun dan menganalisis hasil keluarannya.
6. Dokumentasi Hasil
Setelah semua tahap dalam penelitian selesai dilakukan, seluruh hasil yang
diperoleh akan didokumentasikan dalam bentuk laporan.
1.7 Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai
berikut:
BAB 1 PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang masalah yang dibahas dalam
skripsi ini, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian,
metode penelitian, dan sistematika penulisan.
BAB 2 LANDASAN TEORI
Bab ini mencakup segala teori yang menjadi landasan dalam penulisan Tugas Akhir
yang berkaitan dengan citra digital, resolusi citra, deteksi tepi yang merupakan salah
satu operasi dalam pengolahan citra digital, serta teori mengenai pendeteksi tepi
Sobel, pendeteksi tepi LoG, dan pendeteksi tepi Canny.
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
Bab ini menjelaskan tentang analisis pada perangkat yang akan digunakan untuk
membangun sistem dan juga berisi perancangan sistem dari hasil analisis yang telah
dilakukan.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
6
Bab ini mencakup hasil penelitian dan pembahasannya, yang berupa implementasi
secara nyata dari sistem yang telah dianalisis dan dirancang sebelumnya dalam bentuk
perangkat lunak pendeteksi tepi yang dibangun dengan bahasa pemrograman Matlab
7.5.0. Bab ini juga berisi analisis hasil yang diperoleh dari pengujian terhadap sistem
yang akan dilakukan dengan menjadikan beberapa jenis kualitas resolusi citra yang
berbeda sebagai citra masukan.
BAB 5 KESIMPULAN DAN SARAN
Bab terakhir ini memuat kesimpulan isi dari keseluruhan uraian bab-bab sebelumnya
dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat dalam
pengembangan selanjutnya.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
BAB 2
LANDASAN TEORI
Sebagai sebuah Karya Ilmiah, penulisan Tugas Akhir harus dilandasi atas teori-teori
yang bersifat ilmiah untuk mendukung penulisannya. Teori-teori mengenai citra
digital, resolusi citra, deteksi tepi (edge detection) yang merupakan salah satu operasi
dalam pengolahan citra digital (digital image processing), dan beberapa subpokok
pembahasan lainnya menjadi landasan dalam penulisan Tugas Akhir ini. Selain itu,
beberapa prosiding dan makalah mengenai pembahasan kinerja metode pendeteksi
tepi, antara lain dalam Indira (2008) dan Febriani (2008) juga menjadi referensi.
2.1 Citra Digital
Citra dapat dikatakan sebagai citra digital jika citra tersebut disimpan dalam format
digital (dalam bentuk file). Seperti halnya proses digitisasi dalam bentuk data lain,
proses digitisasi pada data citra juga merupakan proses pengubahan suatu bentuk data
citra dari yang bersifat analog ke dalam bentuk data digital, yang mana proses ini
dapat dilakukan dengan alat bantu, yang salah satunya berupa kamera. Hanya citra
digital yang dapat diolah menggunakan komputer. Jenis citra lain jika akan diolah
dengan komputer harus diubah dulu menjadi citra digital.
Citra digital merupakan suatu fungsi intensitas cahaya f(x,y), dimana harga x
dan y merupakan koordinat spasial dan harga fungsi tersebut pada setiap titik (x,y)
merupakan tingkat kecemerlangan citra pada titik tersebut.
Citra digital dinyatakan dengan matriks berukuran N x M (N menyatakan
baris atau tinggi, M menyatakan kolom atau lebar).
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
8
Keterangan:
N = jumlah baris, 0 ≤ y ≤ N – 1
M = jumlah kolom, 0 ≤ x ≤ M – 1
L = maksimal warna intensitas (derajat keabuan), 0 ≤ f(x,y) ≤ L – 1
(Hestiningsih, 2008, hal: 8).
Citra digital biasanya berbentuk persegi panjang, secara visualisasi dimensi
ukurannya dinyatakan sebagai lebar x tinggi. Ukurannya dinyatakan dalam titik atau
piksel (pixel = picture element) dan dapat pula dinyatakan dalam satuan panjang (mm
atau inci = inch).
Berdasarkan format penyimpanan nilai warnanya, citra terdiri atas empat jenis
(Hestiningsih, 2008), yaitu:
1. Citra biner atau monokrom
Pada citra jenis ini, setiap titik atau piksel hanya bernilai 0 atau 1.Dimana
setiap titik membutuhkan media penyimpana sebesar 1 bit. Gambar 2.1
merupakan contoh citra biner.
Gambar 2.1 Citra Biner
2. Citra skala keabuan
Citra skala keabuan mempunyai kemungkinan warna antara hitam (minimal)
dan putih (maksimal). Jumlah maksimum warna sesuai dengan bit
penyimpanan yang digunakan.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
9
Misal:
Suatu citra dengan skala keabuan 4 bit, memiliki jumlah kemungkinan warna
24 = 16 warna.
Gambar 2.2 memperlihatkan citra skala keabuan 4 bit.
Gambar 2.2 Citra Skala Keabuan
3. Citra warna (true color)
Setiap titik (piksel) pada citra warna mewakili warna yang merupakan
kombinasi dari tiga warna dasar yaitu merah, hijau dan biru yang dikenal
sebagai citra RGB (Red, Green, Blue). Setiap warna dasar mempunyai
intensitas sendiri dengan nilai maksimum 255 (8 bit).
Red = warna minimal putih, warna maksimal merah
Green = warna minimal putih, warna maksimal hijau
Blue = warna minimal putih, warna maksimal biru
Setiap titik pada citra warna membutuhkan data 3 byte
Jumlah kemungkinan kombinasi warna untuk citra warna adalah 224 = lebih
dari 16 juta warna, disebut true color karena dianggap mencakup semua warna
yang ada. Gambar 2.3 memperlihatkan contoh citra warna.
Gambar 2.3 Citra Warna (True Color)
4. Citra warna berindeks
Setiap titik (piksel) pada citra warna berindeks mewakili indeks dari suatu
tabel warna yang tersedia (biasanya disebut palet warna). Keuntungan
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
10
pemakaian palet warna adalah kita dapat dengan cepat memanipulasi warna
tanpa harus mengubah informasi pada setiap titik dalam citra. Keuntungan
yang lain, penyimpanan lebih kecil. Contoh citra warna berindeks
diperlihatkan pada Gambar 2.4.
Gambar 2.4 Citra Warna Berindeks
Terdapat beberapa tipe file citra digital yang dikenal saat ini, diantaranya
Dari persamaan 2.13, yang merupakan persamaan untuk menghitung nilai sensitivity
rate dari suatu metode pendeteksi tepi, dapat ditentukan bahwa nilai nR berbanding
lurus dengan nilai nN. Artinya, nilai nN akan semakin besar jika nR juga membesar. Ini
terjadi karena dalam penelitian, citra yang diberi noise sebagai citra noisy adalah citra
tepi dari hasil pemrosesan dengan metode pendeteksi tepi. Dalam pendeteksian tepi
dengan metode Sobel, seperti yang telah dibahas pada analisis kualitas citra tepi untuk
metode Sobel, semakin besar tingkat kualitas resolusi citra masukan, maka jumlah
piksel yang dinyatakan sebagai tepi pada tiap-tiap citra hasil keluaran juga akan
semakin besar. Ini artinya, nilai P juga akan semakin besar untuk citra masukan
dengan tingkat kualitas resolusi yang semakin tinggi.
Sehingga nilai P untuk Citra_asli4 (sebagai citra dengan resolusi tertinggi)
lebih besar dari nilai P untuk Citra_asli3, Citra_asli2, dan Citra_asli1. Nilai P untuk
Citra_asli3 lebih besar dari nilai P untuk Citra_asli2 dan Citra_asli1. Serta nilai P
untuk Citra_asli2 lebih besar dari Citra_asli1.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
34
Analisis Metode LoG
Berikut ini pseudocode dari algoritma metode LoG, yang dapat digunakan untuk
menganalisis kinerja metode ini terhadap parameter yang ditentukan:
% Mengubah citra RGB menjadi citra skala keabuan
I = double(rgb2gray(handles.data1));
% Penghalusan
% Arah X filterx = d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix = conv2(I,filterx,'same'); % Arah Y filtery = d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy = conv2(I,filtery,'same');
% Norm of the gradient
NVI = sqrt(Ix.*Ix+Iy.*Iy);
% Konvolusi dengan kernel laplacian 3x3 H = [0 1 0,1 -4 1,0 1 0]; J = conv2(NVI,H,'same');
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
40
Ibw(i,j-1),Ibw(i,j),Ibw(i,j+1); Ibw(i+1,j-1),Ibw(i+1,j),Ibw(i+1,j+1)]; XI = [Ix(i,j)/NVI(i,j), -Ix(i,j)/NVI(i,j)]; YI = [Iy(i,j)/NVI(i,j), -Iy(i,j)/NVI(i,j)]; ZI = interp2(X,Y,Z,XI,YI); if Ibw(i,j) >= ZI(1) & Ibw(i,j) >= ZI(2) edgeimage(i,j)=I_max; else edgeimage(i,j)=I_min; end else edgeimage(i,j)=I_min; end end end
Dari tahapan-tahapan tersebut, maka hasil analisis kinerja metode Canny
terhadap ketiga parameter yang telah ditentukan , adalah sebagai berikut:
Analisis Kualitas Citra Tepi
Sama seperti pendeteksian tepi dengan metode LoG, hasil pendeteksian tepi pada
metode Canny juga dipengaruhi oleh dua nilai variabel Sigma dan Alfa. Dan fungsi
kedua variabel ini juga sama dengan metode LoG.
Namun, jika metode LoG sangat mungkin untuk menyatakan noise sebagai
tepi, tidak demikian dengan metode Canny. Hal ini disebabkan karena metode Canny
menggunakan pengambangan hysteresys, yang artinya nilai pengambangannya
ditentukan dengan melihat nilai batas bawah dan batas atas yang menentukan suatu
piksel apakah dinyatakan sebagai tepi atau tidak.
Selain itu, adanya langkah untuk meredam titik non maksimum membuat
tepian yang dihasilkan metode ini adalah tepian tunggal (single edge), dimana tepi
tunggal merupakan tepi yang baik dari sebuah metode pendeteksi tepi. Karena dua
tahap inilah yang nantinya membuat citra tepi hasil keluaran metode Canny menjadi
citra tepi terbaik.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
41
Seperti halnya dengan dua metode sebelumnya, kualitas citra yang semakin
tinggi membuat metode pendeteksi tepi tidak mampu untuk mendeteksi beberapa
keberadaan piksel yang seharusnya dinyatakan sebagai tepi, begitu juga dengan
metode Canny. Seluruh piksel tepi pada hasil keluaran metode Canny untuk citra
masukan dengan resolusi rendah (Citra_asli1 dan Citra_asli2) akan mudah dideteksi
oleh metode Canny. Namun, untuk citra dengan resolusi tinggi akan ditemukan
beberapa piksel yang seharusnya merupakan tepi tidak didefenisikan sebagai tepi oleh
metode ini.
Analisis Timing Run
Dengan mengasumsikan waktu untuk memproses tiap nilai piksel pada citra masukan
sebagai ‘t’, maka dapat dianalisis asumsi waktu yang diperlukan untuk mendeteksi
citra dengan metode Canny, yaitu:
Langkah 1:
Pemrosesan pada langkah pertama untuk metode Canny masih sama dengan langkah
pertama pada pemrosesan metode Sobel dan metode LoG yaitu terjadi 2 (dua) kali
proses (2t), maka waktu yang digunakan pada metode LoG untuk langkah pertama ini
diasumsikan sebagai berikut:
1. Citra_asli1: Waktu1 = 0,3x10^6(2t)
= 0,6x10^6t
2. Citra_asli2: Waktu1 = 2x10^6(2t)
= 4x10^6t
3. Citra_asli3: Waktu1 = 7x10^6(2t)
= 14x10^6t
4. Citra_asli4: Waktu1 = 10x10^6(2t)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
42
= 20x10^6t
Langkah 2:
Pemrosesan pada langkah kedua untuk metode Canny sama dengan pemrosesan yang
terjadi pada langkah kedua untuk metode LoG, dengan dua kali pemrosesan (2t) maka
asumsi waktu untuk langkah ini menjadi:
1. Citra_asli1: Waktu1 = 0,3x10^6(2t)
= 0,6x10^6t
2. Citra_asli2: Waktu1 = 2x10^6(2t)
= 4x10^6t
3. Citra_asli3: Waktu1 = 7x10^6(2t)
= 14x10^6t
4. Citra_asli4: Waktu1 = 10x10^6(2t)
= 20x10^6t
Langkah 3:
Langkah ketiga untuk pemrosesan metode Canny juga sama dengan langkah ketiga
untuk metode LoG, dimana pada langkah ini terjadi 1 (satu) kali proses untuk tiap
nilai piksel citra masukan (t), sehingga waktu untuk keempat citra masukan dapat
diasumsikan sebagai berikut:
1. Citra_asli1: Waktu1 = 0,3x10^6t
2. Citra_asli2: Waktu1 = 2x10^6t
3. Citra_asli3: Waktu1 = 7x10^6t
4. Citra_asli4: Waktu1 = 10x10^6t
Langkah 4:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
43
Untuk langkah 4 ini, ada 4 jenis proses yang terjadi untuk setiap nilai piksel citra (4t)
pada langkah ini. Pertama, menentukan nilai batas bawah I_min yang berguna untuk
menentukan nilai pengambangan thresh dengan fungsi min. Proses kedua,
menentukan nilai batas atas I_max yang juga digunakan untuk mencari nilai
pengambangan thresh dengan fungsi max. Selanjutnya, mencari nilai
pengambangan yang sesuai dengan rumus thresh = alfa*(I_max-I_min)+I_min,
dimana alfa adalah nilai yang ditentukan sendiri, sesuai kebutuhan. Proses terakhir
pada tahap ini adalah mencari nilai Ibw, yang merupakan nilai piksel citra akhir yang
nantinya digunakan pada tahap berikutnya. Asumsi waktu untuk keempat citra
masukan tersebut, menjadi:
1. Citra_asli1: Waktu1 = 0,3x10^6(4t)
= 1,2x10^6t
2. Citra_asli2: Waktu1 = 2x10^6(4t)
= 8x10^6t
3. Citra_asli3: Waktu1 = 7x10^6(4t)
= 28x10^6t
4. Citra_asli4: Waktu1 = 10x10^6(4t)
= 40x10^6t
Langkah 5:
Proses paling panjang pada metode Cannya adalah pada langkah ini. Pada proses ini
metode Canny akan berusaha mencari titik yang non maksimum, dan akan meredam
titik tersebut. Proses ini berlangsung dengan mencocokkan nilai Ibw dengan empat
keadaan, yaitu if Ibw(i,j)>level dan end, serta keadaan if Ibw(i,j) >=
ZI(1) & Ibw(i,j) >= ZI(2) dan else. Dari keadaan pertama terdapat tiga
penyelesaian yang dapat dikerjakan, untuk keadaan kedua, ketiga, dan keempat
masing-masing memiliki satu penyelesaian. Jika diasumsikan, langkah ini
membutuhkan 2 (dua) sampai 8 (delapan) kali pemrosesan (2t-8t). Untuk
mengasumsikan waktu dalam pemrosesan ini, digunakan asumsi terpanjang yang
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
44
mungkin terjadi dalam langkah ini, yaitu 8t, maka asumsi waktu untuk langkah ini
adalah:
1. Citra_asli1: Waktu1 = 0,3x10^6(8t)
= 2,4x10^6t
2. Citra_asli2: Waktu1 = 2x10^6(8t)
= 16x10^6t
3. Citra_asli3: Waktu1 = 7x10^6(8t)
= 56x10^6t
4. Citra_asli4: Waktu1 = 10x10^6(8t)
= 80x10^6t
Secara keseluruhan waktu yang dibutuhkan untuk memproses keempat citra
masukan tersebut dengan metode Canny membutuhkan waktu sebesar:
nilai_tr_canny - citra_tepi_canny Image citra_tepi_canny = *citra asli setelah diproses
dengan metode canny* - nilai_sr_canny Floating
Point nilai_sr_canny = |piksel_canny2 – piksel_canny1| : piksel_canny1
- nilai_tr_canny Integer nilai_tr_canny = waktu_canny2 – waktu_canny1 8. piksel_sobel1 Integer piksel_sobel1 = *jumlah piksel tepi hasil sobel* 9. piksel_sobel2 Integer piksel_sobel2 = *jumlah piksel sobel dengan noise* 10. piksel_LoG1 Integer piksel_LoG1 = *jumlah piksel tepi hasil LoG* 11. piksel_LoG2 Integer piksel_LoG2 = *jumlah piksel LoG dengan noise* 12. piksel_canny1 Integer piksel_canny1 = *jumlah piksel tepi hasil canny* 13. piksel_canny2 Integer piksel_canny2 = *jumlah piksel canny dengan
noise* 14. waktu_sobel1 Time waktu_sobel1 = *waktu awal pemrosesan sobel* 15. waktu_sobel2 Time waktu_sobel2 = *waktu akhir pemrosesan sobel* 16. waktu_LoG1 Time waktu_LoG1 = *waktu awal pemrosesan LoG* 17. waktu_LoG2 Time waktu_LoG2 = *waktu akhir pemrosesan LoG* 18. waktu_canny1 Time waktu_canny1 = *waktu awal pemrosesan canny* 19. waktu_canny2 Time waktu_canny2 = *waktu akhir pemrosesan canny*
Perancangan Antarmuka Pemakai (User Interface)
Antarmuka pemakai (user interface) adalah aspek sistem komputer atau program yang
dapat dilihat, didengar, atau dipersepsikan oleh pengguna manusia, dan perintah-
perintah atau mekanisme yang digunakan pemakai untuk mengendalikan operasi dan
memasukkan data.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
54
Berikut ini merupakan perancangan antarmuka aplikasi Pendeteksi Tepi Citra
yang dirancang dengan 6 (enam) buah antarmuka, yang dalam bahasa pemrograman
Matlab disebut dengan Figur. Figur-figur tersebut terdiri atas figur utama yang diberi
nama sebagai Figur PendeteksianTepi, figur untuk pendeteksian tepi dengan ketiga
metode yang diberi nama Figur MetodeSobel, MetodeLoG, dan MetodeCanny serta
figur untuk info mengenai program dan programmer, yang diberi nama Figur
InfoProgrammer dan InfoProgram.
Antarmuka Figur PendeteksianTepi
Tampilan utama merupakan tampilan awal yang akan menghubungkan user dengan
fitur utama perangkat lunak. Oleh karena itu, antarmuka untuk figur utama ini
dirancang dengan tampilan yang sederhana, namun tetap menarik sehingga
mempermudah user dalam berinteraksi dengan sistem atau perangkat lunak (user
friendly).
Antarmuka ini dirancang dengan 2 (dua) pilihan menu, yaitu Metode dan Info.
Dari menu-menu ini, pengguna nantinya dapat berinteraksi dengan ketiga metode
pendeteksi tepi yang telah ditentukan. Selain dapat berinteraksi dengan ketiga metode
pendeteksi tersebut melalui menu Metode, aplikasi ini juga dirancang untuk dapat
memberikan informasi kepada pengguna mengenai gambaran umum program dan
pembuat program (programmer) melalui menu Info yang disediakan. Dalam menu
utama ini juga dirancang tampilan dari judul aplikasi serta sedikit identitas dari
pembuat program. Gambar 3.7 memperlihatkan rancangan antarmuka dari Menu
Utama.
Metode Info Sobel LoG Canny Keluar
Programmer Program
APLIKASI PENDETEKSI TEPI CITRA DENGAN METODE SOBEL, LoG, DAN CANNY
SKRIPSI
Created by: Afnisyah Taurisna
051401033
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
55
Gambar 3.7 Rancangan Antarmuka Figur PendeteksianTepi
Antarmuka Figur MetodeSobel
Figur MetodeSobel dirancang untuk dapat melakukan beberapa operasi terhadap citra
yang akan diolah dengan metode pendeteksi tepi Sobel. Operasi-operasi tersebut
terdiri dari buka file, deteksi tepi file, hitung nilai timing run, dan hitung nilai
sensitivity rate. Selain itu, operasi lain yang dapat dilakukan pada figur ini adalah
Keluar.
Keseluruhan operasi tersebut dirancang menjadi 2 (dua) buah menu, yaitu File
dan Keluar. Menu File dibagi atas 3 (tiga) buah sub-menu Buka dan Proses. Dan
untuk operasi Proses juga terdiri atas 3 (tiga) sub-menu lain, yaitu Deteksi Tepi,
Timing Run dan Sensitivity Rate.
Pada figur ini dirancang 2 (dua) buah kolom untuk menampilkan gambar,
kolom pertama untuk citra asli (masukan) dan kolom kedua untuk citra tepi (keluaran).
Figur ini juga dirancang untuk dapat menampilkan Nama dan Ukuran dari file citra
yang ditampilkan. Selain itu, figur ini juga dirancang dengan 2 (dua) buah kolom
untuk menampilkan nilai Timing Run dan Sensitivity Rate. Gambar 3.8
memperlihatkan tampilan rancangan antarmuka figur MetodeSobel.
File Keluar
Buka Proses ► Deteksi Tepi
Timing Run Sensitivity Rate
Pendeteksian Tepi Sobel
Citra Asli Citra Tepi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
56
Gambar 3.8 Rancangan Antarmuka Figur MetodeSobel.
Antarmuka Figur MetodeLoG
Figur MetodeLoG dirancang dengan antarmuka yang keseluruhannya hampir sama
dengan figur MetodeSobel. Hanya saja, setiap kata Sobel yang terdapat pada figur
MetodeSobel diubah menjadi kata LoG pada figur MetodeLoG. Hal ini tentu saja
berhubungan dengan pemrosesan yang berlangsung pada figur MetodeLoG ini.
Perancangan antarmuka untuk pendeteksian tepi dengan ketiga metode ini
dibuat dengan rancangan yang hampir sama untuk memudahkan melihat perbedaan
antara hasil dari pendeteksian tepi dengan ketiga metode tersebut. Gambar 3.9
memperlihatkan rancangan antarmuka dari figur MetodeLoG.
File Keluar Buka Proses ► Deteksi Tepi
Timing Run Sensitivity Rate
Pendeteksian Tepi LoG
Citra Asli Citra Tepi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
57
Gambar 3.9 Rancangan Antarmuka Figur MetodeLoG
Antarmuka Figur MetodeCanny
Seperti halnya figur MetodeLoG yang dirancang dengan antarmuka yang hampir sama
dengan figur MetodeSobel, figur MetodeCanny juga dirancang dengan tampilan yang
keseluruhannya hampir sama dengan figur MetodeSobel dan MetodeLoG.
Perbedaannya juga terletak pada setiap kata yang menyebutkan jenis metode
diubah menjadi Canny, dan hal ini juga berhubungan dengan pemrosesan yang
berlangsung di dalam figur ini. Gambar 3.10 memperlihatkan rancangan antarmuka
dari figur MetodeCanny.
File Keluar Buka Proses ► Deteksi Tepi
Timing Run Sensitivity Rate
Pendeteksian Tepi Canny
Citra Asli Citra Tepi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
58
Gambar 3.10 Rancangan Antarmuka Figur MetodeCanny
Antarmuka Figur InfoProgrammer
Figur InfoProgrammer dirancang sedemikian rupa untuk dapat memberikan informasi
mengenai pembuat program (programmer). Informasi yang ditampilkan pada figur ini
meliputi foto dan data diri pembuat program. Untuk memudahkan pengguna jika ingin
keluar dari figur ini dapat mengklik tombol Keluar yang dirancang pada bagian bawah
figur. Gambar 3.11 memperlihatkan rancangan antarmuka dari figur InfoProgrammer.
Info Programmer
Image
Keluar
Data Programmer
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
59
Gambar 3.11 Rancangan Antarmuka Figur InfoProgrammer
Antarmuka Figur InfoProgram
Figur InfoProgram dirancang untuk memberikan informasi kepada pengguna
mengenai gambaran umum dari aplikasi pendeteksi tepi citra ini. Informasi tersebut
ditampilkan sebagai uraian beberapa kalimat penjelasan. Selain berisi uraian, figur ini
juga dilengkapi dengan tombol Keluar untuk memudahkan pengguna jika ingin keluar
dari figur InfoProgram. Gambar 3.12 memperlihatkan rancangan antarmuka dari figur
InfoProgram.
Gambar 3.12 Rancangan Antarmuka Figur InfoProgram
Antarmuka Figur Keluar
Figur ini merupakan figur yang akan ditampilkan jika pengguna memilih Tombol
Keluar pada setiap form. Figur ini berisi sebuah pertanyaan untuk meyakinkan
pengguna dengan keputusannya untuk keluar. Pada figur ini juga disediakan dua buah
tombol pilihan, yaitu ’ya’ dan ’tidak’. Tombol ’ya’ akan membawa pengguna keluar
Info Program
Keluar
Isi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
60
Pertanyaan Konfirmasi Keluar
Ya Tidak
dari program dan tombol ’tidak’ akan membawa pengguna kembali ke figur yang
sedang diakses. Tampilan dari figur keluar dapat dilihat pada Gambar 3.13.
Gambar 3.13 Rancangan Antarmuka Figur Keluar
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
BAB 4
IMPLEMENTASI DAN PENGUJIAN
Setelah melalui tahap perancangan, tahap selanjutnya untuk mengembangkan suatu
perangkat lunak adalah tahap implementasi. Untuk mengetahui apakah hasil
implementasi perangkat lunak tersebut telah berhasil atau tidak, diperlukan pengujian.
Berikut ini hasil implementasi dan pengujian dari aplikasi perangkat lunak yang telah
dibangun:
Implementasi
Dalam pengembangan aplikasi pendeteksi tepi citra dengan metode Sobel, LoG, dan
Canny ini bahasa pemrograman yang digunakan adalah Matlab 7.5.0 (R2007b).
Listing program dari aplikasi ini dapat dilihat pada halaman Lampiran. Dalam
implementasinya, aplikasi ini terdiri atas 6 (enam) buah tampilan utama, yang dalam
Matlab dikenal sebagai figur. Figur-figur tersebut terdiri atas:
1. Figur PendeteksianTepi
2. Figur MetodeSobel
3. Figur MetodeLoG
4. Figur MetodeCanny
5. Figur InfoProgrammer, dan
6. Figur InfoProgram
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
62
Figur PendeteksianTepi
Figur PendeteksianTepi ini merupakan tampilan utama dari aplikasi yang telah
dibanguan. Figur ini menghubungkan pengguna untuk dapat menggunakan aplikasi
pendeteksian tepi. Figur ini diimplementasikan dengan tampilan seperti Gambar 4.1.
Gambar 4.1 Tampilan Figur PendeteksianTepi
Figur PendeteksianTepi ini dirancang dengan 2 (dua) buah menu utama, yaitu
Metode dan Info. Menu Metode terdiri atas sub-menu Sobel, LoG, Canny, dan Keluar.
Sub-menu Sobel menghubungkan pengguna dengan figur MetodeSobel, sub-menu
LoG menghubungkan pengguna dengan figur MetodeLoG, dan sub-menu Canny
menghubungkan pengguna dengan figur MetodeCanny, dan sub-menu Keluar
menghubungkan pengguna dengan pilihan untuk meninggalkan aplikasi atau tidak.
Tampilan penjabaran menu Metode ini dapat dilihat dari Gambar 4.2.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
63
Gambar 4.2 Menu Metode pada Figur PendeteksianTepi
Menu Info tediri atas 2 (dua) sub-menu, yaitu Programmer dan Program. Sub-
menu Programmer menghubungkan pengguna dengan figur InfoProgrammer, dan sub-
menu Program menghubungkan pengguna dengan figur InfoProgram. Gambar 4.3
memperlihatkan tampilan dari menu Info pada figur Pendeteksian Tepi.
Gambar 4.3 Menu Info pada Figur PendeteksianTepi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
64
Figur MetodeSobel
Figur MetodeSobel merupakan figur yang menghubungkan pengguna dengan metode
Sobel untuk mendeteksi tepi citra. Untuk menjangkau figur ini, pengguna dapat
mengklik menu Metode, kemudian memilih sub-menu Sobel yang terdapat pada figur
PendeteksianTepi. Tampilan dari figur MetodeSobel diperlihatkan pada Gambat 4.4.
Gambar 4.4 Tampilan Figur MetodeSobel
Pada figur ini, terdapat 2 (dua) pilihan menu, yaitu menu File dan menu
Keluar. Dari menu File, pengguna dapat melakukan beberapa operasi yang dapat
dipilih dengan mengklik tiap pilihan sub-menu dari menu File. Operasi-operasi
tersebut terdiri atas :
1. Buka, dan
2. Proses
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
65
Sub-menu Buka merupakan pilihan untuk menampilkan file citra yang diambil
dari salah satu alamat direktori, dan akan diproses dengan metode pendeteksi tepi
Sobel, dan sub-menu proses merupakan pilihan beberapa proses yang ingin dilakukan
terhadap file citra yang telah dipilih untuk diporses. Operasi-operasi yang dapat
dilakukan dari sub-menu proses ini adalah Deteksi Sobel untuk melakukan deteksi
tepi terhadap citra masukan dengan metode Sobel, Timing Run untuk menghitung
kecepatan proses deteksi metode Sobel, dan Sensitivity Rate untuk mengetahui nilai
kesensitifan metode Sobel terhadap noise. Gambar 4.5 memperlihatkan penjabaran
sub-menu dari menu File yang terdapat pada figur MetodeSobel.
Gambar 4.5 Menu File pada Figur MetodeSobel
Dengan mengklik menu File dan sub-menu Buka pada figur MetodeSobel,
citra yang dipilih sebagai citra masukan (citra asli) akan ditampilkan pada kolom yang
terdapat di bawah label ’Citra Asli’ pada figur. Begitu juga dengan nama dan ukuran
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
66
dari file citra asli tersebut akan ditampilkan pada kolom ’Nama File’ dan ’Ukuran’
yang telah tersedia di bawah kolom tersebut. Informasi ini berguna untuk menandakan
perbedaan antara setiap file yang menjadi input dalam aplikasi. Sedangkan kolom di
bawah label ’Citra Tepi’ akan menampilkan citra hasil deteksi tepi dengan metode
Sobel, jika pengguna mengklik menu File, sub-menu Proses, dan sub-menu Deteksi
Sobel.
Untuk memperoleh nilai ’Timing Run’ dan ’Sensitivity Rate’ dari hasil
pendeteksian tepi dengan metode Sobel dan menampilkan pada kolom yang terdapat
di bagian bawah figur dapat dilakukan dengan memilih menu File, sub-menu Proses
dan sub-menu Timing Run (untuk nilai Timing Run) dan Sensitivity Rate (untuk nilai
Sensitivity Rate).
Figur MetodeLoG
Figur MetodeLoG merupakan figur yang menghubungkan pengguna dengan proses
pendeteksian tepi citra dengan metode Laplacian of Gaussian (LoG). Untuk
menampilkan figur ini pengguna dapat mengklik menu Metode dan sub-menu LoG
pada figur PendeteksianTepi. Hampir keseluruhan tampilan figur LoG ini memiliki
tampilan yang sama dengan figur MetodeSobel. Gambar 4.6 memperlihatkan tampilan
dari figur MetodeLoG.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
67
Gambar 4.6 Tampilan Figur MetodeLoG
Perbedaan antara figur MetodeSobel dengan MetodeLoG terdapat pada pilihan
sub-menu yang tersedia. Jika pada figur MetodeSobel pada menu File dan sub-menu
Proses salah satu pilihan sub-menu selanjutnya adalah ‘Deteksi Sobel’, pada figur
MetodeLoG pilihan ini diganti dengan ‘Deteksi LoG’. Selain dari perbedaan pilihan
sub-menu tersebut, seluruh tampilan kedua figur ini sama. Gambar 4.7
memperlihatkan penjabaran sub-menu dari figur MetodeLoG yang membedakannya
dengan figur MetodeSobel.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
68
Gambar 4.7 Menu File pada Figur MetodeLoG
Figur MetodeCanny
Figur MetodeCanny merupakan figur yang menghubungkan pengguna dengan proses
pendeteksian tepi citra dengan metode Canny. Untuk menampilkan figur ini pengguna
dapat mengklik menu Metode dan sub-menu Canny pada figur PendeteksianTepi.
Seperti halnya pada figur MetodeLoG, hampir keseluruhan tampilan figur
MetodeCanny juga memiliki tampilan yang sama dengan kedua figur sebelumnya,
yaitu MetodeSobel dan MetodeLoG. Gambar 4.8 memperlihatkan tampilan dari figur
Metode Canny.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
69
Gambar 4.8 Tampilan Figur MetodeCanny
Figur MetodeCanny pun memiliki perbedaan yang sama dengan perbedaan
antara figur MetodeSobel dengan MetodeLoG. Perbedaan tersebut terletak pada
pilihan sub-menu yang tersedia. Jika pada figur MetodeSobel pada menu File dan sub-
menu Proses salah satu pilihan sub-menu selanjutnya adalah ‘Deteksi Sobel’ dan pada
figur MetodeLoG pilihan ini diganti dengan ‘Deteksi LoG’, maka pada figur
MetodeCanny pilihan ini diubah menjadi ‘Deteksi Canny’. Selain dari perbedaan
pilihan sub-menu tersebut, seluruh tampilan ketiga figur ini sama. Gambar 4.9
memperlihatkan penjabaran sub-menu dari figur MetodeCanny yang membedakannya
dengan figur MetodeSobel dan MetodeLoG.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
70
Gambar 4.9 Menu File pada Figur MetodeCanny
Figur InfoProgrammer
Figur InfoProgrammer merupakan figur yang berfungsi untuk memberikan informasi
mengenai programmer dari aplikasi pendeteksi tepi ini. Informasi tersebut terdiri atas
data diri dari programmer. Figur ini dapat dipilih dengan mengklik menu Info dan
sub-menu Programmer pada figur PendeteksianTepi. Gambar 4.10 memperlihatkan
Figur InfoProgrammer.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
71
Gambar 4.10 Tampilan Figur InfoProgrammer
Figur InfoProgram
Untuk menampilkan figur InfoProgram, pengguna dapat mengklik menu Info dan sub-
menu Program dari menu yang terdapat pada figur PendeteksianTepi. Figur ini berisi
informasi mengenai gambaran umum dari aplikasi pendeteksian tepi citra ini. Gambar
4.11 memperlihatkan tampilan dari figur InfoProgram.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
72
Gambar 4.11 Tampilan Figur InfoProgram
Selain dari 6 (enam) figur yang telah dijabarkan di atas, dalam aplikasi ini juga
terdapat 1 (satu) buah figur question dialog yang akan tampil ketika pengguna
mengklik pilihan untuk ’Keluar’ dari setiap figur yang ada. Gambar 4.12
memperlihatkan tampilan dari figur ’Keluar’.
Gambar 4.12 Tampilan Menu Keluar
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
73
Pengujian
Untuk melihat keberhasilan sebuah sistem yang telah dibangun sebagai sarana untuk
menyelesaikan suatu permasalahan, sistem tersebut harus diuji dengan beberapa kasus
yang berbeda. Jika sistem yang telah diuji dianggap dapat memenuhi kebutuhan
pengguna maka sistem itu dapat dikatakan sebagai sebuah sistem yang sukses.
Dalam penulisan Tugas Akhir ini, pengujian terhadap aplikasi pendeteksi tepi
yang telah dibangun dilakukan dengan menguji kinerja tiap metode yang ada dengan
empat jenis citra masukan yang berbeda kualitas resolusinya. Citra-citra tersebut untuk
selanjutnya disebut sebagai Citra_asli1 untuk jenis citra dengan resolusi 0,3
megapiksel, Citra_asli2 untuk citra dengan resolusi 2 megapiksel, Citra_asli4 untuk
citra dengan resolusi 7 megapiksel dan Citra_asli4 untuk citra dengan resolusi 10
megapiksel.
Hasil
Berikut ini hasil yang diperoleh dari pengujian terhadap aplikasi pendeteksian tepi
citra dengan tiga metode pendeteksi tepi yang diuji dengan empat jenis citra masukan
yang memiliki tingkat kualitas resolusi yang berbeda:
Metode Sobel
Dari hasil pengujian yang dilakukan terhadap metode Sobel dengan empat jenis citra
masukan yang berbeda, yaitu Citra_asli1, Citra_asli2, Citra_asli3, dan Citra_asli4,
serta menetapkan nilai Alfa yang dipakai sebagai variabel yang mempengaruhi
kualitas citra hasil keluaran metode ini dengan nilai 8,0, maka diperoleh hasil sebagai
berikut:
1. Citra_asli1
Dari pengujian yang dilakukan terhadap metode Sobel dengan Citra_asli1 sebagai
masukannya, diperoleh hasil:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
74
Kualitas citra tepi:
a. Terdapat beberapa piksel bukan tepi yang didefenisikan sebagai tepi.
b. Tepi yang dihasilkan adalah tepi ganda (double edge).
Nilai timing run = 2,064 detik
Nilai sensitivity rate = 0,752373 piksel
Gambar 4.13 memperlihatkan figur yang menunjukkan hasil pengujian Citra_asli1
untuk metode Sobel.
Gambar 4.13 Hasil Pengujian Metode Sobel untuk Citra_asli1
2. Citra_asli2
Dari pengujian metode Sobel dengan Citra_asli2 sebagai citra masukannya,
diperoleh hasil sebagai berikut :
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
75
Kualitas citra tepi:
a. Banyak piksel yang bukan tepi didefenisikan sebagai tepi.
b. Tepi yang terbentuk terdiri atas tepi ganda dan tepi tunggal (single edge).
Nilai timing run = 27,2725 detik
Nilai sensitivity rate = 1,8075 piksel.
Gambar 4.14 memperlihatkan figur hasil pengujian terhadap metode Sobel untuk
Citra_asli2.
Gambar 4.14 Hasil Pengujian Metode Sobel untuk Citra_asli2
3. Citra_asli3
Pengujian terhadap metode Sobel dengan Citra_asli3 sebagai citra masukannya,
menghasilkan:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
76
Kualitas citra tepi:
a. Terdapat banyak piksel yang dianggap bukan tepi didefenisikan sebagai tepi.
b. Terdiri atas tepi-tepi tunggal, namun beberapa merupakan tepi ganda.
Nilai timing run = 195,761 detik
Nilai sensitivity rate = 2,52927 piksel
Gambar 4.15 memperlihatkan figur yang menunjukkan hasil pengujian Citra_asli3
dengan metode Sobel.
Gambar 4.15 Hasil Pengujian Metode Sobel untuk Citra_asli3
4. Citra_asli4
Untuk pengujian metode Sobel dengan masukan Citra_asli4, hasil yang diperoleh
adalah sebagai berikut:
Kualitas citra tepi:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
77
a. Beberapa piksel tepi tidak terdefenisi.
b. Beberapa piksel bukan tepi didefenisikan sebagai tepi.
c. Tepi yang dihasilkan adalah tepi tunggal (single edge).
Nilai timing run = 338,237 detik
Nilai sensitivity rate = 2,92088 piksel.
Gambar 4.16 memperlihatkan hasil pengujian metode Sobel dengan Citra_asli4.
Gambar 4.16 Hasil Pengujian Metode Sobel untuk Citra_asli4
Metode LoG
Setelah melakukan pengujian terhadap metode LoG dengan nilai variabel Sigma = 0,5
dan Alfa = 0,23, diperoleh hasil untuk keempat citra masukan, sebagai berikut:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
78
1. Citra_asli1
Dari hasil pengujian terhadap metode LoG dengan Citra_asli1 sebagai citra
masukan, diperoleh hasil sebagai berikut:
Kualitas citra tepi:
a. Terdiri atas tepi-tepi tunggal.
b. Beberapa piksel tepi tidak terdefenisi.
c. Beberapa piksel bukan tepi didefenisikan sebagai tepi.
Nilai timing run = 0,571387 detik
Nilai sensitivity rate = 3,08445 piksel
Hasil pengujian metode LoG untuk Citra_asli1 diperlihatkan pada Gambar 4.17.
Gambar 4.17 Hasil Pengujian Metode LoG untuk Citra_asli1
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
79
2. Citra_asli2
Untuk pengujian Citra_asli2 dengan metode LoG, hasil yang diperoleh adalah
sebagai berikut:
Kualitas citra tepi:
a. Banyak piksel bukan tepi didefenisikan sebagai tepi.
b. Piksel yang didefenisikan sebagai tepi merupakan tepi tunggal, namun tidak
semuanya terdefenisi sebagai tepi.
Nilai timing run = 2,46148 detik
Nilai sensitivity rate = 3,091 piksel.
Gambar 4.18 memperlihatkan hasil pengujian metode LoG untuk Citra_asli2.
Gambar 4.18 Hasil Pengujian Metode LoG untuk Citra_asli2
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
80
3. Citra_asli3
Hasil pengujian metode LoG untuk Citra_asli3 sebagai berikut:
Kualitas citra tepi:
a. Objek yang seharusnya menjadi objek tepi, tidak terdefenisi.
b. Tepi yang terbentu merupakan noise-noise yang terdeteksi oleh metode LoG.
Nilai timing run = 62,8449 detik
Nilai sensitivity rate = 3,65482 piksel.
Gambar 4.19 memperlihatkan hasil pengujian metode LoG dengan Citra_asli3.
Gambar 4.19 Hasil Pengujian Metode LoG untuk Citra_asli3
4. Citra_asli4
Hasil pengujian yang dilakukan terhadap Citra_asli4 dengan metode LoG adalah
sebagai berikut:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
81
Kualitas citra tepi:
a. Hampir seluruh piksel yang terdefenisi sebagai tepi bukan merupakan objek
yang seharusnya dideteksi.
Nilai timing run = 125,612 detik
Nilai sensitivity rate = 3,86956 piksel.
Gambar 4.20 memperlihatkan hasil pengujian metode LoG untuk Citra_asli4.
Gambar 4.20 Hasil Pengujian Metode LoG untuk Citra_asli4
Metode Canny
Dari pengujian terhadap metode Canny dengan nilai Sigma = 0,7 dan Alfa = 0,07.
Maka, hasil yang diperoleh untuk keempat citra masukannya adalah sebagai berikut:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
82
1. Citra_asli1
Dari pengujian Citra_asli1 dengan metode Sobel, hasil yang diperoleh adalah:
Kualitas citra tepi:
a. Tepi yang dihasilkan adalah tepi tunggal.
b. Tepi yang dideteksi lebih akurat dibanding dua metode lain.
Nilai timing run = 58,8907 detik
Nilai sensitivity rate = 0,997956 piksel.
Gambar 4.21 menunjukkan figur hasil pengujian metode Canny dengan masukan
Citra_asli1.
Gambar 4.21 Hasil Pengujian Metode Canny untuk Citra_asli1
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
83
2. Citra_asli2
Hasil pengujian yang diperoleh dari Citra_asli2 pada metode Canny adalah
sebagai berikut:
Kualitas citra tepi:
a. Tepi yang dihasilkan adalah tepi tunggal.
b. Terdapat beberapa piksel tepi yang tidak terdefenisi.
Nilai timing run = 246,61 detik
Nilai sensitivity rate = 0,996275 piksel.
Gambar 4.22 memperlihatkan figur hasil pengujian metode Canny untuk
Citra_asli2.
Gambar 4.22 Hasil Pengujian Metode Canny untuk Citra_asli2
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
84
3. Citra_asli3
Dari pengujian metode Canny dengan citra masukan Citra_asli3, diperoleh hasil
sebagai berikut:
Kualitas citra tepi:
a. Semakin banyak tepi yang tidak terdefenisi.
b. Tidak terdapat piksel bukan tepi yang didefenisikan sebagai tepi.
Nilai timing run = 776,576 detik
Nilai sensitivity rate = 0,993497 piksel.
Gambar 4.23 memperlihatkan figur hasil pengujian metode Canny dengan
Citra_asli3.
Gambar 4.23 Hasil Pengujian Metode Canny untuk Citra_asli3
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
85
4. Citra_asli4
Untuk Citra_asli4 yang diuji dengan metode Canny, diperoleh hasil seperti berikut
ini:
Kualitas citra tepi:
a. Banyak piksel tepi yang tidak terdefenisi.
b. Tidak terdapat piksel bukan tepi yang didefenisikan sebagai tepi.
Nilai timing run = 1815,93 detik
Nilai sensitivity rate = 0,992519 piksel
Gambar 4.24 memperlihatkan figur hasil pengujian metode Canny untuk
Citra_asli4.
Gambar 4.24 Hasil Pengujian Metode Canny untuk Citra_asli4
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
86
Pembahasan
Untuk mendapatkan suatu hasil citra deteksi tepi yang maksimal dari tiap-tiap metode,
nilai variabel yang mempengaruhi kinerja tiap metode tersebut harus ditentukan
dengan benar.
Dari hasil pengujian yang dilakukan, untuk metode Sobel, variabel yang
mempengaruhi kinerja metode ini adalah nilai Alfa (faktor pengali pada proses
pengambangan). Selain mempengaruhi hasil keluaran citra tepi, nilai Alfa juga
berpengaruh pada waktu dan kesensitifan metode terhadap noise. Semakin tinggi nilai
Alfa yang digunakan, semakin besar waktu pemrosesan yang diperlukan, nilai
sensitivitasnya juga semakin besar. Karena itu, nilai Alfa yang digunakan harus
sesuai, artinya tidak terlalu besar, agar waktu yang diperlukan untuk pemrosesan tidak
terlalu lama. Dan tidak terlalu kecil, agar kualitas citra yang dihasilkannya, lebih baik.
Nilai Alfa yang paling tepat digunakan untuk mendeteksi tepi keempat jenis citra
masukan dengan metode Sobel untuk penelitian ini adalah 8,0. Dengan nilai Alfa 8,0,
tepi citra untuk keempat jenis citra masukan berhasil terdeteksi. Citra_asli1
menghasilkan keluaran yang paling baik. Selain citra tepi yang terdeteksi dengan baik,
waktu yang dibutuhkan untuk pemrosesan juga tidak terlalu lama, hanya saja nilai
sensitivity ratenya tidak terlalu besar. Pada citra masukan lain, citra tepi yang
dihasilkan kurang begitu baik, hal ini dikarenakan banyak noise yang terdeteksi
sebagai tepi.
Pada metode LoG, selain dipengaruhi oleh nilai Alfa, metode ini juga
dipengaruhi oleh nilai Sigma yang merupakan standar deviasi pada fungsi Gaussian.
Setelah menguji metode ini dengan beberapa nilai Sigma dan Alfa, maka diperoleh
nilai Sigma = 0,5 dan Alfa = 0,23 sebagai nilai terbaik. Namun nilai ini hanya baik
untuk mendeteksi tepi citra dengan tingkat resolusi rendah, yaitu Citra_asli1 dan
Citra_asli2, namun dengan kualitas yang tidak begitu baik. Pada Citra_asli3 dan
Citra_asli4 tepi citra tidak terdeteksi, pada jenis citra ini metode LoG mendefenisikan
noise sebagai tepi. Dengan nilai Sigma dan Alfa lain, tepi citra untuk Citra_asli3 dan
Citra_asli4 juga tetap tidak terdeteksi. Hal ini dikarenakan proses konvolusi dengan
kernel Laplacian, yang membuat metode ini sangat sensitif terhadap keberadaan noise.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
87
Sama seperti pada metode Sobel, penentuan nilai variabel pada metode LoG juga
berpengaruh pada nilai timing run dan sensitivity ratenya. Semakin besar nilai Sigma
dan Alfa yang digunakan, timing run untuk setiap citra masukan juga semakin besar.
Nilai sensitivity ratenya juga semakin besar untuk setiap citra masukan.
Dibanding metode Sobel dan LoG, metode Canny merupakan metode yang
menghasilkan citra tepi paling baik. Namun, metode ini memerlukan waktu paling
lama dalam pemrosesannya. Hal ini dipengaruhi oleh banyaknya tahapan yang
dilakukan dalam memproses citra untuk menghasilkan citra tepi. Kualitas citra tepi
yang dihasilkan metode ini juga bergantung pada nilai variabel yang ditentukan
sendiri oleh pengguna. Variabel yang mempengaruhi kinerja metode Canny sama
dengan variabel pada metode LoG, yaitu Sigma dan Alfa. Dalam penelitian ini, nilai
Sigma yang sesuai untuk keempat jenis citra adalah 7,0 dan Alfa yang sesuai adalah
0,7. Pada metode ini, kualitas antar satu citra masukan dengan citra masukan yang lain
tidak terlalu berbeda. Pada citra masukan dengan resolusi rendah, seluruh tepian citra
berhasil dideteksi, namun pada citra masukan dengan resolusi tinggi, beberapa piksel
yang merupakan tepi tidak berhasil dideteksi.
Untuk ketiga metode yang digunakan, semuanya paling baik digunakan untuk
mendeteksi tepi citra yang memiliki kualitas resolusi rendah (Citra_asli1 dan
Citra_asli2), untuk mendeteksi tepian citra dengan resolusi tinggi (Citra_asli3 dan
Citra_asli4), metode Sobel dan Canny masih dapat digunakan. Namun, metode LoG
tidak mampu mendeteksi tepian citra dengan resolusi tinggi. Pada semua metode,
waktu yang diperlukan untuk pendeteksian tepi citra akan semakin besar untuk citra
masukan dengan resolusi yang semakin tinggi. Untuk ketiga metode, citra hasil
deteksi tepi dengan kualitas terbaik memiliki nilai sensitivity rate paling besar
dibanding citra hasil deteksi tepi lainnya. Pada metode Sobel dan LoG, tingkat
sensitivitas terhadap noise akan semakin besar untuk citra dengan kualitas resolusi
yang lebih tinggi, berbeda dengan metode Canny yang semakin tinggi tingkat resolusi
citranya, sensitivitasnya terhadap noise semakin kecil.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
BAB 5
KESIMPULAN DAN SARAN
Sebagai penutup, kesimpulan dan saran yang berhubungan dengan penulisan Tugas
Akhir disampaikan pada Bab ini.
5.1 Kesimpulan
Setelah melakukan penelitian untuk menganalisis pengaruh kualitas resolusi citra
terhadap kinerja metode pendeteksi tepi, maka dapat disimpulkan bahwa:
1. Kualitas resolusi citra berpengaruh terhadap kinerja metode pendeteksi tepi. Pada
metode Sobel dan LoG, semakin tinggi tingkat resolusi citra yang menjadi citra
masukan, nilai timing run dan sensitivity rate akan semakin besar, sedangkan citra
tepi hasil keluarannya semakin berkurang kualitasnya. Sedangkan pada metode
Canny, terdapat sedikit perbedaan. Pada metode Canny, sensitifitas metode ini
terhadap noise semakin besar jika citra masukannya memiliki tingkat resolusi yang
semakin tinggi.
2. Jika ditinjau dari segi waktu dan sensitivitas terhadap noise, metode terbaik untuk
mendeteksi tepi suatu citra adalah metode LoG, karna diantara ketiga metode
tersebut metode ini memiliki nilai timing run paling kecil untuk setiap citra
masukannya serta memiliki nilai sensitivitas yang tinggi terhadap noise. Namun,
citra tepi yang dihasilkannya memiliki kualitas yang kurang baik. Metode Canny
merupakan metode yang citra tepi hasil keluarannya paling baik. Metode Sobel
baik digunakan untuk mendeteksi tepi citra yang sederhana, selain karna waktu
yang diperlukan tidak terlalu besar, kualitas citra tepi yang dihasilkan juga
lumayan baik.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
89
3. Dari pengujian yang telah dilakukan terhadap ketiga metode pendeteksi tepi,
tingkat resolusi terbaik yang berhasil dideteksi tepinya adalah citra dengan tingkat
resolusi rendah (0,3 megapiksel dan 2 megapiksel).
5.2 Saran
Berikut ini beberapa saran yang diharapkan dapat dilakukan untuk pengembangan dari
penulisan Tugas Akhir ini:
1. Pemilihan nilai variabel yang mempengaruhi kinerja tiap metode pendeteksi tepi
yang digunakan, hendaknya diteliti dengan baik agar menghasilkan citra tepi
terbaik dibanding jika menggunakan nilai variabel lainnya.
2. Untuk pengembangan selanjutnya, dapat dilakukan dengan menganalisis pengaruh
kualitas resolusi citra dengan format selain *.jpg terhadap kinerja metode
pendeteksi tepi.
3. Penelitian ini dapat dikembangkan dengan studi kasus yang berbeda. Baik dari
metode yang digunakan, maupun permasalahan yang ingin dipecahkan dengan
memanfaatkan kinerja metode pendeteksi tepi.
4. Pengembangan juga dapat dilakukan dengan mengkombinasikan ketiga metode
pendeteksi tepi untuk mendeteksi tepi sebuah citra, kemudian dianalisis hasilnya
apakah semakin baik atau semakin buruk.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
90
DAFTAR PUSTAKA
Febriani. 2008. ”Analisis penelusuran tepi citra menggunakan detektor tepi sobel dan canny”. Dalam Febriani dan Lussiana, E. T. P. (eds). Seminar Ilmiah Nasional Komputer dan Sistem Intelijen (KOMMIT 2008): hal. 462-466. Depok: Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma.
Gonzales, R. C., Woods, R. E., and Eddins, S. L. 2005. Digital Image Processing
Using MATLAB. India : Pearson Education.
Green, B. 2002. Diakses tanggal, 31 Maret 2009. Canny Edge Detection Tutorial. www.pages.drexel.edu/../can_tut.html.
Herdiyeni, Y. 2007. Diakses tanggal, 31 Maret 2009. Edge Detection.
Hestiningsih, I. 2008. Diakses tanggal, 26 Januari 2009. Pengolahan Citra.
http://toba.mytoba.com/dl/Pengolahan%20Citra.pdf
http://www.total.or.id/info.php/kk=Resolusi. Diakses tanggal, 07 Maret 2009. Indira, M. 2008. ”Perbandingan metode pendeteksi tepi (studi kasus : citra usg janin)”.
Dalam Indira, M, dkk. (eds). Seminar Ilmiah Nasional Komputer dan Sistem Intelijen (KOMMIT 2008): hal. 366-373. Depok: Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma.
Munir, R. 2004. Pengolahan Citra Digital dengan Pendekatan Algoritmik. Bandung:
Informatika.
Sigit, R, et al. 2005. Step by Step Pengolahan Citra Digital. Yogyakarta : CV Andi Offset.
Sugiharto, A. 2006. Pemrograman GUI dengan MATLAB. Yogyakarta : CV Andi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
91
Lampiran A. Listing Program
Kode Program Figur PendeteksianTepi: function varargout = PendeteksianTepi(varargin) % PENDETEKSIANTEPI M-file for PendeteksianTepi.fig % PENDETEKSIANTEPI, by itself, creates a new PENDETEKSIANTEPI or raises the existing % singleton*. % % H = PENDETEKSIANTEPI returns the handle to a new PENDETEKSIANTEPI or the handle to % the existing singleton*. % % PENDETEKSIANTEPI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in PENDETEKSIANTEPI.M with the given input arguments. % % PENDETEKSIANTEPI('Property','Value',...) creates a new PENDETEKSIANTEPI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before PendeteksianTepi_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to PendeteksianTepi_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help PendeteksianTepi % Last Modified by GUIDE v2.5 23-Oct-2009 08:05:58 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @PendeteksianTepi_OpeningFcn, ... 'gui_OutputFcn', @PendeteksianTepi_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
92
% End initialization code - DO NOT EDIT % --- Executes just before PendeteksianTepi is made visible. function PendeteksianTepi_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to PendeteksianTepi (see VARARGIN) % Choose default command line output for PendeteksianTepi handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes PendeteksianTepi wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = PendeteksianTepi_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % ------------------------------------------------------------------- function metode_Callback(hObject, eventdata, handles) % hObject handle to metode (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ------------------------------------------------------------------- function info_Callback(hObject, eventdata, handles) % hObject handle to info (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ------------------------------------------------------------------- function programmer_Callback(hObject, eventdata, handles) % hObject handle to programmer (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) fig4=openfig('InfoProgrammer.fig'); handles=guihandles(fig4); guidata(fig4,handles); axes(handles.axes4); imshow('fotoQu.JPG');
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
93
% ------------------------------------------------------------------- function program_Callback(hObject, eventdata, handles) % hObject handle to program (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) fig5=openfig('InfoProgram.fig'); handles=guihandles(fig5); guidata(fig5,handles); % ------------------------------------------------------------------- function metode_sobel_Callback(hObject, eventdata, handles) % hObject handle to metode_sobel (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) fig1=openfig('MetodeSobel.fig'); handles=guihandles(fig1); guidata(fig1,handles); % ------------------------------------------------------------------- function metode_log_Callback(hObject, eventdata, handles) % hObject handle to metode_log (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) fig2=openfig('MetodeLoG.fig'); handles=guihandles(fig2); guidata(fig2,handles); % ------------------------------------------------------------------- function metode_canny_Callback(hObject, eventdata, handles) % hObject handle to metode_canny (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) fig3=openfig('MetodeCanny.fig'); handles=guihandles(fig3); guidata(fig3,handles); % ------------------------------------------------------------------- function keluar_Callback(hObject, eventdata, handles) % hObject handle to keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg(['Keluar ' get(handles.figure1,'Name') '?'],... ['Keluar ' get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
94
Kode Program Figur MetodeSobel: function varargout = MetodeSobel(varargin) % METODESOBEL M-file for MetodeSobel.fig % METODESOBEL, by itself, creates a new METODESOBEL or raises the existing % singleton*. % % H = METODESOBEL returns the handle to a new METODESOBEL or the handle to % the existing singleton*. % % METODESOBEL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in METODESOBEL.M with the given input arguments. % % METODESOBEL('Property','Value',...) creates a new METODESOBEL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before MetodeSobel_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to MetodeSobel_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to keluar MetodeSobel % Last Modified by GUIDE v2.5 18-Nov-2009 01:46:10 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @MetodeSobel_OpeningFcn, ... 'gui_OutputFcn', @MetodeSobel_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before MetodeSobel is made visible. function MetodeSobel_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
95
% hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to MetodeSobel (see VARARGIN) % Choose default command line output for MetodeSobel handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes MetodeSobel wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = MetodeSobel_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; function edit_tr_Callback(hObject, eventdata, handles) % hObject handle to edit_tr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit_tr as text % str2double(get(hObject,'String')) returns contents of edit_tr as a double % --- Executes during object creation, after setting all properties. function edit_tr_CreateFcn(hObject, eventdata, handles) % hObject handle to edit_tr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit_sr_Callback(hObject, eventdata, handles) % hObject handle to edit_sr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit_sr as text % str2double(get(hObject,'String')) returns contents of edit_sr as a double
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
96
% --- Executes during object creation, after setting all properties. function edit_sr_CreateFcn(hObject, eventdata, handles) % hObject handle to edit_sr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % ------------------------------------------------------------------- function file_Callback(hObject, eventdata, handles) % hObject handle to file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ------------------------------------------------------------------- function keluar_Callback(hObject, eventdata, handles) % hObject handle to keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg(['Keluar dari ' get(handles.figure1,'Name') '?'],... ['Keluar dari ' get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1) % ------------------------------------------------------------------- function file_buka_Callback(hObject, eventdata, handles) % hObject handle to file_buka (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [nama_file1, nama_path1]=uigetfile(... {'*.bmp;*.jpg','File Citra(*.bmp,*.jpg)'; '*.bmp','File Bitmap (*.bmp)';... '*.jpg','File jpeg (*.jpg)'; '*.*','Semua File (*.*)'},... 'Buka File Citra Host/Asli'); if ~isequal(nama_file1, 0) handles.data1=imread(fullfile(nama_path1,nama_file1)); guidata(hObject,handles); axes(handles.axes1); imshow(handles.data1); else return; end set(handles.text_nama,'String',nama_file1); set(handles.text_uk2,'String',size(handles.data1,1)); set(handles.text_uk1,'String',size(handles.data1,2));
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
97
% ------------------------------------------------------------------- function file_proses_Callback(hObject, eventdata, handles) % hObject handle to file_proses (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ------------------------------------------------------------------- function sobel_deteksi_Callback(hObject, eventdata, handles) % hObject handle to sobel_deteksi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) I = double(rgb2gray(handles.data1)); [xlen ylen] = size(I); edgeX = zeros(xlen,ylen); edgeY = zeros(xlen,ylen); edgeXY = zeros(xlen,ylen); H1 = [-1 0 1;-2 0 2;-1 0 1]; H2 = [-1 -2 -1;0 0 0;1 2 1]; for i = 1:xlen for j = 1:ylen for m = 1:3 for n = 1:3 updateX = i-m+2; updateY = j-n+2; if ((updateX>=1) && (updateX<=xlen) && (updateY>=1) && (updateY<=ylen)) edgeX(i,j) = edgeX(i,j) + H1(m,n)*I(updateX,updateY); edgeY(i,j) = edgeY(i,j) + H2(m,n)*I(updateX,updateY); end end end end end edgeX = abs(edgeX); edgeY = abs(edgeY); edgeXY = edgeX.*edgeX + edgeY.*edgeY; threshold = 8.0*sum(sum(edgeXY(2:xlen-1,2:ylen-1)))/((xlen-2)*(ylen-2)); for i = 2:xlen-1 for j = 2:ylen-1 if (edgeXY(i,j)>threshold) edgeimage(i,j) = 1; else edgeimage(i,j) = 0; end end end edgeimage = mat2gray(edgeimage); axes(handles.axes2); imshow(edgeimage); % ------------------------------------------------------------------- function sobel_tr_Callback(hObject, eventdata, handles) % hObject handle to sobel_tr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
98
tic I = double(rgb2gray(handles.data1)); [xlen ylen] = size(I); edgeX = zeros(xlen,ylen); edgeY = zeros(xlen,ylen); edgeXY = zeros(xlen,ylen); H1 = [-1 0 1;-2 0 2;-1 0 1]; H2 = [-1 -2 -1;0 0 0;1 2 1]; for i = 1:xlen for j = 1:ylen for m = 1:3 for n = 1:3 updateX = i-m+2; updateY = j-n+2; if ((updateX>=1) && (updateX<=xlen) && (updateY>=1) && (updateY<=ylen)) edgeX(i,j) = edgeX(i,j) + H1(m,n)*I(updateX,updateY); edgeY(i,j) = edgeY(i,j) + H2(m,n)*I(updateX,updateY); end end end end end edgeX = abs(edgeX); edgeY = abs(edgeY); edgeXY = edgeX.*edgeX + edgeY.*edgeY; threshold = 8.0*sum(sum(edgeXY(2:xlen-1,2:ylen-1)))/((xlen-2)*(ylen-2)); for i = 2:xlen-1 for j = 2:ylen-1 if (edgeXY(i,j)>threshold) edgeimage(i,j) = 1; else edgeimage(i,j) = 0; end end end edgeimage = mat2gray(edgeimage); axes(handles.axes2); imshow(edgeimage); t = toc; set(handles.edit_tr,'string',t); % ------------------------------------------------------------------- function sobel_sr_Callback(hObject, eventdata, handles) % hObject handle to sobel_sr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %perhitungan error rate untuk edge detector Sobel I = double(rgb2gray(handles.data1)); [xlen ylen] = size(I); edgeX = zeros(xlen,ylen); edgeY = zeros(xlen,ylen); edgeXY = zeros(xlen,ylen); H1 = [-1 0 1;-2 0 2;-1 0 1]; H2 = [-1 -2 -1;0 0 0;1 2 1]; for i = 1:xlen
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
99
for j = 1:ylen for m = 1:3 for n = 1:3 updateX = i-m+2; updateY = j-n+2; if ((updateX>=1) && (updateX<=xlen) && (updateY>=1) && (updateY<=ylen)) edgeX(i,j) = edgeX(i,j) + H1(m,n)*I(updateX,updateY); edgeY(i,j) = edgeY(i,j) + H2(m,n)*I(updateX,updateY); end end end end end edgeX = abs(edgeX); edgeY = abs(edgeY); edgeXY = edgeX.*edgeX + edgeY.*edgeY; threshold = 8.0*sum(sum(edgeXY(2:xlen-1,2:ylen-1)))/((xlen-2)*(ylen-2)); for i = 2:xlen-1 for j = 2:ylen-1 if (edgeXY(i,j)>threshold) edgeimage(i,j) = 1; else edgeimage(i,j) = 0; end end end edgeimage = mat2gray(edgeimage); axes(handles.axes2); imshow(edgeimage); In = imnoise(I,'salt & pepper',0.02); Jn = edge(In,'sobel'); nr = sum(sum(edgeimage)); nn = sum(sum(Jn)); P = abs(nn-nr)/nr set(handles.edit_sr,'String', P);
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
100
Kode Program Figur MetodeLoG: function varargout = MetodeLoG(varargin) % METODELOG M-file for MetodeLoG.fig % METODELOG, by itself, creates a new METODELOG or raises the existing % singleton*. % % H = METODELOG returns the handle to a new METODELOG or the handle to % the existing singleton*. % % METODELOG('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in METODELOG.M with the given input arguments. % % METODELOG('Property','Value',...) creates a new METODELOG or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before MetodeLoG_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to MetodeLoG_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to keluar MetodeLoG % Last Modified by GUIDE v2.5 27-Oct-2009 19:52:58 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @MetodeLoG_OpeningFcn, ... 'gui_OutputFcn', @MetodeLoG_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before MetodeLoG is made visible. function MetodeLoG_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
101
% hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to MetodeLoG (see VARARGIN) % Choose default command line output for MetodeLoG handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes MetodeLoG wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = MetodeLoG_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % ------------------------------------------------------------------- function file_Callback(hObject, eventdata, handles) % hObject handle to file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ------------------------------------------------------------------- function keluar_Callback(hObject, eventdata, handles) % hObject handle to keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg(['Keluar dari ' get(handles.figure1,'Name') '?'],... ['Keluar dari ' get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1) % ------------------------------------------------------------------- function file_buka_Callback(hObject, eventdata, handles) % hObject handle to file_buka (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [nama_file1, nama_path1]=uigetfile(... {'*.bmp;*.jpg','File Citra(*.bmp,*.jpg)'; '*.bmp','File Bitmap (*.bmp)';... '*.jpg','File jpeg (*.jpg)'; '*.*','Semua File (*.*)'},... 'Buka File Citra Host/Asli'); if ~isequal(nama_file1, 0) handles.data1=imread(fullfile(nama_path1,nama_file1));
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
102
guidata(hObject,handles); handles.current_data1=handles.data1; axes(handles.axes1); imshow(handles.current_data1); else return; end set(handles.text4,'String',nama_file1); set(handles.text6,'String',size(handles.data1,1)); set(handles.text5,'String',size(handles.data1,2)); % ------------------------------------------------------------------- function file_proses_Callback(hObject, eventdata, handles) % hObject handle to file_proses (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Function "d2dgauss.m": % This function returns a 2D edge detector (first order derivative % of 2D Gaussian function) with size n1*n2; theta is the angle that % the detector rotated counter clockwise; and sigma1 and sigma2 are the % standard deviation of the gaussian functions. function h = d2dgauss(n1,sigma1,n2,sigma2,theta) r=[cos(theta) -sin(theta); sin(theta) cos(theta)]; for i = 1 : n2 for j = 1 : n1 u = r * [j-(n1+1)/2 i-(n2+1)/2]'; h(i,j) = gauss(u(1),sigma1)*dgauss(u(2),sigma2); end end h = h / sqrt(sum(sum(abs(h).*abs(h)))); % Function "gauss.m": function y = gauss(x,std) y = exp(-x^2/(2*std^2)) / (std*sqrt(2*pi)); % Function "dgauss.m"(first order derivative of gauss function): function y = dgauss(x,std) y = -x * gauss(x,std) / std^2; % ------------------------------------------------------------------- function log_deteksi_Callback(hObject, eventdata, handles) % hObject handle to log_deteksi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % The algorithm parameters: % 1. Parameters of edge detecting filters: % X-axis direction filter: Nx1=7;Sigmax1=0.5;Nx2=7;Sigmax2=0.5;Theta1=pi/2; % Y-axis direction filter: Ny1=7;Sigmay1=0.5;Ny2=7;Sigmay2=0.5;Theta2=0; % 2. Thresholdong value alfa = 0.23; I = double(rgb2gray(handles.data1));
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
103
% X-axis direction edge detection filterx=d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix= conv2(I,filterx,'same'); % Y-axis direction edge detection filtery=d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy=conv2(I,filtery,'same'); % Norm of the gradient (Combining the X and Y directional derivatives) NVI=sqrt(Ix.*Ix+Iy.*Iy); % Convolve with laplacian mask H=[0 1 0,1 -4 1,0 1 0]; J=conv2(NVI,H,'same'); % Find the zerocross with thresh value thresh =.2*mean2(abs(J)); edgeimage = edge(J,'zerocross',thresh); axes(handles.axes4); imshow(edgeimage); % ------------------------------------------------------------------- function log_tr_Callback(hObject, eventdata, handles) % hObject handle to log_tr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) tic % The algorithm parameters: % 1. Parameters of edge detecting filters: % X-axis direction filter: Nx1=7;Sigmax1=0.5;Nx2=7;Sigmax2=0.5;Theta1=pi/2; % Y-axis direction filter: Ny1=7;Sigmay1=0.5;Ny2=7;Sigmay2=0.5;Theta2=0; % 2. Thresholdong value alfa = 0.23; I = double(rgb2gray(handles.data1)); % X-axis direction edge detection filterx=d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix= conv2(I,filterx,'same'); % Y-axis direction edge detection filtery=d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy=conv2(I,filtery,'same'); % Norm of the gradient (Combining the X and Y directional derivatives) NVI=sqrt(Ix.*Ix+Iy.*Iy); % Convolve with laplacian mask H=[0 1 0,1 -4 1,0 1 0]; J=conv2(NVI,H,'same'); % Find the zerocross with thresh value thresh =.2*mean2(abs(J)); edgeimage = edge(J,'zerocross',thresh); axes(handles.axes4); imshow(edgeimage);
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
104
t = toc; set(handles.edit5,'string',t); % ------------------------------------------------------------------- function log_sr_Callback(hObject, eventdata, handles) % hObject handle to log_sr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % The algorithm parameters: % 1. Parameters of edge detecting filters: % X-axis direction filter: Nx1=7;Sigmax1=0.5;Nx2=7;Sigmax2=0.5;Theta1=pi/2; % Y-axis direction filter: Ny1=7;Sigmay1=0.5;Ny2=7;Sigmay2=0.5;Theta2=0; % 2. Thresholdong value alfa = 0.23; I = double(rgb2gray(handles.data1)); % X-axis direction edge detection filterx=d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix= conv2(I,filterx,'same'); % Y-axis direction edge detection filtery=d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy=conv2(I,filtery,'same'); % Norm of the gradient (Combining the X and Y directional derivatives) NVI=sqrt(Ix.*Ix+Iy.*Iy); % Convolve with laplacian mask H=[0 1 0,1 -4 1,0 1 0]; J=conv2(NVI,H,'same'); % Find the zerocross with thresh value thresh =.2*mean2(abs(J)); edgeimage = edge(J,'zerocross',thresh); axes(handles.axes4); imshow(edgeimage); In = imnoise(I,'salt & pepper',0.02); Jn = edge(In,'sobel'); nr = sum(sum(edgeimage)); nn = sum(sum(Jn)); P = abs(nn-nr)/nr set(handles.edit6,'String', P); function edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
105
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. function edit6_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
106
Kode Program Figur MetodeCanny: function varargout = MetodeCanny(varargin) % METODECANNY M-file for MetodeCanny.fig % METODECANNY, by itself, creates a new METODECANNY or raises the existing % singleton*. % % H = METODECANNY returns the handle to a new METODECANNY or the handle to % the existing singleton*. % % METODECANNY('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in METODECANNY.M with the given input arguments. % % METODECANNY('Property','Value',...) creates a new METODECANNY or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before MetodeCanny_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to MetodeCanny_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to keluar MetodeCanny % Last Modified by GUIDE v2.5 27-Oct-2009 19:56:07 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @MetodeCanny_OpeningFcn, ... 'gui_OutputFcn', @MetodeCanny_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before MetodeCanny is made visible. function MetodeCanny_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
107
% hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to MetodeCanny (see VARARGIN) % Choose default command line output for MetodeCanny handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes MetodeCanny wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = MetodeCanny_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % ------------------------------------------------------------------- function file_Callback(hObject, eventdata, handles) % hObject handle to file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ------------------------------------------------------------------- function keluar_Callback(hObject, eventdata, handles) % hObject handle to keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg(['Keluar dari ' get(handles.figure1,'Name') '?'],... ['Keluar dari ' get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1) % ------------------------------------------------------------------- function file_buka_Callback(hObject, eventdata, handles) % hObject handle to file_buka (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [nama_file1, nama_path1]=uigetfile(... {'*.bmp;*.jpg','File Citra(*.bmp,*.jpg)'; '*.bmp','File Bitmap (*.bmp)';... '*.jpg','File jpeg (*.jpg)'; '*.*','Semua File (*.*)'},... 'Buka File Citra Host/Asli'); if ~isequal(nama_file1, 0)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
108
handles.data1=imread(fullfile(nama_path1,nama_file1)); guidata(hObject,handles); handles.current_data1=handles.data1; axes(handles.axes1); imshow(handles.current_data1); else return; end set(handles.text4,'String',nama_file1); set(handles.text6,'String',size(handles.data1,1)); set(handles.text5,'String',size(handles.data1,2)); % ------------------------------------------------------------------- function file_proses_Callback(hObject, eventdata, handles) % hObject handle to file_proses (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %%%%%%% The functions used in the main.m file %%%%%%% % Function "d2dgauss.m": % This function returns a 2D edge detector (first order derivative % of 2D Gaussian function) with size n1*n2; theta is the angle that % the detector rotated counter clockwise; and sigma1 and sigma2 are the % standard deviation of the gaussian functions. function h = d2dgauss(n1,sigma1,n2,sigma2,theta) r=[cos(theta) -sin(theta); sin(theta) cos(theta)]; for i = 1 : n2 for j = 1 : n1 u = r * [j-(n1+1)/2 i-(n2+1)/2]'; h(i,j) = gauss(u(1),sigma1)*dgauss(u(2),sigma2); end end h = h / sqrt(sum(sum(abs(h).*abs(h)))); % Function "gauss.m": function y = gauss(x,std) y = exp(-x^2/(2*std^2)) / (std*sqrt(2*pi)); % Function "dgauss.m"(first order derivative of gauss function): function y = dgauss(x,std) y = -x * gauss(x,std) / std^2; %%%%%%%%%%%%%% end of the functions %%%%%%%%%%%%% % ------------------------------------------------------------------- function canny_deteksi_Callback(hObject, eventdata, handles) % hObject handle to canny_deteksi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % The algorithm parameters: % 1. Parameters of edge detecting filters: % X-axis direction filter: Nx1=70;Sigmax1=7.0;Nx2=70;Sigmax2=7$.0;Theta1=pi/2; % Y-axis direction filter: Ny1=70;Sigmay1=7.0;Ny2=70;Sigmay2=7.0;Theta2=0; % 2. The thresholding parameter alfa: alfa=0.07; I = double(rgb2gray(handles.data1));
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
109
% X-axis direction edge detection filterx=d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix= conv2(I,filterx,'same'); % Y-axis direction edge detection filtery=d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy=conv2(I,filtery,'same'); % Norm of the gradient (Combining the X and Y directional derivatives) NVI=sqrt(Ix.*Ix+Iy.*Iy); % Thresholding I_max=max(max(NVI)); I_min=min(min(NVI)); level=alfa*(I_max-I_min)+I_min; Ibw=max(NVI,level.*ones(size(NVI))); % Thinning (Using interpolation to find the pixels where the norms of % gradient are local maximum.) [n,m]=size(Ibw); for i=2:n-1, for j=2:m-1, if Ibw(i,j) > level, X=[-1,0,+1;-1,0,+1;-1,0,+1]; Y=[-1,-1,-1;0,0,0;+1,+1,+1]; Z=[Ibw(i-1,j-1),Ibw(i-1,j),Ibw(i-1,j+1); Ibw(i,j-1),Ibw(i,j),Ibw(i,j+1); Ibw(i+1,j-1),Ibw(i+1,j),Ibw(i+1,j+1)]; XI=[Ix(i,j)/NVI(i,j), -Ix(i,j)/NVI(i,j)]; YI=[Iy(i,j)/NVI(i,j), -Iy(i,j)/NVI(i,j)]; ZI=interp2(X,Y,Z,XI,YI); if Ibw(i,j) >= ZI(1) & Ibw(i,j) >= ZI(2) edgeimage(i,j)=I_max; else edgeimage(i,j)=I_min; end else edgeimage(i,j)=I_min; end end end axes(handles.axes3); imshow(edgeimage); % ------------------------------------------------------------------- function canny_tr_Callback(hObject, eventdata, handles) % hObject handle to canny_tr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) tic % The algorithm parameters: % 1. Parameters of edge detecting filters: % X-axis direction filter: Nx1=70;Sigmax1=7.0;Nx2=70;Sigmax2=7.0;Theta1=pi/2; % Y-axis direction filter: Ny1=70;Sigmay1=7.0;Ny2=70;Sigmay2=7.0;Theta2=0; % 2. The thresholding parameter alfa: alfa=0.07;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
110
I = double(rgb2gray(handles.data1)); % X-axis direction edge detection filterx=d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix= conv2(I,filterx,'same'); % Y-axis direction edge detection filtery=d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy=conv2(I,filtery,'same'); % Norm of the gradient (Combining the X and Y directional derivatives) NVI=sqrt(Ix.*Ix+Iy.*Iy); % Thresholding I_max=max(max(NVI)); I_min=min(min(NVI)); level=alfa*(I_max-I_min)+I_min; Ibw=max(NVI,level.*ones(size(NVI))); % Thinning (Using interpolation to find the pixels where the norms of % gradient are local maximum.) [n,m]=size(Ibw); for i=2:n-1, for j=2:m-1, if Ibw(i,j) > level, X=[-1,0,+1;-1,0,+1;-1,0,+1]; Y=[-1,-1,-1;0,0,0;+1,+1,+1]; Z=[Ibw(i-1,j-1),Ibw(i-1,j),Ibw(i-1,j+1); Ibw(i,j-1),Ibw(i,j),Ibw(i,j+1); Ibw(i+1,j-1),Ibw(i+1,j),Ibw(i+1,j+1)]; XI=[Ix(i,j)/NVI(i,j), -Ix(i,j)/NVI(i,j)]; YI=[Iy(i,j)/NVI(i,j), -Iy(i,j)/NVI(i,j)]; ZI=interp2(X,Y,Z,XI,YI); if Ibw(i,j) >= ZI(1) & Ibw(i,j) >= ZI(2) edgeimage(i,j)=I_max; else edgeimage(i,j)=I_min; end else J(i,j)=I_min; end end end axes(handles.axes3); imshow(edgeimage); t = toc; set(handles.edit5,'string',t); % ------------------------------------------------------------------- function canny_sr_Callback(hObject, eventdata, handles) % hObject handle to canny_sr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % The algorithm parameters: % 1. Parameters of edge detecting filters: % X-axis direction filter: Nx1=70;Sigmax1=7.0;Nx2=70;Sigmax2=7.0;Theta1=pi/2; % Y-axis direction filter:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
111
Ny1=70;Sigmay1=7.0;Ny2=70;Sigmay2=7.0;Theta2=0; % 2. The thresholding parameter alfa: alfa=0.07; I = double(rgb2gray(handles.data1)); % X-axis direction edge detection filterx=d2dgauss(Nx1,Sigmax1,Nx2,Sigmax2,Theta1); Ix= conv2(I,filterx,'same'); % Y-axis direction edge detection filtery=d2dgauss(Ny1,Sigmay1,Ny2,Sigmay2,Theta2); Iy=conv2(I,filtery,'same'); % Norm of the gradient (Combining the X and Y directional derivatives) NVI=sqrt(Ix.*Ix+Iy.*Iy); % Thresholding I_max=max(max(NVI)); I_min=min(min(NVI)); level=alfa*(I_max-I_min)+I_min; Ibw=max(NVI,level.*ones(size(NVI))); % Thinning (Using interpolation to find the pixels where the norms of % gradient are local maximum.) [n,m]=size(Ibw); for i=2:n-1, for j=2:m-1, if Ibw(i,j) > level, X=[-1,0,+1;-1,0,+1;-1,0,+1]; Y=[-1,-1,-1;0,0,0;+1,+1,+1]; Z=[Ibw(i-1,j-1),Ibw(i-1,j),Ibw(i-1,j+1); Ibw(i,j-1),Ibw(i,j),Ibw(i,j+1); Ibw(i+1,j-1),Ibw(i+1,j),Ibw(i+1,j+1)]; XI=[Ix(i,j)/NVI(i,j), -Ix(i,j)/NVI(i,j)]; YI=[Iy(i,j)/NVI(i,j), -Iy(i,j)/NVI(i,j)]; ZI=interp2(X,Y,Z,XI,YI); if Ibw(i,j) >= ZI(1) & Ibw(i,j) >= ZI(2) edgeimage(i,j)=I_max; else edgeimage(i,j)=I_min; end else edgeimage(i,j)=I_min; end end end axes(handles.axes3); imshow(edgeimage); In = imnoise(I,'salt & pepper',0.02); Jn = edge(In,'sobel'); nr = sum(sum(edgeimage)); nn = sum(sum(Jn)); P = abs(nn-nr)/nr set(handles.edit6,'String', P);
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
112
function edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. function edit6_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
113
Kode Program Figur InfoProgrammer: function varargout = InfoProgrammer(varargin) % INFOPROGRAMMER M-file for InfoProgrammer.fig % INFOPROGRAMMER, by itself, creates a new INFOPROGRAMMER or raises the existing % singleton*. % % H = INFOPROGRAMMER returns the handle to a new INFOPROGRAMMER or the handle to % the existing singleton*. % % INFOPROGRAMMER('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in INFOPROGRAMMER.M with the given input arguments. % % INFOPROGRAMMER('Property','Value',...) creates a new INFOPROGRAMMER or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before InfoProgrammer_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to InfoProgrammer_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help InfoProgrammer % Last Modified by GUIDE v2.5 23-Oct-2009 13:08:08 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @InfoProgrammer_OpeningFcn, ... 'gui_OutputFcn', @InfoProgrammer_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before InfoProgrammer is made visible. function InfoProgrammer_OpeningFcn(hObject, eventdata, handles, varargin)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
114
% This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to InfoProgrammer (see VARARGIN) % Choose default command line output for InfoProgrammer handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes InfoProgrammer wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = InfoProgrammer_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; axes(handles.axes4); imshow('fotoQu.JPG'); % --- Executes on button press in btn_keluar. function btn_keluar_Callback(hObject, eventdata, handles) % hObject handle to btn_keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg(['Keluar ' get(handles.figure1,'Name') '?'],... ['Keluar ' get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
115
Kode Program Figur InfoProgram: function varargout = InfoProgram(varargin) % INFOPROGRAM M-file for InfoProgram.fig % INFOPROGRAM, by itself, creates a new INFOPROGRAM or raises the existing % singleton*. % % H = INFOPROGRAM returns the handle to a new INFOPROGRAM or the handle to % the existing singleton*. % % INFOPROGRAM('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in INFOPROGRAM.M with the given input arguments. % % INFOPROGRAM('Property','Value',...) creates a new INFOPROGRAM or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before InfoProgram_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to InfoProgram_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help InfoProgram % Last Modified by GUIDE v2.5 23-Oct-2009 13:07:16 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @InfoProgram_OpeningFcn, ... 'gui_OutputFcn', @InfoProgram_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before InfoProgram is made visible. function InfoProgram_OpeningFcn(hObject, eventdata, handles, varargin)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
116
% This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to InfoProgram (see VARARGIN) % Choose default command line output for InfoProgram handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes InfoProgram wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = InfoProgram_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; fprintf('Aplikasi Pendeteksi Tepi merupakan'); % --- Executes on button press in btn_keluar. function btn_keluar_Callback(hObject, eventdata, handles) % hObject handle to btn_keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) selection = questdlg(['Keluar ' get(handles.figure1,'Name') '?'],... ['Keluar ' get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
118
{ Public declarations } end; var FMenutama: TFMenutama; implementation uses URegister, ULaporan, UUpdate, UPetunjuk, UTentang, ULogin, UTambahPertanyaan; {$R *.dfm} procedure TFmenutama.default; begin n:=0; end; procedure TFMenutama.Timer1Timer(Sender: TObject); begin n:=n+1; if n=1 then lblNama.Caption:='Selamat Datang'; if n=2 then lblNama.Caption:=''; if n=3 then n:=0; end; procedure TFMenutama.BDiagnosisClick(Sender: TObject); begin FRegister.EdtNama.Text := ''; FRegister.DTP1.Date := Now; FRegister.Memo1.Clear; FMenutama.Hide; FRegister.show; end; procedure TFMenutama.BLaporanClick(Sender: TObject); begin FLaporan.show; end; procedure TFMenutama.BUpdateClick(Sender: TObject); begin FTambahPertanyaan.query1.Close; FTambahPertanyaan.query1.SQL.Clear; FTambahPertanyaan.query1.SQL.add('Select * from jawaban '); //query1.ExecSQL; FTambahPertanyaan.query1.Open;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
119
FTambahPertanyaan.query1.First; FTambahPertanyaan.CheckListBox1.Items.Clear; while not FTambahPertanyaan.query1.Eof do begin FTambahPertanyaan.checklistbox1.Items.Add(FTambahPertanyaan.query1.FieldValues['kodejawaban']); FTambahPertanyaan.query1.Next; end; FTambahPertanyaan.query1.Close; FTambahPertanyaan.query1.SQL.Clear; FTambahPertanyaan.query1.SQL.add('Select * from pertanyaan order by kodepertanyaan '); //query1.ExecSQL; FTambahPertanyaan.query1.Open; FTambahPertanyaan.query1.First; FTambahPertanyaan.cb1.Items.Clear; while not FTambahPertanyaan.query1.Eof do begin FTambahPertanyaan.cb1.Items.Add(FTambahPertanyaan.query1.FieldValues['kodepertanyaan']); FTambahPertanyaan.query1.Next; end; FLogin.show; end; procedure TFMenutama.BPetunjukClick(Sender: TObject); begin FPetunjuk.showmodal; end; procedure TFMenutama.BTentangClick(Sender: TObject); begin FTentang.showmodal; end; procedure TFMenutama.BKeluarClick(Sender: TObject); begin application.Terminate; end; end.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
120
Kode program form menu diagnosis: unit UDiagnosis; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons, DB, mySQLDbTables,comctrls, ZConnection, ZAbstractRODataset, ZAbstractDataset, ZDataset; type TFDiagnosis = class(TForm) Image1: TImage; lblPertanyaan: TLabel; radioGroup1: TRadioGroup; BKembali: TBitBtn; BLanjut: TBitBtn; query1: TmySQLQuery; Memo1: TMemo; basispengetahuan: TmySQLDatabase; Label1: TLabel; DataSource1: TDataSource; Query2: TmySQLQuery; ZC1: TZConnection; ZQuery1: TZQuery; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; Button1: TBitBtn; procedure BKembaliClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure queryTanya(kode:string); procedure updateJawaban(kode:string); function ambilJawaban(kode:string):string; function ambilPertanyaan(kode:string):string; function ambilObat(kode:string):string; procedure tampilTanya; procedure tampilkanHasil(kode:string); procedure FormCreate(Sender: TObject);
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
121
procedure FormActivate(Sender: TObject); procedure BLanjutClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } data,nilai,jawaban,jawabanYa,jawabanTidak,daftarTanya,daftarJawaban:TStringList; jawabanAwal:TStringList; kodeAwal:string; end; var FDiagnosis: TFDiagnosis; implementation uses UMenutama, UHasilDiagnosis, DataModule, URegister; {$R *.dfm} procedure TFDiagnosis.BKembaliClick(Sender: TObject); begin FDiagnosis.Close; FMenutama.show; end; procedure TFDiagnosis.FormClose(Sender: TObject; var Action: TCloseAction); begin FMenutama.Show; end; function TFDiagnosis.ambilJawaban(kode:string):string; begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban where kodejawaban='+QuotedStr(kode)); //query1.ExecSQL; query1.Open; result:= query1.FieldByName('penyakit').AsString; end; function TFDiagnosis.ambilObat(kode:string):string; begin query1.Close; query1.SQL.Clear;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
122
query1.SQL.add('Select * from jawaban where kodejawaban='+QuotedStr(kode)); //query1.ExecSQL; query1.Open; result:= query1.FieldByName('pengobatan').AsString; end; function TFDiagnosis.ambilPertanyaan(kode:string):string; begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan where kodepertanyaan='+QuotedStr(kode)); //query1.ExecSQL; query1.Open; result:= query1.FieldByName('pertanyaan').AsString; end; procedure TFDiagnosis.tampilTanya; var i:integer; listTanya:TListItem; begin for i:= 0 to daftarTanya.Count-1 do begin listTanya:=FHasilDiagnosis.ListView1.Items.Add; ambilPertanyaan(daftarTanya.Strings[i]); listTanya.Caption:=ambilPertanyaan(daftarTanya.Strings[i]); listTanya.SubItems.Add(daftarJawaban.Strings[i]); end; end; procedure TFDiagnosis.tampilkanHasil(kode:string); begin FHasilDiagnosis.edTanggal.Text:=dateToStr(FRegister.DTP1.DateTime); FHasilDiagnosis.Label3.Caption:=FRegister.Memo1.Text; FHasilDiagnosis.LblPenyakit.Caption:=ambilJawaban(jawaban.Strings[0]); FHasilDiagnosis.Memo1.Lines.Add(ambilObat(jawaban.Strings[0])); tampilTanya; end; procedure TFDiagnosis.queryTanya(kode:string); var tanya:string; begin
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
123
memo1.Lines.Clear; // membuat query untuk mencari pertanyaan yg hrs ditampilkan query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan where kodepertanyaan='+QuotedStr(kode)); //query1.ExecSQL; query1.Open; tanya:= query1.FieldByName('pertanyaan').AsString; memo1.Lines.Add(tanya); daftarTanya.Add(kode); radiogroup1.ItemIndex:=-1; end; procedure TFDiagnosis.updateJawaban(kode:string); var i,j:integer; ada:boolean; begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from relasi where kodepertanyaan='+QuotedStr(kode)); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin jawabanYa.Add(query1.FieldValues['kodejawaban']); query1.Next; end; for i:=0 to jawaban.Count-1 do begin ada:=false; for j:=0 to jawabanYa.Count-1 do begin if jawaban.Strings[i] = jawabanYa.Strings[j] then begin ada:=true; break; end; end; if not ada then jawabanTidak.Add(jawaban.Strings[i]); end; end; procedure TFDiagnosis.BLanjutClick(Sender: TObject); var kode:string; k,i,j,max,muncul:integer; sama:boolean; begin if radioGroup1.ItemIndex=-1 then
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
124
begin MessageBox(handle,'Anda belum memilih','Data anda kurang lengkap',MB_OK); exit; end; max:=0; //jika ya if radioGroup1.ItemIndex=0 then begin //update data jawaban,jawabanYa,jawabanTidak jawaban.Clear; daftarJawaban.Add('Ya'); for i:=0 to JawabanYa.Count -1 do jawaban.Add(jawabanYa.Strings[i]); jawabanYa.Clear; jawabanTidak.Clear; //mencari kode tanya yg plng sering muncul for i:=0 to data.Count-1 do begin sama:=false; for j:=0 to daftarTanya.Count-1 do begin if daftarTanya.Strings[j] = data.Strings[i] then begin sama:=true; break; end; end; if not sama then begin //periksa apakah pertanyaan ada pada jawaban Ya query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from relasi where kodepertanyaan='+QuotedStr(data.Strings[i])); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin if jawaban.Find(query1.FieldByName('kodejawaban').AsString,k) then begin muncul:=strtoint(nilai.Strings[i]); if muncul > max then begin max:=muncul; kode:=data.Strings[i]; end; end; query1.Next; end;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
125
//query1.Database.Close; end; end; //jawaban tlh ditemukan if max=0 then begin if jawaban.Count > 0 then begin tampilkanHasil(jawaban.Strings[0]); end else begin FHasilDiagnosis.LblPenyakit.Caption:='Maaf, program ini tidak dapat menemukan jawaban'; FHasilDiagnosis.Memo1.Lines.Add('Silahkan langsung berkonsultasi dengan pakarnya'); tampilTanya; end; FDiagnosis.Close; FHasilDiagnosis.Show; end //jawaban blm ditemukan else begin queryTanya(kode); updateJawaban(kode); end; end //jika tidak else begin //update data jawaban,jawabanYa,jawabanTidak jawaban.Clear; daftarJawaban.Add('Tidak'); for i:=0 to jawabanTidak.Count -1 do jawaban.Add(jawabanTidak.Strings[i]); jawabanYa.Clear; jawabanTidak.Clear; //cari kode tanya yg plng sering muncul for i:=0 to data.Count-1 do begin sama:=false; for j:=0 to daftarTanya.Count-1 do begin if daftarTanya.Strings[j] = data.Strings[i] then begin sama:=true; break; end; end; if not sama then begin
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
126
//periksa apakah pertanyaan ada pada jawaban Tidak query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from relasi where kodepertanyaan='+QuotedStr(data.Strings[i])); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin if jawaban.Find(query1.FieldByName('kodejawaban').AsString,k) then begin muncul:=strtoint(nilai.Strings[i]); if muncul > max then begin max:=muncul; kode:=data.Strings[i]; end; end; query1.Next; end; end; end; //jawaban tlh ditemukan if max=0 then begin if jawaban.Count > 0 then begin tampilkanHasil(jawaban.Strings[0]); end else begin FHasilDiagnosis.LblPenyakit.Caption:='Maaf, program ini tidak dapat menemukan jawaban'; FHasilDiagnosis.Memo1.lines.Add('Silahkan langsung berkonsultasi dengan pakarnya'); tampilTanya; end; FDiagnosis.Close; FHasilDiagnosis.Show; end //jawaban blm ditemukan else begin queryTanya(kode); updateJawaban(kode); end; end; end; procedure TFDiagnosis.FormCreate(Sender: TObject);
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
127
var max,i:integer; s,kode:string; begin memo1.Lines.Clear; data:=TStringList.Create; nilai:=TStringList.Create; jawaban:=TStringList.Create; jawabanYa:=TStringList.Create; jawabanTidak:=TStringList.Create; daftarTanya:=TStringList.Create; daftarJawaban:=TStringList.Create; jawabanAwal:=TStringList.Create; ZC1.Connected; //buka tabel yg diperlukan query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban order by kodejawaban'); //query1.ExecSQL; query1.Open; jawaban.Clear; if query1.RecordCount > 0 then begin query1.First; while not query1.Eof do begin // memo1.Lines.Add(query1.FieldValues['pertanyaan']); jawaban.Add(query1.FieldValues['kodejawaban']); query1.Next; end; end; for i:=0 to jawaban.Count-1 do jawabanAwal.Add(jawaban.Strings[i]); //periksa tbl relasi, cari kode tanya yang plng sering muncul max:=0; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan order by kodepertanyaan'); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin query2.Close; query2.SQL.Clear; s:=query1.FieldValues['kodepertanyaan']; query2.SQL.add('Select * from relasi where KodePertanyaan='+QuotedStr(s)); //query1.ExecSQL; query2.Open;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
128
i:=query2.RecordCount; if i > max then begin max:=i; kode:=s; //memo1.Lines.Add(kode); end; //msk kan kode pertanyaan dan nilai kemunculan ke data dan nilai data.Add(s); nilai.Add(inttostr(i)); query1.Next; end; kodeAwal:=kode; queryTanya(kode); //msk kan kode solusi yg mngkn utk ya dan tdk updateJawaban(kode); //msk kan smua kode jawaban ke stringList jawaban end; procedure TFDiagnosis.FormActivate(Sender: TObject); var i:integer; begin radioGroup1.ItemIndex:=-1; daftarTanya.Clear; daftarJawaban.Clear; jawaban.Clear; jawabanYa.Clear; jawabanTidak.Clear; FHasilDiagnosis.ListView1.Items.Clear; FHasilDiagnosis.Memo1.Lines.Clear; for i:=0 to jawabanAwal.Count-1 do jawaban.Add(jawabanAwal.Strings[i]); queryTanya(kodeAwal); updateJawaban(kodeAwal); end; procedure TFDiagnosis.Button1Click(Sender: TObject); var max,i:integer; s,kode:string; begin memo1.Lines.Clear; data:=TStringList.Create; nilai:=TStringList.Create; jawaban:=TStringList.Create; jawabanYa:=TStringList.Create; jawabanTidak:=TStringList.Create; daftarTanya:=TStringList.Create; daftarJawaban:=TStringList.Create; jawabanAwal:=TStringList.Create;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
129
ZC1.Connected; //buka tabel yg diperlukan query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban order by kodejawaban'); //query1.ExecSQL; query1.Open; jawaban.Clear; if query1.RecordCount > 0 then begin query1.First; while not query1.Eof do begin // memo1.Lines.Add(query1.FieldValues['pertanyaan']); jawaban.Add(query1.FieldValues['kodejawaban']); query1.Next; end; end; for i:=0 to jawaban.Count-1 do jawabanAwal.Add(jawaban.Strings[i]); //periksa tbl relasi, cari kode tanya yang plng sering muncul max:=0; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan order by kodepertanyaan'); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin query2.Close; query2.SQL.Clear; s:=query1.FieldValues['kodepertanyaan']; query2.SQL.add('Select * from relasi where KodePertanyaan='+QuotedStr(s)); //query1.ExecSQL; query2.Open; i:=query2.RecordCount; if i > max then begin max:=i; kode:=s; end; //msk kan kode pertanyaan dan nilai kemunculan ke data dan nilai data.Add(s); memo2.Lines.Add(s); nilai.Add(inttostr(i)); query1.Next; end;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
130
kodeAwal:=kode; queryTanya(kode); //msk kan kode solusi yg mngkn utk ya dan tdk updateJawaban(kode); //msk kan smua kode jawaban ke stringList jawaban end; procedure TFDiagnosis.Button2Click(Sender: TObject); var j : integer; begin memo3.Lines.Clear; for j:=0 to daftarTanya.Count-1 do begin memo3.Lines.Add(daftarTanya.Strings[j]); end; end; end.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
131
Kode program form menu laporan: unit report; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls; type TQuickReport1 = class(TQuickRep) DetailBand1: TQRBand; QRLabel1: TQRLabel; QRLabel4: TQRLabel; QRLabel5: TQRLabel; QRLabel7: TQRLabel; QRDBText1: TQRDBText; QRDBText4: TQRDBText; QRDBText5: TQRDBText; QRDBRichText1: TQRDBRichText; PageHeaderBand1: TQRBand; QRLabel9: TQRLabel; private public end; var QuickReport1: TQuickReport1; implementation uses ULihatData,ULaporan; {$R *.DFM} end.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
132
Kode program form submenu login: unit ULogin; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg; type TFLogin = class(TForm) Label1: TLabel; Label2: TLabel; edUser: TEdit; edPass: TEdit; BOk: TBitBtn; BBatal: TBitBtn; Shape1: TShape; Image1: TImage; procedure BBatalClick(Sender: TObject); procedure BOkClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure edPassKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure edUserKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var FLogin: TFLogin; implementation uses UMenutama, UUpdate; {$R *.dfm}
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
133
procedure TFLogin.BBatalClick(Sender: TObject); begin FLogin.Close; FMenutama.show; end; procedure TFLogin.BOkClick(Sender: TObject); begin if (edUser.Text='morina') and (edPass.Text='annelita') then begin edUser.Text:=''; edPass.Text:=''; FLogin.Hide; FUpdate.show; end else begin edUser.Text:=''; edPass.Text:=''; MessageBox(handle,'Username/Password invalid','login',MB_OK); edUser.SetFocus; end; end; procedure TFlogin.FormClose(Sender: TObject; var Action: TCloseAction); begin FMenutama.Show; end; procedure TFlogin.FormActivate(Sender: TObject); begin edUser.Text:=''; edPass.Text:=''; edUser.SetFocus; end; procedure TFLogin.edPassKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=VK_RETURN then BOk.Click; end; procedure TFLogin.edUserKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=VK_RETURN then EdPass.SetFocus; end;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
134
end. Kode program form menu update: unit UUpdate; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons; type TFUpdate = class(TForm) BTPertanyaan: TBitBtn; BEPertanyaan: TBitBtn; BHPertanyaan: TBitBtn; BTJawaban: TBitBtn; BEJawaban: TBitBtn; BKeluar: TBitBtn; BHJawaban: TBitBtn; Label2: TLabel; Label3: TLabel; Label1: TLabel; Image1: TImage; Image2: TImage; procedure BKeluarClick(Sender: TObject); procedure BTPertanyaanClick(Sender: TObject); procedure BEPertanyaanClick(Sender: TObject); procedure BHPertanyaanClick(Sender: TObject); procedure BTJawabanClick(Sender: TObject); procedure BEJawabanClick(Sender: TObject); procedure BHJawabanClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FUpdate: TFUpdate; implementation uses
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
135
UTambahPertanyaan, UEditPertanyaan, UHapusPertanyaan, UTambahJawaban, UEditJawaban, UHapusJawaban; {$R *.dfm} procedure TFUpdate.BKeluarClick(Sender: TObject); begin FUpdate.Close; end; procedure TFUpdate.BTPertanyaanClick(Sender: TObject); begin FTambahPertanyaan.showmodal; end; procedure TFUpdate.BEPertanyaanClick(Sender: TObject); begin FEditPertanyaan.showmodal; end; procedure TFUpdate.BHPertanyaanClick(Sender: TObject); begin FHapusPertanyaan.show; end; procedure TFUpdate.BTJawabanClick(Sender: TObject); begin FTambahJawaban.showmodal; end; procedure TFUpdate.BEJawabanClick(Sender: TObject); begin FeditJawaban.query1.Close; FeditJawaban.query1.SQL.Clear; FeditJawaban.query1.SQL.add('Select * from jawaban where kodejawaban= '+QuotedStr(FeditJawaban.combobox1.Text)); //query1.ExecSQL; FeditJawaban.query1.Open; if Feditjawaban.Query1.RecordCount>0 then FeditJawaban.EdPenyakit.Text:= FeditJawaban.query1.FieldValues['penyakit']; FEditJawaban.showmodal; end; procedure TFUpdate.BHJawabanClick(Sender: TObject); begin FHapusJawaban.showmodal; end; end.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
136
Kode program form submenu tambah pertanyaan: unit UTambahPertanyaan; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, CheckLst, Buttons, DB, mySQLDbTables; type TFTambahPertanyaan = class(TForm) Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; EdKode: TEdit; EdTanya: TEdit; CheckListBox1: TCheckListBox; BTambah: TBitBtn; BKeluar: TBitBtn; Query1: TmySQLQuery; cb1: TComboBox; Memo1: TMemo; procedure BKeluarClick(Sender: TObject); procedure BTambahClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var FTambahPertanyaan: TFTambahPertanyaan; implementation uses UUpdate, DataModule,UDiagnosis;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
137
{$R *.dfm} procedure TFTambahPertanyaan.BKeluarClick(Sender: TObject); begin FTambahPertanyaan.Close; end; procedure TFTambahPertanyaan.FormClose(Sender: TObject; var Action: TCloseAction); begin FUpdate.show; end; procedure TFTambahPertanyaan.FormActivate(Sender: TObject); begin DataModule1.jawaban.open; CheckListBox1.Clear; dataModule1.jawaban.First; while not DataModule1.jawaban.Eof do begin CheckListBox1.Items.Add(DataModule1.jawaban.FieldByName('Kode').AsString); DataModule1.jawaban.Next; end; DataModule1.jawaban.close; EdKode.SetFocus; end; procedure TFTambahPertanyaan.BTambahClick(Sender: TObject); var i:integer; pilih:TStringList; begin if (edKode.Text='') or (Memo1.Text='') then begin MessageBox(handle,'Data kurang lengkap','Data kurang',MB_OK); exit; end; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan where kodepertanyaan='+QuotedStr(edKode.Text)); //query1.ExecSQL; query1.Open; if query1.RecordCount > 0 then begin MessageBox(handle,'Kode telah ada sebelumnya','Data salah',MB_OK); query1.Close; exit; end; query1.Close; pilih:=TStringList.Create;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
138
pilih.Clear; query1.Close; query1.SQL.Clear; query1.SQL.add('Insert Into pertanyaan Values ('+ AnsiQuotedStr(edKode.Text,'''')+','+ AnsiQuotedStr(Memo1.Text,'''')+')'); query1.ExecSQL; pilih.Free; MessageBox(handle,'Data berhasil ditambah','Tambah Data',MB_OK); end; procedure TFTambahPertanyaan.FormCreate(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin checklistbox1.Items.Add(query1.FieldValues['kodejawaban']); query1.Next; end; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan order by kodepertanyaan '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin cb1.Items.Add(query1.FieldValues['kodepertanyaan']); query1.Next; end; end; end.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
140
end; procedure TFEditPertanyaan.FormActivate(Sender: TObject); begin DataModule1.pertanyaan.open; tanya.Clear; DataModule1.pertanyaan.First; while not DataModule1.pertanyaan.Eof do begin ComboBox1.Items.Add(DataModule1.pertanyaan.FieldByName('Kode').AsString); tanya.Add(DataModule1.pertanyaan.fieldByName('Pertanyaan').AsString); DataModule1.pertanyaan.Next; end; DataModule1.pertanyaan.close; ComboBox1.ItemIndex:=1; //EdTanya.Text:=tanya[comboBox1.ItemIndex]; Memo1.Text:=tanya[combobox1.ItemIndex]; end; procedure TFEditPertanyaan.FormCreate(Sender: TObject); begin // tanya:=TStringList.Create; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin combobox1.Items.Add(query1.FieldValues['kodepertanyaan']); query1.Next; end; end; procedure TFEditPertanyaan.BUbahClick(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.Text:='Select * from pertanyaan where kodepertanyaan="'+(combobox1.Text)+'"'; //query1.ExecSQL; query1.Open; if query1.RecordCount > 0 then begin query2.Close; query2.SQL.Clear;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
141
query2.SQL.Text:='update pertanyaan set pertanyaan="'+(Memo1.Text)+'" Where kodepertanyaan="'+(Combobox1.Text)+'"'; query2.ExecSQL; showmessage('Data telah berhasil diubah !'); end; end; procedure TFEditPertanyaan.ComboBox1Change(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan where kodepertanyaan= '+QuotedStr(combobox1.Text)); //query1.ExecSQL; query1.Open; if query1.RecordCount > 0 then begin //EdTanya.Text:=query1.FieldValues['pertanyaan']; Memo1.Text:=query1.FieldValues['pertanyaan']; end; end; end. Kode program form submenu hapus pertanyaan: unit UHapusPertanyaan; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, DB, mySQLDbTables; type TFHapusPertanyaan = class(TForm) EdTanya: TEdit; Image1: TImage; BHapus: TBitBtn; BBatal: TBitBtn; Label1: TLabel; Label2: TLabel; Query1: TmySQLQuery; ComboBox1: TComboBox; Memo1: TMemo; procedure BBatalClick(Sender: TObject); procedure FormActivate(Sender: TObject);
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
142
procedure FormCreate(Sender: TObject); procedure BHapusClick(Sender: TObject); procedure ComboBox1Change(Sender: TObject); private { Private declarations } public { Public declarations } tanya:TStringList; end; var FHapusPertanyaan: TFHapusPertanyaan; implementation uses DataModule, UDiagnosis; {$R *.dfm} procedure TFHapusPertanyaan.BBatalClick(Sender: TObject); begin FHapusPertanyaan.Close; end; procedure TFHapusPertanyaan.FormActivate(Sender: TObject); begin DataModule1.pertanyaan.open; tanya.Clear; DataModule1.pertanyaan.First; while not DataModule1.pertanyaan.Eof do begin ComboBox1.Items.Add(DataModule1.pertanyaan.FieldByName('Kode').AsString); tanya.Add(DataModule1.pertanyaan.fieldByName('pertanyaan').AsString); DataModule1.pertanyaan.Next; end; DataModule1.pertanyaan.close; ComboBox1.ItemIndex:=1; EdTanya.Text:=tanya[comboBox1.ItemIndex]; end; procedure TFHapusPertanyaan.FormCreate(Sender: TObject); begin // tanya:=TSTringList.Create; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan '); //query1.ExecSQL; query1.Open; query1.First;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
143
while not query1.Eof do begin combobox1.Items.Add(query1.FieldValues['kodepertanyaan']); query1.Next; end; end; procedure TFHapusPertanyaan.BHapusClick(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan where kodepertanyaan='+QuotedStr(combobox1.Text)); //query1.ExecSQL; query1.Open; if query1.RecordCount > 0 then begin if MessageDlg('Apakah Yakin Data di hapus ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin query1.Close; query1.SQL.Clear; query1.SQL.Text:='delete from pertanyaan where kodepertanyaan="'+(combobox1.Text)+'"'; query1.ExecSQL; // query1.Open; query1.Close; combobox1.Items.Clear; //query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin combobox1.Items.Add(query1.FieldValues['kodepertanyaan']); query1.Next; end; end; showmessage('Data telah dihapus!'); end; end; procedure TFHapusPertanyaan.ComboBox1Change(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan where kodepertanyaan='+QuotedStr(combobox1.Text));
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
144
query1.Open; if query1.RecordCount > 0 then Memo1.Text:=query1.FieldValues['pertanyaan']; end; end. Kode program form submenu tambah jawaban: unit UTambahJawaban; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, CheckLst, jpeg, ExtCtrls, DB, mySQLDbTables; type TFTambahJawaban = class(TForm) Label1: TLabel; edKode: TEdit; Label2: TLabel; edPenyakit: TEdit; Label3: TLabel; CheckListBox1: TCheckListBox; BTambah: TBitBtn; BKeluar: TBitBtn; Label5: TLabel; Memo1: TMemo; Query1: TmySQLQuery; cb1: TComboBox; Image1: TImage; CheckListBox2: TCheckListBox; procedure BKeluarClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure BTambahClick(Sender: TObject); procedure CheckListBox2ClickCheck(Sender: TObject); private { Private declarations } public { Public declarations } end; var FTambahJawaban: TFTambahJawaban; implementation
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
145
uses UUpdate, DataModule, UDiagnosis; {$R *.dfm} procedure TFTambahJawaban.BKeluarClick(Sender: TObject); begin FTambahJawaban.Close; end; procedure TFTambahJawaban.FormClose(Sender: TObject; var Action: TCloseAction); begin FUpdate.show; end; procedure TFTambahJawaban.FormActivate(Sender: TObject); begin { checklistbox1.Items.Clear; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from pertanyaan '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin checklistbox1.Items.Add(query1.FieldValues['kodepertanyaan']); query1.Next; end; } query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban order by kodejawaban '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin cb1.Items.Add(query1.FieldValues['kodejawaban']); query1.Next; end; DataModule1.pertanyaan.open; CheckListBox1.Clear; DataModule1.pertanyaan.First; while not DataModule1.pertanyaan.Eof do
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
146
begin CheckListBox1.Items.Add(DataModule1.pertanyaan.FieldByName('kodepertanyaan').AsString); Checklistbox2.Items.Add(DataModule1.pertanyaan.FieldValues['pertanyaan']); DataModule1.pertanyaan.Next; end; DataModule1.pertanyaan.close; EdKode.SetFocus; end; procedure TFTambahJawaban.BTambahClick(Sender: TObject); var i,j,a :integer; k : array[0..100] of integer; pilih :TStringList; begin if (EdKode.Text='') or (EdPenyakit.Text='') or (Memo1.Text='') then begin MessageBox(handle,'Data kurang lengkap','Data kurang',MB_OK); exit; end; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban where kodejawaban='+QuotedStr(edKode.Text)); //query1.ExecSQL; query1.Open; if query1.RecordCount > 0 then begin MessageBox(handle,'Kode telah ada sebelumnya','Data salah',MB_OK); query1.Close; exit; end; query1.Close; pilih:=TStringList.Create; pilih.Clear; for i:=0 to checkListBox1.Items.Count-1 do begin if checkListBox1.Checked[i] then begin pilih.Add(inttostr(i)); end; end; if pilih.Count=0 then begin
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
147
MessageBox(handle,'Pertanyaan belum dipilih','Data kurang',MB_OK); pilih.Free; exit; end; query1.Close; query1.SQL.Clear; query1.SQL.add('Insert Into jawaban Values ('+ AnsiQuotedStr(edKode.Text,'''')+','+ AnsiQuotedStr(edPenyakit.Text,'''')+','+ AnsiQuotedStr(Memo1.Text,'''')+')'); query1.ExecSQL; DataModule1.relasi.Open; for i:=0 to pilih.Count-1 do begin a:=0; for j:=0 to checklistbox1.Items.Count -1 do if checklistbox1.Checked[j]=true then begin k[a]:=j; a:=a+1 end; j:=checklistbox1.ItemIndex; query1.Close; query1.SQL.Clear; query1.SQL.add('Insert into relasi values ('+ AnsiQuotedStr(edKode.Text,'''')+','+ AnsiQuotedStr(checkListBox1.Items[k[i]],'''')+')'); query1.ExecSQL; end; query1.Close; pilih.Free; MessageBox(handle,'Data berhasil ditambah','Tambah Data',MB_OK); MessageBox(handle,'Restart Aplikasi Ini','Warning',MB_OK); end; procedure TFTambahJawaban.CheckListBox2ClickCheck(Sender: TObject); var i: Integer; begin for i := 0 to CheckListBox2.Items.Count-1 do CheckListBox1.Checked[i] := CheckListBox2.Checked[i]; end; end.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
149
procedure TFEditJawaban.BBatalClick(Sender: TObject); begin FEditJawaban.Close; end; procedure TFEditJawaban.FormActivate(Sender: TObject); begin DataModule1.jawaban.open; tanya.Clear; DataModule1.jawaban.First; while not DataModule1.jawaban.Eof do begin ComboBox1.Items.Add(DataModule1.jawaban.FieldByName('Kode').AsString); tanya.Add(DataModule1.jawaban.fieldByName('Jawaban').AsString); DataModule1.jawaban.Next; end; DataModule1.jawaban.close; ComboBox1.ItemIndex:=1; EdPenyakit.Text:=tanya[comboBox1.ItemIndex]; end; procedure TFEditJawaban.ComboBox1Change(Sender: TObject); begin // EdPenyakit.Text:=tanya[comboBox1.ItemIndex]; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban where kodejawaban= '+QuotedStr(combobox1.Text)); //query1.ExecSQL; query1.Open; if query1.RecordCount > 0 then begin edPenyakit.Text:=query1.FieldValues['penyakit']; Memo1.Text:=query1.FieldValues['pengobatan']; end; end; procedure TFEditJawaban.FormCreate(Sender: TObject); begin tanya:=TStringList.Create; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban '); query1.Open; query1.First; while not query1.Eof do begin combobox1.Items.Add(query1.FieldValues['kodejawaban']); query1.Next; end; end;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
150
procedure TFEditJawaban.BUbahClick(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.Text:='Select * from jawaban where kodejawaban="'+(combobox1.Text)+'"'; query1.open; if query1.RecordCount > 0 then begin if MessageDlg('Apakah Yakin Data diperbaharui ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin query2.Close; query2.SQL.Clear; query2.SQL.Text:='update jawaban set penyakit="' +edPenyakit.Text+'", pengobatan="'+memo1.Text+'" where ' +'kodejawaban="'+combobox1.Text+'"'; query2.ExecSQL; showmessage('Data telah diupdate !'); end; end; end; end. Kode program form submenu hapus jawaban: unit UHapusJawaban; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, DB, mySQLDbTables, ZAbstractRODataset, ZAbstractDataset, ZDataset; type TFHapusJawaban = class(TForm) Image1: TImage; Label1: TLabel; ComboBox1: TComboBox;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
151
Label2: TLabel; EdPenyakit: TEdit; BHapus: TBitBtn; BBatal: TBitBtn; Query12: TmySQLQuery; Query1: TZQuery; Query2: TZQuery; procedure BBatalClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BHapusClick(Sender: TObject); private { Private declarations } public { Public declarations } tanya:TStringList; end; var FHapusJawaban: TFHapusJawaban; implementation uses DataModule, UDiagnosis; {$R *.dfm} procedure TFHapusJawaban.FormActivate(Sender: TObject); begin DataModule1.jawaban.open; tanya.Clear; DataModule1.jawaban.First; while not DataModule1.jawaban.Eof do begin ComboBox1.Items.Add(DataModule1.jawaban.FieldByName('Kode').AsString); tanya.Add(DataModule1.jawaban.fieldByName('Jawaban').AsString); DataModule1.jawaban.Next; end; DataModule1.jawaban.close; ComboBox1.ItemIndex:=1; EdPenyakit.Text:=tanya[comboBox1.ItemIndex]; end; procedure TFHapusJawaban.ComboBox1Change(Sender: TObject); begin //EdPenyakit.Text:=tanya[comboBox1.ItemIndex]; query1.Close; query1.SQL.Clear;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
152
query1.SQL.add('Select * from jawaban where kodejawaban= '+QuotedStr(combobox1.Text)); //query1.ExecSQL; query1.Open; EdPenyakit.Text:=query1.FieldValues['penyakit']; end; procedure TFHapusJawaban.FormCreate(Sender: TObject); begin // tanya:=TStringList.Create; query1.Close; query1.SQL.Clear; query1.SQL.add('Select * from jawaban '); //query1.ExecSQL; query1.Open; query1.First; while not query1.Eof do begin combobox1.Items.Add(query1.FieldValues['kodejawaban']); query1.Next; end; end; procedure TFHapusJawaban.BBatalClick(Sender: TObject); begin FHapusJawaban.Close; end; procedure TFHapusJawaban.BHapusClick(Sender: TObject); begin query1.Close; query1.SQL.Clear; query1.SQL.Text:='Select * from jawaban where kodejawaban="'+(combobox1.Text)+'"'; query1.Open; if query1.RecordCount > 0 then begin if MessageDlg('Apakah Yakin Data di hapus ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin query2.Close; query2.SQL.Clear; query2.SQL.Text:='delete from jawaban where kodejawaban="'+(combobox1.Text)+'"'; query2.ExecSQL; query2.Close; query2.SQL.Clear; query2.SQL.Text:='delete from relasi where kodejawaban="'+(combobox1.Text)+'"'; query2.ExecSQL; query1.Close; combobox1.Items.Clear;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
153
query1.SQL.Clear; query1.SQL.add('Select * from jawaban '); query1.Open; query1.First; while not query1.Eof do begin combobox1.Items.Add(query1.FieldValues['kodejawaban']); query1.Next; end; end; showmessage('Data telah dihapus!'); end; end; end. Kode program form menu petunjuk: unit UPetunjuk; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons; type TFPetunjuk = class(TForm) Image1: TImage; Shape1: TShape; Label1: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label7: TLabel; Label8: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label15: TLabel; Label18: TLabel; Label19: TLabel; BitBtn1: TBitBtn; Shape2: TShape; Label2: TLabel;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
154
Shape3: TShape; Shape4: TShape; Shape5: TShape; Shape6: TShape; Label16: TLabel; Label14: TLabel; Label9: TLabel; Label6: TLabel; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FPetunjuk: TFPetunjuk; implementation {$R *.dfm} procedure TFPetunjuk.BitBtn1Click(Sender: TObject); begin FPetunjuk.Close; end; end. Kode program form menu identitas: unit UTentang; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons; type TFTentang = class(TForm) S: TImage; Image2: TImage; Label1: TLabel; Label3: TLabel; Label4: TLabel;
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
155
Label5: TLabel; BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FTentang: TFTentang; implementation {$R *.dfm} procedure TFTentang.BitBtn1Click(Sender: TObject); begin FTentang.Close; end; end.