BAB 2 LANDASAN TEORI
2.1 Citra Raster 2.1.1
Definisi Citra Raster
Citra raster atau biasa juga dikenal sebagai citra bitmap adalah citra yang terbuat dari kumpulan titik – titik atau pixels yang tersusun pada garis (grid). Pixels adalah komponen – komponen pada sebuah gambar atau citra yang merupakan titik – titik kecil yang mempunyai warna individual. Setiap titik – titik kecil tersusun bersamaan untuk membentuk citra yang terlihat pada layar komputer. (Jay Buselle, 2004). 2.1.2
Pixel
Pixel yang mempunyai arti titik, adalah unsur terpenting dalam pembentukan citra raster. Sebuah objek citra raster dapat dibentuk dari kumpulan titik – titik atau pixels yang pada setiap titiknya merepresentasikan warna tersendiri yang menjadikannya objek citra raster yang terlihat oleh mata kita. Tampilan pada citra raster mengacu pada indeks pixels (i,j) yang tersusun dan menunjukkan letak baris dan kolom pada suatu pixel. Jika sebuah citra memiliki pixels dengan jumlah kolom nx dan jumlah baris ny , maka letak pixel yang paling kiri – bawah adalah (0,0) sedangkan letak pixel yang paling kanan atas (nx-1, ny-1).
10
2.1.3
Resolusi Citra Raster
Citra raster adalah citra yang bergantung pada resolusi. Resolusi merupakan sebuah ekspresi m x n di mana m adalah jumlah baris dan n adalah jumlah kolom. Resolusi juga mengacu pada jumlah pixels didalam sebuah citra dan memiliki satuan dpi (dots per inch) atau ppi (pixels per inch). Semakin tinggi resolusi, maka akan semakin banyak jumlah pixels-nya dan juga semakin baik gradasi warna antar pixels agar bisa terlihat lebih bagus di layar. Citra raster yang ditampilkan pada layar komputer biasanya memiliki resolusi 100 ppi. Karena citra raster bergantung pada resolusi, maka sangatlah susah untuk memperbesar ukuran dari citra tanpa mengurangi kualitas dari citra itu sendiri. (Jay Buselle, 2004).
Gambar 2.1 Perbandingan antara objek citra raster (bila diperbesar dua kali lipat terjadi penurunan kualitas)
2.1.4
Warna Citra Raster
Pada umumnya warna pada citra raster didefinisikan oleh tiga warna dasar yaitu red atau merah, green atau hijau, dan blue atau biru, atau disebut juga RGB color (Red Green Blue). RGB color adalah pembagian warna yang sederhana
11
yang dapat melakukan konversi langsung kedalam pengaturan untuk kebanyakan layar komputer. Pemikiran dasar pada RGB color adalah warna yang ditampilkan pada layar merupakan hasil dari campuran tiga warna yaitu merah, hijau, dan biru. Pencampuran tiga warna utama tersebut dilakukan dengan cara additive, di mana mempunyai hasil campuran sebagai berikut: merah + hijau = kuning hijau + biru = cyan biru + merah = magenta merah + hijau + biru = putih Di mana warna “cyan” adalah warna hijau-biru dan “magenta” adalah warna ungu, untuk lebih jelasnya bisa dilihat pada gambar dibawah (Gambar 2.2).
Gambar 2.2 Campuran warna dengan aturan additive pada RGB color.
Warna pada citra raster memiliki berbagai macam ukuran, jika dilakukan scan pada citra dengan ukuran kedalaman warna (color depth) 24-bit (16 juta
12
warna), kebanyakan mata manusia tidak bisa melihat perbedaan yang ada antara citra asli dengan citra raster hasil scan karena banyaknya warna yang ada pada kedalaman warna 24-bit. Namun jika pada citra yang sama dilakukan scan dengan ukuran kedalaman warna 256 colors sangatlah tidak mungkin untuk menghasilkan hasil scan citra raster yang sama dengan citra asli karena sedikitnya pilihan warna yaitu 256 warna. (Jay Buselle, 2004).
2.1.5
Garis Pada Citra Raster
Pada citra raster umumnya mempunyai perintah penggambaran garis dengan dua titik ujung atau endpoint pada koordinat layar dan menggambar garis diantara kedua titik tersebut. Misal, ada sebuah dua titik ujung yang terletak di (1,1) dan (3,2) maka akan diisi pixel untuk menghubungkan kedua titik tersebut. Pada koordinat layar yang umum, titik ujung (x0, y0) dan (x1, y1), harus dapat menggambar kumpulan pixel yang kira – kira ”masuk akal” untuk menghubungkan kedua titik tersebut. Nilai dari x0, y0, x1, y1 biasanya adalah integer, karena biasanya garis – garis adalah kesatuan yang cukup kasar yang membuat akurasi dari subpixel atau pixel pengganti tidak sesuai. Bila ada gambar garis yang terbentang diantara dua titik ujung maka ada beberapa kemungkinan pixel yang dapat diisi diantara dua titik ujung tersebut seperti yang dapat kita lihat pada gambar dibawah ini (Gambar 2.3). (Peter Shirley, 2005, hal. 58).
13
Gambar 2.3 Contoh kemungkinan yang berbeda dalam menggambar garis dian
tara dua titik
ujung.
2.1.6
Format File Citra Raster
Format file citra raster yang biasa dipakai adalah .bmp (Windows Bitmap), .pcx (Paintbrush), .tiff (Tag Interleave Format), .jpeg (Joint Photographics Expert Group), GIF (Graphics Interchange Format), PNG (Portable Network Graphic), PSD (Adobe PhotoShop), CPT (Corel PhotoPaint), dan sebagainya.
2.2 Citra Vektor 2.2.1
Definisi Citra Vektor
Citra vektor adalah kumpulan garis atau lengkungan yang terhubung sehingga menghasilkan suatu objek. Pada saat membuat citra vektor pada program ilustrasi citra vektor, titik – titik pada objek disisipkan dan garis – garis atau lengkungan – lengkungan menghubungkan setiap titik – titik yang ada pada objek. Setiap titik, garis, dan lengkungan terdefinisi oleh software dalam bentuk deskripsi matematika. Setiap aspek dari objek vektor terdefinisi oleh matematika
14
termasuk posisi titik, panjang garis, arah garis, dan kelengkungan dari lengkungan. Citra vektor adalah citra yang berorientasikan objek, berbeda halnya citra raster yang berorientasi pada pixels. Objek vektor mempunyai sebuah rangka, yang membawahi warna pada objek. (Jay Buselle, 2004).
2.2.2
Titik dan Vektor
Dalam pembentukan objek citra vektor sangatlah peranan titik dan vektor sangatlah penting dalam menentukan letak koordinat dan arah garis atau tepi dalam suatu objek citra vektor. Titik dan vektor adalah sebuah kesatuan matematika yang berbeda. Sebuah titik tidak memiliki dimensi, hanya mewakili sebuah lokasi dalam suatu ruang. Sebaliknya sebuah vektor, tidak mewakili lokasi, namun atribut pada vektor mewakili arah dan besar. Titik dan vektor keduanya diwakili oleh sepasang, atau tiga serangkai bilangan bilangan asli, tetapi bilangan – bilangan ini mempunyai makna yang berbeda. Misalnya, sebuah titik dengan koordinat (3,4) mempunyai arti bahwa sebuah titik mempunyai lokasi 3 unit pada sumbu x dan 4 unit pada sumbu y. Sebuah vektor dengan komponen (3,4) berarti mengacu pada arah 4/3 yang berarti bergerak 3 unit pada arah sumbu x setiap 4 unit pada arah sumbu y, dan besar arahnya adalah √3
4
5 , dan vektor bisa terletak di mana saja.
Untuk lebih jelasnya dapat dilihat di Gambar 2.4 (a) dan (b).
15
Gambar 2.4 (a) titik P dengan koordinat (3,4). (b) vektor w dengan komponen (3,4) yang menghubungkan titik P0 dan P1
Titik dan vektor memiliki beberapa operasi dasar. Operasi pada titik yang pertama adalah melakukan perkalian pada titik P dengan bilangan asli α. Hasil perkalian αP adalah sebuah titik pada sebuah garis yang terhubung pada titik asal yaitu titik P. Garis tersebut merupakan garis tak hingga dan titik αP mempunyai lokasi di mana saja tergantung dari nilai α (Gambar 2.5). Operasi titik berikutnya adalah operasi pengurangan. Misal ada dua titik yaitu titik P0 = (x0, y0) dan P1 = (x1, y1). Selisih antara kedua titik P1 – P0 = (x1 – x0, y1 – y0) = (∆x, ∆y). Selisih kedua titik tersebut merupakan vektor (arah dan jarak) dari P0 ke P1 (Gambar 2.5). (David Salomon, 2011, hal. 433 – 434).
16
Gambar 2.5 Titik P yang dikalikan dengan α, dan selisih antara titik P1 – P0.
Penjumlahan sebuah titik dan vektor akan menghasilkan sebuah titik baru. Misalkan kita mempunyai titik P1, P2, dan sebuah vektor v, dan kedua titik P1, P2 dijumlahkan oleh vektor v, maka akan menghasilkan persamaan P1* = P1 + v dan P2* = P2 + v di mana P1* dan P2* merupakan sebuah titik baru yang bergerak dari titik asal P1 dan P2 dengan arah dan jarak yang sama (ditentukan oleh vektor v, lihat Gambar 2.6).
Gambar 2.6 Penjumlahan titik dan vektor
Perkalian antara titik dan angka akan menghasilkan sebuah titik, maka jika P sebuah titik maka –P adalah sebuah titik juga. –P terletak pada garis yang menghubungkan titik asal dengan P tetapi pada sisi yang berlawanan dari titik P.
17
Bila konsep ini sudah dimengerti, kita dapat melihat bahwa penjumlahan kedua titik P + Q dapat ditulis menjadi P – (–Q) , pengurangan ini tentunya adalah sebuah vektor dari titik –Q ke titik P, dapat dilihat di Gambar 2.7. (David Salomon, 2011, Hal. 435).
Gambar 2.7 Penjumlahan dua titik
Ada beberapa operasi khusus pada vektor, yang pertama adalah penjumlahan dan pengurangan pada vektor. Notasi |V| berarti besar (nilai absolut) dari vektor V. Penjumlahan vektor dapat didefinisikan dengan penjumlahan antar elemen – elemen pada vektor, misal vektor V + W = (Vx, Vy, Vz) + (Wx, Wy, Wz) = (Vx+ Wx, Vy+ Wy, Vz+ Wz). Operasi penjumlahan ini bersifat komutatif V + W = W + V dan asosiatif U + (V + W) = (U + V) + W. (David Salomon, 2011, hal. 439). Vektor dapat dikalikan dengan tiga cara yang berbeda, yaitu: 1. Hasil perkalian antara bilangan asli α dengan vektor V dinotasikan sebagai αV dan menghasilkan vektor (αx, αy, αz). Hasil perkalian mengubah besar dari vektor V oleh faktor α, tetapi tidak mengubah arah vektor tersebut. 2. Operasi dot product dari dua vektor dinotasikan sebagai V●W dan didefinisikan sebagai skalar.
18
,
,
,
,
Operasi ini sama dengan |V||W| cosθ, di mana θ adalah sudut antar kedua vektor. Dot product untuk dua vektor yang tegak lurus adalah nol. Dot product mempunyai sifat komutatif, V●W = W●V. 3. Operasi cross product dari dua vektor (disebut juga vector product) dinotasikan sebagai V × W dan menghasilkan sebuah vektor baru. ,
2.2.3
,
Kurva
Dalam praktek membuat sebuah objek citra vektor, kurva dan permukaan ditentukan oleh user dalam titik – titik dan dibangun dalam proses interaktif. Dimulai dari menentukan lokasi titik – titik lalu menentukan kurva atau permukaan yang akan dihubungkan pada setiap titik. Sebuah fungsi matematika y = f(x) dapat diplot sebagai kurva. Fungsi ini merupakaan representasi eksplisit dari sebuah kurva. Representasi eksplisit dari kurva tidaklah umum, karena tidak bisa merepresentasikan garis vertikal dan juga bernilai tunggal. Pada setiap x, hanya ada nilai tunggal dari y yang di hitung oleh fungsi secara normal. Representasi implisit dari sebuah kurva mempunyai bentuk F(x,y) = 0. Representasi implisit dapat menghasilkan kurva bernilai banyak (lebih dari satu nilai y untuk sebuah nilai x). Contoh yang umum untuk representasi implisit adalah lingkaran, di mana representasi implisitnya adalah
0.
19
Gambar 2.8 Kurva implisit yang membentuk lingkaran
Dalam kenyataanya, jika kita ingin menggambar citra vektor dan ingin membentuk objek citra dalam dunia nyata seperti bentuk mobil, gitar, dan lain – lain, fungsi untuk membentuk kurvanya tidak diketahui, oleh karena itu pendekatan yang berbeda diperlukan. Representasi yang digunakan dalam praktek adalah representasi parametrik. Sebuah kurva parametrik dua dimensi mempunyai bentuk P(t) = (f(t), g(t)) atau P(t) = (x(t), y(t)). Fungsi f dan g menjadi koordinat – koordinat titik (x, y) pada kurva, dan titik – titik diperoleh pada saat parameter t bervariasi pada interval [a, b] tertentu, umumnya [0,1]. Derivatif pertama ,
dinotasikan oleh
, atau oleh P, atau oleh
. Derivatif ini adalah vektor tangen ke kurva pada semua titik.
Derivatif ini adalah sebuah vektor, karena merupakan selisih dari dua titik. Sebagai vektor, tangen memiliki sebuah arah (arah sebuah kurva pada titik) dan besar (yang menunjukkan kecepatan kurva pada titik). Vektor tangen bukan merupakan sebuah kemiringan pada kurva, karena tangen disini merupakan sepasang angka, sedangkan kemiringan merupakan angka tunggal. Kemiringan
20
sama dengan tanθ, di mana θ adalah sudut antara vektor tangen dan sumbu x. Sisi miring pada kurva parametrik dua dimensi di hasilkan oleh:
,
Contoh: Kurva adalah
,2
1
,
. Vektor tangennya 2. Kemiringannya
dan kemiringannya adalah
konstan, di mana menunjukkan bahwa kurva adalah sebuah garis lurus. Arah dari vektornya bisa dideskripsikan dengan “setiap t langkah pada sumbu x, bergerak 2t langkah pada sumbu y.”
Gambar 2.9 Representasi kurva parametrik.
Misal kita mempunyai kurva dengan persamaan
,0
1, untuk
mengukur panjang busur kurvanya, pertama kita membagi busur menjadi sebuah angka besar dari segmen panjang
yang pendek, dan lurus. Panjang busurnya
sama dengan kira – kira jumlah ∑
. Gambar 2.10 a menunjukkan . Dalam
. Sebaliknya, kita juga dapat menulis limit, pada saat
0, kita dapat menulis
atau
21
dan mendapatkan panjang busur yang tepat dengan mengganti jumlah ∑ dengan integral (David Salomon, 2011, hal. 441) |
|
|
| .
Gambar 2.10 Panjang busur dan area kurva.
Untuk menemukan area yang cenderung terbagi pada titik asal oleh vektor 0 dan pada panjang
1 dan kurva, kita membagi kurvanya lagi dengan segmen lurus dan membuat segitiga sempit yang terlihat pada Gambar 2.10 b.
Area dari setiap sisi segitiganya adalah
atau
,
jadi, dalam limit, total areanya adalah integral . Perlu diketahui bahwa persamaan diatas adalah sebuah vektor. Besar vektornya adalah areanya dan arahnya adalah arah tegak lurus ke bidang yang didefinisikan oleh
0 dan
1 .
22
2.2.4
Resolusi Citra Vektor
Karena citra vektor didefinisikan oleh model matematika bukan pixels, maka citra vektor dapat dibesarkan atau dikecilkan tanpa harus mengurangi kualitas dari citra itu sendiri. Pada saat program mengubah ukuran pada suatu objek vektor, program dengan sederhana memberi perkalian pada deskripsi matematika yang ada pada objek dengan faktor skala yang ada. Misalkan, bila ada objek segi empat bila ingin diperbesar dua kali dari besar aslinya akan dikalikan oleh faktor 2. Deskripsi matematika pada objek akan secara otomatis menghitung ulang agar menghasilkan objek yang mempunyai besar dua kali lipat dari besar aslinya. (Jay Buselle, 2004).
Gambar 2.11 Kedua citra vektor dengan perbedaan besar (tidak ada kualitas yang berkurang)
2.2.5
Warna Citra Vektor
Karena citra vektor tersusun oleh objek bukan pixels, maka objek bisa diubah warnanya tanpa harus menghawatirkan pixels. Program pada objek vektor akan bisa membuat user memilih warna yang akan diisi kedalam objek. Mewarnai objek vektor pada umumnya lebih mudah daripada mewarnai objek raster.
23
2.2.6
Format File Citra Vektor
Format file citra vektor yang biasa dipakai adalah .eps (Encapsulated PostScript), .wmf (Windows MetaFile), .ai (Adobe Illustrator), .cdr (CorelDraw), .dxf (AutoCAD), .svg (Scalable Vector Graphics) dan .plt (Hewlett Packard Graphics Language Plot File).
2.3 Metode Canny Metode pendeteksian edge Canny dikembangkan oleh John F. Canny pada tahun 1986 dan menggunakan algoritma dengan banyak tahap (multi-stages) untuk mendeteksi tepi dari citra dengan cakupan yang luas.
2.3.1
Pengembangan Metode Canny
Tujuan dari Canny adalah untuk menemukan algoritma pendeteksian tepi yang optimal. Syarat dari pendeteksian yang optimal yang dimaksud adalah (John Canny, 1986, hal. 680) : a. Good detection: algoritma harus menandai tepi asli sebanyak mungkin dari citra. b. Good localization: lokasi tepi yang sudah ditandai harus sedekat mungkin dari lokasi tepi asli pada citra. c. Minimal responese: tepi pada citra hanya ditandai satu kali saja, dan jika memungkinkan noise pada citra sebagaimana mungkin tidak mengganggu dan menghasilkan tepi yang salah.
24
Untuk memenuhi ketiga syarat diatas, Canny menggunakan kalkulus variasi, teknik di mana menemukan sebuah fungsi yang merupakan hasil optimalisasi dari fungsional yang diberikan. Fungsi yang optimal pada pendeteksi Canny dideskripsikan oleh jumlah dari empat istilah eksponensial, tetapi bisa diperkirakan oleh derivatif Gaussian yang pertama.
2.3.2
Tahap – Tahap Algoritma Metode Canny
2.3.2.1
Pengurangan Noise
Metode Canny menggunakan filter yang berbasis pada derivatif Gaussian yang pertama, karena metode Canny sangat rentan terhadap noise yang ada pada citra yang masih mentah dan belum diproses. Jadi sebelum diproses dilakukan filter Gaussian pada citra untuk mengurangi noise yang ada. Hasil citra yang sudah disaring dengan filter Gaussian adalah lebih sedikit kabur (blur) dari citra aslinya tetapi tidak dipengaruhi oleh pixel yang mengandung noise. Filter Gaussian yang dipakai pada metode Canny mempunyai besar Gaussian Kernel σ = 1.4, yang akan dihitung dengan rumus:
1
,
2
Yang akan didapat matriks bobot dengan besar 5x5 sebagai berikut: 2 4 5 4 2 4 9 12 9 4 1 5 12 15 12 5 159 4 9 12 9 4 2 4 5 4 2
25
Matriks bobot 5x5 merupakan matriks simeteris yang akan dilakukan perkalian terhadap matriks A yaitu setiap pixel (posisi tengah) yang ada pada citra beserta 24 pixel tetangga yang mengelilingi. Matriks akan dinormalisasi dengan cara membagi setiap isi matriks dengan jumlah seluruh isi matriks yaitu 159. (R. Fisher, 2003).
Gambar 2.12 Citra yang sudah dilakukan penyaringan dengan filter Gaussian.
2.3.2.2
Menghitung Besar Gradien dan Pendeteksian Tepi
Untuk mendeteksi tepi dengan metode Canny, kita akan menggunakan gradien G(x,y) yang merupakan sebuah vektor yang terdiri dari dua unsur yaitu Gx dan Gy. Deteksi tepi dilakukan dengan cara membaca setiap pixel pada citra raster dengan cara membaca dari pixel paling kiri atas (timur utara) dan bergerak ke pixel paling kanan bawah (barat selatan). Oleh karena itu, untuk membantu penelusuran tepi, gradien Gx dan Gy masing – masing mempunyai matriks operator Sobel Mask 3x3 yaitu:
26
1 2 1
0 0 0
1 2 , dan 1
1 0 1
2 0 2
1 0 1
arah
arah
Masing – masing matriks operator akan dilakukan perkalian terhadap setiap pixel yang dipecah menjadi matriks 3x3 dengan pixel utama di tengah – tengah serta 8 pixel tetangga disekelilingnya. Setelah dikalikan dengan matriks operator, maka Gx akan dikembalikan sebagai nilai gradien arah horizontal, dan Gy sebagai nilai gradien arah vertikal, lalu didapat vektor gradien G(x,y) yang merupakan hasil penjumlahan dari Gx dan Gy. (William Green, 2002).
,
|
|
|
|
Dan besar gradien dengan rumus:
2.3.2.3
Penekanan Non-Maksimum (Non Maximum Surpression)
Setelah mendapatkan gradien dari citra, maka dilakukan pencarian besarnya gradien tersebut dengan mengasumsikan maksimum lokal pada arah gradien. Misalkan, bila sudut gradien bundar adalah nol derajat (yaitu bila tepi ada pada arah utara-selatan) titik akan dianggap sebagai tepi jika intensitasnya lebih besar dari intensitas arah barat dan arah timur. Jika sudut gradien bundar adalah 90 derajat (yaitu bila tepi ada pada arah timur-barat) titik akan
27
dianggap sebagai tepi jika intensitasnya lebih besar dari intensitas arah utara dan arah selatan. Jika sudut gradien bundar adalah 135 derajat (yaitu bila tepi ada pada arah timur laut-barat daya) titik akan dianggap sebagai tepi jika intensitasnya lebih besar dari intensitasnya lebih besar dari intensitas arah barat laut dan arah tenggara. Jika sudut gradien bundar adalah 45 derajat (yaitu bila tepi ada pada arah barat laut-tenggara) titik akan dianggap sebagai tepi jika intensitasnya lebih besar dari intensitas arah timur laut dan barat daya. Pada tahap ini mengacu pada penekanan non-maksimum, diperoleh kupulan dari titik – titik pada tepi didalam bentuk citra biner, yang biasa juga disebut “tepi tipis”.
2.3.2.4
Menelusuri Tepi Citra dan Hysteresis Thresholding
Intensitas pada gradien yang besar akan lebih sesuai dengan tepi dibandingkan intensitas yang rendah. Pada kebanyakan kasus, sangatlah sulit untuk menentukan threshold (ambang batas) pada saat intensitas gradien yang diberikan pindah dari tepi yang sesuai ke tepi yang tidak sesuai. Maka dari itu, Canny menggunakan thresholding dengan Hysteresis. Thresholding dengan Hysteresis memerlukan dua ambang batas (threshold) yaitu tinggi dan rendah. Membuat asumsi bahwa tepi – tepi yang penting harus menjadi lengkungan yang kontinu pada citra memungkinkan kita untuk menemukan bagian yang lemah pada garis dan untuk membuang beberapa pixel yang mengganggu yang bukan merupakan pixel dari garis
28
tetapi menghasilkan gradien yang besar. Oleh karena itu hendaknya memulai menerapkan ambang batas yang tinggi terlebih dahulu (high threshold), di mana ambang batas yang tinggi dapat menandai tepi – tepi yang bisa kita yakini sebagai tepi yang asli. Pada saat menelusuri tepi, digunakan ambang batas yang rendah (low threshold) agar memungkinkan kita untuk menelusuri bagian – bagian yang lemah pada tepi – tepi, selama kita menemukan kembali titik awal. Setelah proses ini selesai, maka kita akan mempunyai citra biner di mana pixel sudah ditandai sebagai pixel tepi atau bukan tepi. Dari citra biner yang di hasilkan, maka bisa juga diperlakukan sebagai lengkungan – lengkungan tepi, di mana setelah proses yang lebih mendalam bisa dijadikan objek polygon atau vektor.
Gambar 2.13 Hasil citra yang sudah dilakukan pendeteksian tepi menggunakan metode Canny.
2.3.3
Parameter
Metode Canny mengandung angka dari parameter yang dapat disesuaikan, yang dapat mempengaruhi waktu perhitungan dan keefektifan dari algoritma. Parameter yang ada pada metode Canny adalah:
29
1. Ukuran dari Filter Gaussian : Filter Gaussian yang dilakukan pada tahap pertama sangat mempengaruhi hasil dari algoritma Canny. Filter yang lebih kecil menghasilkan keburaman yang lebih kecil (less blurring) yang memungkinkan untuk mendeteksi dari garis – garis yang kecil dan tipis. Filter yang lebih besar menghasilkan keburaman yang lebih besar dan memungkinkan untuk mendeteksi garis – garis yang lebih besar, dan halus. 2. Ambang Batas (Threshold) : Menggunakan dua threshold (tinggi dan rendah) dengan hysteresis memungkinkan lebihnya fleksibilitas dibandingkan pendekata threshold tunggal, tetapi masalah umum dari thresholding adalah apabila threshold yang ditetapkan terlalu tinggi, maka dapat kehilangan informasi yang penting. Sebaliknya, jika threshold yang ditetapkan terlalu rendah akan salah mengidentifikasi informasi yang tidak relevan seperti noise.
2.4 Metode Waterfall Metode Waterfall merupakan sebuah model perancangan software secara sekuensial, dimana proses perancangan tersebut mengalir secara teratur ke bawah, sehingga terlihat seperti air terjun (Nur Ichsan, 2010). Keuntungan Metode Waterfall, yaitu: •
Kualitas dari sistem yang dihasilkan akan baik. Ini dikarenakan oleh pelaksanaannya secara bertahap, sehingga tidak terfokus pada tahapan tertentu saja.
30 •
Dokument pengembangan sistem sangat terorganisir, karena setiap fase harus terselesaikan dengan lengkap sebelum melangkah ke fase berikutnya. Jadi setiap fase atau tahapan akan mempunyai dokumen tertentu.
Kelemahan dari metode Waterfall yaitu : •
Diperlukan majemen yang baik, karena proses pengembangan tidak dapat dilakukan secara berulang sebelum terjadinya suatu produk.
•
Kesalahan kecil akan menjadi masalah besar jika tidak diketahui sejak awal pengembangan.
•
Pelanggan sulit menyatakan kebutuhan secara eksplisit sehingga tidak dapat mengakomodasi ketidakpastian pada saat awal pengembangan.
Gambar 2.14 Metode Waterfall
31
Seperti yang terlihat pada Gambar 2.8, proses perancangan program bergerak dari atas ke bawah seperti air terjun. Di dalam model Waterfall, fase-fasenya adalah sebagai berikut (Nur Ichsan, 2010): 1. Analisis Spesifikasi Kebutuhan 2. Desain 3. Implementasi 4. Integrasi 5. Pengetesan dan Debugging (verifikasi) 6. Instalasi 7. Perawatan
2.5 Unified Modelling Language (UML) UML (Unified Modelling Language) adalah notasi tetap untuk untuk pemodelan objek dunia nyata sebagai langkah pertama dalam mengembangkan metodologi perancangan berorientasi objek. UML adalah suatu bahasa yang digunakan untuk menentukan, memvisualisasikan, membangun, dan mendokumentasikan suatu sistem informasi. UML. (Frederick Jones, Dasaratha Rama, 2008). UML dikembangkan oleh Grady Booch, Jim Rumbaugh, dan Ivan Jacobson, yang merupakan perpaduan antara metodologi untuk menjelaskan kumpulan objek – objek dan hubungannya (Grady Booch), Object Modelling Technique (OMT) atau Teknik Pemodelan Objek (James Rumbaugh), dan pendekatan oleh Ivan Jacobson yang mengandung metodologi use case. (Frederick Jones, Dasaratha Rama, 2008).
32
UML memiliki 10 macam diagram untuk memodelkan aplikasi berorientasi objek yaitu: Use Case Diagram, Conceptual Diagram, Sequence Diagram, Collaboration Diagram, State Diagram, Activity Diagram, Class Diagram, Object Diagram, Component Diagram, dan Deployment Diagram. Pada perancangan program ini, penulis menggunakan dua model UML yaitu Use Case Diagram, dan Sequence Diagram. (Julius Hermawan, 2004). Use Case Diagram adalah diagram yang digunakan untuk memodelkan bisnis proses berdasarkan perspektif pengguna sistem. Use Case Diagram terdiri atas diagram untuk use case dan actor. Actor merepresentasikan orang yang akan mengoperasikan atau orang yang berinteraksi dengan sistem aplikasi. Sedangkan use case adalah operasi – operasi yang dilakukan oleh actor. Use case digambarkan dengan bentuk elips dengan nama operasi dituliskan di dalamnya. Actor yang melakukan operasi dihubungkan dengan garis lurus ke use case. (Julius Hermawan, 2004). Sequence Diagram menjelaskan secara detil urutan proses yang dilakukan dalam sistem untuk mencapai tujuan dari use case yaitu: interaksi yang terjadi antar class, operasi apa saja yang terlibat, urutan antar proses operasi, dan informasi yang diperlukan oleh masing – masing operasi. (Julius Hermawan, 2004).
2.6 Bahasa Pemrograman C# C# adalah bahasa pemrograman yang diketik secara statis, berbentuk bebas (free – form), banyak paradigma, terkompilasi, dan memiliki tujuan umum yang mencakup disiplin pemrograman yang strong typing, imperatif, deklaratif, fungsional, umum, berorientasi objek, dan berorientasi komponen. C# adalah salah satu dari bahasa
33
pemrograman yang dirancang untuk menjadi infrastruktur bahasa yang umum. (Mads Torgersen, 2008). 2.6.1
Tujuan Rancangan
Tujuan dari rancangan bahasa pemrograman C# adalah (Mads Torgersen, 2008) : a. Bahasa C# ditujukan agar menjadi bahasa yang sederhana, modern, bertujuan umum, dan berorientasi objek. b. Bahasa, dan implementasi harus menyediakan dukungan untuk aturan software engineering seperti pengecekan strong type, pengecekan batas – batas array, deteksi percobaan untuk menggunakan variabel yang belum diinisialisasikan, dan pengumpulan sampah secara otomatis. c. Bahasa ditujukan untuk mengembangkan komponen software yang cocok untuk penyebaran dalam lingkungan yang mengganggu. d. Portabilitas dari kode sumber (source code) sangat penting, sama pentingnya dengan portabilitas dari programmer, terutama pada programmer yang sudah familiar dengan bahasa C dan C++. e. Dukungan untuk internationalization sangat penting. f. C# ditujukan agar cocok untuk menulis aplikasi untuk kedua sistem yang hosted dan embedded, dengan kisaran yang paling besar yang menggunakan sistem operasi yang canggih, sampai yang terkecil yang hanya merupakan fungsi – fungsi. g. Walaupun aplikasi C# ditujukan untuk lebih ekonomis dengan menganggap memori dan kebutuhan kekuatan processing, bahasa ini
34
tidak ditujukan untuk menyaingi secara langsung pada kinerja dan ukuran bahasa C atau bahasa rakitan. 2.6.2
Versi - Versi C#
Dalam pengembangannya, bahasa pemrograman C# mempunyai beberapa versi yaitu (Mads Torgersen, 2008) : a. C# 2.0 dengan fitur – fitur seperti: generics, partial types, anonymous methods, iterators, nullable type, private setters, method group conversions. b. C# 3.0 dengan fitur – fitur seperti: implicitly typed local variables, object and collection initializers, auto-implemented properties, anonymous types, extension methods, query expressions, lambda expressions, expression trees. c. C# 4.0 dengan fitur – fitur seperti: dynamic binding, named and optional arguments, generic co – and contravariance. d. Dan versi yang masih direncanakan C# 5.0 dengan fitur – fitur: asynchronous methods, compiler as a service.