View
218
Download
1
Category
Preview:
Citation preview
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
ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, Desember 2009
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1 Syahriol Sitorus, S.Si, MIT Ir. Arman Sani, MT NIP. 197103101997031004 NIP. 132 945 349
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
JPEG (Joint Photographic Experts Group), BMP (Bitmap), GIF (Graphics
Interchange Format), TIFF (Tagged Image File Format), dan PNG (Portable Network
Graphics). Dalam Tugas Akhir ini, citra digital yang digunakan adalah citra digital
dengan tipe file JPEG. Citra JPEG merupakan tipe file citra digital yang banyak
digunakan untuk menyimpan gambar-gambar dengan ukuran lebih kecil. Citra JPEG
memiliki beberapa karakteristik, yaitu:
1. Memiliki ekstensi .jpg atau .jpeg.
2. Mampu menayangkan warna dengan kedalaman 24-bit true color.
3. Mengkompresi gambar dengan sifat lossy.
4. Umumnya digunakan untuk menyimpan gambar-gambar hasil foto.
2.2 Resolusi Citra
Sebelum membahas mengenai masalah resolusi citra, sesuai judul penulisan Tugas
Akhir ini perlu dijelaskan pengertian dari kata kualitas. Kualitas dapat didefenisikan
sebagai suatu kondisi dinamis yang berhubungan dengan produk, jasa, manusia,
proses dan lingkungan yang memenuhi atau melebihi harapan (Davis, 2004). Adapun
Resolusi Citra dapat didefenisikan sebagai banyaknya titik untuk setiap satuan
panjang (dot per inch) yang terdapat dalam sebuah citra.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
11
Dari pengertian kata Kualitas dan Resolusi Citra diatas, dapat dijelaskan
bahwa Kualitas Resolusi Citra merupakan suatu kondisi dinamis dari sebuah citra
dengan resolusi tertentu, yang dalam hal ini bergantung pada banyaknya titik untuk
setiap satuan panjang (dot per inch) yang terdapat dalam citra tersebut.
Kualitas resolusi citra dikatakan baik jika citra tersebut memiliki resolusi yang
besar, dimana semakin besar resolusi makin banyak titik yang terkandung dalam citra,
sehingga menjadi lebih halus dalam visualisasinya (Hestiningsih, 2008).
Menurut kualitas resolusi yang dihasilkan, resolusi dibedakan menjadi
(www.total.or.id/info.php/kk=Resolusi):
1. Resolusi Tinggi (High Resolution).
Suatu citra dikatakan memiliki resolusi tinggi jika tingkat ketelitian yang
cukup tinggi dari suatu media dalam menangkap ataupun menampilkan
datanya.
2. Resolusi Rendah (Low Resolution).
Citra dikatakan memiliki resolusi rendah jika pada layar atau gambar yang teks
dan grafiknya tampil dengan detail yang relatif kasar.
Gambar 2.5 memperlihatkan gambar suatu objek yang dicitrakan
menggunakan beberapa kamera dengan tingkat kualitas resolusi yang berbeda.
Gambar 2.5 Citra dengan Beberapa Tingkat Resolusi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
12
2.3 Pengolahan Citra Digital (Digital Image Processing)
Deteksi tepi (edge detection) merupakan salah satu operasi dasar dalam pengolahan
citra digital. Pengolahan citra digital (digital image processing) merupakan suatu
kegiatan yang dilakukan untuk memperbaiki kualitas citra agar mudah diinterpretasi
oleh manusia maupun mesin (komputer). Dalam pengolahan citra yang menjadi
masukan (input) dan keluaran (output) adalah citra, namun dengan kualitas yang
berbeda.
Dari hasil keluaran pengolahan citra digital, dapat dilakukan suat proses
lanjutan yaitu analisis citra. Kegiatan ini akan menghasilkan informasi untuk
menetapkan keputusan (biasanya didampingi bidang ilmu kecerdasan buatan/Artificial
Intelligence yaitu pengenalan pola (pattern recognition) menggunakan jaringan syaraf
tiruan, logika fuzzy, dan lain-lain). Dalam pengolahan maupun analisis citra banyak
melibatkan persepsi visual (Indira, 2008). Gambar 2.6 menunjukkan diagram alir
proses yang terjadi pada suatu citra mulai dari proses pencitraan sampai pada analisis
citra.
Gambar 2.6 Tahapan dalam Pengolahan Citra
Citra digital direpresentasikan dengan matriks sehingga operasi pada citra
digital pada dasarnya memanipulasi elemen-elemen matriks. Ada beberapa operasi
dasar pada pengolahan citra antara lain: operasi titik, operasi global, operasi berbasis
bingkai (frame), operasi geometri dan operasi bertetangga (Hestiningsih, 2008).
Gambar 2.7 memperlihatkan bagan pengelompokan operasi-operasi dasar pada
pengolahan citra digital.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
13
Gambar 2.7 Operasi-operasi Dasar pada Pengolahan Citra Digital
Dari bagan diatas, dapat dilihat bahwa deteksi tepi merupakan operasi pada
pengolahan citra digital yang merupakan salah satu jenis operasi bertetangga atau
persekitaran (neighbourhood operation).
2.4 Operasi Bertetangga/Persekitaran (Neighbourhood Operation)
Sebuah citra dikatakan ideal, jika mampu mencerminkan kondisi sesungguhnya dari
suatu objek. Mempunyai hubungan satu-satu (one to one), satu titik pada objek
dipetakan tepat satu piksel di citra digital. Tetapi pada kenyataannya, hubungan yang
ada antara titik dalam objek dengan titik pada citra digital adalah hubungan satu ke
banyak (one to many) dan banyak ke satu (many to one). Hal ini disebabkan oleh
beberapa hal, yaitu:
1. Sinyal yang dikirim oleh objek citra mengalami penyebaran (divergensi),
sehingga yang diterima oleh sensor atau detector tidak lagi berupa suatu titik,
namun berupa luasan.
Operasi Global Operasi Berbasis Bingkai
Operasi Geometri Operasi Bertetangga
Ekualisasi Histogram
Penggabungan Citra
Operasi Titik
Deteksi Gerakan
Operasi Logika (AND, OR, XOR, SUB, NOT)
Pencerminan
Rotasi
Pemotongan
Penskalaan
Deteksi Tepi
Penajaman Citra
Penghalusan
Reduksi Noise
Efek Emboss
Pengolahan Citra Digital
Modifikasi Kecemerlangan
Peningkatan Kontras
Negasi
Pengambangan (Thresholding)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
14
2. Atau sebaliknya satu titik pada sensor atau detector dapat menerima banyak
sinyal dari beberapa bagian.
Operasi citra digital yang berhubungan dengan kondisi diatas disebut operasi
persekitaran/bertetangga (neighborhood operation). Operasi persekitaran/bertetangga
pada dasarnya adalah hubungan antara citra dengan sebuah filter (mask/kernel). Nilai
dari filter/mask merupakan bobot kontribusi titik persekitaran terhadap operasi
persekitaran.
Ada beberapa operasi pengolahan citra yang berkaitan dengan operasi
bertetangga ini, diantaranya adalah deteksi tepi. Untuk pembahasan mengenai deteksi
tepi akan dibahas pada sub-bab berikutnya.
2.5 Deteksi Tepi (Edge Detection)
Secara umum tepi dapat didefinisikan sebagai batas antara dua region (dua piksel
yang saling berdekatan) yang memiliki perbedaan intensitas yang tajam atau tinggi
(Febriani, 2008). Tepi dapat diorientasikan dengan suatu arah, dan arah ini berbeda-
beda, tergantung pada perubahan intensitas. Untuk lebih memahami defenisi tepi,
Gambar 2.8 memperlihatkan model tepi dalam ruang satu dimensi.
Gambar 2.8 Model Tepi Satu Dimensi
Ada tiga macam tepi yang terdapat di dalam citra digital (Munir, 2004), yaitu:
1. Tepi curam
Jenis tepi ini terbentuk karena perubahan intensitas yang tajam, berkisar 900.
jarak
perubahan intensitas
α α = arah tepi
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
15
2. Tepi landai
Tepi lebar, sudut arah kecil. Terdiri dari sejumlah tepi-tepi lokal
yang lokasinya berdekatan.
3. Tepi yang mengandung noise
Untuk mendeteksi tepi jenis ini, biasanya dilakukan operator image
enhancement terlebih dahulu. Misalnya Operator Gaussian yang berfungsi
untuk menghaluskan citra.
Perbedaan ketiga macam tepi tersebut, diperlihatkan pada Gambar 2.9.
Gambar 2.9 Jenis-jenis Tepi
Deteksi tepi merupakan langkah pertama untuk melingkupi informasi di dalam
citra. Tepi mencirikan batas-batas objek dan karena itu tepi berguna untuk proses
segmentasi dan identifikasi objek di dalam citra. Deteksi tepi pada suatu citra
memiliki tujuan sebagai berikut (Sigit, 2005):
1. Menandai bagian yang menjadi detil citra.
2. Memperbaiki detil citra yang kabur karena error atau efek proses akuisisi.
Gambar 2.10 memperlihatkan bagaimana tepi dari suatu citra dapat diperoleh
dengan operasi pendeteksian tepi.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
16
Gambar 2.10 Proses Deteksi Tepi Citra
Berdasarkan prinsip-prinsip filter pada citra, tepi suatu gambar dapat diperoleh
menggunakan High Pass Filter (HPF), dengan karakteristik:
∑∑ H( x , y ) = 0 (2.1)
Berikut ini beberapa metode yang digunakan untuk mendeteksi tepi
(Herdiyeni, 2007), yaitu:
1. First-Order Derivative Edge Detection (Pendeteksi Tepi Turunan Pertama).
Pendeteksi tepi ini menghitung perbedaan intensitas antara dua piksel yang
saling berdekatan, dimana daerah tepi terletak pada nilai maksimum lokalnya.
Metode ini sering juga disebut dengan pendeteksi tepi dengan operator gradien
citra. Berikut ini berapa contoh pendeteksi tepi turunan pertama yang sering
digunakan:
a. Metode Roberts-Cross
b. Metode Prewitt
c. Metode Sobel
2. Second-Order Derivative Edge Detection (Pendeteksi Tepi Turunan Kedua).
Pendeteksitepi turunan kedua, memanfaatkan nilai tururnan kedua dari fungsi
Gaussian dalam langkah-langkah untuk mendeteksi tepi dari suatu citra. Yang
termasuk dalam metode pendeteksi tepi ini, adalah:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
17
a. Metode Laplacian of Gaussian
b. Metode Canny
Pada penulisan Tugas Akhir ini metode yang digunakan adalah metode yang
menggunakan operator turunan pertama (Sobel) dan operator turunan kedua
(Laplacian of Gaussian dan Canny).
Konvolusi
Deteksi tepi merupakan salah satu proses pengolahan citra yang menggunakan filter
atau penapis. Selain pada proses pendeteksian tepi, proses lain pada pengolahan citra
yang juga menggunakan filter atau penapis adalah perbaikan kualitas citra
(image enhancement), penghilangan derau (noise reduction), mengurangi erotan,
penghalusan atau pelembutan citra (image smoothing), dan lain-lain.
Untuk mengaplikasikan penapis pada citra, digunakan metode konvolusi.
Konvolusi bisa dinyatakan dalam matriks, dimana setiap elemen matriks penapis
tersebut dinamakan koefisien konvolusi. Operasi konvolusi bekerja dengan menggeser
kernel piksel per piksel, yang hasilnya kemudian disimpan dalam matriks baru.
Konvolusi 2 fungsi f(x) dan g (x) diperlihatkan dengan rumus berikut ini:
(2.2)
Atau fungsi diskritnya:
(2.3)
Dimana α = peubah bantu.
Pada konvolusi 2D, fungsi malarnya dapat dihitung dengan persamaan:
(2.4)
Sedangkan fungsi diskritnya dihitung dengan persamaan:
(2.5)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
18
g(x) merupakan convolution mask / filter / kernel atau template. Gambar 2.11
memperlihatkan ilustrasi terjadinya konvolusi.
Gambar 2.11 Proses Konvolusi
Dimana:
(2.6)
Untuk lebih jelasnya, berikut contoh konvolusi yang terjadi antara citra f(x,y)
berukuran 5x5 dengan sebuah kernel berukuran 3x3 yang diperlihatkan pada Gambar
2.12.
Gambar 2.12 Matriks Citra dan Kernel Sebelum Konvolusi
Tanda • menunjukkan posisi (0,0) dari kernel
Tahapan untuk mendapatkan hasil konvolusi yang terjadi antara citra dan kernel diatas
dapat dilihat pada Gambar 2.13.
(i)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
19
(ii)
(iii) .
.
.
dan seterusnya
Gambar 2.13 Tahapan Proses Pembentukan Konvolusi
Sehingga diperoleh hasil akhir dari proses konvolusi tersebut, yang ditunjukkan pada
Gambar 2.14.
Gambar 2.14 Hasil Konvolusi Citra dan Kernel
Dalam konvolusi terdapat dua kemungkinan yang jika ditemukan, diselesaikan dengan
cara berikut, yaitu:
1. Untuk hasil konvolusi dengan nilai negatif, nilainya dijadikan nol (0).
2. Jika hasil konvolusi lebih besar (>) derajat keabuan maksimum, maka nilai
diubah menjadi derajat keabuan maksimum.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
20
Pendeteksi Tepi Sobel
Operator Sobel melakukan perhitungan secara 2D terhadap suatu ruang di dalam
sebuah gambar dengan harapan nantinya akan nampak daerah-daerah bernilai tinggi
pada gambar tersebut yang merupakan deteksi tepi dari suatu gambaran. Operator ini
biasanya digunakan untuk mencari gradien dari masing-masing piksel gambar input
yang telah di grayscale sebelumnya.
Secara teori, diperlukan matriks setidaknya berukuran 3x3 sebagai kernelnya.
Contoh kernel Sobel yang berukuran 3x3 diperlihatkan pada Gambar 2.15.
-1 0 +1 -1 +2 +1
-2 0 +2 0 0 0
-1 0 +1 -1 -2 -1 Gx Gy
Gambar 2.15 Kernel Konvolusi Sobel
Kernel ini dirancang untuk menyelesaikan permasalahan deteksi tepi baik
secara vertikal maupun horisontal. Penggunaan kernel-kernel ini dapat digunakan
bersamaan ataupun secara terpisah. Apabila digunakan kernel vertikal dan kernel
horisontal secara bersamaan, maka gradien dapat diukur dengan formula sebagai
berikut:
G = Gx2 + Gy2 (2.7)
Besarnya gradien juga dapat dihitung lebih cepat lagi dengan menggunakan
formula sebagai berikut:
G = Gx + Gy (2.8)
Gradien tersebut pasti mempunyai derajat kemiringan tertentu. Untuk dapat
mengetahui sudut dari gradien tersebut dapat dihitung dengan menggunakan rumus
sebagai berikut:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
21
ϑ = arctan(Gy / Gx) (2.9)
Dalam kasus ini, orientasi 0 untuk menentukan nilai kontras maksimum dari
hitam ke putih dihitung dari kiri menuju kanan dan berjalan terus sampai ke bagian
paling atas dari suatu gambaran. Sedangkan sudutnya diukur berlawanan arah jarum
jam.
Yang sering terjadi dalam filter ini adalah nilai mutlak dari magnitude hanya
sebatas penglihatan mata kita saja, apabila terdapat dua komponen gradien maka akan
digabungkan menggunakan operator pseudo-convolution seperti yang diperlihatkan
pada Gambar 2.16.
P1 P2 P3
P4 P5 P6
P7 P8 P9
Gambar 2.16 Kernel Pseudo-Convolution
Dengan menggunakan kernel pseudo-convolution seperti diatas maka
perhitungan yang terjadi adalah:
|G| = |( P1 + 2P2 + P3) – (P7 + P8 + P9)| + (2.10)
|( P3 + 2P6 + P9) – (P1 + 2P4 + P7)|
Pendeteksi Tepi Laplacian of Gaussian (LoG)
Laplacian adalah salah satu metode pendeteksi tepi yang merupakan pendeteksi tepi
turunan kedua. Turunan kedua memiliki sifat lebih sensitif terhadap noise, selain itu
juga menghasilkan double edge. Oleh karena itu, operator Laplacian dalam deteksi
tepi pada umumnya tidak dipergunakan secara langsung, namun dikombinasikan
dengan suatu kernel Gaussian menjadi sebuah operator Laplacian of Gaussian (LoG).
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
22
Metode ini mendeteksi tepi lebih akurat khususnya pada tepi yang curam. Pada
tepi yang curam, turunan keduanya memiliki zero-crossing (persilangan nol), yaitu
titik dimana terdapat pergantian tanda nilai turunan kedua, sedangkan pada tepi yang
landai tidak terdapat persilangan nol (Gonzalez et al, 2005).
Berikut ini fungsi LoG 2-D yang berpusat pada titik 0 dan dengan deviasi
standard Gaussian :
(2.11)
Representasi turunan kedua dalam bentuk kernel operator Laplacian
diperlihatkan pada Gambar 2.17.
0 -1 0
-1 4 -1
0 -1 0
Gambar 2.17 Kernel Konvolusi Laplacian
Pendeteksi Tepi Canny
Canny merupakan salah satu algoritma deteksi tepi modern. Pada tahun 1986 John
Canny mengusulkan tiga kriteria yang menjadi basis pengembangan filter untuk
mengoptimalkan pendeteksian tepi pada citra bernoise (Febriani, 2008). Tiga kriteria
tersebut adalah:
a. Good detection, kriteria ini bertujuan memaksimalkan nilai signal to noise
ration (SNR) sehingga semua tepi dapat terdeteksi dengan baik atau tidak ada
yang hilang.
b. Good localisation, tepi yang terdeteksi berada pada posisi yang sebenarnya,
atau dengan kata lain bahwa jarak antara posisi tepi yang terdeteksi oleh
detektor dengan posisi tepi sebenarnya adalah seminimum mungkin (idealnya
adalah 0).
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
23
c. Low multiplicity of the response atau ”one response to single edge” detektor
tidak memberikan tepi yang bukan tepi sebenarnya.
Berdasarkan pada kriteria ini, Canny berhasil melakukan optimalisasi dari ke
tiga kriteria tersebut dan menghasilkan persamaan sebagai berikut:
h(x)=a1ecos(ωx)+a2esin(ωx)+ (2.12)
a3e-cos(ωx)+ a4e-sin(ωx)
Namun persamaan ini cukup sulit untuk diimplementasikan, sehingga pada
implementasinya, Canny tetap menggunakan filter Gaussian untuk mereduksi noise.
Metode Canny ini tidak memiliki operator khusus, namun metode ini terdiri
dari beberapa langkah khusus. Metode Canny akan mendeteksi tepi dengan mencari
nilai gradien maksimal lokal dari sebuah citra (Green, 2009). Gradien tersebut
dihitung menggunakan turunan dari Gaussian filter (Gonzalez, et al, 2005).
Metode Canny menggunakan dua thresholds atau pengambangan, yang
berguna untuk mendeteksi tepian yang terlihat jelas, dan tepian yang kurang jelas atau
lemah, termasuk juga tepian yang kurang jelas yang terlihat pada output yang
terhubung dengan tepian yang jelas. Pembahasan mengenai thresholds atau
pengambangan akan dijelaskan pada sub-bab berikutnya.
Metode ini lain dengan metode sebelumnya, yang sebelum dilakukan proses
deteksi tepi harus dilakukan terlebih dahulu proses penghilangan noise. Metode Canny
lebih utama akan mendeteksi tepian yang kurang jelas, yang tidak dapat diperoleh
dengan menggunakan metode lain dan dilanjutkan dengan penghitungan turunan
pertama dan thresholding hysteresis.
Pengambangan (Thresholding)
Operasi pengambangan (thresholding) merupakan salah satu operasi yang termasuk
kedalam operasi titik dalam pengolahan citra digital. Operasi ini digunakan untuk
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
24
mengubah citra dengan format skala keabuan, yang mempunyai kemungkinan nilai
lebih dari 2 ke citra biner yang memiliki 2 buah nilai (yaitu 0 dan 1).
Pengambangan terbagi atas dua jenis, yaitu:
a. Pengambangan Tunggal
Pengambangan tunggal merupakan proses pengambangan yang hanya
memiliki sebuah nilai batas ambang.
Fungsi GST-nya:
atau:
Gambar 2.18 menunjukkan sebuah citra yang telah mengalami pengambangan
tunggal.
Gambar 2.18 Citra dengan Pengambangan Tunggal
b. Pengambangan Ganda
Memiliki ambang bawah dan ambang atas. Dilakukan untuk menampilkan
titik-titik yang mempunyai rentang nilai skala keabuan tertentu.
Dengan fungsi GST:
atau:
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
25
Gambar 2.19 memperlihatkan sebuah citra yang telah mengalami
pengambangan tunggal.
Gambar 2.19 Citra dengan Pengambangan Ganda
Parameter Pembanding
Untuk menguji kehandalan suatu metode, dan membandingkannya dengan metode
lain, diperlukan suatu parameter. Dalam pengujian kehandalan suatu metode
pendeteksi tepi, berikut ini beberapa parameter yang dapat digunakan:
1. Kualitas edge yang dihasilkan atau morfologi garis tepi yang terbentuk.
Parameter ini dipakai dalam penelitian yang dilakukan Indira (2008). Suatu
metode pendeteksi tepi dikatakan baik jika metode tersebut berhasil
mendeteksi tepi dengan tepat, artinya tidak menyatakan suatu piksel yang
bukan tepi sebagai tepi atau sebaliknya, tidak menganggap suatu tepi sebagai
tepian.
2. Sensitivitas (ketahanan) suatu metode pendeteksi tepi terhadap noise.
Sensitivitas metode pendeteksi tepi terhadap noise dapat diukur dengan
menggunakan parameter error rate sebagai berikut:
(2.13)
dimana:
nR : jumlah piksel yang dinyatakan sebagai tepi pada citra referensi
nN : jumlah piksel yang dinyatakan sebagai tepi pada citra noisy
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
26
Nilai P yang besar menyatakan sensitivitas edge detector yang tinggi terhadap
noise. Febriani (2008) dan Indira (2008) memakai parameter ini dalam
penelitiannya.
3. Waktu yang diperlukan dalam proses tersebut (timing run).
Timing-run adalah lama waktu proses deteksi tepi pada suatu citra, jadi pada
tahap ini akan dianalisis lama waktu yang digunakan dalam melakukan proses
deteksi tepi. Dalam penelitian ini, waktu pemrosesan dihitung dengan rumus:
Waktu proses = waktu akhir deteksi tepi – waktu awal deteksi tepi (2.14)
4. Efek yang ditimbulkan, berupa false positif dan false negatif.
Parameter ini biasanya digunakan pada proses pendeteksian tepi untuk
mengenali citra wajah. Cara kerjanya dengan melihat kinerja metode
pendeteksi tepi yang digunakan dalam mengenali daerah pada citra yang
dimaksudkan sebagai daerah wajah. Dimana kemungkinan untuk suatu metode
pendeteksi tepi menyatakan citra yang bukan merupakan citra wajah sebagai
citra wajah dapat terjadi.
Dalam penelitian ini, parameter yang akan digunakan untuk membandingkan
kinerja tiap-tiap metode pendeteksi tepi adalah kualitas edge yang dihasilkan,
sensitivitas tiap metode terhadap noise, dan waktu yang diperlukan dalam proses
pendeteksian tepi (timing run).
2.6 Bahasa Pemrograman Matlab
Matlab merupakan bahasa pemrograman yang hadir dengan fungsi dan karakteristik
yang berbeda dengan bahasa pemrograman lain yang sudah ada lebih dahulu seperti
Delphi, Basic maupun C++. Matlab merupakan bahasa pemrograman level tinggi yang
dikhususkan untuk kebutuhan komputasi teknis, visualisasi dan pemrograman seperti
komputasi matematik, analisis data, pengembangan algoritma, simulasi dan
pemodelan dan grafik-grafik perhitungan.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
27
Matlab hadir dengan membawa warna yang berbeda. Hal ini karena matlab
membawa keistimewaan dalam fungsi-fungsi matematika, fisika, statistik, dan
visualisasi. Matlab dikembangkan oleh MathWorks, yang pada awalnya dibuat untuk
memberikan kemudahan mengakses data matrik pada proyek LINPACK dan
EISPACK. Saat ini matlab memiliki ratusan fungsi yang dapat digunakan sebagai
pemecahan masalah mulai dari masalah sederhana sampai pada masalah yang
kompleks dari berbagai disiplin ilmu. Matlab memiliki beberapa lingkungan kerja
yang terdiri atas:
1. Current Directory
Jendela ini menampilkan isi dari direktori kerja saat menggunakan matlab.
Kita dapat mengganti direktori ini sesuai dengan tempat direktori kerja yang
diinginkan. Default dari alamat direktori berada dalam folder works tempat
program files Matlab berada.
2. Command History
Jendela ini berfungsi untuk menyimpan perintah-perintah apa saja yang
sebelumnya dilakukan oleh pengguna terhadap matlab.
3. Command Window
Jendela ini adalah jendela utama dari Matlab. Disini adalah tempat untuk
menjalankan fungsi, mendeklarasikan variabel, menjalankan proses-proses,
serta melihat isi variabel.
4. Workspace
Workspace berfungsi untuk menampilkan seluruh variabel-variabel yang
sedang aktif pada saat pemakaian matlab. Apabila variabel berupa data matriks
berukuran besar maka pengguna dapat melihat isi dari seluruh data dengan
melakukan double click pada variabel tersebut. Matlab secara otomatis akan
menampilkan jendela “array editor” yang berisikan data pada setiap variabel
yang dipilih pengguna.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
Pada penulisan Tugas Akhir ini, untuk menyelesaikan permasalahan yang ada
dilakukan satu tahapan analisis terhadap ketiga metode pendeteksi tepi, yaitu Sobel,
LoG, dan Canny. Analisis dilakukan dengan melihat bagaimana setiap langkah dari
tiap-tiap metode dapat mempengaruhi parameter-parameter pembanding yang telah
ditentukan. Setelah melakukan analisis, dilanjutkan dengan tahap perancangan yang
dilakukan sebelum tahap implementasi.
Analisis Metode Sobel
Untuk menganalisis kinerja metode Sobel dalam mendeteksi tepi empat jenis citra
dengan tingkat kualitas resolusi yang berbeda (0,3 megapiksel, 2 megapiksel, 7
megapiksel dan 10 megapiksel), terhadap tiga buah parameter yang dianggap mampu
mengukur kinerja metode ini, yaitu kualitas citra tepi yang dihasilkan, timing run, dan
sensitivity rate dapat dilakukan dengan melihat pseudocode dari algoritma metode ini.
Berikut ini pseudocode dari algoritma metode Sobel:
% Mengubah citra RGB menjadi citra skala keabuan
I = double(rgb2gray(handles.data1));
% Konvolusi dengan kernel sobel 3x3
sobelhor = [-1 0 1;-2 0 2;-1 0 1];
sobelver = [-1 -2 -1;0 0 0;1 2 1];
Ix = conv2(I,sobelhor,’same’);
Iy = conv2(I,sobelver,’same’);
J = sqrt((Ix.^2)+(Iy.^2));
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
29
% Pengambangan
thresh = alfa*mean2(abs(J));
If J > thresh
edgeimage = 1;
else
edgeimage = 0;
end
% Mengembalikan nilai matriks menjadi nilai intensitas citra
edgeimage = mat2gray(edgeimage);
Dari algoritma tersebut, maka hasil analisis kinerja metode Sobel terhadap
ketiga parameter yang telah ditentukan, adalah sebagai berikut:
Analisis Kualitas Citra Tepi
Citra yang dijadikan sebagai citra masukan dalam sistem adalah citra asli yang
diperoleh dari hasil pemotretan dengan kamera digital. Artinya, citra ini belum
mengalami proses perbaikan apapun. Sehingga dalam citra tersebut, dianggap masih
terdapat noise yang mungkin dapat mempengaruhi hasil keluaran.
Dalam metode Sobel, variabel yang mempengaruhi hasil keluaran citra ini
adalah nilai Alfa, yaitu faktor pengali yang digunakan pada proses pengambangan.
Semakin besar nilai alfa yang digunakan, nilai pengambangan atau thresh yang
menjadi batasan suatu nilai piksel dapat dikatakan sebagai tepi juga akan semakin
besar.
Karena dalam penelitian ini digunakan citra masukan dengan beberapa tingkat
kualitas resolusi citra, maka nilai alfa yang digunakan harus disesuaikan agar nilai
tersebut dapat digunakan pada keempat jenis citra masukan, yaitu Citra_asli1,
Citra_asli2, Citra_asli3 dan Citra_asli4.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
30
Pada citra masukan dengan tingkat resolusi yang tinggi, nilai pengambangan
ini akan mempengaruhi tepi-tepi yang terbentuk, karena banyak piksel noise yang
akan terdeteksi sebagai tepi. Artinya, citra masukan dengan tingkat resolusi yang
tinggi (Citra_asli3 dan Citra_asli4) akan menghasilkan lebih banyak piksel tepi
dibanding citra masukan dengan tingkat resolusi rendah (Citra_asli1, dan Citra_asli2).
Namun, piksel yang didefenisikan sebagai tepi pada citra masukan dengan tingkat
resolusi tinggi tersebut sebahagiannya adalah berupa noise.
Analisis Timing Run
Ditinjau dari segi waktu pemrosesan (timing run), dalam membandingkan kinerja
metode pendeteksi tepi, metode pendeteksi tepi terbaik adalah yang memiliki waktu
pemrosesan yang paling singkat diantara metode lainnya.
Misalkan waktu yang diperlukan untuk memproses 1 (satu) nilai piksel dari
sebuah citra adalah ‘t’, maka aproksimasi waktu untuk memproses citra pada metode
Sobel adalah sebagai berikut:
Langkah 1:
Pada langkah ini setiap nilai piksel citra diproses dua kali (2t). Pertama, fungsi
rgb2gray yang digunakan untuk mengubah nilai piksel citra masukan
handles.data1 yang berbentuk citra RGB menjadi skala keabuan. Kedua, nilai piksel
yang semula merupakan nilai piksel satu dimensi dikonversi menjadi bentuk dua
dimensi dengan fungsi double. Dan terakhir, mendefenisikan nilai yang telah
diperoleh tadi sebagai I, maka asumsi waktu untuk keempat citra masukan pada
langkah ini adalah:
1. Citra_asli1: Waktu1 = 0,3x10^6(2t)
= 0,6x10^6t
2. Citra_asli2 Waktu1 = 2x10^6(2t)
= 4x10^6t
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
31
3. Citra_asli3 Waktu1 = 7x10^6(2t)
= 14x10^6t
4. Citra_asli4 Waktu1 = 10x10^6(2t)
= 20x10^6t
Langkah 2:
Pada langkah ini, untuk setiap citra masukan terdapat tiga kali pemrosesan (3t).
Pertama, nilai piksel citra I dikonvolusi dengan sobelhor dengan fungsi conv2
untuk mendapatkan nilai Ix. Kedua, nilai piksel citra I dikonvolusi dengan sobelver
dengan fungsi conv2 untuk mendapatkan nilai Iy. Dan terakhir, dari nilai Ix dan Iy
yang telah diperoleh, dihitung gradien dari nilai-nilai tersebut dengan rumus
sqrt((Ix.^2)+(Iy.^2), sehingga diperoleh nilai J. Dari proses-proses tersebut,
maka asumsi waktu untuk tiap citra masukan pada tahap ini adalah:
1. Citra_asli1: Waktu2 = 0,3x10^6(3t)
= 0,9x10^6t
2. Citra_asli2: Waktu2 = 2x10^6(3t)
= 6x10^6t
3. Citra_asli3: Waktu2 = 7x10^6(3t)
= 21x10^6t
4. Citra_asli4: Waktu2 = 10x10^6(3t)
= 30x10^6t
Langkah 3:
Pada tahap ini, bisa terjadi dua sampai empat kali pemrosesan (3t-4t). Hal ini terjadi
karena adanya fungsi if else. Pemrosesan pertama, adalah mencari nilai
pengambangan thresh yang sesuai untuk setiap citra masukan, dengan mengkalikan
variabel alfa dengan fungsi mean2 yang merupakan fungsi untuk mencari nilai rata-
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
32
rata dari nilai mutlak J (abs(J)). Kemudian, setiap nilai piksel yang ada
dibandingkan dengan nilai tersebut, jika lebih besar dari nilai thresh akan dianggap
sebagai tepi dengan mengubah nilai pikselnya menjadi 1, dan jika tidak nilai piksel
diubah menjadi 0. Untuk mengasumsikan waktu pada langkah ini, digunakan asumsi
waktu terbesar (4t) untuk setiap citra masukan, sehingga menjadi:
1. Citra_asli1: Waktu3 = 0,3x10^6(4t)
= 1,2x10^6t
2. Citra_asli2: Waktu3 = 2x10^6(4t)
= 8x10^6t
3. Citra_asli3: Waktu3 = 7x10^6(4t)
= 28x10^6t
4. Citra_asli4: Waktu3 = 10x10^6(4t)
= 40x10^6t
Langkah 4:
Pada langkah ini, nilai piksel 1 (satu) dan 0 (nol) dari pemrosesan langkah sebelumnya
tadi dikembalikan menjadi suatu bentuk tampilan citra dengan mengubah nilai piksel 1
(satu) menjadi warna hitam, dan nilai 0 (nol) menjadi warna putih dengan fungsi
mat2gray. Artinya, pada langkah ini hanya terjadi satu kali pemrosesan (t), sehingga
asumsi waktu untuk tiap citra:
1. Citra_asli1: Waktu4 = 0,3x10^6t
2. Citra_asli2: Waktu4 = 2x10^6t
3. Citra_asli3: Waktu4 = 7x10^6t
4. Citra_asli4: Waktu4 = 10x10^6t
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
33
Dari keempat langkah pemrosesan dengan metode Sobel tersebut, maka
keseluruhan waktu pemrosesan untuk keempat citra masukan tersebut dihitung dengan
menjumlahkan keseluruhan waktu dari setiap tahap, menjadi:
1. Citra_asli1 = 0,6x10^6t + 0,9x10^6t + 1,2x10^6t + 0,3x10^6t
= 3x10^6t
2. Citra_asli2 = 4x10^6t + 6x10^6t + 8x10^6t + 2x10^6t
= 20x10^6t
3. Citra_asli3 = 14x10^6t + 21x10^6t + 28x10^6t + 7x10^6t
= 70x10^6t
4. Citra_asli4 = 20x10^6t + 30x10^6t + 40x10^6t + 10x10^6t
= 100x10^6t
Analisis Sensitivity Rate
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');
% Find the zerocross with thresh value
thresh = alfa.*mean2(abs(J)); edgeimage = edge(J,'zerocross',thresh);
Dari pseudocode algoritma metode LoG tersebut, maka hasil analisis kinerja
metode LoG terhadap ketiga parameter yang telah ditentukan tersebut adalah sebagai
berikut:
Analisis Kualitas Citra Tepi
Metode pendeteksian tepi dengan metode LoG memiliki 2 (dua) variabel yang
mempengaruhi kinerja metode ini, yaitu Alfa dan Sigma. Alfa, seperti halnya metode
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
35
Sobel berfungsi sebagai faktor pengali untuk menentukan nilai pengambangan thresh
pada saat proses menentukan piksel dengan zerocrossing. Sedangkan nilai sigma
merupakan nilai standar deviasi yang diperlukan pada saat proses penghalusan dengan
metode Gaussian.
Semakin besar nilai sigma, maka tingkat kehalusan citra juga semakin tinggi.
Penghalusan dengan metode Gaussian ini dilakukan untuk mengimbangi tingkat
sensitivitas yang tinggi terhadap noise akibat proses konvolusi citra dengan kernel
Laplacian.
Metode LoG ini tidak cocok digunakan untuk mendeteksi tepian pada citra
dengan resolusi yang tinggi. Akibat proses penghalusan dengan fungsi Gaussian objek
yang seharusnya dianggap sebagai tepian tidak mampu terdeteksi lagi oleh metode ini,
dan proses konvolusi dengan kernel laplacian yang sangat sensitif terhadap noise
menyebabkan banyak piksel noise terdeteksi sebagai tepi.
Untuk mengurangi banyaknya noise yang terdeteksi pada metode ini dapat
diimbangi dengan nilai alfa, tapi hal ini juga berakibat pada banyaknya piksel yang
seharusnya tepi menjadi tidak terdeteksi. Karena itu, harus ditentukan nilai sigma dan
alfa yang tepat, dengan mempertimbangkan hasil untuk keempat citra masukan.
Analisis Timing Run
Seperti halnya proses analisis timing run untuk metode Sobel, untuk metode LoG juga
diasumsikan bahwa waktu yang digunakan untuk memproses 1 (satu) nilai piksel pada
citra adalah ‘t’, maka asumsi waktu dalam proses pendeteksian tepi dengan metode
LoG, adalah:
Langkah 1:
Pemrosesan pada langkah pertama untuk metode LoG ini sama persis dengan langkah
pertama pada pemrosesan metode Sobel yaitu terjadi dua kali proses (2t), maka waktu
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
36
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)
= 20x10^6t
Langkah 2:
Pada algoritma ini, terjadi dua kali pemrosesan untuk setiap nilai piksel citra (2t).
Proses pertama melakukan konvolusi nilai I dengan filterx yang merupakan
sebuah kernel yang dibentuk dari turunan kedua fungsi Gaussian untuk nilai x, dan
menghasilkan Ix. Proses kedua, sama dengan proses sebelumnya, hanya saja proses
ini dilakukan pada nilai y dari fungsi Gaussian filtery, sehingga diperoleh nilai Iy.
Sehingga asumsi waktu pada langkah ini adalah:
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)
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
37
= 14x10^6t
4. Citra_asli4: Waktu1 = 10x10^6(2t)
= 20x10^6t
Langkah 3:
Pemrosesan pada langkah terjadi satu kali (t), dimana prosesnya adalah menghitung
nilai gradien dari nilai Ix dan Iy, dimana hasilnya disimpan dalam nilai NVI, maka
asumsi waktu untuk proses ini adalah:
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:
Pada langkah ini, proses yang terjadi adalah konvolusi nilai piksel citra dengan kernel
Laplacian, artinya pada langkah ini hanya terjadi satu kali proses (t), sehingga dapat
diasumsikan bahwa waktu pada proses ini adalah:
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 5:
Setelah semua proses pada langkah pertama sampai langkah keempat tersebut selesai,
langkah selanjutnya adalah mencari persilangan nol (zerocross) dari nilai-nilai piksel
citra tersebut dengan batasan pengambangan alfa. Keseluruhan proses ini terjadi
dalam satu proses (t), sehingga asumsi waktu untuk langkah ini, adalah:
1. Citra_asli1: Waktu1 = 0,3x10^6t
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
38
2. Citra_asli2 Waktu1 = 2x10^6t
3. Citra_asli3 Waktu1 = 7x10^6t
4. Citra_asli4 Waktu1 = 10x10^6t
Keseluruhan waktu pemrosesan untuk keempat citra masukan tersebut dapat
dihitung dengan menjumlahkan setiap waktu pemrosesan dari setiap tahap, menjadi:
1. Citra_asli1 = 0,6x10^6t + 0,6x10^6t + 0,3x10^6t + 0,3x10^6t + 0,3x10^6t
= 2,1x10^6t
2. Citra_asli2 = 4x10^6t + 4x10^6t + 2x10^6t + 2x10^6t + 2x10^6t
= 14x10^6t
3. Citra_asli3 = 14x10^6t + 14x10^6t + 7x10^6t + 7x10^6t + 7x10^6t
= 49x10^6t
4. Citra_asli4 = 20x10^6t + 20x10^6t + 10x10^6t + 10x10^6t + 10x10^6t
= 70x10^6t
Analisis Sensitivity Rate
Metode LoG sangat sensitif terhadap noise, hal ini disebabkan oleh proses konvolusi
citra dengan kernel laplacian. Akibat hal ini, tentunya juga mempengaruhi nilai
sensitivity rate dari keluaran tiap citra masukan untuk metode LoG yang bergantung
pada jumlah piksel yang dinyatakan sebagai tepi pada citra hasil deteksi tepi (nR).
Seperti yang telah disebutkan pada subbab analisis sensitivity rate untuk
metode Sobel, besarnya jumlah piksel yang dinyatakan sebagai tepi pada citra hasil
deteksi tepi akan membuat jumlah piksel yang dinyatakan sebagai tepi pada citra hasil
deteksi tepi yang diberi noise juga semakin besar, dan nilai sensitivity rate juga
semakin besar.
Dari penjelasan tersebut, maka dapat diasumsikan bahwa Citra_asli1 memiliki
nilai sensitivity rate lebih besar dari Citra_asli3, Citra_asli2, dan Citra_asli1.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
39
Citra_asli3 memiliki nilai sensitivity rate lebih besar dari Citra_asli2 dan Citra_asli1,
dan Citra_asli2 memiliki nilai sensitivity rate yang lebih besar dari Citra_asli1.
Analisis Metode Canny
Berikut ini pseudocode dari algoritma metode Canny yang digunakan untuk
menganalisis kinerja metode Canny terhadap parameter-parameter yang telah
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 Gradien
NVI = sqrt(Ix.*Ix+Iy.*Iy);
% Pengambangan
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)));
% Peredaman Titik Non Maksimum
[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);
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:
1. Citra_asli1 = 0,6x10^6t + 0,6x10^6t + 0,3x10^6t + 1,2x10^6t + 2,4x10^6t
= 5,1x10^6t
2. Citra_asli2 = 4x10^6t + 4x10^6t + 2x10^6t + 8x10^6t + 16x10^6t
= 34x10^6t
3. Citra_asli3 = 14x10^6t + 14x10^6t + 7x10^6t + 28x10^6t + 56x10^6t
= 119x10^6t
4. Citra_asli4 = 20x10^6t + 20x10^6t + 10x10^6t + 40x10^6t + 80x10^6t
= 170x10^6t
Analisis Sensitivity Rate
Berbeda dengan metode Sobel dan LoG, jika pada metode-metode tersebut nilai
sensitivity rate dari tiap citra masukan akan semakin besar untuk citra dengan kualitas
resolusi yang juga semakin besar, pada metode Canny hal itu tidak akan terjadi.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
45
Tahap-tahap pada metode Canny yang sangat kompleks membuat metode ini
memiliki ketahanan yang cukup tinggi terhadap noise. Berbeda dengan metode LoG,
karena kesensitivitasannya yang tinggi terhadap noise membuat metode ini
mendefenisikan piksel yang merupakan noise tersebut sebagai sebuah tepi. Dalam
metode Canny, dengan langkah peredaman titik lokal non mkasimum, metode ini
berhasil membedakan mana piksel yang memang sebagai tepi dan mana piksel yang
bukan tepi.
Dengan langkah-langkah pendeteksian tepi yang digunakan pada pendeteksian
tepi metode Canny, metode bekerja maksimal pada citra masukan dengan tingkat
resolusi yang rendah, karena memiliki nilai intensitas yang lebih tinggi untuk setiap
pikselnya dibanding citra dengan tingkat resolusi tinggi.
Hal ini menyebabkan jumlah piksel tepi yang terdeteksi pada citra dengan
resolusi tinggi akan lebih sedikit dibanding dengan jumlah piksel yang terdeteksi
sebagai tepi pada citra dengan kualitas resolusi rendah. Dan ini artinya nilai sensitivity
rate untuk citra dengan resolusi rendah (Citra_asli1 dan Citra_asli2) akan lebih besar
dibanding dengan nilai sensitivity rate untuk citra masukan yang memiliki tingkat
resolusi tinggi (Citra_asli3 dan Citra_asli4).
Akuisisi Data
Setelah melakukan analisis dan sebelum melakukan perancangan, tahap yang harus
dilakukan adalah proses akuisisi data (pengumpulan data). Data disini merupakan
sebuah objek yang akan dicitrakan dengan kamera digital. Data ini berguna sebagai
citra masukan yang akan diujicobakan di dalam sistem yang akan dibangun.
Proses akuisisi data dilakukan dengan melakukan riset langsung pada
Poliklinik Universitas Sumatera Utara (USU). Sampel golongan darah dipilih sebagai
objek riset karena dianggap memiliki karakteristik pola tepi yang khas jika diolah
dengan suatu metode pendeteksi tepi.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
46
Riset dilakukan dengan memotret salah satu tipe golongan darah manusia (tipe
AB0) menggunakan 4 (empat) buah kamera digital dengan tingkat resolusi yang
berbeda, yaitu 0,3 (nol koma tiga) megapiksel, 2 (dua) megapiksel, 7 (tujuh)
megapiksel, dan 10 (sepuluh) megapiksel. Keseluruhan citra hasil akuisisi ini
disimpan dalam format jpeg ‘.jpg’ dengan tujuan untuk memudahkan proses
pengolahannya dalam aplikasi yang dibangun membangun bahasa pemrograman
Matlab 7.5.0. Gambar 3.1 merupakan gambar objek hasil akuisisi data yang digunakan
sebagai masukan dalam aplikasi.
Gambar 3.1 Data Masukan
Perancangan Sistem
Perancangan merupakan tahap kedua dari siklus hidup pengembangan sistem. Dalam
penulisan Tugas Akhir ini, tahap perancangan merupakan suatu tahap yang dilakukan
karena dianggap dapat memudahkan proses analisis terhadap kesesuaian hasil yang
diperoleh dengan analisis secara keilmuan. Dalam proses perancangan, hal yang harus
diperhatikan adalah bagaimana membangun sebuah sistem yang dapat menunjukkan
hasil penelitian, yang ditampilkan secara grafis. Dalam sistem tersebut, juga
menampilkan segala informasi yang berhubungan dengan penelitian.
Perancangan DFD dan Spsesifikasi Proses
Pemodelan sistem yang dibangun digambarkan dengan diagram aliran data (Data
Flow Diagram) yang menunjukkan bagaimana data diproses oleh sistem atau
bagaimana data mengalir dalam serangkaian pemrosesan. Keuntungan penggunanan
DFD adalah memudahkan pemakai yang kurang menguasai bidang komputer untuk
mengerti sistem yang akan dikerjakan atau dikembangkan.
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
47
P.0
Metode Pendeteksi Tepi Sobel, LoG dan
Canny
user
citra_asli
data hasil
Ada 2 teknik dasar DFD yang umum dipakai yaitu Gane and Sarson dan
Yourdan and DeMarco. Pada tugas akhir ini teknik dasar DFD yang digunakan adalah
Yourdan and DeMarco. Gambar 3.2 memperlihatkan DFD level 0 dari sistem yang
akan dirancang.
Gambar 3.2 DFD Level 0
DFD level 0 di atas memperlihatkan sistem secara garis besar yang terdiri dari
masukan, proses, dan keluaran dari sistem yang akan dirancang. Proses yang terjadi
pada DFD level 0 tersebut dapat dijelaskan melalui spesifikasi proses pada Tabel 3.1.
Tabel 3.1 Spesifikasi Proses DFD Level 0
No/Nama
Proses Input Keterangan Proses Output
P.0/Metode
Pendeteksi Tepi
Sobel, LoG dan
Canny
Citra_asli Mendeteksi tepi sebuah citra dengan
format JPEG (.jpg) dengan metode Sobel,
LoG, dan Canny, serta menghitung nilai
Sensitivity Rate dan Timing Run-nya.
data_hasil
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
48
Selanjutnya DFD level 0 diatas dapat dijabarkan lebih luas lagi dengan
memecah Proses 0 ke dalam proses-proses yang lebih kecil. Penjabaran tersebut
disebut sebagai DFD Level 1 yang diperlihatkan pada Gambar 3.3.
Gambar 3.3 DFD Level 1
Penjelasan mengenai proses-proses yang terjadi pada DFD level 1 tersebut
dapat dilihat dalam Tabel 3.2.
Tabel 3.2 Spesifikasi Proses DFD Level 1
No/Nama
Proses Input Keterangan Proses Output
P.1/Proses
Deteksi
Tepi Sobel
Citra_asli Mendeteksi tepi citra dengan metode
Sobel, dan menghitung nilai Sensitivity
Rate dan Timing Run-nya.
hasil_sobel
P.2/Proses
Deteksi
Tepi LoG
Citra_asli Mendeteksi tepi citra dengan metode
LoG, dan menghitung nilai Sensitivity
Rate dan Timing Run-nya.
hasil_LoG
P.3/Proses
Deteksi
Tepi Canny
Citra_asli Mendeteksi tepi citra dengan metode
Canny, dan menghitung nilai
Sensitivity Rate dan Timing Run-nya.
hasil_canny
P.2 Proses
Deteksi Tepi LoG
P.3 Proses
Deteksi Tepi Canny
P.1 Proses
Deteksi Tepi Sobel
user
citra_asli
hasil_sobel citra_asli citra_asli
hasil_LoG
hasil_canny
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
49
Proses 1 (P.1) dari DFD level 1 di atas terdiri atas 5 (lima) proses utama yang
terjadi didalamnya, aliran data yang terjadi pada proses ini disebut sebagai DFD level
2 Proses P.1 Deteksi Tepi Sobel, diperlihatkan pada Gambar 3.4.
Gambar 3.4 DFD Level 2 Proses P.1 Deteksi Tepi Sobel
Untuk spesifikasi proses yang terjadi pada DFD level 2 proses P.1 ini
ditunjukkan pada Tabel 3.3.
Tabel 3.3 Spesifikasi Proses DFD Level 2 Proses P.1 Deteksi Tepi Sobel
No/Nama
Proses Input Keterangan Proses Output
P.1.1/Proses
Tampil Citra
Masukan
citra_asli Mencari sebuah file citra asli
(masukan) dan
menampilkannya.
data_citra_asli1,
data_citra_asli2
P.1.2/Proses
Tampil Citra
Hasil Deteksi
Tepi Sobel
data_citra_asli Menampilkan citra yang
telah diproses dengan
metode pendeteksi tepi
Sobel.
citra_tepi_sobel,
piksel_sobel1,
waktu_sobel1,
waktu_sobel2
P.1.3/Proses
Tambah Noise
citra_tepi_sobel Citra hasil deteksi tepi Sobel
disisipi noise dengan nilai
tertentu.
piksel_sobel2
user
P.1.2 Proses Tampil Citra Hasil Deteksi Tepi
Sobel
data_citra _asli1
nilai_tr_sobel
P.1.1 Proses
Tampil Citra Masukan
P.1.3 Proses Tambah
Noise
P.1.4 Proses Hitung
Sensitivity Rate
P.1.5 Proses Hitung Timing Run
citra_asli
piksel_ sobel1
nilai_sr_sobel
waktu_sobel1, waktu_sobel2
citra_tepi _sobel
piksel_sobel2
citra_tepi_sobel
data_citra _asli2
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
50
P.1.4 /Proses
Hitung
Sensitivity Rate
piksel_sobel1,
piksel_sobel2
Menghitung nilai sensitivity
rate dari pendeteksi tepi
sobel.
nilai_sr_sobel
P.1.5/Proses
Hitung Timing
Run
waktu_sobel1,
waktu_sobel2
Menghitung nilai timing run
dari proses pendeteksian tepi
dengan metode Sobel.
nilai_tr_sobel
Untuk penjabaran proses P.2 Deteksi Tepi LoG dari DFD level 1, juga terdapat
5 (lima) proses utama. Gambar 3.5 memperlihatkan hasil penjabaran DFD Level 2
Proses P.2.
Gambar 3.5 DFD Level 2 Proses P.2 Deteksi Tepi LoG
Dan untuk tabel spesifikasi proses dari DFD Level 2 Proses P.2 tersebut dapat
dilihat pada Tabel 3.4.
Tabel 3.4 Spesifikasi Proses DFD Level 2 Proses P.2 Deteksi Tepi LoG
No/Nama Proses Input Keterangan Proses Output
P.1.1/Proses
Tampil Citra
Masukan
Citra_asli Mencari sebuah file citra asli
(masukan) dan
menampilkannya.
data_citra_asli1,
data_citra_asli2
P.1.2/Proses
Tampil Citra Hasil
Deteksi Tepi LoG
data_citra_asli Menampilkan citra yang telah
diproses dengan metode
pendeteksi tepi LoG.
citra_tepi_LoG,
piksel_LoG1,
waktu_LoG1,
waktu_LoG2
P.1.3/Proses citra_tepi_LoG Citra hasil deteksi tepi Sobel piksel_LoG2
user
P.1.2 Proses Tampil Citra Hasil Deteksi Tepi
LoG
data_citra _asli1
nilai_tr_LoG
P.1.1 Proses
Tampil Citra Masukan
P.1.3 Proses Tambah
Noise
P.1.4 Proses Hitung
Sensitivity Rate
P.1.5 Proses Hitung Timing Run
citra_asli
piksel _LoG1
nilai_sr_LoG
waktu_LoG1, waktu_LoG2
citra_tepi_LoG
citra_tepi _LoG
piksel_LoG2
data_citra _asli2
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
51
Tambah Noise disisipi noise.
P.1.4/Proses Hitung
Sensitivity Rate
piksel_LoG1,
piksel_LoG2
Menghitung nilai sensitivity
rate dari pendeteksi tepi LoG.
nilai_sr_LoG
P.1.5/Proses Hitung
Timing Run
waktu_LoG1,
waktu_LoG2
Menghitung nilai timing run
dari proses pendeteksian tepi
dengan metode LoG.
nilai_tr_LoG
Sedangkan untuk Proses P.3 Deteksi Tepi Canny dari DFD level 1 di atas juga
dijabarkan ke dalam 5 (lima) proses utama menjadi DFD Level 2 Proses P.3. Proses-
proses tersebut dapat dilihat pada Gambar 3.6.
Gambar 3.6 DFD Level 2 Proses P.3 Deteksi Tepi Canny
Spesifikasi dari proses-proses pada DFD Level 2 Proses P.3 di atas, dijelaskan
dalam Tabel 3.5.
Tabel 3.5 Spesifikasi Proses DFD Level 2 Proses P.3 Deteksi Tepi Canny
No/Nama
Proses Input Keterangan Proses Output
P.1.1/Proses
Tampil Citra
Masukan
citra_asli Mencari sebuah file citra asli
(masukan) dan
menampilkannya.
data_citra_asli1,
data_citra_asli2
P.1.2/Proses
Tampil Citra
Hasil Deteksi
data_citra_asli Menampilkan citra yang
telah diproses dengan
metode pendeteksi tepi
citra_tepi_canny,
piksel_canny1,
waktu_canny1,
user
P.1.2 Proses Tampil Citra Hasil Deteksi Tepi
Canny
data_citra _asli1
nilai_tr_canny
P.1.1 Proses
Tampil Citra Masukan
P.1.3 Proses Tambah
Noise
P.1.4 Proses Hitung
Sensitivity Rate
P.1.5 Proses Hitung Timing Run
citra_asli
piksel_ canny1
nilai_sr_canny
waktu_canny1, waktu_canny2
citra_tepi_canny
citra_tepi _canny
piksel_ canny2 data_citra
_asli2
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
52
Tepi Canny Canny. Waktu_canny2
P.1.3/Proses
Tambah Noise
citra_tepi_canny Citra hasil deteksi tepi Sobel
disisipi noise dengan nilai
tertentu.
piksel_canny2
P.1.4 /Proses
Hitung
Sensitivity Rate
piksel_canny1,
piksel_canny2
Menghitung nilai sensitivity
rate dari pendeteksi tepi
Canny.
nilai_sr_canny
P.1.5/Proses
Hitung Timing
Run
waktu_canny1,
waktu_canny2
Menghitung nilai timing run
dari proses pendeteksian tepi
dengan metode Canny.
nilai_tr_canny
Perancangan Kamus Data
Kamus data merupakan suatu data yang disusun untuk memudahkan proses analisis
dan desain. Dengan kamus data pemakai dan analis sistem akan memiliki pemahaman
yang umum mengenai input, output, dan komponen penyimpanan. Tabel 3.6
merupakan tabel yang memperlihatkan kamus data untuk menjelaskan setiap aliran
data pada DFD yang telah dijelaskan sebelumnya.
Tabel 3.6 Kamus Data
No. Nama Tipe Data Deskripsi 1. Citra_asli Image citra_asli = *file citra asli dengan ekstensi .jpg* 2. Data_citra_asli1 Array[0..255]
of integer data_citra_asli = *berupa matriks nilai piksel citra asli*
3. Data_citra_asli2 data_citra_asli2 = nama_file + ukuran_file - nama_file String nama_file = *nama citra asli dalam ekstensi .jpg* - ukuran_file String ukuran_file = *ukuran citra asli dgn satuan piksel*
4. Data_hasil data_hasil = hasil_sobel + hasil_LoG + hasil_canny 5. Hasil_sobel hasil_sobel = citra_tepi_sobel + nilai_sr_sobel +
nilai_tr_sobel - citra_tepi_sobel Image citra_tepi_sobel = *citra asli setelah diproses
dengan metode sobel*
Afnisyah Taurisna : Analisis Pengaruh Kualitas Resolusi Citra Terhadap Kinerja Metode Pendeteksi Tepi, 2010.
53
- nilai_sr_sobel Floating Point
nilai_sr_sobel = |piksel_sobel2 – piksel_sobel1| : piksel_sobel1
- nilai_tr_sobel Integer nilai_tr_sobel = waktu_sobel2 – waktu_sobel1 6. Hasil_LoG hasil_LoG = citra_tepi_LoG + nilai_sr_LoG +
nilai_tr_LoG - citra_tepi_LoG Image citra_tepi_LoG = *citra asli setelah diproses dengan
metode LoG* - nilai_sr_sobel Floating
Point nilai_sr_LoG = |piksel_LoG2 – piksel_LoG1| : piksel_LoG1
- nilai_tr_sobel Integer nilai_tr_LoG = waktu_LoG2 – waktu_LoG1 7. Hasil_canny hasil_canny = citra_tepi_canny + nilai_sr_canny +
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.
www.ilkom.fmipa.ipb.ac.id/~yeni/files/ppcd/Kuliah%2007%20Edge%20Detection.pdf
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
Offset.
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.
117
Lampiran A. Listing program Kode program form menu utama: unit UMenutama; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, XPMan; type TFMenutama = class(TForm) BDiagnosis: TBitBtn; BLaporan: TBitBtn; BUpdate: TBitBtn; BPetunjuk: TBitBtn; BTentang: TBitBtn; BKeluar: TBitBtn; lblNama: TLabel; Timer1: TTimer; XPManifest1: TXPManifest; S: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; procedure Timer1Timer(Sender: TObject); procedure default; procedure BDiagnosisClick(Sender: TObject); procedure BLaporanClick(Sender: TObject); procedure BUpdateClick(Sender: TObject); procedure BPetunjukClick(Sender: TObject); procedure BTentangClick(Sender: TObject); procedure BKeluarClick(Sender: TObject); private n: integer; { Private declarations } public
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.
139
Kode program form submenu edit pertanyaan: unit UEditPertanyaan; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons, DB, mySQLDbTables, ZAbstractRODataset, ZAbstractDataset, ZDataset; type TFEditPertanyaan = class(TForm) Image1: TImage; Label1: TLabel; Label2: TLabel; BUbah: TBitBtn; BBatal: TBitBtn; Query12: TmySQLQuery; ComboBox1: TComboBox; Query1: TZQuery; Query2: TZQuery; Memo1: TMemo; procedure BBatalClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BUbahClick(Sender: TObject); procedure ComboBox1Change(Sender: TObject); private { Private declarations } public { Public declarations } tanya:TSTringList; end; var FEditPertanyaan: TFEditPertanyaan; implementation uses DataModule, UDiagnosis; {$R *.dfm} procedure TFEditPertanyaan.BBatalClick(Sender: TObject); begin FEditPertanyaan.Close;
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.
148
Kode program form submenu edit pertanyaan: unit UEditJawaban; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, DB, mySQLDbTables, ZAbstractRODataset, ZAbstractDataset, ZDataset; type TFEditJawaban = class(TForm) ComboBox1: TComboBox; BUbah: TBitBtn; BBatal: TBitBtn; Label1: TLabel; Label3: TLabel; EdPenyakit: TEdit; Label5: TLabel; Memo1: TMemo; Query12: TmySQLQuery; Query1: TZQuery; Query2: TZQuery; Image1: TImage; procedure BBatalClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BUbahClick(Sender: TObject); private { Private declarations } public { Public declarations } tanya:TStringList; end; var FEditJawaban: TFEditJawaban; implementation uses DataModule, UDiagnosis; {$R *.dfm}
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.
Recommended