IDENTIFIKASI TUMBUHAN KACANG-KACANGAN (PAPILIONACEAE) MENGGUNAKAN SISTEM PAKAR DENGAN PENDEKATAN FORWARD CHAINING
TAUFIQ 104091002887
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA 2010 M / 1431 H
HALAMAN PERSEMBAHAN
Penulis dapat menyelesaikan skripsi ini tidak lepas dari doa dan dukungan dari banyak pihak. Maka perkenankanlah penulis untuk mengucapkan terima kasih yang sebesar-besarnya kepada : 1. Ibunda Siti Rahmah dan Ayahanda Masrikan, yang tidak pernah berhenti mendoakan, dan mendukung penulis dengan penuh kasih sayang. Terima kasih atas semua pengorbanan, usaha dan jerih payah Bunda dan Ayah untuk selalu membuat penulis merasa bahagia. 2. Kakakku, Nurul Huda Ahmad dan Adikku, Ani Musa Rofah, yang selalu penulis banggakan dan sayangi sepenuh hati 3. K.H. Ali Mustofa Ya’kub yang telah membimbing dan memberi pencerahan kepada penulis di semua bidang. 4. Intan Khairiyah, atas semua bentuk dukungan, motivasi dan kasih sayang yang selalu menemani hari-hari penulis. 5. Teman-teman TI C 2004 : Alvin, Wahyuni, Syukrina, Hani, Endah, Eni, Desi, Ziah, Sarah, Arie Sur, Rizal, Rahmat, Kautsarina, Budi, Asep, Malik, Sidiq, Fajar, Dwi, Rahmat Hidayat, Agil dan Egi. Terima kasih atas keceriaan, dukungan dan motivasi yang selalu kalian tunjukkan, terutama pada saat-saat sulit yang penulis alami, sehingga menumbuhkan semangat baru untuk penulis 6. Teman-teman Darus-Sunnah khususnya angkatan 2008. 7. Teman-teman TI dan SI seluruh angkatan.
viii
Semoga Allah selalu melimpahkan rahmat dan karunia-Nya kepada kalian semua dan melindungi kalian di setiap langkah.
Jakarta, Nopember 2010
Penulis
ix
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR – BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.
Jakarta, Nopember 2010
Taufiq NIM. 104091002887
iv
ABSTRAK TAUFIQ. Identifikasi Tumbuhan Kacang-Kacangan (Papilionaceae) Menggunakan Sistem Pakar dengan Pendekatan Forward Chaining. Di bawah bimbing PRIYANTI dan VICTOR AMRIZAL.
Klasifikasi adalah kegiatan taksonomi yang mengelompokan makhluk hidup ke dalam sistem klasifikasi yang berlaku internasional. Pengklasifikasian perlu dilakukan karena keanekaragamannya makhluk hidup yang ada di bumi dengan tujuan agar mudah mengelompokan dan mengidentifikasinya berdasarkan persamaan ciri-ciri yang dimiliki.Indonesia adalah Negara yang kaya akan keaneragaman hayati terutama tumbuhan ( +28 ribu jenis). Papilionaceae merupakan tanaman penghasil komoditi yang berharga, bahan pangan dengan nilai gizi yang tinggi karena kandungannya akan protein, lemak, dan vitamin-vitamin dalam bijinya. Polong yang muda, demikian pula daun-daun muda jenis-jenis tertentu banyak yang dimakan sebagai sayuran. Namun masih sedikit sekali yang sudah tergali potensinya dan masih banyak penduduk yang belum mengetahui nama-nama tumbuhan tersebut. Padahal tanaman tersebut ditanam di pekarangan ataupun di ladang penduduk. Oleh karena itu, diperlukan aplikasi untuk pengidentifikasian tumbuhan untuk membantu orang dalam mengenali dan mempelajari tentang tumbuhan khususnya Papilionaceae. Identifikasi ini dapat dilakukan dengan optimal menggunakan sistem pakar dengan pendekatan forward chaining. Sistem pakar adalah bentuk sistem yang mengadopsi kemampuan manusia sehingga komputer mempunyai kemampuan layaknya seorang pakar. forward chaining adalah penalaran dari fakta menuju konklusi yang dihasilkan dari fakta. Pada tugas akhir ini akan dirancang sebuah aplikasi identifikasi tumbuhan kacang-kacangan (Papilionaceae) menggunakan sistem pakar dengan pendekatan forward chaining. Aplikasi ini dibuat dengan menggunakan bahasa pemograman MATLAB 2009 dan metode pengembangan sistemnya adalah RAD (Rapid Aplication Development) karena aplikasinya yang sederhana dan tidak memerlukan waktu yang lama dalam pengembangannya serta RAD akan bekerja dengan baik bila diterapkan pada aplikasi berskala kecil. Hasil yang diperoleh adalah dengan menggunakan metode forward chaining tumbuhan Paplilionaceae dapat diidentifikasi dengan baik. Kata kunci: sistem pakar, klasifikasi, Papilionanceae, forward chaining, RAD, Matlab 2009.
v
KATA PENGANTAR
Assalamualaikum wr.wb. Syukur yang amat dalam penulis panjatkan kepada Allah SWT yang tiada hentinya memberikan nikmat kepada penulis khususnya keimanan, waktu dan kesehatan. Shalawat serta salam semoga senantiasa tercurah kepada Rasulullah SAW yang sangat menyayangi umatnya dan telah membawa kita kepada zaman yang terang benderang. Skripsi yang berjudul IDENTIFIKASI TUMBUHAN KACANGKACANGAN
(PAPILIONACEAE) MENGGUNKAN SISTEM PAKAR
DENGAN PENDEKATAN FORWARD CHAINING merupakan salah satu tugas wajib mahasiswa sebagai persyaratan untuk mengambil gelar S1 pada Program Studi Teknik Informatika Universitas Islam Negeri Syarif Hidayatullah Jakarta. Penulis mendapat bimbingan dan bantuan dari berbagai pihak dalam penyusunan skripsi ini. Oleh karena itu, perkenankanlah pada kesempatan ini penulis mengucapkan terima kasih kepada : 1. Bapak DR. Syopiansyah Jaya Putra, M.Sis, selaku Dekan Fakultas Sains dan Teknologi. 2. Bapak Yusuf Durrachman, M.IT., selaku Ketua Program Studi Teknik Informatika, Bapak Rivo Agusta, Hendra, Syamsul selaku Administrasi Akademik, dan seluruh pihak akademik, baik tingkat program studi maupun tingkat fakultas.
vi
3. Ibu Priyanti, M.Si dan Bapak Victor Amrizal, M.Kom, selaku dosen pembimbing skripsi, yang secara kooperatif telah memberikan bimbingan, bantuan dan dukungan, baik moral maupun secara teknis. Terima kasih banyak atas kesediaan Ibu dan Bapak yang telah meluangkan waktu, tenaga dan pikirannya untuk membimbing penulis dalam penyusunan skripsi ini. 4. Seluruh dosen yang telah membagikan ilmunya kepada penulis dengan sabar dan ikhlas. Pada kesempatan ini pula, penulis ingin memohon maaf yang sebesarbesarnya kepada semua pihak apabila sewaktu mengerjakan skripsi ini terdapat hal-hal yang kurang berkenan. Penulis menyadari bahwa masih banyak kekurangan dari laporan skripsi ini, baik dari materi maupun teknik penyajiannya, mengingat minimnya pengetahuan dan pengalaman penulis. Semoga laporan skripsi ini dapat memenuhi syarat dan bermanfaat bagi siapa saja yang membacanya. Wassalamualaikum wr.wb. Jakarta, Nopember 2010
Penulis
vii
DAFTAR ISI Halaman Judul................................................................................................
i
Halaman Persetujuan Pembimbing.................................................................
ii
Halaman Pengesahan Ujian............................................................................
iii
Halaman Pernyataan.......................................................................................
iv
ABSTRAK......................................................................................................
v
KATA PENGANTAR....................................................................................
vi
HALAMAN PERSEMBAHAN.....................................................................
viii
DAFTAR ISI................................................................................................... x DAFTAR GAMBAR......................................................................................
xiv
DAFTAR TABEL........................................................................................... xvi DAFTAR LAMPIRAN................................................................................... xvi DAFTAR ISTILAH........................................................................................
xvii
BAB I PENDAHULUAN 1.1
Latar Belakang..............................................................................
1.2
Perumusan Masalah....................................................................... 2
1.3
Pembatasan Masalah.....................................................................
1.4
Tujuan Penelitian........................................................................... 3
1.5
Manfaat Penelitian......................................................................... 3
1.6
Metodologi Penelitian...................................................................
1.7
1
2
4
1.6.1
Metode Pengumpulan Data …………………………... 4
1.6.2
Metode Pengembangan Sistem ……………………....
4
Sistematika Penulisan.................................................................... 5
x
BAB II LANDASAN TEORI 2.1
2.2
Kecerdasan Buatan....................................................................... 7 2.1.1
Definisi Kecerdasan Buatan............................................ 7
2.1.2
Sejarah Kecerdasan Buatan............................................. 8
Sistem Pakar ................................................................................ 9 2.2.1
Keuntungan Sistem Pakar .............................................
10
2.2.2
Kelemahan Sistem Pakar...............................................
10
2.2.3
Konsep Dasar Sistem Pakar ..........................................
11
2.2.4
Bentuk Sistem Pakar .....................................................
11
2.2.5
Struktur Sistem Pakar ...................................................
12
2.2.6
Forward Chaining ......................................................... 15
2.2.7
Backward Chaining ......................................................
16
2.3
Computer Vision..........................................................................
16
2.4
Digital Image Processing............................................................
17
2.4.1
Pengertian Citra............................................................... 17
2.4.2
Image Processing............................................................
19
2.4.3
Pendeteksian Tepi (Edge Detectioan).............................
21
2.5
Klasifikasi tumbuhan…………………………………………...
25
2.6
MATLAB (Matrix Laboratory)...................................................
28
2.6.1
Sekilas Tentang Matlab..................................................
28
2.6.2
Cara Bekerja Dengan Matlab.........................................
30
2.6.3
Perintah Kontrol………………………………………. 30 2.6.3.1 Struktur Kendali………………….……..…… 30
xi
2.6.3.2 Struktur Perulangan…………………….……
32
2.6.4
Membentuk Fungsi…..……...………….….………...
32
2.6.5
GUIDE………………………………….….………….
34
2.6.5.1 Memulai GUIDE………………..….………... 34 2.6.5.2 Komponen GUIDE………...……………..….
36
2.7
RGB ………………………………………………...………….
40
2.8
JPEG …………………………………………………………...
40
BAB III METODOLOGI PENELITIAN 3.1
Studi Pustaka................................................................................ 42
3.2
Observasi Lapangan..................................................................... 43
3.3
Model-Model Metode Pengembangan Sistem ........................... 43
3.4
Perbedaaan Metode Pengembangan Sistem................................. 43
3.5
Pemilihan Metode ……………………………………………...
45
3.5.1 Teknik Pengumpulan Data............................................... 45 3.5.2 Metode Pengembangan Sistem........................................
46
3.5.2.1 Fase Menentukan Syarat-Syarat.....................
47
3.5.2.2 Fase Perancangan............................................ 48 3.5.2.3 Fase Konstruksi............................................... 48 3.5.2.4 Fase Pelaksanaan ...........................................
48
BAB IV HASIL DAN PEMBAHASAN 4.1
Fase Menentukan Tujuan dan Syarat-syarat..................................
50
4.1.1
Mendefinisikan Masalah..................................................
50
4.1.2
Analisa Kebutuhan Masalah............................................
50
xii
4.2
4.3
4.4
4.1.3
Tujuan Informasi………………………………………..
52
4.1.4
Syarat-syarat Informasi…………………………………
52
Fase Perancangan...........................................................................
53
4.2.1
Perancangan Antar Muka.................................................
58
4.2.2
Form Pembuka.................................................................
58
4.2.3
Form Utama.....................................................................
60
Fase Konstruksi..............................................................................
61
4.3.1
Instalasi Program...........................................................
61
4.3.2
Menjalankan Software Matlab.......................................
62
4.3.3
Mengatur Tata Letak Komponen GUI........................... 63
4.3.4
Memprogram Komponen GUI....................................... 65
4.3.5
Menjalankan Program.................................................... 67
Fase Pelaksanaan............................................................................
67
4.4.1
Spesifikasi Minimum Kebutuhan Aplikasi.................... 68
4.4.2
Fitur dalam Aplikasi…...................................................
68
4.4.2
Proses Pengujian Aplikasi.............................................
70
4.4.3
Hasil Penelitian..............................................................
71
BAB V PENUTUP 5.1
Kesimpulan..................................................................................... 73
5.2
Saran...............................................................................................
73
DAFTAR PUSTAKA .................................................................................
74
Lampiran A ....................................................................................................
76
Lampiran B ....................................................................................................
77
xiii
xiv
xv
DAFTAR GAMBAR
Gambar 2.1
Struktur Sistem Pakar. …………………………………….
13
Gambar 2.2
Proses Forward Chaining……….…………….…………..
15
Gambar 2.3
Proses Backward Chaining……….……………………….
16
Gambar 24
Kernel Operator Prewitt…………………………………...
23
Gambar 2.5
Memulai GUIDE…………………………………………..
35
Gambar 2.6
GUIDE Quick Start………………………………………..
35
Gambar 2.5
Menu Utama GUIDE………………………………………
36
Gambar 2.6
Komponen UIControl……………………………………..
37
Gambar 2.7
Color Values .….…………………………………..………
40
Gambar 3.1
Skema Pengembangan Sistem RAD……………….………
47
Gambar 4.1
Citra Grayscale …………………………………………...
53
Gambar 4.2
Citra Black & White ……………………………………….
54
Gambar 4.3
Citra Hasil Operator Sobel ………………………………...
54
Gambar 4.4
Alur Kerja Identifikasi Tumbuhan Papilionaceae ………..
57
Gambar 4.5
Perancangan Form Pembuka………………………………
59
Gambar 4.6
Perancangan Form Utama………………………………….
60
Gambar 4.7
Menjalankan Software Matlab…..…………………………
62
Gambar 4.8
Tampilan Awal Software Matlab…………………………..
62
Gambar 4.9
Membuat GUI Baru………………………………………..
63
Gambar 4.10 Halaman Kerja GUI…………….…………….……………
64
xiv
Gambar 4.11 Contoh Pengaturan Tata Letak Komponen pada GUI
Matlab……………………………………………………... 64 Gambar 4.12
Membuka
M-File
dari
Figure
GUI
yang
Telah
Dirancang…………………………………………………
65
Gambar 4.13
Tampilan M-File dari Figure GUI……………….…….…
66
Gambar 4.14
Menyisipkan Kode Program pada Fungsi Callback….......
66
Gambar 4.15
Menjalankan
Kode
Program
M-File
yang
Telah
Ditulis…..………….……………………………………..
67
Gambar 4.16
Tampilan Menu Pembuka..........…………… ………...…
69
Gambar 4.17
Tampilan Menu Utama……….………………………….
69
Gambar 4.18
Tampilan Membuka Gambar…..…………………….…..
70
Gambar 4.19 Tampilan Processing………………………………….….
70
xv
DAFTAR ISTILAH
: Proses otomatis yang mengintegrasikan sejumlah
Computer vision
besar proses untuk persepsi visual Deteksi
tepi
(Edge : Operasi yang dijalankan untuk mendeteksi garis
detection)
tepi (edges) yang membatasi dua wilayah citra homogen yang memiliki tingkat kecerahan yang berbeda
Forward Chaining
: Penalaran dari fakta menuju konklusi
Grayscale
: Citra wajah abu-abu
Klasifikasi
: Menyederhanakan
obyek-obyek
yang
beranekaragam tersebut dengan cara mencari persamaan-persamaan tertentu yang dimiliki oleh obyek-obyek tersebut Matriks
: Array dua dimensi yang terdiri dari baris dan kolom
RAD
: Singkatan dari Rapid Application Development, merupakan salah satu metode pengembangan sistem yang diperkenalkan James Martin pada tahun 1991
RGB
: Singkatan dari RED (merah), GREEN (hijau), dan BLUE (biru)
xvii
Tepi (edge)
: Perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat
Vektor
: Matriks yang hanya terdiri dari satu baris atau satu kolom
xviii
BAB I PENDAHULUAN
1.1 Latar Belakang Biologi adalah suatu bidang yang mempelajari seluk beluk tentang kehidupan dan unsur-unsur yang menopang berlangsungnya kehidupan itu sendiri. Taksonomi adalah salah satu cabang ilmu Biologi yang mempelajari klasifikasi dan tata nama pada makhluk hidup (Campbell, 2000). Pengklasifikasian perlu dilakukan karena keanekaragamannya makhluk hidup yang ada di bumi beranekaragam
sehingga
perlu
dikelompokan
dan
mengidentifikasinya
berdasarkan persamaan ciri-ciri yang dimiliki (Pratiwi dkk, 2006) Kegunaan adanya pengelompokan atau klasifikasi dari makhluk hidup ini berperan penting untuk mengetahui peranan dari masing-masing jenis. Sejak zaman Aristoteles hingga pertengahan abad ke-20, para pakar Biologi membagi makhluk hidup menjadi dua kingdom, yaitu Plantae (tumbuhan) dan Animalia (hewan) (Pratiwi dkk, 2006). Seiring
dengan
berkembangnya
zaman
dan
teknologi
maka
pengklasifikasian makhluk hidup dibagi menjadi lima kingdom yaitu : protesta, monera, animalia, plantae dan fungi (Campbell, 2000). Tata nama adalah cara pemberian nama ilmiah pada makhluk hidup dengan mengacu pada aturan-atuaran penamaan ilmiah yang telah ditetapkan. Klasifikasi adalah kegiatan taksonomi yang mengelompokan makhluk hidup ke dalam satu sistem klasifikasi yang berlaku internasional.
1
2
Indonesia adalah negara yang kaya akan keaneragaman hayati terutama tumbuhan (+28 ribu jenis). Papilionaceae merupakan tanaman penghasil komoditi yang berharga sebagai bahan pangan dengan nilai gizi yang tinggi karena kandungannya akan protein, lemak, dan vitamin-vitamin dalam bijinya. Polong yang muda, demikian pula daun-daun muda jenis-jenis tertentu banyak yang dimakan sebagai sayuran. Namun masih sedikit sekali yang sudah tergali potensinya dan masih banyak penduduk yang belum mengetahui nama-nama tumbuhan tersebut. Padahal tanaman dari suku Papilionaceae ini sering ditanam di pekarangan atau di ladang para penduduk. Oleh karena itu, diperlukan aplikasi untuk pengidentifikasian tumbuhan yang dapat membantu orang dalam mengenali dan mempelajari tentang tumbuhan khususnya Papilionaceae.
1.2
Perumusan Masalah Dengan didasari oleh latar belakang tersebut, maka dibuat perumusan
masalah sebagai berikut : 1. Bagaimana mendapatkan sebuah informasi pengklasifikasian tumbuhan Papilionanceae dengan menggunakan sistem pakar dengan metode forward chaining dan dibantu dengan software Matlab 2009. 2. Bagaimana image daun dapat dijadikan inputan dalam sistem pakar
1.3
Pembatasan Masalah Pembatasan masalah pada penelitian ini sebagai berikut : 1) Input adalah gambar daun asli yang di scan dengan format JPEG.
3
2) Input image daun hanya yang penulis temukan di lapangan. 3) Pengukuran daun hanya pada aspek rasio, form faktor, pucuk daun dan diagonal daun. 4) Daun yang digunakan adalah daun dewasa dan tidak boleh cacat 5) Pengamatan yang dilakukan dalam pengklasifikasian ini hanya terbatas pada ciri fisik daun Papilionaceae. 6) Ukuran daun adalah 3cm x 3cm 7) Posisi pucuk daun berada di tengah atas dan pangkal daun berada di tengah bawah. 8) Outputnya adalah nama tumbuhan. 9) Update data dilakukan secara manual. 10) Aplikasi dibuat dengan menggunakan MATLAB 2009 11) Aplikasi yang dibuat hanya dapat dijalankan dengan komputer yang memiliki platform windows. 12) Tumbuhan yang disertakan dalam Aplikasi hanya contoh dari tumbuhan kacang-kacangan (Papilionaceae) dan tidak semua daftar tumbuhan kacang-kacangan (Papilionaceae) disertakan dalam aplikasi.
1.4
Tujuan Penelitian Tujuan dari penelitian ini adalah untuk mengkasifikasikan tumbuhan
Papilionaceae dengan daun sebagai objeknya dan komputer sebagai medianya.
1.5
Manfaat Manfaat dari penulisan penelitian ini antara lain :
4
1) Memahami pengklasifikasian tumbuhan Papilionaceae. 2) Memahami penerapan image processing pada pengklasifikasian tumbuhan Papilionaceae melalui daun sebagai objeknya. 3) Sebagai contoh dari aplikasi pengklasifikasian tumbuhan untuk dapat dilakukan pengembangan pada penelitian selanjutnya.
1.6
Metodologi Penelitian
1.6.1
Metode Pengumpulan Data
1. Metode studi pustaka merupakan pengumpulan data dan informasi dengan cara membaca buku-buku referensi, e-book dan website yang berhubungan dengan penelitian ini 2. Metode
observasi
digunakan
penulis
dengan
mengambil
daun
Papilionaceae secara langsung, mengamati dan men-scannya
1.6.2
Metode Pengembangan Sistem Metode pengembangan sistem yang penulis gunakan adalah metode RAD
(Rapid Application Development) yang dikembangkan oleh James Martin. Menurut Kendall & Kendall (2002), tahap-tahap metode RAD meliputi : 1. Fase menentukan syarat-syarat, yaitu fase yang dilakukan untuk menentukan tujuan dan syarat-syarat informasi. 2. Fase Perancangan, yaitu fase yang dilakukan untuk perancangan prosesproses yang akan terjadi dalam sistem dan perancangan antar muka.
5
3. Fase Konstruksi, yaitu fase pengkodean terhadap rancangan-rancangan yang telah didefinisikan. 4. Fase Pelaksanaan, yaitu fase pengujian terhadap sistem. 1.7
Sistematika Penulisan Sistematika penulisan terbagi dalam lima bab, yang secara singkat akan
diuraikan sebagai berikut : BAB I
PENDAHULUAN Dalam bab ini terdiri dari tujuh sub bab yaitu : Latar Belakang, Perumusan
Masalah,
Batasan
Masalah,
Tujuan,
Manfaat,
Metodologi Penelitian dan Sistematika Penulisan. BAB II
LANDASAN TEORI Bab ini berisi teori-teori yang diperlukan untuk menunjang proses penulisan
dalam
pengenalan
pengklasifikasian
tumbuhan
Papilionaceae dan sejumlah materi penunjang yang akan digunakan dalam proses pengenalan tumbuhan Papilionaceae. BAB III
METODOLOGI PENELITIAN Bab ini menguraikan metode penelitian yang digunakan penulis, baik itu metode pengumpulan data maupun metode pengembangan sistem.
6
BAB IV
PEMBAHASAN Pada bab ini menjelaskan program dan implementasinya yang menggunakan beberapa tahap dari metode pengembangan sistem yang dipilih.
BAB V
PENUTUP Bab ini merupakan penutup yang berisi kesimpulan berkenaan dengan hasil pembahasan masalah yang diperoleh dari penyusunan tugas akhir ini serta beberapa saran untuk pengembangan lebih lanjut.
7
BAB II LANDASAN TEORI
2.1
Kecerdasan Buatan
2.1.1 Definisi Kecerdasan Buatan Kecerdasan buatan merupakan salah satu bagian ilmu komputer yang membuat agar komputer dapat melakukan pekerjaan seperti dan sebaik yang dilakukan manusia. Pada awal diciptakannya, komputer hanya difungsikan sebagai alat hitung saja. Namun seiring dengan perkembangan zaman, peran komputer semakin mendominasi kehidupan manusia. Komputer tidak hanya digunakan sebagai alat hitung, lebih dari itu, komputer diharapkan untuk dapat diberdayakan untuk mengerjakan segala sesuatu yang bisa dikerjakan oleh manusia (Kusumadewi, 2003). Komputer dapat bertindak seperti dan sebaik manusia, jika diberi bekal pengetahuan dan mempunyai kemampuan untuk menalar. Kecerdasan buatan (artificial intelligent) memberikan beberapa metode atau cara untuk membekali komputer dengan kedua komponen tersebut agar komputer dapat menjadi mesin yang pintar (Kusumadewi, 2003). Menurut Buchanan dan Shortliffe (1985) menyatakan bahwa kecerdasan buatan merupakan manipulasi simbol-simbol untuk menyelesaikan masalah. Waterman (1986) mengatakan bahwa kecerdasan buatan adalah bagian penting ilmu pengetahuan bidang komputer yang diperlukan untuk mengembangkan kecerdasan program-program komputer. Rich (1981) mendefinisikan kecerdasan
8
buatan sebagai suatu studi bagaimana membuat komputer mengerjakan sesuatu sedemikian rupa sehingga pada saat itu orang merasa mendapatkan hasil yang lebih baik (Pandjaitan, 2007). Staugaard dan Marvin Minsky memberikan pernyataan bahwa kecerdasan buatan adalah suatu mekanisasi atau duplikasi proses berpikir manusia. Schidt (1987) mengatakan bahwa suatu program kecerdasan tiruan akan menunjukan perilaku program yang menyerupai perilaku manusia jika menghadapi persoalan yang sama. Charniak dan McDemott (1985) menambahkan bahwa proses pembelajaran
pada
program
kecerdasan
buatan
menggunakan
model
komputasi(Pandjaitan, 2007). 2.1.2
Sejarah Kecerdasan Buatan Torres y Quevedo adalah seorang berkebangsaan Spayol pada awal abab
ke 20 membuat sebuah mesin yang dapat men’skak-mat’ raja lawannya dengan sebuah ratu dan raja Perkembangan secara sistematis setelah diketemukan komputer digital. Artikel ilmiah pertama tentang Kecerdasan Buatan ditulis oleh Alan Turing pada tahun 1950, dan kelompok riset pertama dibentuk tahun 1954 di Carnegie Mellon University oleh Allen Newell and Herbert Simon. Namun bidang Kecerdasan Buatan baru dianggap sebagai bidang tersendiri konferensi Dartmouth tahun 1956, 10 peneliti muda memimpikan mempergunakan komputer untuk memodelkan bagaimana cara berfikir manusia. Hipotesis mereka adalah: “Mekanisme berfikir manusia dapat secara tepat dimodelkan dan disimulasikan pada komputer digital”, dan ini yang menjadi landasan dasar Kecerdasan Buatan (Kusumadewi, 2003)
9
2.2
Sistem Pakar Sistem pakar merupakan suatu bentuk sistem yang berusaha mengadopsi
ilmu pengetahuan manusia dan diaplikasikan dalam komputer, sehingga komputer memiliki kemampuan dalam menyelesaikan masalah seperti yang dilakuakn oleh seorang ahli. Ada beberapa definisi tentang sistem pakar (Kusumadewi, 2003), antara lain: •
Menurut Durkin : Sistem pakar adalah suatu program komputer yang dirancang untuk memodelkan kemampuan penyelesaian masalah yang dilakukan oleh seorang pakar.
•
Menurut Ignizio : Sistem pakar adalah suatu model dan prosedur yang berkaitan, dalam suatu domain tertentu, yang mana tingkat keahliannya dapat dibangdingkan dengan keahlian seorang pakar.
•
Menurut Giarratano dan Rilly : Sistem pakar adalah suatu sistem komputer yang bisa menyamai atau
meniru kemampuan seorang pakar Knowledge dalam sistem pakar mungkin saja seorang ahli, atau knowlegde yang umumnya terdapat dalam buku, majalah dan orang yang mempunyai pengetahuan tentang suatu bidang (Arhami, 2005). Perancangan
suatu
sistem
pakar
dimaksudkan
supaya
mampu
menyelesaikan suatu permasalahan tertentu dengan meniru cara kerja dari para ahli dalam melakukan suatu analisa, sehingga orang awam pun bisa
10
menyelesaikan masalah yang cukup rumit seperti halnya menyelesaikan masalah dengan bantuan para ahli. Sedangkan bagi para ahli, sistem pakar ini juga akan membantu aktivitasnya sebagai asisten yang sangat berpengalaman. 2.2.1. Keuntungan Sistem Pakar Secara umum, beberapa manfaat yang dapat diambil dengan adanya sistem pakar (Kusumadewi, 2003), antara lain: 1. Memungkingkan orang awam bisa mengerjakan perkejaan para ahli. 2. Bisa melakukan proses secara berulang secara otomatis. 3. Menyimpan pengetahuan dan keahlian para pakar. 4. Meningkatkan out put dan produktivitas. 5. Meningkatkan kualitas. 6. Mampu mengambil dan melestarikan keahlian para pakar (terutama yang termasuk keahlian langka). 7. Mampu beroperasi dalam lingkungan yang berbahaya. 8. Memiliki kemampuan untuk mengakses pengetahuan. 9. Memiliki reliabilitas. 10. Meningkatkan kapabilitas sistem komputer. 11. Memiliki kemampuan untuk bekerja dengan informasi yang tidak lengkap dan mengandung ketidakpastian. 12. Sebagai media pelengkap dalam penelitian. 2.2.2. Kelemahan Sistem Pakar Selain memiliki beberapa keuntungan, sistem pakar juga memiliki beberapa kelemahan (Arhami, 2005) , diantaranya adalah :
11
1. Masalah dalam mendapatkan pengetahuan dimana pengetahuan tidak selalu bisa didapat dengan mudah, karena kadangkala pakar dari masalah yang kita buat tidak ada dan kalaupun ada kadang pendekatan yang dimiliki oleh pakar berbeda-beda. 2. Untuk membuat sistem pakar yang benar-benar berkualitas tinggi sangatlah sulit dan memerlukan biaya yang sangat besar untuk pengembangan dan pemeliharaan. 3. Sistem pakar tidak 100% bernilai benar 4. Boleh jadi sistem pakar tidak dapat membuat keputusan 2.2.3. Konsep Dasar Sistem Pakar Efraim Turban berpendapat, konsep dasar pakar mengandung keahlian, ahli, pengalihan, inferensi, aturan dan kemampuan menjelaskan. Keahlian adalah suatu kelebihan penguasaan pengetahuan di bidang tertentu yang diperoleh dari pelatihan, membaca atau pengalaman (Arhami, 2005). Kemampuan keahlian dari para ahli ke komputer untuk kemudian dialihkan lagi ke orang lain yang bukan ahli, merupakan tujuan dari sistem pakar. Proses ini membutuhkan 4 aktivitas yaitu: tambahan pengetahuan (dari para ahli atau sumber-sumber lainnya), repsentasi pengetahuan ke komputer, inferensi pengetahuan dan pengalihan pengetahuan ke pengguna (Arhami, 2005). 2.2.4. Bentuk Sistem Pakar Ada 4 bentuk sistem pakar (Kusumadewi, 2003), yaitu: 1. Berdiri sendiri. Sistem pakar jenis ini merupakan software yang berdiri sendiri, tidak bergabung dengan software yang lainnya.
12
2. Tergabung. Sistem pakar jenis ini merupakan bagian program yang terkandung di dalam suatu algoritma (konvensional), atau merupakan program dimana didalamnya memanggil algoritma subrutin lain (konvensional). 3. Menghubungkan ke software lain. Bentuk ini biasanya merupakan sistem pakar yang menghubungkan ke suatu paket program tertentu, misalnya dengan Data Base Management System (DBMS). 4. Sistem mengabdi. Sistem pakar merupakan bagian dari komputer khusus yang dihubungkan dengan suatu fungsi tertentu. Misalnya sistem pakar yang digunakan untuk membantu menganalisis data radar. 2.2.5. Struktur Sistem Pakar Sistem pengembangan
pakar terdiri (development
dari
2
bagaian
environment)
pokok, dan
yaitu:
lingkungan
lingkungan
konsultasi
(consultation environment). Lingkungan pengembangan digunakan sebagai pembangun sistem pakar baik dari segi pembangun komponen maupun basis pengetahuan. Lingkungan konsultasi digunakan oleh seseorang yang bukan ahli untuk berkonsultasi(Arhami, 2005). Komponen-komponen sistem pakar dalam kedua bagian tersebut dapat dilihat pada gambar 2.1
13
Basis Pengetahuan Pengguna
Fakta Fakta tentang kejadian tertentu
Antarmuka Pengguna
:
Apa yang diketahui tentang area domain Aturan : Keterangan logik
Rekayasa Pengetahuan
Fasilitas Pengesahan
Mesin Inferensi (Penerjemah)
interpreter Scheduler
(Pengontrolan) Consistency Enforcer (Pemeliharaan Konsistensi)
Aksi yang direkomendasikan
Papan Tulis (Blackboard)
Pengetahuan Ahli
Perbaikan Pengetahuan
Gambar 2.1 Struktur Sistem Pakar Komponen-komponen yang ada pada sistem pakar gamabar 2.1: 1. Subsistem penambahan pengetahuan Bagian ini digunakan untuk memasukkan pengetahuan, mengkontruksi atau memperluas pengetahuan dalam basis pengetahuan. Pengetahuan itu bisa berasal dari : ahli, buku, basis data, penelitian dan gambar.
14
2. Basis pengetahuan Berisi pengetahuan-pengetahuan yang dibutuhkan untuk memahami, memformulasikan dan menyelesaikan masalah. 3. Mekanisme inferensi program yang berisi metodologi yang digunakan untuk melakukan penalaran terhadap informasi-informasi dalam basis pengetahuan dan blackboard, serta digunakan untuk memformalisasikan konlusi, ada 3 elemen utama mekanisme inferensi, yaitu: •
Interpreter
mengeksekusi item-item agenda yang terpilih dengan
menggunakan aturan-aturan dalam basis pengetahuan yang sesuai. •
Scheduler akan mengontrol agenda.
•
Consistency enforcer akan berusah memelihara kekonsistenan dalam merepresentasikan solusi yang bersifat darurat.
4. Blackboard Merupakan area dalam memori yang digunakan untuk merekam kejadian yang sedang berlangsung termasuk keputusan sementara. Ada 3 tipe keputusan yang dapat direkam, yaitu: •
Rencana : bagaimana menghadapi masalah.
•
Agenda aksi-aksi yang potensial yang sedang menunggu untuk dieksekusi.
•
Solusi : calon aksi yang akan dibangkitkan.
5. Antarmuka Digunakan untuk media komunikasi antara user dan program.
15
6. Subsistem penjelas Digunakan untuk memberikan penjelasan tentang kelakuan sistem pakar. 7. Sistem penyaring pengetahuan Sistem ini digunakan untuk mengevaluasi kinerja sistem pakar itu sendiri untuk melihat apakah pengetahuan-pengetahuan yang ada masih cocok untuk digunakan dimasa mendatang (Kusumadewi, 2003).
2.2.6 Forward Chaining Forward chaining disebut juga penalaran dari bawah ke atas karena penalaran dari evidence(fakta) pada level bawah menuju konklusi pada level atas didasarkan pada fakta. Forward chaining mencari fakta yang sesuai dengan bagian IF dari aturan IF-THEN. Gambar 2.2 menunjukan proses forward chaining (Arhami, 2005). Observasi A
aturan R1
fakta C
kesimpulan aturan R3
Observasi B
aturan R2
fakta D
kesimpulan aturan R2
fakta E
Gambar 2.2 Proses Forward Chaining
16
2.2.7 Backward Chaining
Backward chaining adalah pendekatan yang dimotori tujuan, dalam pendekatan ini pelacakan dimulai dari tujuan, selanjutnya dicari aturan yang memiliki tujuan tersebut untuk kesimpulannya. Gambar 2.3 menunjukan proses backward chaining (Arhami, 2005). Observasi A
aturan R1
fakta C aturan R3
Observasi B
aturan R2
Tujuan 1 (kesimpulan)
fakta D aturan R2
Gambar 2.3 Proses Backward Chaining
2.3
Computer Vision Computer vision merupakan proses otomatis yang mengintegrasikan
sejumlah besar proses untuk persepsi visual, seperti akuisisi citra, pegolahan citra, klasifikasi, pengenalan (recognation), dan membuat keputusan. Computer vision terdiri dari teknik-teknik untuk mengestimasi ciri-ciri objek di dalam citra, pengukuran ciri yang berkaitan dengan geometri objek dan menginterpretasi informasi goemetri tersebut. Mungkin berguna untuk mengingat persamaan berikut : Vision = Geometri + Measurement + Interpretation
17
Proses-proses di dalam Computer vision dapat dibagi menjadi tiga aktivitas (Munir, 2004) : 1. Memperoleh atau mengakuisisi citra digital. 2. Melakukan teknik komputasi untuk memproses atau memodifikasi data citra (operasi-operasi pengolahan citra). 3. Menganalisis dan menginterpretasi citra dan menggunakan hasil pemrosesan untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan, memantau proses manufaktur, dan lain-lain. Dari penjelasan di atas, dapat dilihat bahwa pengolahan citra dan pengenalan pola merupakan bagian dari Computer vision. Pengolahan citra merupakan proses awal (preprocessing) pada Computer vision sedangkan pengolahan pola merupakan proses untuk menginterpretasi citra. Teknik-teknik di dalam pengenalan pola memainkan peranan penting dalam Computer vision untuk mengenal objek.
2.4
Digital Image Processing
2.4.1 Pengertian Citra Data atau informasi tidak hanya disajikan dalam bentuk teks tetapi juga dapat berupa gambar, audio (bunyi, suara, musik) dan video. Keempat macam data atau informasi ini sering disebut multimedia. Era teknologi informasi saat ini tidak dapat dipisahkan dari multimedia.
18
Citra (image) –istilah lain untuk gambar- sebagai salah satu komponen multimedia memegang peranan sangat penting sebagai bentuk informasi visual. Citra mempunyai karakteristik yang tidak dimiliki oleh teks, yaitu citra kaya dengan informasi (Munir, 2004). Secara harfiah, citra (image) adalah gambar pada dwimatra (dua dimensi). Ditinjau dari pandang matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dwimatra. Sumber cahaya menerangi objek, kemudian objek memantulkan kembali sebagian dari teks cahaya tersebut. Pantulan cahaya ini ditangkap oleh alat optik misalnya mata
pada manusia,
kamera, scanner dan sebagainya, sehingga bayangan objek (citra) tersebut terekam (Munir, 2004). Citra sebagai keluaran dari suatu sistem perekaman data dapat bersifat (Munir, 2004) : 1. Optik berupa foto 2. Analog berupa sinyal video seperti gambar pada monitor televisi 3. Digital yang dapat langsung disimpan pada suatu pita magnetik Adapun citra sendiri dibagi menjadi dua. Pertama, citra diam yaitu citra tunggal atau diam (still images) yang tidak dapat bergerak. Kedua, citra gerak (moving images) adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial) sehingga memberi kesan pada mata kita sebagai gambar yang bergerak. Setiap citra di dalam rangkaian itu disebut frame. Gambar-gambar yang
19
tampak pada film layar lebar atau televisi pada hakikatnya terdiri atas ratusan sampai ribuat frame (Munir, 2004). 2.4.2
Image Processing Operasi-operasi yang dilakukan di dalam pengolahan citra banyak
ragamnya. Namun, secara umum, operasi pengolah cintra dapat diklasifikasikan dalam beberapa jenis sebagai berikut (Munir, 2004): 1. Perbaikan kualitas citra (image enhancement) Jenis operasi ini merupakan proses penajaman fitur tertentu dari citra yang bertujuan untuk memperbaiki kualitas citra dengan cara memanipulasi parameterparameter citra dan memudahkan proses analisis citra selanjutnya. Dengan operasi ini, ciri-ciri khusus yang terdapat pada citra lebih ditonjolkan seperti perbaikan kontras gelap atau terang, perbaikan tepian objek (edge enhancement), penajaman (sharpening), pemberian warna semu (pseudocoloring) dan penapisan (noise filtering). 2. Pemugaran citra ( image restoration) Operasi ini bertujuan menghilangkan/meminimumkan cacat pada citra. Tujuan pemugaran citra hampir sama dengan operasi perbaikan citra bedanya pada pemugaran citra penyebab degradasi gambar diketahui. 3. Pemampatan citra ( image compression) Jenis operasi ini dilakukan agar citra dapat direpresentasikan dalam bentuk yang lebih kompak sehingga memerlukan memori yang lebih sedikit. Hal penting
20
yang harus diperhatikan dalam pemampatan adalah citra yang telah dimampatan harus tetap mempunyai kualitas gambar yang bagus. 4. Segmentasi citra (image segmentation) Segmentasi citra ini mempunyai arti membagi citra menjadi wilayahwilayah yang homogen berdasarkan kriteria keserupaan yang tertentu antara tingkat keabuan suatu pixel dengan tingkat keabuan pixel-pixel tetangganya (Wijaya, 2009 : C-30). Jenis operasi ini bertujuan untuk memecahkan suatu citra ke dalam beberapa segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat dengan pengenalan pola. 5. Pengorakan citra (image analysis) Jenis operasi ini bertujuan menghitung besaran kuantitif dari citra untuk menghasilkan deskripsinya. Teknik pengorakan citra mengekstraksi ciri-ciri tertentu yang membantu dalam identifikasi objek. Proses segmentasi kadangkala diperlukan untuk melokalisasi objek yang diingikan dari sekelilingnya. Contohcontoh operasi pengorakan citra : a) Pendeteksian tepi objek (edge detection) b) Ekstraksi batas (boundary) c) Representasi daerah (region) 6. Rekonstruksi citra (image reconstruction) Jenis operasi ini bertujuan untuk membentuk ulang objek dari beberapa citra hasil proyaksi. Operasi rekontruksi citra banyak digunakan dalam bidang
21
medis. Misalnya, beberapa foto rontgen dengan sinar X digunakan untuk membentuk ulang gambar organ tubuh. 2.4.3
Pendeteksian Tepi (Edge Detectioan) Tepi (edge) adalah perubahan nilai intensitas derajat keabuan yang
mendadak (besar) dalam jarak yang singkat. Perbedaan intensitas inilah yang menampakan rincian pada gambar. Tepi biasanya terdapat pada batas antara dua buah daerah berbeda pada suatu citra (Munir, 2004). Deteksi tepi (Edge detection) adalah operasi yang dijalankan untuk mendeteksi garis tepi (edges) yang membatasi dua wilayah citra homogen yang memiliki tingkat kecerahan yang berbeda (www.ilkom.fmipa.ipb.ac.id/yeni) Tujuan operasi pendeteksian tepi adalah untuk meningkatkan penampakan garis batas suatu daerah atau objek di dalam citra. Tepi termasuk ke dalam komponen berfrekuensi tinggi. Maka pendeteksian tepi dapat dilakukan dengan panapis lolos-tinggi (Munir, 2004). Pendekatan 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. Beberapa definisi dalam operator pelacakan tepi adalah (Ahmad, 2005) : 1. Sebuah titik tepi adalah sebuah titik dengan koordinat (x,y) pada lokasi yang intensitasnya berubah secara lokal dan berbeda nyata
22
2. Sebuah potongan garis tepi berkorespondensi dengan koordinat x dan y dari sebuah tepi dengan arah sudut θ yang merupakan sudut gradien 3. Detektor tepi sebuah algoritma yang menghasilkan sebuah set dari tepi (titik tepi atau potongan garis tepi) dari sebuah obyek di dalam citra 4. Kontur adalah sebuah deret dari tepi atau kurva matematika yang merupakan model deret dari tepi 5. Penyambungan tepi adalah proses pembentukan deret yang beraturan dari deret yang tidak beraturan 6. Penelusuran tepi adalah proses pengolahan citra untuk menemukan kontur. Terdapat beberapa teknik yang digunakan untuk mendeteksi tepi, antara lain (Munir, 2004) : 1. Operator gradien pertama (differential gradient) Ada gradien pertama yang dapat digunakan untuk mendeteksi tepi di dalam citra (Munir, 2004) yaitu: a) Operator gradien selisih terpusat (center-difference) b) Operator Sobel Pedektian tepi dengan operator sobel menggunakan dua buah kernel konvolusi. Setiap titik dari citra akan konvousikan dengan kedua kernel citra tersebut. Salah satu kernel merespon secara maksimal untuk menghasilkan tepi horizontal dan kernel yang lainnya tepi vertikal. Nilai dari kedua konvolusi merupakan nilai output pixel (Muhtadan, 2008).
23
c) Operator prewitt Pendeteksian tepi dengan operator Prewitt kernel konvolusi seperti gambar di bawah ini. Sama halnya dengan operator sobel, setiap titik citra dikonvolusikan dengan kedua kernel dan nilai maksimum merupakan output (Muhtadan, 2008). Kernel operator Prewitt ditunjukan pada gambar 2.2
-1
-1
-1
1
0
-1
0
0
0
1
0
-1
1
1
1
1
0
-1
Gambar 2.4 Kernel Operator Prewitt d) Operator robert Metode ini merupakan penjabaran dari teknik diferensial pada arah horizontal dan diferensial pada arah vertikal dengan menambahkan proses konversi biner dengan meratakan distribusi warna hitam dan warna putih (Sartika, 2008). e) Operator Canny Pada tahun 1986 John Canny (Canny, 1986) mengusulkan 3 kriteria yang menjadi basis pengembangan filter untuk mengoptimalkan pendetektian tepi pada citra bernoise. Ketiga kriteria tersebut adalah : •
Good detection, kriteria ini bertujuan memaksimalkan nilai signal to noise ration (SNR) sehingga semua tepi dapat terdeteksi dengan baik atau tidak ada yang hilang.
24
•
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 = 0)
•
Low multiplicity of the response atau "one response to singel edge" detektor tidak memberikan tepi yang bukan tepi sesungguhnya.
2. Operator turunan kedua (laplacian) Operator laplacian mendeteksi lokasi tepi lebih akurat khususnya pada tepi yang curam. Pada tepi yang curam, turunan keduanya mempunyai persilangan nol (zero-crossing), yaitu titik di mana terdapat pergantian tanda turunan kedua, sedangkan pada tepi yang landai tidak terdapat persilangan nol. Persilangan nol merupakan lokasi tepi yang akurat. 3. Operator kompas (compass operator) Operator kompas (compass operator) digunakan untuk mendeteksi semua tepi dari berbagai arah di dalam citra. Operator kompas yang dipakai untuk pendeteksian tepi menampilkan 8 macam arah mata angin: Utara, Timur Laut, Timur, Tenggara, Selatan, Barat daya, Barat, dan Barat Laut. Pendeteksian tepi dilakukan dengan mengkonvolusikan citra dengan berbagai mask kompas, lalu dicari kekuatan tepi (magnitudo) yang terbesar dan arahnya (Munir, 2004). Operator kompas yang tersedia yaitu 8 macam arah mata angin dapat juga digunakan untuk mendeteksi tepi dalam arah tertentu saja. Misalnya diinginkan mendeteksi tepi dalam arah horizontal dan vertikal saja (Munir, 2004).
25
2.5
Klasifikasi tumbuhan Adanya keaneragaman hidup sebagai akibat dari adanya evolusi
khususnya adaptasi terhadap fungsi dan lingkungan yang berbeda-beda yang menyebabkan timbulnya berbagai macam bentuk kehidupan di muka bumi ini. Hal ini mendasari pemikiran untuk membuat sebuah sistem pengelompokkan terhadap berbagai macam bentuk kehidupan dalam suatu kelompok-kelompok kecil dengan obyek keaneragaman bentuk kehidupan tersebut, yang lebih dikenal dengan sebutan sistem klasifikasi (Pratiwi dkk, 2006). Klasifikasi sendiri memiliki tujuan untuk menyederhanakan obyek-obyek yang beranekaragam tersebut dengan cara mencari persamaan-persamaan tertentu yang dimiliki oleh obyek-obyek tersebut. Dari persamaan-persamaan itulah dapat dibentuk satuan-satuan (kelompok) yang ditata dengan urutan dan tingkat-tingkat tertentu. Dengan landasan dari persamaan-persamaan itu, Corolus Linnaeus (1707 – 1778) membagi makhluk hidup ke dalam dua kelompok besar, yaitu: 1) Plantae (dunia tumbuh-tumbuhan) 2) Animalia (dunia hewan) Semakin majunya ilmu pengetahuan dan teknologi menyebabkan klasifikasi mekhluk hidup pun mengalami perubahan. Dahulu klasifikasi makhluk hidup hanya mencakup dua kingdom (kerajaan) maka sekarang klasifikasi makhluk hidup dibagi menjadi lima kingdom yaitu protista, monera, animalia, plantea dan fungi (Campbell, 2000). Kingdom plantae dibagi menjadi dua kelompok yaitu tumbuhan berpembuluh dan tumbuhan tidak berpembuluh. Tumbuhan berpembuluh
26
beranggotakan pteridhopyta (paku-pakuan) dan spermatophyte (tumbuhan berbuga). Tumbuhan tidak berpembuluh adalah tumbuhan yang akar, batang dan daunnya tidak mempunyai pembuluh seperti : alga, jamur dan lumut. Rosales salah satu bangsa yang beranggotakan Suku Crassulaceae, Suku Cephalotaceae, Suku Pittosporaceae, Suku Cunoniaceae, Suku Rosaceae, Suku Brunelliaceae, Suku Connaraceae, Suku Leguminosae, Suku Mimosaceae, Suku Papilionaceae dan Suku Caesalpiniaceae (Gembong tjitrosoepomo, 1988). Suku Papilionaceaee (kacang-kacangan), yang mempunyai ciri-ciri semak, perdu, atau pohon kerapkali memanjat. Daun berseling atau tersebar, tunggal atau majemuk. Daun penumpu ada. Bunga berkelamin 2, dalam karangan yang berbeda-beda, kerapkali zygomorph menyolok, kelopak bersatu. Mahkota berbentuk kupu-kupu terdiri atas lima, lapas atau hampir lepas; 2 yang terbawah bersama-sama membentuk tunas, kerapkali berlekatan satu dengan yang lainnya, diapit antara 2 sayap di sebelahnya; daun mahkota teratas kebanyakan 10, kerapkali 9 bersatu dan 1 lepas (beberkas dua), jarang lebih dari satu lepas; ruang sari 2. Bakal buah menumpang, beruang 1. Polongan membuka atau tidak membuka atau patah dalam ruas. Biji 1 atau banyak (Steenis, 1992). Di antara anggota-anggotanya banyak yang merupakan tanaman penghasil komoditif yang berharga, merupakan bahan pangan dengan nilai gizi yang tinggi karena kandungannya akan protein, lemak, dan vitamin-vitamin dalam bijinya. Polong yang muda, demikian pula daun-daun muda jenis-jenis tertentu banyak yang dimakan sebagai sayuran. Selain dari itu banyak pula di antara anggotanya yang dalam pertanian ditanam sebagai pupuk hijau, karena adanya simbosis
27
anggota suku ini dengan bakteri-bakteri penambat zat lemas dari udara. Banyak pula di antara warga suku ini yang ditanam untuk makanan ternak. Sebagai contoh adalah • Soja max (kedelai), bijinya kaya protein dan lemak. • Phaseolus radiatus: Ph. Radiatus dan Ph. Mungo (kacang hijau), Ph. Lunatus (kara, krupuk, kratok), Ph. Vulgaris (buncis), sayuran. • Arachis hypogaea(kacang tanah) • Pisum sativum(kacang kapri) • Canavalia ensiformis(kara pedang) • Mucuna pruriens(kara benguk) • Cajanus cajan(kacang hiris) • Crotalaria juncea, Cr. usaramoensis, Cr. anagyroides Indigofera sumatrana, I. Endecaohylla • Tephrosia : maxima • Sesbania grandiflora (janti), S. Grandiflora (turi) • Centrosema pubescens • Calopogonium muconoides • Psophocarpus tetragonolobus (kacang kecipir) • Clitoria ternatea (kembang telang) • Pterocarpus undica (angsana kembang) • Dalbergia latifolia (angsana keling) Myroxylon balsamun • Erythrina variegate (dadap)
28
• Vicia faba (kacang babi) • Voandzeia subterranean (kacang bogor). Suku ini mempunyai manfaat sebagai Bahan pangan dengan nilai gizi yang tinggi karena kandungannya akan protein,. Dalam hal ini penulis memilih suku paplilionaceae sebagai bahasan (Gembong tjitrosoepomo, 1988).
2.6
MATLAB (Matrix Laboratory)
2.6.1 Sekilas Tentang Matlab Dari Sugiharto (2006), MATLAB adalah sebuah bahasa pemrograman dengan unjuk kerja tinggi untuk komputasi teknis, yang mengintegrasikan komputasi, visualisasi dan pemrograman di dalam linkungan yang mudah penggunaannya dalam memecahkan persoalan dengan solusinya yang dinyatakan dengan notasi matematik. Penggunaan MATLAB yaitu : 1. Matematika dan komputasi 2. Pengembangan algoritma 3. Pemodelan, simulasi dan pembuatan prototype 4. Analisis data, eksplorasi dan visualisasi 5. Grafik untuk sains dan teknik 6. Pengembangan aplikasi, termasuk pembuatan antarmuka grafis untuk pengguna MATLAB adalah sebuah sistem interaktif yang menggunakan elemen data dasarnya adalah array yang tidak membutuhkan dimensi. Hal ini untuk
29
mempermudah dalam menyelesaikan masalah komputasi, terutama yang menyangkut matriks dan vektor. Secara keseluruhan Matlab memiliki 6 buah jendela : a. Jendela perintah (command window) Pada jendela perintah, semua perintah Matlab dituliskan dan dieksekusi. Kita dapat menuliskan perintah yang diperlukan seperti perhitungan biasa, memanggil fungsi, mencari informasi tentang sebuah fungsi (help), demo program, dan sebagainya. Setiap penulisan perintah di sini selalu diawali dengan prompt '>>'. b. Jendela daftar perintah (command history) Jendela ini memuat daftar perintah yang pernah kita ketikkan dalam jendela perintah. Untuk mengeksekusi kembali perintah yang pernah dipakai, kita dapat men-drag perintah tersebut dari jendela daftar perintah ke jendela perintah, atau menekan tombol panah ke atas atau mengklik perintah pada jendela history, kemudian melakukan copy-paste ke jendela perintah. c. Jendela launch pad Jendela ini berisi fasilitas yang disediakan matlab untuk menjalankan paket perangkat lunak (toolbox) untuk menyelesaikan masalah tertentu. d.
Jendela Help Dipakai jika kita mengalami kesulitan sewaktu memilih perintah atau formatnya.
e. Jendela current directory Current directory digunakan untuk menentukan direktori aktif yang digunakan Matlab. Jika akan menjalankan sebuah fungsi, maka kita harus
30
memastikan bahwa fungsi berada di dalam direktori aktif atau kita mengubah direktori aktifnya ke direktori tempat fungsi berada. f. Jendela ruang kerja (workspace) Jendela workspace merupakan sebuah jendela Matlab yang berisi informasi pemakaian variabel di dalam memori Matlab. 2.6.2
Cara Bekerja dengan Matlab Dalam melakukan pekerjaan pemrograman menggunakan bahasa Matlab,
terdapat dua cara, yaitu : 1) Secara langsung di Command window Cara ini adalah yang paling sering dilakukan oleh pemula, namun akan sulit untuk mengevaluasi perintah secara keseluruhan karena biasanya perintah hanya dilakukan baris perbaris. 2) Menggunakan M-File M-File merupakan sederetan perintah Matlab yang dituliskan secara berurutan sebagai sebuah file. Nama file yang digunakan berekstensi m yang menandakan bahwa file adalah file Matlab. Pemrograman dengan M-File memberikan kontrol lebih banyak dibandingkan dengan command line. Dengan M-File, kita bisa melakukan percabangan, perulangan, dan lain-lain.
2.6.3 Perintah Kontrol 2.6.3.1 Struktur Kendali Statemen kondisi digunakan untuk mengontrol alur program. 1) If, Else, dan Elseif
31
If merupakan statemen kontrol yang digunakan untuk mengevaluasi ekspresi logika dan mengeksekusi kelompok statemen yang didasarkan pada nilai ekspresi. Bentuk sederhana statemen if adalah : if <ekspresi logika> statement-statement end Jika ekspresi logika bernilai benar (1), maka Matlab akan mengeksekusi statemen antara if sampai end. Namun, jika ekspresi logikanya bernilai false, maka Matlab akan melewati semua statemen antara if dan end. If dapat dipakai lebih dari satu (nested if). Untuk membuat if di dalam if, kita menggunakan sintaksis seperti berikut : if <ekspresi-logika1> statemen 1 dikerjakan jika ekspresi-logika 1 bernilai benar) elseif <ekspresi-logika2> statemen 2 dikerjakan jika ekspresi-logika 2 bernilai benar) elseif … … else statemen n (dikerjakan jika semua ekspresi-logika sebelumnya bernilai salah) end 2) Switch Switch mengeksekusi statemen berdasarkan nilai variabel satu ekspresi. Bentuk switch adalah : switch ekspresi (scalar atau string) case nilai 1 statemen 1 case nilai 2 statemen 2 case nilai 3 statemen 3 :
32
case nilai n statemen n 2.6.3.2 Struktur Perulangan 1)
While Statemen
while
digunakan
untuk
melakukan
proses
perulangan.
Banyaknya jumlah perulangan ditentukan oleh sebuah nilai ekspresi. Proses perulangan pada while akan terus dilakukan selama nilai ekspresinya benar (true). Namun, begitu dijumpai nilai ekspresi salah (false), maka proses perulangan akan langsung dihentikan. Bentuk umun statemen while : while <ekspresi> statemen-statemen end; 2)
For Statemen for digunakan pula untuk melakukan proses perulangan.
Perbedaannya dengan statemen while adalah pada for jumlah perulangan dapat diketahui (countable), sedangkan pada while tergantung nilai ekspresi. Bentuk umum statemen for : for indeks = nilai awal : selisih atau penambahan : nilai akhir statemen-statemen end 2.6.4
Membentuk Fungsi Fungsi adalah M-File yang menerima argumen input dan menghasilkan
argumen output. Fungsi mengoperasikan variabel di dalam workpace-nya, tetapi terpisah dari workspace yang diakses oleh command Matlab. Sebuah fungsi mempunyai beberapa bagian penting diantaranya :
33
function hasil = luas ( p, 1 ) argumen input nama fungsi argument output kata kunci a) Nama Fungsi Nama fungsi Matlab secara default sama dengan nama variabelnya. Nama fungsi harus diawali dengan huruf, selanjutnya boleh diikuti oleh kombinasi huruf, angka, atau garis bawah (underscore). Sebaiknya, semua karakter menggunakan huruf kecil. Walaupun nama fungsi dapat mempunyai panjang berbeda, Matlab hanya menggunakan N sebagai karakter pertama, dimana N adalah bilangan yang dihasilkan fungsi namelengthmax(). b) Argumen Fungsi Jika sebuah fungsi Matlab mempunyai nilai output lebih dari satu, maka nilai dapat dituliskan dalam sebuah kurung siku. Argumen input, jika ada, dituliskan di dalam tanda kurung biasa. Untuk memisahkan antara argumen yang ada, baik input maupun output, maka digunakan tanda koma. c) Mengetahui Jumlah Argumen Fungsi Matlab memiliki fungsi nargin dan nargout untuk menentukan seberapa banyak argumen input dan argumen output sebuah fungsi saat dipanggil. Kita dapat menggunakan sebuah teks kondisi untuk menentukan langkah yang akan dikerjakan oleh sebuah fungsi jika argumen yang diinputkan tidak sesuai dengan jumlah argumen input pada fungsi.
34
2.6.5
GUIDE GUIDE atau GUI builDEr merupakan sebuah graphical user interface
(GUI) yang dibangun dengan objek grafis seperti tombol (button), kotak teks, slider, sumbu (axes), maupun menu. Tidak seperti bahasa pemrograman lainnya, GUIDE matlab memiliki banyak keunggulan tersendiri, antara lain : a) GUIDE matlab banyak digunakan dan cocok untuk aplikasi-aplikasi berorientasi sains, sehingga banyak peneliti atau mahasiswa, menggunakan GUIDE Matlab untuk menyelesaikan riset atau tugas akhirnya. b) Matlab memiliki banyak fungsi built in yang siap digunakan dan pemakai tidak perlu repot membuatnya sendiri. c) Ukuran file, baik FIG-file maupun M-file, yang dihasilkan relatif lebih kecil. d) Kemampuan grafisnya cukup andal dan tidak kalah dibandingkan bahasa pemrograman lainnya. 2.6.5.1 Memulai GUIDE Untuk memulai pemrograman GUI Matlab, kita dapat melakukan dengan dua cara, yaitu : a) Melalui command matlab ketikkan >>guide atau b) Klik tombol Start Matlab dan pilihlah MATLAB, lalu pilih GUIDE (GUI Builder)
35
Gambar 2.5 Memulai GUIDE Selanjutnya, kita dibawa ke sebuah kotak dialog pilihan GUIDE Quick Start.
Gambar 2.6 GUIDE Quick Start Ada dua buah pilihan, yaitu Create New GUI dan Open Existing GUI. Kita dapat memilih Create New GUI jika memang belum pernah membuat aplikasi GUI Matlab atau memang ingin membuat figure baru. Menu Create New GUI akan memberikan beberapa pilihan GUIDE template. Pilih Blank GUI (Default)
36
untuk memulai dengan sebuah GUI dengan figure kosong. Kita dapat mengatur sendiri komponen yang kita butuhkan sesuai dengan aplikasi yang dibuat. M-File Editor
Menu Editor
Properti Inspector
Alignment Tool
Gambar 2.7 Menu Utama GUIDE
2.6.5.2 Komponen GUIDE Untuk membuat sebuah user interface matlab dengan fasilitas GUIDE, kita harus memulai dengan membuat desain sebuah figure. Untuk membuat desain sebuah figure, kita dapat memanfaatkan uicontrol (kontrol user interface) yang telah tersedia pada editor figure. Kita dapat meletakkan semua kontrol pada layout editor figure dan selanjutnya hanya tinggal mengaturnya dengan property inspector. Untuk melihat kontrol user interface, kita dapat membukanya dengan menggunakan blank GUI maupun yang lainnya. Gambar berikut memperlihatkan beberapa kontrol :
37
Gambar 2.8 Komponen UIControl a. Pushbutton Sebuah pushbutton merupakan jenis kontrol berupa tombol tekan yang akan menghasilkan sebuah tindakan jika diklik, misalnya tombol OK, CANCEL, dan lainnya. b. Togglebutton Togglebutton menghasilkan efek yang hampir sama dengan pushbutton, perbedaanya adalah saat pushbutton ditekan, maka tombol akan kembali pada posisi semula jika tombol mouse dilepas. Sebaliknya, pada togglebutton tombol tidak akan kembali ke posisi semula, kecuali kita menekannya kembali. c. Radiobutton Pada radiobutton, kita hanya dapat memilih atau menandai satu pilihan dari beberapa pilihan yang ada. d. Checkbox Kontrol checkbox menghasilkan suatu tindakan jika diklik, yaitu berupa tanda atau status. Checkbox berguna jika kita ingin menyediakan sejumlah pilihan mandiri yang tidak tergantung pada pilihan lainnya. Untuk menandai
38
apakah sebuah checkbox telah ditandai atau tidak, kita dapat melihat pada value property, yaitu masing-masing bernilai 1 dan 0. e. Edit Text Kontrol edit text merupakan sebuah tempat yang memungkinkan kita memasukkan atau memodifikasi teks. String property berisi teks yang akan dimunculkan pada kotak edit text. Kemudian, edit text bermanfaat pula untuk menginputkan suatu data dari keyboard. f. Static Text Kontrol static text akan menghasilkan teks bersifat statis (tetap), sehingga pemakai tidak dapat melakukan perubahan padanya. Pada static text, kita dapat mengatur teks dengan beberapa fasilitas, antara lain jenis dan ukuran font, warna, justifikasi, dan lain-lain. Kita dapat memodifikasi semuanya melalui property inspector. g. Slider Slider merupakan komponen GUI yang dapat bergeser secara horizontal maupun vertikal. Dengan sebuah slider, kita dapat mengaturnya menjadi slider horizontal atau slider vertikal dengan men-drag mouse sesuai keinginan kita. Slider digunakan jika kita menginginkan inputan yang tidak dilakukan dari keyboard. Dengan menggunakan slider, kita lebih fleksibel dalam melakukan pemasukan data karena kita dapat mengatur sendiri nilai-nilai maksimum, minimum, atau sliderstep, dan sebagainya.
39
h. Listboxes Kontrol listbox menampilkan semua daftar item yang terdapat pada String Property dan membuat kita dapat memilih satu atau lebih item yang ada. Value property berisi indeks yang dihubungkan dengan daftar item yang dapat dipilih. Jika kita memilih item lebih dari satu, maka nilai yang dikirimkan merupakan sebuah vektor. Indeks-indeks item sebuah listbox merupakan bilangan bulat, dimana item pertama diberi indeks 0, item kedua diberi indeks 1, dan seterusnya. i. Popup Menu Popup menu membuka tampilan daftar pilihan yang didefinisikan pada string property ketika kita mengklik tanda panah pada aplikasi. Ketika tidak dibuka, popup menu hanya akan menampilkan satu item yang menjadi pilihan saat ini, yang ditentukan oleh sebuah indeks berisi Value Property. Item pertama pada String property sebuah popup menu akan diberi nilai 1, item berikutnya diberi nilai 2, dan seterusnya. Popup menu sangat bermanfaat ketika kita ingin memberi pemakai sebuah pilihan atau alternatif tanpa jarak, tidak seperti radiobutton. j. Axes Dengan axes, kita dapat membuat aplikasi yang dapat digunakan untuk menampilkan sebuah grafik atau gambar (image). Axes sebenarnya tidak termasuk golongan user interface control, tetapi axes dapat diprogram agar pemakai dapat berinteraksi dengan axes dan objek grafik yang dapat ditampilkan melalui sebuah axes.
40
2.7
RGB Suatu citra biasanya mengacu pada citra RGB. Sebenarnya bagaimana
citra disimpan dan dimanipulasi dalam komputer diturunkan dari teknologi televisi, yang pertama kali mengaplikasikannya untuk tampilan grafis komputer. Jika dilihat dengan kaca pembesar, tampilan monitor komputer akan terdiri dari sejumlah triplet titik warna merah (RED), hijau (GREEN) dan biru (BLUE). Citra dalam komputer tidak lebih dari sekumpulan sejumlah triplet dimana setiap triplet terdiri atas variasi tingkat keterangan (brightness) dari elemen red, green dan blue. Representasinya dalam citra, triplet akan terdiri dari 3 angka yang mengatur intensitas dari Red (R), Green (G) dan Blue (Blue) dari suatu triplet. Setiap triplet akan merepresentasikan 1 pixel (picture element). Suatu triplet dengan nilai 67, 228 dan 180 berarti akan mengeset nilai R ke nilai 67, G ke nilai 228 dan B k nilai 180. Angka-angka RGB ini yang seringkali disebut dengan color values. Pada format .bmp citra setiap pixel pada citra direpresentasikan dengan dengan 24 bit, 8 bit untuk R, 8 bit untuk G dan 8 bit untuk B, dengan pengaturan (Al fatta, 2007 : D-1) seperti pada gambar 1.
Gambar 2.9 Color Values 2.8
JPEG JPEG singkatan dari Joint Photographic Experts Group yang merupakan
format gambar atau foto yang banyak digunakan untuk menyimpan gambargambar dengan ukuran lebih kecil. Untuk membedakan dengan jenis file lainnya.
41
File jenis ini biasanya berakhiran (memiliki ekstensi) JPG atau JPEG (John miano 1961). Kelemahan JPEG adalah kualitas gambar yang akan menurun, bertambah kasar dan pecah jika gambar file diedit dan disimpan berulang-ulang (Iwan binanto, 2010)
42
BAB III METODOLOGI PENELITIAN
Pada penyusunan skripsi ini diperlukan data-data informasi sebagai bahan yang dapat mendukung kebenaran materi uraian pembahasan. Untuk menyelesaikan masalah yang ada dalam sebuah perancangan perangkat lunak ada beberapa tahap yang harus dilakukan. Tahap ini dilakukan sebelum tahap pengembangan sistem yang meliputi studi pustaka dan observasi. 3.1
Studi Pustaka Studi pustaka adalah teknik pengumpulan data dengan menghimpun dan
menganalisis dokumen. Dokumen-dokumen yang termasuk didalamnya yaitu penelitian-penelitian terdahulu, buku, artikel dan jurnal yang berkaitan dengan objek penelitian. Secara rinci yang penulis lakukan pada studi dokumenter adalah : a) Membaca dan mempelajari buku-buku atau dokumen-dokumen, penelitianpenelitian
terdahulu,
artikel
dan
jurnal
yang
berhubungan
dengan
Papilionaceae dan teknik atau cara pengklasifikasian tumbuhan dalam hal ini Papilionaceae. Dokumen-dokumen tersebut bisa bersifat hardcopy ataupun softcopy yang bersumber dari internet. b) Dokumen-dokumen yang telah dikumpulkan kemudian dipilih dan dihimpun berdasarkan tujuan dan fokus penelitian.
43
c) Dokumen-dokumen yang telah dipilih dan dihimpun kemudian dilakukan analisa untuk mendapatkan suatu pemahaman mengenai konsep perancangan aplikasi pengklasifikasian tumbuhan 3.2
Observasi Lapangan Observasi merupakan pengamatan langsung dengan cara pengambilan data
dengan menggunakan mata tanpa ada pertolongan alat standar lain untuk keperluan tersebut (Nazir, 1983). Penulis mengambil daun Papilionacea secara langsung dan mengamatinya dan men-scannya. 3.3
Model-Model Metode Pengembangan Sistem Sebuah perancangan perangkat lunak memerlukan model-model proses atau
paradigma rekayasa perangkat lunak berdasarkan sifat aplikasi dan proyeknya, metode dan alat bantu yang dipakai, dan kontrol serta penyampaian yang dibutuhkan. Ada beberapa model dari proses perangkat lunak, diantaranya: Model Sequensial Linear, Model Prototipe, Model RAD (Rapid Application Development), Model Evolusioner, Model Formal dan lain-lain (Pressman, 2002). 3.4
Perbedaaan Metode Pengembangan Sistem Untuk menyelesaikan masalah di dalam sebuah sistem harus dilakukan
penggabungan strategi pengembangan yang melingkupi lapisan proses, metode, dan alat-alat bantu serta fase-fase generik (Presman, 2002). Pada Tabel 3.1 di bawah dijelaskan beberapa metode dan perbedaaannya.
44
Tabel 3.1 Perbandingan Metode Pengembangan Sistem Metode
Kelebihan
Kekurangan
Sequensial Linier (waterfall)
Metode ini baik digunakan untuk kebutuhan yang sudah diketahui dengan baik
Prototype
Metode ini cukup efektif dengan mendapatkan kebutuhan dan aturan yang jelas dan pelanggan bisa langsung melihat sistem yang sebenarnya.
Iterasi yang sering terjadi menyebabkan masalah baru. Bagi pelanggan sulit menentukan kebutuhan secara eksplisit dan harus sabar karena memakan waktu yang lama. Pengembang kadangkadang membuat implementasi sembarang karena ingin working version selesai dengan cepat.
RAD
Metode ini lebih cepat dari waterfall jika kebutuhan dan batasan proyek sudah diketahui dengan baik dan bisa untuk dimodularisasi.
Karena proyek dipecah menjadi beberapa bagian, maka dibutuhkan banyak orang untuk membentuk suatu tim. Karena komponenkomponen yang sudah ada, fasilitas-fasilitas pada tiap komponen belum tentu digunakan seluruhnya sehingga kualitas program bisa menurun.
Pengunaan secara umum Waterfall bekerja dengan baik pada proyek skala kecil
Prototyping dapat bekerja dengan baik jika ada kerjasama yang baik antara pengembang dengan pengguna
RAD cocok utuk aplikasai yang tidak mempunyai resiko teknis yang tinggi. RAD cocok untuk proyek yang memiliki SDM yang baik dan sudah berpengalaman.
45
Incremental
Fleksibel dan mudah untuk dikelola dan pengujian yan mudah.
Semua kebutuhan tidak dikumpulkan pada tahap awal sehingga menimbulkan masalah serta sulit untuk mengukur progress karena tidak ada milestone.
Cocok untuk aplikasi yang kebutuhannya telah diidentifikasi dengan baik.
Iterative
Fase desain, pengkodean, pengujian lebih cepat.
Butuh waktu yang banyak untuk menganalisis dan terlalu banyak langkah yang dibutuhkan model
Hanya cocok untuk softwere berskala besar
Spiral
Model ini digunakan untuk sistem skala besar. Membutuhkan konsiderasi langsung terhadap resiko teknis, sehingga dapat mengurangi terjadinya resiko yang lebih besar.
Resiko utama tidak ditemukan, maka masalah bisa muncul kemudian. Sehingga membutuhkan kemampuan manajemen dan perkiraan resiko (risk assessment) yang cukup tinggi.
Hanya cocok untuk softwere skala besar
3.5
Pemilihan Metode
3.5.1 Teknik Pengumpulan Data Setelah mengamati berbagai metode pengumpulan data di atas, maka penulis memutuskan untuk memakai metode studi pustaka dan metode observasi. Metode studi pustaka dilakukan penulis dengan melakukan pengumpulan data dan informasi
46
dengan cara membaca buku-buku referensi, e-book dan situs internet yang dapat dijadikan acuan pembahasan dalam masalah ini. Adapun buku-buku dan bahan referensi lainnya yang dipakai dalam skripsi ini dapat dilihat pada daftar pustaka. Sedangkan metode observasi dengan cara mengambil dan mengamati langsung bahan penelitian dalam hal ini adalah daun Papilionaceae. Tanaman yang diamati sebanyak lima jenis, setiap jenis tanaman diamati lima daun 3.5.2 Metode Pengembangan Sistem Proses pengembangan sistem diartikan sebagai sekumpulan aktivitas, metode, best practice, deliverable dan tools-tools otomatis yang digunakan stakeholder untuk mengembangkan
sistem
informasi
dan
software
secara
kontinu,
artinya
pengembangan yang dilakukan secara bertahap dari hal-hal yang menjadi kendala sistem sampai hal-hal yang menjadi kebutuhan sistem (Whitten, 2004). Dari beberapa metode pengembangan sistem yang ada, maka penulis menggunakan metode pengembangan sistem RAD (Rapid Application Development). Penulis menggunakan model RAD karena melihat aplikasi yang dikembangkan adalah aplikasi yang sederhana dan tidak membutuhkan waktu yang lama. Metode RAD adalah metode yang
diperuntukkan
dalam
jangka
pendek
sesuai
dengan
aplikasi
yang
dikembangkan. Model pengembangan RAD diperkenalkan oleh James Martin pada tahun 1991 (Pressman, 2002). Ada pun skema model pengembangan RAD (Rapid Application Development) dapat dilihat pada gambar 3.1 (Kendall & Kendall, 2002) :
47
Gambar 3.1. Skema Pengembangan Sistem RAD Model pengembangan RAD memiliki empat fase yaitu fase perencanaan syarat-syarat, fase perancangan, fase konstruksi, dan fase pelaksanaan (Kendall & Kendall, 2002). Berikut adalah penjelasan masing-masing fase dalam penelitian ini. 3.5.2.1 Fase Menentukan Syarat-Syarat Pada tahap ini dilakukan pengidentifikasian tujuan aplikasi atau sistem serta untuk mengidentifikasi syarat-syarat informasi yang ditimbulkan dari tujuan-tujuan tersebut. Apabila pengetahuan diformulasikan secara lengkap, maka tahap implementasi dapat dimulai dengan membuat garis besar masalah, kemudian memecahkan masalah ke dalam modul-modul. Untuk memudahkan, maka harus diidentifikasikan hal-hal sebagai berikut :
48
a. Mendefinisikan masalah b. Analisis kebutuhan masalah c. Tujuan informasi d. Syarat-syarat 3.5.2.2 Fase Perancangan Pada tahap ini dilakukan perancangan antar muka pemakai memberikan fasilitas komunikasi antar pemakai dan sistem, memberikan berbagai fasilitas informasi dan berbagai keterangan yang bertujuan untuk membantu mengarahkan alur penelusuran masalah sampai ditemukannya solusi. Antar muka dirancang sebagai gambaran pada saat pembuatan komponen-komponen GUI pada fase konstruksi. 3.5.2.3 Fase Konstruksi Pada tahap ini dilakukan instalasi ,pengaturan tata letak komponen GUI dan pengkodean terhadap rancangan-rancangan yang telah didefinisikan. Penulis menggunakan software MATLAB sebagai pembuatan antar muka dan editor kode program. 3.5.2.4 Fase Pelaksanaan Pada tahap ini dilakukan pengujian terhadap sistem untuk mengetahui apakah program aplikasi pengklasifikasian ini dapat berjalan dengan baik dan dapat mengenali daun atau tidak. Pada fase ini akan diketahui tingkat keakuratan yang dihasilkan program aplikasi pengklasifikasian pada penelitian ini. Dari fase ini, juga
49
dapat diketahui kesalahan-kesalahan apa yang terjadi, sehingga dapat diperbaiki dalam pengembangan selanjutnya.
50
BAB IV HASIL DAN PEMBAHASAN
Sistem pakar pengklasifikasia tumbuhan menggunakan metode forward chaining dan menggunakan metode Rapid Aplication Development (RAD) sebagai pengembangan aplikasi.
4.1. Fase Menentukan Tujuan dan Syarat-syarat 4.1.1. Mendefinisikan Masalah Masalah yang ingin diselesaikan dengan sistem ini adalah bagaimana mengimplementasikan suatu metode dalam komputer dan tools apa yang mendukung implementasi tersebut. Implementasikan pengklasifikasian tumbuhan dengan menggunakan sistem pakar dengan metode forward chaining. 4.1.2. Analisa Kebutuhan Masalah Metode pengambilan kesimpulan yang dipakai untuk mengklasifikasikan tumbuhan ini adalah metode forward chaining dengan alasan karena input aplikasi dibuat berupa gambar yang diolah menjadi angka atau matrik kemudian dari daun itu dibuat ukuran-ukuran yang nantinya dijadikan sebagai fakta-fakta sehingga akan didapatkan nilai konklusi tentang klasifikasi tumbuhan. Antar muka program akan dirancang dengan menggunakan bahasa pemrograman Matlab 2009 karena matlab
51
merupakan perangkat lunak yang cocok dipakai sebagai alat komputasi yang melibatkan penggunaan matriks dan vektor. Penulis menerapkan beberapa aturan untuk memaksimalkan pengklasifikasian tumbuhan Papilionaceae ini, yaitu sebagai berikut : 1. Objek daun yang ingin dikenali akan diproses dengan image processing terlebih dahulu dengan cara menjadikan gray scale, black & white dan pola tepi daun dibaca menggunakan operator sobel. 2. Nilai
ukuran
daun
akan
dijadikan
sebagai
pengenalan
tumbuhan
Papilionaceae. Pemecahan masalah yang dilakukan dalam pengklasifikasian tumbuhan Papilionaceae sebagai berikut : 1. Metode
forward
chaining
menyelesaikan
identifikasi
tumbuhan
Papilionaceae dengan melakukan penalaran dari bawah ke atas, yaitu proses penalaran dan pembacaan dimulai dari fakta-fakta ukuran daun baik itu aspek rasio, form faktor dan diagonal daun. 2. Pengolah citra yang penulis lakukan adalah menggunakan operator sobel untuk memudahkan pembacaan bentuk daun. 3. Output citra berdasarkan operator sobel, sehingga garis tepi daun Papilionaceae dapat terlihat dengan baik.
52
4.1.3. Tujuan Informasi Tujuan penggunaan aplikasi pengklasifikasian tumbuhan Papilionaceae ini untuk mengimpelementasikan metode sistem pakar dengan metode forward chaining sehingga diharapkan dapat mengetahui pengklasifikasian tumbuhan dengan image sebagai interfacenya menggunakan komputer. ,
4.1.4. Syarat-syarat Informasi Untuk mewujudkan tujuan tersebut maka dibutuhkan beberapa syarat dalam penerapan metode forward chaining sebagai solusi dalam penklasifikasian tumbuhan Papilionaceae, meliputi kelengkapan software dan hardware. Kelengkapan software yang digunakan untuk pembuatan aplikasi simulasi ini adalah : 1. Matlab 2009, sebagai bahasa pemrograman yang digunakan dalam pembuatan aplikasi simulasi ini. 2. Sistem Operasi Windows XP yang berjalan di PC (Personal Computer). Sedangkan untuk kelengkapan hardware yang digunakan dalam pembuatan aplikasi simulasi ini adalah seperangkat PC lengkap dengan peralatan pendukungnya.
53
4.2. Fase Perancangan 4.2.1 Perancangan Proses Sebelum proses indentifikasi tumbuhan Papilionaceae dibutuhkan citra daun Papilionaceae
dengan
format
JPEG,
untuk
membedakan daun
tumbuhan
Papilinaceae mengggunakan rumus : 1. Ukur aspek rasio daun dengan menggunakan rumus. Aspek rasio daun = tinggi / lebar 2. Ukur form faktor daun dengan rumus. Form factor=(4*3.14*luasdaun)/((kelilingdaun)^2) 3. Jumlahkan diagonal objek daun.
Selanjutnya,
user
dapat
langsung
memasukan data berupa image daun Papilionaceae ke dalam aplikasi yang sudah terintegrasi dengan software Matlab 2009, kemudian image tersebut melewati beberapa tahapan dalam proses pengolahan citra. Tahap selanjutnya, image ditampilkan dan dilakukan proses penyederhanaan warna (Grayscale) untuk memudahkan proses pengolahan citra, sehingga citra asli yang dimasukan berubah menjadi seperti berikut :
Gambar 4.1 Citra Grayscale
54
Selanjutnya, gambar akan dirubah ke dalam black & white, sehingga gambar tampak seperti di bawah ini :
Gambar 4.2 Citra Black & White Tahap selanjutnya dilakukan pengolahan citra (edge detection) dengan menggunakan operator sobel supaya bentuk pinggir daun dapat terlihat dan dapat di analisa. Perubahan citra dengan menggunakan operator sobel sebagai berikut :
Gambar 4.3 Citra Hasil Operator Sobel Hasil dari proses ini kemudian dijadikan fakta dalam proses penalaran forwar chaining sehingga didapat konklusi. Adapun fakta-fakta tersebut dapat dilihat dalam tabel dibawah ini : 1. Aspek rasio Tabel 4.1 Range Aspek Rasio Daun Kacang tanah
1.738 s/d 2.4378
Turi putih
2.8076 s/d 3.09
Kacang panjang
1.6 s/d 1.8605
Angsana
1.418 s/d 1.7318
Dadap
1.023 s/d 1.1306
55
2. Form faktor Tabel 4.2 Range Form Faktor Daun Kacang tanah
0.83312 s/d 1.0539
Turi putih
0.70344 s/d 0.76195
Kacang panjang
0.7242 s/d 0.86914
Angsana
0.91601 s/d 1.1038
Dadap
0.73965 s/d 0.90469
3. Diagonal daun Tabel 4.3 Range Diagonal Daun Kacang tanah
26 s/d 35
Turi putih
19 s/d 23
Kacang panjang
17 s/d 24
Angsana
29 s/d 40
Dadap
41.5 s/d 51
Struktur pohon dalam penyelesaian masalah pada identifikasi tumbuhan kacang-kacangan (Papilionaceae) adalah sebagai berikut : a. Identifikasi kacang tanah, maka struktur pohonnya seperti di bawah ini : KT
AR
FF
D
KT
Identifikasi Tumbuhan Kacang Tanah
AR
Aspek Rasio
FF
Form Faktor
D
Diagonal
56
b. Identifikasi turi putih, maka struktur pohonnya seperti di bawah ini : TP
AR
FF
TP
Identifikasi Tumbuhan Turi Putih
AR
Aspek Rasio
FF
Form Faktor
D
Diagonal
D
c. Identifikasi kacang panjang, maka struktur pohonnya seperti di bawah ini : KP
AR
FF
D
KP
Identifikasi Panjang
AR
Aspek Rasio
FF
Form Faktor
D
Diagonal
Tumbuhan
Kacang
d. Identifikasi angsana, maka struktur pohonnya seperti di bawah ini : A
A
AR
FF
Identifikasi Tumbuhan Angsana
AR
Aspek Rasio
FF
Form Faktor
D
Diagonal
D
e. Identifikasi dadap, maka struktur pohonnya seperti di bawah ini : D
D
AR
FF
D
Identifikasi Tumbuhan Dadap
AR
Aspek Rasio
FF
Form Faktor
D
Diagonal
57
Dari fakta-fakta di atas, maka identifikasi tumbuhan Papilionaceae dapat dilakukan. Adapun alur kerja proses identifikasi tumbuhan dapat dilihat pada gambar berikut : Start
Pilih gambar
Convert to grayscale
Convert to black & white Operator sobel
Hitung aspek rasio, form faktor dan diagonal daun
Range aspek rasio, form faktor dan diagonal daun
Ya
Tampilkan nama tumbuhan
Tidak Tumbuhan dikenalai
tidak
End Gambar 4.4 Alur Kerja Identifikasi Tumbuhan Papilionaceae
58
Daun yang ingin diidentifikasi harus melewati beberapa proses terlebih dahulu, jika sesuai dengan ketentuan-kententuan yang diterapkan dalam program maka program dapat mengidentifikasi daun yang dimaksud. 4.2.2 Perancangan Antar Muka Penelitian ini adalah sebuah simulasi dan bukan merupakan aplikasi siap pakai, maka antarmuka yang dibuat juga cukup sederhana, antara lain: 1. Form Pembuka. 2. Form Utama. 4.2.3 Form Pembuka Form pembuka, berisi nama perangkat lunak, nama serta NIM mahasiswa yang membuat perangkat lunak, nama jurusan dan tahun pembuatan tugas akhir, button tutup dan masuk aplikasi. Rancangan form pembuka dapat dilihat pada gambar 4.5. berikut:
59
1
2 3
4
5 6
Gambar 4.5 Perancangan Form Pembuka
Keterangan: 1. Nama perangkat lunak. 2. Nama penyusun tugas akhir. 3. Nim penyusun tugas akhir. 4. Nama jurusan dan tahun pembuatan tugas akhir. 5. Button untuk menutup form pembuka. 6. Button untuk masuk form utama.
60
4.2.4
Form Utama Form utama menampilkan judul aplikasi dan link untuk membuka form input
kunci, input pesan, form Teori dan form About. Rancangan form Utama dapat dilihat pada gambar 4.6 berikut:
1
7 2 Aspek rasio Daun
8 3
Proses
Form Faktor
9 4
Pucuk daun
Buka
6
Jenis Daun
5 Tutup
11
12
Gambar 4.6 Perancangan Form Utama Keterangan: 1. Nama perangkat lunak. 2. Kotak tampilan proses gray scale. 3. Button proses.
10
61
4. Kotak tampilan gambar sebelum diproses yang keluar setalah di click button buka. 5. Text box untuk menampilkan hasil perhitungan diagonal daun. 6. Button untuk memanggil gambar daun untuk diproses. 7. Kotak tampilan proses black white gambar. 8. Text box untuk menampilkan hasil perhitungan aspek rasio daun. 9. Kotak tampilan hasil proses edge detection (deteksi tepi) dengan operator sobel. 10. Text box untuk menampilkan hasil perhitungan form faktor daun. 11. Text box untuk menampilkan hasil kesimpulan proses. 12. Button untuk menutup form utama. 4.3 Fase Konstruksi Transformasikan semua hasil rancangan, lalu diterapkan menjadi program aplikasi yang dapat dioperasikan. Dalam melakukan proses konstruksi penulis melalui langkah-langkah sebagai berikut : 4.3.1
Instalasi Program Sebelum memulai menuliskan kode program, perlu dilakukan penginstalan
perangkat lunak Matlab 2009 terlebih dahulu.
62
4.3.2
Menjalankan Software Matlab Setelah software terinstal dengan benar, maka selanjutnya adalah
menjalankan Matlab, yaitu dengan cara Start All Programs MATLAB Matlab R14 seperti ditunjukkan oleh gambar berikut ini :
Gambar 4.7 Menjalankan Software Matlab Kemudian akan terlihat tampilan sebagai berikut :
Gambar 4.8 Tampilan Awal Software Matlab
63
4.3.3
Mengatur Tata Letak Komponen GUI Graphical User Interface (GUI) dalam aplikasinya dapat terdiri atas beberapa
komponen user interface yang saling berinteraksi, sehingga membentuk sebuah program aplikasi. Setelah membuka GUIDE Matlab, langkah selanjutnya adalah mendesain figure dengan menggunakan komponen palet seperti pushbutton, slider, static text, edit text, frame, radio button dan sebagainya. Untuk membuat GUI baru klik File New GUI, sehingga muncul tampilan sebagai berikut :
Gambar 4.9 Membuat GUI Baru Setelah itu penulis, mengatur tata letak masing-masing komponen, baik string(caption), tag(name), font, maupun color, dengan menggunakan property.
64
Gambar 4.10 Halaman Kerja GUI
Gambar 4.11 Contoh Pengaturan Tata Letak Komponen pada GUI Matlab
65
Jika selesai didisain, maka langkah berikutnya adalah menyimpan dengan file berekstensi *.fig. Dari sini, Matlab akan secara otomatis membuat sebuah m-file dengan nama sama. 4.3.4
Memprogram Komponen GUI Langkah selanjutnya yang harus dilakukan adalah menulis kode program m-
file yang telah dibuat pada langkah sebelumnya agar komponen dapat bekerja secara simultan.
Gambar 4.12 Membuka M-file dari Figure GUI yang Telah dirancang
66
Gambar 4.13 Tampilan M-file dari Figure GUI Untuk membuat program pada m-file, penulis cukup memperhatikan fungsifungsi matlab bertanda callback di mana perintah disisipkan.
Gambar 4.14 Menyisipkan Kode Program pada Fungsi Callback
67
Inti dari aplikasi simulasi diagnosis penyakit ini terdapat pada kode fungsi pelatihan_Callback dan kode program dapat dilihat pada Lampiran D. 4.3.5
Menjalankan Program Setelah figure selesai didesain dan kode selesai ditulis, maka langkah
selanjutnya adalah menjalankan program dengan menekan f5.
Gambar 4.15 Menjalankan Kode Program M-file yang Telah ditulis
4.4
Fase Pelaksanaan Pada fase pelaksanaan ini, penulis akan melakukan uji coba sistem dalam
melakukan pelatihan data, pengujian data dan prediksi.
68
4.4.1
Spesifikasi Minimum Pemakaian Aplikasi Agar aplikasi ini dapat berjalan dengan baik, maka dibutuhkan komputer
yang mendukung operasional perangkat lunak Matlab 2009, dengan spesifikasi minimum sebagai berikut : 1. Prosesor : Intel Pentium (Pentium 4 atau versi diatasnya), Intel Celeron, Intel Xeon, Intel Core, AMD Athlon, AMD Optheron, AMD Sempron. 2. Sistem Operasi : Windows XP (Service Pack 1 atau 2), Windows Server (Service Pack 1 atau 2), Windows Vista. 3. RAM : 512 MB 4. Space Harddisk : 2 GB untuk instalasi Matlab. 4.4.2
Fitur dalam Aplikasi Fitur – fitur dalam aplikasi ini antara lain : 1.
Fitur
menu
pembuka
Aplikasi
menggunakan metode forward chaining
Pengklasifikasian
Tumbuhan
69
Gambar 4.16 Tampilan Menu Pembuka 2.
Fitur menu utama Aplikasi Pengklasifikasian Tumbuhan menggunakan metode forward chaining
Gambar 4.17 Tampilan Menu Utama
70
4.5.3 Proses Pengujian Aplikasi Misalkan, dipanggil gambar daun seperti terlihat pada gambar 4.14. berikut.
Gambar 4.18 Tampilan Membuka Gambar
Selanjutnya tekan Button proses, maka akan tampil seperti gambar 4.15 berikut:
Gambar 4.19 Tampilan Processing
71
Pada tampilan gambar 4.15 secara otomatis menampilkan semua proses pendeteksian daun, dimulai dari gray scale, black white dan deteksi tepi (edge detection) menggunakan operator sobel. Ukuran aspek rasio, form faktor dan diagonal secara otomatis pula ditampilkan. metode forward chaining dan output hasilnya pun langsung ditampilkan, jika termasuk jenis Papilionaceae maka akan muncul nama dari tumbuhannya jika tidak maka program mengeluarkan output tidak dikenali. 4.5.4 Hasil Penelitian Proses penelitian dilakukan untuk mengetahui keakuratan dari program aplikasi yang dibuat. Hasil penelitian pengklasifikasian tumbuhan Papilioneceae yang telah diuji dapat dilihat pada tabel 4.4 berikut : Tabel 4.4 Uji Coba Aplikasi No
Aspek Rasio
Form Faktor
Diagonal
Hasil
1
1.6383
1.0067
33
Angsana1
2
1.5
0.95471
36
Angsana2
3
1.7317
0.91602
29
Angsana3
4
1.4182
1.1037
40
Angsana4
5
1.025
0.8332
50
Dadap1
6
1.026
0.86583
47
Dadap2
7
1.039
0.90467
48
Dadap3
8
1.1304
0.77658
42
Dadap4
72
9
2.4375
0.86439
26
Kacang tanah1
10
1.9048
0.94133
32
Kacang tanah2
11
1.8571
0.96061
35
Kacang tanah3
12
2.4063
0.83313
26
Kacang tanah4
13
1.75
0.86914
24
Kacang panjang1
14
1.75
0.86914
24
Kacang panjang2
15
1.6
0.76443
20
Kacang panjang3
16
1.8571
0.72422
17
Kacang panjang4
17
2.8462
0.76194
20
Turi putih1
18
2.9167
0.70345
22
Turi putih2
19
3.08
0.72492
23
Turi putih3
20
2.9231
0.74759
22
Turi putih4
Dari hasil yang diperoleh, maka dapat disimpulkan bahwa aplikasi sistem Pakar Pengklasifikasian Tumbuhan Papilionaceae dengan metode forward chaining ini memiliki keakuratan yang baik.
73
73
BAB V KESIMPULAN DAN SARAN
5.1
Kesimpulan Berdasarkan hasil ujicoba dari aplikasi yang dirancang, maka dapat ditarik
kesimpulan sebagai berikut : 1.
Sistem pakar dengan metode forward chaining dapat menghasilkan output yang sesuai yaitu pengklasifikasian tumbuhan Papilionaceae.
2.
Daun dapat dibaca atau dikenali harus melalui proses image processing terlebih dahulu, setelah itu dicari ukuran aspek rasio, form faktor, dan diagonal daun.
5.2
Saran Saran yang diajukan untuk mengembangkan perangkat lunak ini yaitu : 1. Perangkat lunak ini dapat dikembangkan dengan menggunakan neural netwark. 2. Perangkat lunak dapat dikembangkan dengan menambahkan fitur-fitur lain sehingga menjadi lebih menarik dan komplek.
DAFTAR PUSTAKA
Ahmad, U. 2005. Pengolahan Citra Digital dan Teknik Pemrogramannya. Yogyakarta : Graha Ilmu.
Arhami, M. 2005, Konsep Dasar Sistem Pakar. Yogyakarta : Andi
Binanto, I. 2010. Multimedia Digital Dasar dan Teori. Yogyakarta : Andi
Canny, J. 1986. A Computational Approach to Edge Detection
D. A. Pratiwi, Maryanti. S, Srikini, Suharno, Bambang, 2006, Biologi SMU Kelas 1 Semester 1. Jakarta: Erlangga
Tjitrosoepomo, G. 1988. Taksonomi Tumbuhan. Yogyakarta : Gadjah Mada University Pres
Kusumadewi, S. 2003, Artificial Intelegent. Yogyakarta : Graha Ilmu
Kendall, K.E. and J.E. Kendall. 2002. Systems Analysis and Design, Fifth Edition. New Jersey : Prentice Hall, Inc.
Munir, R. 2004. Pengolahan Citra Digital dengan Pendekatan Algoritmik. Bandung : Informatika. 74
Nazir, M. 2003. Metode Penelitian. Jakarta : Ghalia Indonesia.
Pressman, R.S. 2002. Rekayasa Perangkat Lunak Edisi Ke-1. Yogyakarta : Andi.
Pandjaitan, L. 2007. Dasar – Dasar Komputasi Cerdas. Yogyakarta : Andi
Sartika, D, 2008. Query Image Pada Database Multimedia Berdasarkan Geometri Primitif.
Stenis, C.G.G.J.V. 1992. Flora. Jakarta : PT. Pradnya Paramita
75
Daftar Riwayat Hidup
Data Pribadi Nama
: Taufiq
Jenis kelamin
: Laki-laki
Tempat, tanggal lahir : Jepara, 15 Maret 1987 Kewarganegaraan
: Indonesia
Status perkawinan
: Belum menikah
Agama
: Islam
Alamat lengkap
: Kp. Cibadas Ds. Kaduagung Barat RT 01/01 Cibadak, Lebak, Banten
Telepon, HP
: 085283733774
E-mail
:
[email protected]
Pendidikan formal 1992 - 1998
: SDN Kaduagung Barat 1
1998 - 2001
: MTs Darul Iman Pandeglang
2001 - 2004
: MA Darul Iman Pandeglang
2004 - 2010
: JurusanTeknik Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri (UIN) Syarif Hidayatullah, Jakarta
Judul Skripsi
: Identifikasi Tumbuhan kacang-kacangan (Papilionaceae) Menggunakan Sistem Pakar dengan Pendekatan Forward Chaining
DAFTAR TABEL
Tabel 3.1 Perbandingan Metode Pengembangan Sistem …………………...
44
Tabel 4.1 Range Aspek Rasio Daun ………………………………………..
54
Tabel 4.2 Range Form Faktor Daun ………………………………………... 55 Tabel 4.3 Range Diagonal Daun ……………………………………………
55
Tabel 4.4 Uji Coba Aplikasi ………………………………………………..
71
DAFTAR LAMPIRAN
Lampiran Flowchart Program …………………..............................................
76
Lampiran Source Code Program ….. ………………………………………..
77
xvi
76
LAMPIRAN A FLOWCHART PROGRAM Diagram Alur Program Start
Pilih gambar
Convert to grayscale
Convert to black & white Operator sobel
Hitung aspek rasio, form faktor dan diagonal daun
Range aspek rasio, form faktor dan diagonal daun
Tidak Tumbuhan dikenalai
End
tidak
Ya
Tampilkan nama tumbuhan
77
LAMPIRAN B SOURCE CODE PROGRAM 1. Menu pembuka function varargout = aw(varargin) % AW M-file for aw.fig % AW, by itself, creates a new AW or raises the existing % singleton*. % % H = AW returns the handle to a new AW or the handle to % the existing singleton*. % % AW('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in AW.M with the given input arguments. % % AW('Property','Value',...) creates a new AW or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before aw_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to aw_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 aw % Last Modified by GUIDE v2.5 08-Aug-2010 22:45:46 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @aw_OpeningFcn, ... 'gui_OutputFcn', @aw_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
78
% --- Executes just before aw is made visible. function aw_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 aw (see VARARGIN) % Choose default command line output for aw handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes aw wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. function varargout = aw_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;
% --- Executes on button press in pbClickMe. function pbClickMe_Callback(hObject, eventdata, handles) % hObject handle to pbClickMe (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) fig=openfig('coba_skripsi.fig'); handles=guihandles(fig); guidata(fig,handles);
% --- If Enable == 'on', executes on mouse press in 5 pixel border. % --- Otherwise, executes on mouse press in 5 pixel border or over text2. function text2_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to text2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
79
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (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 edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (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 edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (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 edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (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.
80
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close;
2. Menu utama function varargout = coba_skripsi(varargin) % COBA_SKRIPSI M-file for coba_skripsi.fig % COBA_SKRIPSI, by itself, creates a new COBA_SKRIPSI or raises the existing % singleton*. % % H = COBA_SKRIPSI returns the handle to a new COBA_SKRIPSI or the handle to % the existing singleton*. % % COBA_SKRIPSI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in COBA_SKRIPSI.M with the given input arguments. % % COBA_SKRIPSI('Property','Value',...) creates a new COBA_SKRIPSI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before coba_skripsi_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to coba_skripsi_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 coba_skripsi % Last Modified by GUIDE v2.5 31-Aug-2010 22:55:15 % Begin initialization code - DO NOT EDIT
81
gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @coba_skripsi_OpeningFcn, ... 'gui_OutputFcn', @coba_skripsi_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 function wait_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
h=waitbar(0,'Harap Tunggu...'); n=1; pjg=1000; while n <= pjg n=n+1; waitbar(n/pjg); end close(h);
% --- Executes just before coba_skripsi is made visible. function coba_skripsi_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 coba_skripsi (see VARARGIN) % Choose default command line output for coba_skripsi handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes coba_skripsi wait for user response (see UIRESUME) % uiwait(handles.figure1);
82
% --- Outputs from this function are returned to the command line. function varargout = coba_skripsi_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;
% --- Executes on button press in buka_push. function buka_push_Callback(hObject, eventdata, handles) % hObject handle to buka_push (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) buka = guidata(gcbo); [namafile,direktori]=uigetfile({'*.jpg';'*.tif';'*.*'},'buka citra'); I = imread(strcat(direktori,namafile)); wait_Callback(hObject, eventdata, handles) set(buka.figure1,'CurrentAxes',buka.axes1); set(imshow(I)); set(buka.axes1,'userdata',I); %set(buka.figure1,'userdata',I); % --- Executes on button press in proses_push. function proses_push_Callback(hObject, eventdata, handles) % hObject handle to proses_push (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) buka = guidata(gcbo); I=get(buka.axes1,'userdata'); A=rgb2gray(I); set(buka.figure1,'CurrentAxes',buka.axes2); set(imshow(A)); %set(buka.axes2,'userdata',A); bw = im2bw(A); axes(handles.axes3); imshow(bw); %edgedetection e=edge(bw,'sobel'); axes(handles.axes6); set(imshow(e)); [x,y]=size(e); brs=1;
83
%mencari rasio daun for rep1=1:x; for rep2=1:y; if e(rep1,rep2)==1; kord(brs,1)=rep1; kord(brs,2)=rep2; brs=brs+1; end end end [a,b]=size(kord); atas=kord(1,1); bwh=kord(a,1); tinggi=bwh-atas; ilbr=1; for rep3=2:a hasil=kord(rep3,1)-kord(rep3-1,1); if hasil==0 lbr(ilbr)=kord(rep3,2)-kord(rep3-1,2); ilbr=ilbr+1; end end lebar=max(lbr); rasiodaun=tinggi/lebar; r=num2str(rasiodaun); set(handles.output1,'String',r); guidata(hObject,handles); %mencari keliling daun kelilingdaun=a;
%mencari luas daun jumpix=0; for rep4=1:x for rep5=1:y if bw(rep4,rep5)==0 jumpix=jumpix+1; end end end luasdaun=jumpix; %mencari pucuk daun %pucuk=luasdaun/15; %set(handles.output4,'String',pucuk); %guidata(hObject,handles); % mencari form factor formfactor=(4*3.14*luasdaun)/((kelilingdaun)^2); f=num2str(formfactor); set(handles.output2,'String',f); guidata(hObject,handles);
84
%jumlah diag bw1=~bw; g=sum(diag(bw1,20)); %gd=num2str(dg); set(handles.output3,'String',g); guidata(hObject,handles); if ((rasiodaun >= 1.738)&(rasiodaun <= 2.4378))&((formfactor >= 0.83312)&(formfactor <= 1.0539))&((g >= 26)&(g <= 35)) set(handles.outputdaun,'string','kacang tanah'); else if ((rasiodaun >= 2.8076)&(rasiodaun <= 3.09))&((formfactor >= 0.70344)&(formfactor <= 0.76195))&((g >= 19)&(g <= 23)) set(handles.outputdaun,'string','turi putih'); else if ((rasiodaun >= 1.6)&(rasiodaun <= 1.8605))&((formfactor >= 0.7242)&(formfactor <= 0.86914))&((g >= 17)&(g <= 24)) set(handles.outputdaun,'string','kacang panjang'); else if ((rasiodaun >= 1.4181)&(rasiodaun <= 1.7318))&((formfactor >= 0.91601)&(formfactor <= 1.1038))&((g >= 29)&(g <= 40)) set(handles.outputdaun,'string','Angsana'); else if ((rasiodaun >= 1.023)&(rasiodaun <= 1.1306))&((formfactor >= 0.73965)&(formfactor <= 0.90469))&((g >= 41.5)&(g <= 51)) set(handles.outputdaun,'string','Dadap');
else if((rasiodaun <= 1.737)||(rasiodaun >= 2.4380))||((formfactor <= 0.83313)||(formfactor >= 1.0541))||((g <= 25)||(g >= 36))||((pucuk <=54.6648 )||(pucuk >= 61)) set(handles.outputdaun,'string','tidak dikenali'); else if ((rasiodaun <= 2.8070)||(rasiodaun >= 3.12))||((formfactor <= 0.70340)||(formfactor >= 0.76199))||((g <= 18)||(g >= 23.5))||((pucuk <=51 )||(pucuk >= 56.5)) set(handles.outputdaun,'string','tidak dikenali'); else if ((rasiodaun <= 1.54)||(rasiodaun >= 1.866))||((formfactor <= 0.7240)||(formfactor >= 0.86919))||((g <= 16)||(g >= 24.5))||((pucuk <=60 )||(pucuk >= 64.5)) set(handles.outputdaun,'string','tidak dikenali'); else if ((rasiodaun <= 1.4175)||(rasiodaun >= 1.7325))||((formfactor <= 0.9155)||(formfactor >= 1.1041))||((g <= 28)||(g >= 40.5))||((pucuk <=56.3320 )||(pucuk >= 63.6680)) set(handles.outputdaun,'string','tidak dikenali'); else if ((rasiodaun <= 1.020)||(rasiodaun >= 1.1310))||((formfactor <= 0.73960)||(formfactor >= 0.90475))||((g <= 41.)||(g >= 52))||((pucuk <=7.5 )||(pucuk >= 88.5)) set(handles.outputdaun,'string','tidak dikenali');
end end end end end
85
end end end end end
function outputdaun_Callback(hObject, eventdata, handles) % hObject handle to outputdaun (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 outputdaun as text % str2double(get(hObject,'String')) returns contents of outputdaun as a double
% --- Executes during object creation, after setting all properties. function outputdaun_CreateFcn(hObject, eventdata, handles) % hObject handle to outputdaun (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
% --- Executes on button press in tutup_push. function tutup_push_Callback(hObject, eventdata, handles) % hObject handle to tutup_push (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 ',get(handles.figure1,'name'),' ...'],... 'Ya','Tidak','Ya'); if strcmp(selection,'Tidak') return; end delete(handles.figure1); % -------------------------------------------------------------------
86
function Untitled_1_Callback(hObject, eventdata, handles) % hObject handle to Untitled_1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in save_push. function save_push_Callback(hObject, eventdata, handles) % hObject handle to save_push (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %buka = guidata(gcbo); %[namafile,direktori] = uiputfile({'*.JPG';'*.tif'},'simpanfile'); %I = get(proyek.axes6,'Userdata'); %imwrite(I,strcat(direktori,namafile)); %proyek=guidata(gcbo); %I=get(proyek.figure1,'Userdata'); %set(proyek.figure1,'CurrentAxes',proyek.axes1); %set(imshow(I)); %set(proyek.axes1,'Userdata',I); function output1_Callback(hObject, eventdata, handles) % hObject handle to output1 (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 output1 as text % str2double(get(hObject,'String')) returns contents of output1 as a double
% --- Executes during object creation, after setting all properties. function output1_CreateFcn(hObject, eventdata, handles) % hObject handle to output1 (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 output2_Callback(hObject, eventdata, handles)
87
% hObject % eventdata MATLAB % handles
handle to output2 (see GCBO) reserved - to be defined in a future version of structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of output2 as text % str2double(get(hObject,'String')) returns contents of output2 as a double
% --- Executes during object creation, after setting all properties. function output2_CreateFcn(hObject, eventdata, handles) % hObject handle to output2 (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 Untitled_2_Callback(hObject, eventdata, handles) % hObject handle to Untitled_2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes on mouse press over axes background. function axes2_ButtonDownFcn(hObject, eventdata, handles) % hObject handle to axes2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
function output3_Callback(hObject, eventdata, handles) % hObject handle to output3 (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 output3 as text % str2double(get(hObject,'String')) returns contents of output3 as a double
88
% --- Executes during object creation, after setting all properties. function output3_CreateFcn(hObject, eventdata, handles) % hObject handle to output3 (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 output4_Callback(hObject, eventdata, handles) % hObject handle to output4 (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 output4 as text % str2double(get(hObject,'String')) returns contents of output4 as a double
% --- Executes during object creation, after setting all properties. function output4_CreateFcn(hObject, eventdata, handles) % hObject handle to output4 (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 output5_Callback(hObject, eventdata, handles) % hObject handle to output5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
89
% Hints: get(hObject,'String') returns contents of output5 as text % str2double(get(hObject,'String')) returns contents of output5 as a double
% --- Executes during object creation, after setting all properties. function output5_CreateFcn(hObject, eventdata, handles) % hObject handle to output5 (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
% --- Executes on button press in pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) reset;
function output6_Callback(hObject, eventdata, handles) % hObject handle to output6 (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 output6 as text % str2double(get(hObject,'String')) returns contents of output6 as a double
% --- Executes during object creation, after setting all properties. function output6_CreateFcn(hObject, eventdata, handles) % hObject handle to output6 (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.
90
% See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function output7_Callback(hObject, eventdata, handles) % hObject handle to output7 (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 output7 as text % str2double(get(hObject,'String')) returns contents of output7 as a double
% --- Executes during object creation, after setting all properties. function output7_CreateFcn(hObject, eventdata, handles) % hObject handle to output7 (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 output8_Callback(hObject, eventdata, handles) % hObject handle to output8 (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 output8 as text % str2double(get(hObject,'String')) returns contents of output8 as a double
% --- Executes during object creation, after setting all properties. function output8_CreateFcn(hObject, eventdata, handles) % hObject handle to output8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
91
% 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 output9_Callback(hObject, eventdata, handles) % hObject handle to output9 (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 output9 as text % str2double(get(hObject,'String')) returns contents of output9 as a double
% --- Executes during object creation, after setting all properties. function output9_CreateFcn(hObject, eventdata, handles) % hObject handle to output9 (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