BAB 2 LANDASAN TEORI

advertisement
 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.
Download