BAB III ANALISA DAN PERANCANGAN 3.1
Analisa Sistem Tahap analisis merupakan tahapan yang paling awal dalam sistem sebuah
pendeteksian tepi pada citra digital. Analisis sistem dilakukan dengan tujuan untuk mengetahui dan memahami permasalahan dari suatu sistem yang akan dibuat. Dengan adanya berbagai aplikasi yang sangat luas dalam perkembangan pemrosesan citra merupakan solusi dari banyaknya masalah yang di hadapi untuk kepentingan astronomi, medis, bidang industri, dan sebagainya. Untuk itu penulis mencoba membuat aplikasi deteksi tepi menggunakan metode gradien yaitu Roberts, Sobel, Prewitt, Isotropic dan Stochastic yang digunakan untuk keperluan memproses citra seperti yang sudah dijelaskan pada bab sebelumnya.
3.1.1 Analisis Masalah Metode Deteksi tepi sangatlah banyak yaitu terdiri dari metode gradien yaitu Roberts, Sobel, Prewitt, Isotropic dan Stochastic. Ada juga deteksi tepi turunan kedua yaitu metode Laplacian of Gaussian, Differensial of Gaussian dan metode Canny dan ada pula deteksi tepi yang menggunakan arah mata angin untuk mendeteksi tepi yaitu metode Compass, Kirsch dan metode Robinson. Dari banyak nya metode pengolahan citra banyak user atau pengguna tidak mengetahui metode mana yang paling cepat dalam melakukan proses deteksi tepi citra optik dan juga metode mana yang paling tinggi nilai sensitivitas terhadap noise. Dari permasalahan tersebut, maka penulis ingin membuat sebuah aplikasi deteksi tepi citra optik menggunakan Matlab dan permasalahan tersebut antara lain yaitu : 1.
Apa saja data yang diperlukan dalam proses pembuatan aplikasi pendeteksian tepi, mulai dari masukan sampai menghasilkan keluaran yang diinginkan?
23 http://digilib.mercubuana.ac.id/
24
2.
Bagaimanakah metode deteksi tepi gradien (Roberts, Sobel, Prewitt, Isotropic dan Stochastic) dalam mendeteksi tepi citra optik ?
3.
Bagaimanakan bentuk keluaran yang akan dihasilkan dari aplikasi ini ?
4.
Berapakah waktu yang di perlukan dalam melakukan proses deteksi tepi menggunakan metode deteksi tepi gradien (Roberts, Sobel, Prewitt, Isotropic dan Stochastic) dan metode mana yang paling cepat dan paling lambat dalam mendeteksi tepi citra digital ?
5.
Metode deteksi tepi mana yang paling tinggi nilai sensitivitas terhadap noise salt & pepper sebanyak 0.01 ?
3.1.2 Analisis Kebutuhan dan Aplikasi yang diharapkan Perangkat keras yang digunakan penulis untuk pembuatan aplikasi ini yaitu satu set laptop dengan spesifikasi : 1. Processor : Intelยฎ CoreTM i5-2430M CPU @ 2.40GHz 2. Memory
: 4096MB RAM
3. Harddisk : 465,75 GB 4. Video Graphcs Adapter (VGA) : NVIDIA GeForce GT 525M 5. Mouse
: Logitech
6. Keyboard
Sedangkan perangkat lunak yang digunakan dalam pembuatan aplikasi deteksi tepi ini adalah : 1. Windows 10 Home Premium 64-bit sebagai sistem operasi yang digunakan. 2. Matlab R2013a GUI sebagai aplikasi untuk membuat aplikasi ini.
Beberapa kegunaan secara khusus aplikasi deteksi tepi citra optik menggunakan matlab sebagai berikut : 1. Aplikasi ini dapat memproses deteksi tepi citra digital dengan cepat. 2. Aplikasi ini menyediakan beberapa metode deteksi tepi untuk mengolah citra digital yaitu dengan metode Roberts, Sobel, Prewitt, Isotropic dan Stochastic.
http://digilib.mercubuana.ac.id/
25
3. Aplikasi ini dapat memperlihatkan berapa lama waktu yang digunakan untuk memproses deteksi tepi citra digital dengan menggunakan metode gradien. 4. Aplikasi ini dapat memperlihatkan metode gradien mana yang memiliki sensitivitas tertinggi terhadap noise dengan menggunakan noise salt & pepper sebanyak 0.01. 5. Aplikasi ini dapat menyimpan hasil gambar dari proses deteksi tepi citra optik menggunakan Matlab.
3.2
Metodologi Pemecahan Masalah Dari hasil analisis masalah dan analisis aplikasi yang di harapkan, berikut
merupakan skema kerja sistem untuk menyelesaikan permasalahan yang terjadi.
Masalah Pendeteksian Tepi
Perancangan Aplikasi
Keluaran
Algoritma Flowchart
Pengkodean
Program
Gambar 3.1 Skema Kerja Sistem Penjelasan dari Gambar 3.1 tentang skema kerja sistem citra yang digunakan adalah citra kucing dan lena dengan format JPG. Citra yang menjadi inputan lalu di proses pendeteksian tepi dengan menggunakan metode gradien (Roberts, Sobel, Prewitt, Isotropic dan Stochastic) setelah di pilih metode gradien mana yang
http://digilib.mercubuana.ac.id/
26
digunakan akan menghasilkan gambar hasil deteksi tepi, berapa lama waktu yang dibutuhkan untuk melakukan proses deteksi tepi dan
erapa nilai sensitivitas
terhadap noise dari mettode yang sudah di pilih tadi.
3.3
Perancangan Aplikasi Perancangan aplikasi ini menggunakan program sederhana yaitu
menggunakan Matlab R2013a dengan tujuan agar perancangan aplikasi ini dapat sesuai dengan kebutuhan yang sebelum nya sudah di analisa, sehingga program pun dapat berjalan sesuai dengan fungsi yang di harapkan. penulis membuat sebuah rancangan yang berupa flowchart yang di bagi dalam beberapa proses pembuatan yaitu proses awal, proses deteksi tepi dan proses keluaran (hasil dari deteksi tepi citra digital).
3.3.1 Proses Awal Pada tahapan ini dilakukan pembacaan citra masukan yaitu berupa citra yang akan di proses, kemudian citra dibaca sehingga bisa diketahui ukuran citra dan nilai piksel citra.
http://digilib.mercubuana.ac.id/
27
start A, i=0, j=0, F [] [];
a = input image
New F [getHeight(a)] [getWidth(a)]
i<=getHeight(a)
no
yes j<=getWidth(a)
no
yes F [i][j] = getPixel(a)
j ++
i ++
end
Gambar 3.2 Flowchart Pembacaan Citra 3.3.2 Proses Deteksi Tepi Menggunakan Operator Roberts Operator Roberts adalah sebuah teknik deteksi tepi yang sederhana dan memiliki tingkat komputasi yang cepat. Operator roberts berbasis gradient yang menggunakan kernel ukuran 2x2 piksel. Operator ini mengambil arah diagonal untuk penentuan arah dalam perhitungan nilai gradient. kernel Roberts horizontal (๐
๐ฅ) = [ [
0 1
1 0 ] dan kernel Roberts vertical (๐
๐ฆ) = 0 โ1
โ1 ] 0
http://digilib.mercubuana.ac.id/
28
Start
Baca citra grayscale Masukan nilai kernel robert horizontal (Rx) Masukan nilai kernel robert vertical (Ry) Konvolusikan citra grayscale dengan kernel robert horizontal (Rx) Konvolusikan citra grayscale dengan kernel robert vertical (Ry)
Hitung besar gradient
Cetak Nilai G
End
Gambar 3.3 Flowchart Alur Kerja Deteksi Tepi Operator Roberts
http://digilib.mercubuana.ac.id/
29
start A, i=0, j=0, F [] [], Rx [], Ry [], G;
Rx = [ F (i,j) โ F (i+1,j+1) ]
Ry = [ F (i+1,j) โ F (i,j+1) ]
a = input image
G = sqrt (Rx^2 +Ry^2) New F [getHeight(a)] [getWidth(a)]
i<=getHeight(a)
no
yes
Cetak nilai pixel G End
no
j<=getWidth(a)
yes F [i][j] = getPixel(a)
j ++
i ++
Gambar 3.4 Flowchart Deteksi Tepi Operator Roberts 3.3.3 Proses Deteksi Tepi Menggunakan Operator Sobel Operator Sobel adalah salah satu operator yang menhindari adanya perhitungan gradient di titik interpolasi. Operator ini menggunakan kernel ukuran
http://digilib.mercubuana.ac.id/
30
3x3 pixel untuk perhitungan gradient sehingga gradien berada tepat di tengah jendela. Operator sobel adalah operator yang paling banyak digunakan sebagai pendeteksian tepi karena kesederhanaan dan keampuhannya.
kernel โ1 [ 0 1
โ1 0 ( ) Sobel horizontal ๐๐ฅ = [โ2 0 โ1 0 โ2 โ1 0 0] 2 1
1 2 ] dan kernel Sobel vertical (๐๐ฆ) = 1
Start
Baca citra grayscale Masukan nilai kernel sobel horizontal (Sx) Masukan nilai kernel sobel vertical (Sy) Konvolusikan citra grayscale dengan kernel sobel horizontal (Sx) Konvolusikan citra grayscale dengan kernel sobel vertical (Sy)
Hitung besar gradient
Cetak Nilai G
End
Gambar 3.5 Flowchart Alur Kerja Deteksi Tepi Operator Sobel
http://digilib.mercubuana.ac.id/
31
start A, i=0, j=0, F [] [], Sx [][], Sy [][], G;
Sx = [F(x-1,y-1)+2F(x-1,y)+F(x-1,y+1)] [F(x+1,y-1)+2F(x+1,y)+F(x+1,y+1)]
Sy = [F(x-1,y-1)+2F(x,y-1)+F(x+1,y-1)] [F(x-1,y+1)+2F(x,y+1)+F(x+1,y+1)]
a = input image
New F [getHeight(a)] [getWidth(a)] G = sqrt (Sx^2 +Sy^2)
no
i<=getHeight(a)
yes
no
j<=getWidth(a)
Cetak nilai pixel G End
yes F [i][j] = getPixel(a)
j ++
i ++
Gambar 3.6 Flowchart Deteksi Tepi Operator Sobel 3.3.4 Proses Deteksi Tepi Menggunakan Operator Prewitt Pengembangan dari gradient operator dengan menggunakan 2 mask (horizontal dan vertikal) ukuran 3x3. Pada operator ini kekuatan gradient ditinjau dari sudut pandang horizontal dan vertikal (memperhatikan titik disekitar pada posisi horizontal dan vertikal). Persamaan gradien pada operator Prewitt sama
http://digilib.mercubuana.ac.id/
32
seperti operator Sobel, tetapi menggunakan nilai konstanta c = 1, Kernel fillter yang digunakan dalam metode Prewitt ini adalah : โ1 0 kernel Prewitt horizontal (๐๐ฅ) = [โ1 0 โ1 0 โ1 โ1 โ1 (๐๐ฆ) = [ 0 0 0] 1 1 1
1 1 ] dan kernel Prewitt vertical 1
Start
Baca citra grayscale Masukan nilai kernel prewitt horizontal (Px) Masukan nilai kernel Prewitt vertical (Py) Konvolusikan citra grayscale dengan kernel prewitt horizontal (Px) Konvolusikan citra grayscale dengan kernel prewitt vertical (Py)
Hitung besar gradient
Cetak Nilai G
End
Gambar 3.7 Flowchart Alur Kerja Deteksi Tepi Operator Prewitt
http://digilib.mercubuana.ac.id/
33
start A, i=0, j=0, F [] [], Px [][], Py [][], G;
Px = [F(i-1,j-1)+1F(i-1,j)+F(i-1,j+1)] [F(i+1,j-1)+1F(i+1,j)+F(i+1,j+1)]
Py = [F(i-1,j-1)+1F(i,j-1)+F(i+1,j-1)] [F(i-1,j+1)+1F(i,j+1)+F(i+1,j+1)]
a = input image
New F [getHeight(a)] [getWidth(a)] G = sqrt (Px^2 +Py^2)
no
i<=getHeight(a)
yes
no
j<=getWidth(a)
Cetak nilai pixel G End
yes F [i][j] = getPixel(a)
j ++
i ++
Gambar 3.8 Flowchart Deteksi Tepi Operator Prewitt 3.3.5 Proses Deteksi Tepi Menggunakan Operator Isotropic Operator Isotropik merupakan salah satu deteksi tepi dengan metode operator gradien yang menggunakan dua buah matriks 3x3, yaitu matriks vertikal dan matriks horisontal yang ditapis secara bersamaan. Bedanya operator Isotropic
http://digilib.mercubuana.ac.id/
34
dengan operator metode gradien lain adalah nilai konstanta c = โ2, dibawah ini adalah kernel horizontal dan vertical operator Isotropic : โ1 0 kernel Isotropic horizontal (๐ผ๐ฅ ) = [โโ2 0 โ1 0
1 โ2 ] dan kernel Isotropic vertical 1
โ1 โโ2 โ1 (๐ผ๐ฆ) = [ 0 0 0] 1 โ2 1 Start
Baca citra grayscale Masukan nilai kernel isotropic horizontal (Ix) Masukan nilai kernel isotropic vertical (Iy) Konvolusikan citra grayscale dengan kernel isotropic horizontal (Ix) Konvolusikan citra grayscale dengan kernel isotropic vertical (Iy)
Hitung besar gradient
Cetak Nilai G
End
Gambar 3.9 Flowchart Alur Kerja Deteksi Tepi Operator Isotropic
http://digilib.mercubuana.ac.id/
35
start A, i=0, j=0, F [] [], Ix [][], Iy [][], G;
Ix = [F(i-1,j-1)+sqrt2F(i-1,j)+F(i-1,j+1)] [F(i+1,j-1)+sqrt2F(i+1,j)+F(i+1,j+1)]
Iy = [F(i-1,j-1)+sqrt2F(i,j-1)+F(i+1,j-1)] [F(i-1,j+1)+sqrt2F(i,j+1)+F(i+1,j+1)]
a = input image
New F [getHeight(a)] [getWidth(a)] G = sqrt (Ix^2 +Iy^2)
no
i<=getHeight(a)
yes
no
j<=getWidth(a)
Cetak nilai pixel G End
yes F [i][j] = getPixel(a)
j ++
i ++
Gambar 3.10 Flowchart Deteksi Tepi Operator Isotropic 3.3.6 Proses Deteksi Tepi Menggunakan Operator Stochastic Operator Stochastic sama seperti operator Sobel, Prewitt dan Isotropic yaitu salah satu operator deteksi tepi dengan metode gradien yang menggunakan dua buah matriks 3x3, yaitu matriks vertikal dan matriks horisontal yang ditapis secara bersamaan. Berikut adalah kernel untuk operator Stochastic :
http://digilib.mercubuana.ac.id/
36
โ0.776 0 ( ) [ kernel Stochastic horizontal ๐๐ก๐ฅ = โ1 0 โ0.776 0 โ0.776 โ1 โ0.776 Stochastic vertical (๐๐ก๐ฆ) = [ 0 0 0 ] 0.776 1 0.776
0.776 1 ] 0.776
dan
Start
Baca citra grayscale Masukan nilai kernel stohastic horizontal (Stx) Masukan nilai kernel stohastic vertical (Sty) Konvolusikan citra grayscale dengan kernel stohastic horizontal (Stx) Konvolusikan citra grayscale dengan kernel stohastic vertical (Sty)
Hitung besar gradient
Cetak Nilai G
End
Gambar 3.11 Flowchart Alur Kerja Deteksi Tepi Operator Stochastic
http://digilib.mercubuana.ac.id/
kernel
37
start A, i=0, j=0, F [] [], Stx [][], Sty [][], G;
Stx = [0.776*F(i-1,j-1)+F(i-1,j)+0.776*F(i-1,j+1)] -[0.776*F(i+1,j-1)+F(i+1,j)+0.776*F(i+1,j+1)]
Sty = [0.776*F(i-1,j-1)+F(i,j-1)+0.776*F(i+1,j-1)] - [0.776*F(i-,j+1)+F(i,j+1)+0.776*F(i+1,j+1)]
a = input image
New F [getHeight(a)] [getWidth(a)] G = sqrt (Stx^2 +Sty^2) i<=getHeight(a)
no
yes j<=getWidth(a)
no
Cetak nilai pixel G End
yes F [i][j] = getPixel(a)
j ++
i ++
Gambar 3.12 Flowchart Deteksi Tepi Operator Stochastic 3.3.7 Proses Keluaran Proses keluaran atau tahapan terakhir dari program yang ingin dibuat yaitu menampilkan citra yang ingin di proses, hasil citra yang sudah di proses dengan menggunakan metode pendeteksian tepi metode gradien (Roberts, Sobel, Prewitt, Isotropic dan Stochastic) yang sudah di pilih, menampilkan hasil perhitungan
http://digilib.mercubuana.ac.id/
38
lama waktu untuk melakukan proses deteksi tepi dan menampilkan nilai sensitivitas terhadap noise.
3.3.8 Menghitung lawa waktu Dalam aplikasi deteksi tepi citra optik menggunakan matlab penulis menggunakan sourcode asli Matlab untuk melakukan perhitungan lama waktu yang dibutuhkan dalam proses deteksi tepi. yaitu menggunakan :
tic; % digunkan pada awal perintah fungsi yang ingin dihitung lama waktu toc; % digunakan pada akhir perintah
contoh scriptnya pada aplikasi bawaan matlab : tic; I=imread('lena.jpg'); gray=rgb2gray(I); BW=edge(gray,'prewitt'); set(imshow(BW)); toc;
3.3.9 Menghitung Sensitivitas Terhadap Noise Dalam flowchart ini menggunakan Noise Salt & Pepper sebanyak 0.01. hasil yang di harapkan dapat mengetahui metode mana yang paling sensitiv terhadap noise. Untuk menghitung sensitivitas deteksi tepi terhadap noise yaitu menggunakan rumus :
dimana: nR : jumlah piksel yang dinyatakan sebagai edge pada citra referensi nN : jumlah piksel yang dinyatakan sebagai edge pada citra noisy Nilai P yang besar menyatakan sensitivitas edge detector yang tinggi terhadap noise.
http://digilib.mercubuana.ac.id/
39
Dibawah ini adalah flowchart sensitivitas deteksi tepi roberts terhadap noise salt & pepper sebanyak 0.01 : start A, i=0, j=0, F [] [], Rx [], Ry [], G, noise, nr, nn, P;
Rx = [ F (i,j) โ F (i+1,j+1) ]
Ry = [ F (i+1,j) โ F (i,j+1) ]
a = input image G = sqrt (Rx^2 +Ry^2) New F [getHeight(a)] [getWidth(a)] noise = imnoise (G, โsalt & pepperโ,0.01)
i<=getHeight(a)
no
yes
nr = sum(sum(G))
no
j<=getWidth(a)
yes
nn = sum(sum(noise))
F [i][j] = getPixel(a) P = abs(nn-nr)/nr
j ++ Cetak nilai pixel P i ++ End
Gambar 3.13 Flowchart Sensitivitas Operator Roberts
http://digilib.mercubuana.ac.id/
40
Dibawah ini adalah Flowchart Sensitivitas Deteksi Tepi Sobel terhadap Noise Salt & Pepper sebanyak 0.01 :
start A, i=0, j=0, F [] [], Sx [][], Sy [][], G, noise, nr, nn, P;
Sx = [F(i-1,j-1)+2F(i-1,j)+F(i-1,j+1)] [F(i+1,j-1)+2F(i+1,j)+F(i+1,j+1)]
Sy = [F(i-1,j-1)+2F(i,j-1)+F(i+1,j-1)] [F(i-1,j+1)+2F(i,j+1)+F(i+1,j+1)]
a = input image G = sqrt (Sx^2 +Sy^2) New F [getHeight(a)] [getWidth(a)] noise = imnoise (G, โsalt & pepperโ,0.01)
i<=getHeight(a)
no
yes j<=getWidth(a)
nr = sum(sum(G))
no
yes
nn = sum(sum(noise))
F [i][j] = getPixel(a) P = abs(nn-nr)/nr
j ++ Cetak nilai pixel P
i ++
End
Gambar 3.14 Flowchart Sensitivitas Operator Sobel
http://digilib.mercubuana.ac.id/
41
Dibawah ini adalah Flowchart Sensitivitas Deteksi Tepi Prewitt terhadap Noise Salt & Pepper sebanyak 0.01 :
start A, i=0, j=0, F [] [], Px [][], Py [][], G, noise, nr, nn, P;
Px = [F(i-1,j-1)+1F(i-1,j)+F(i-1,j+1)] [F(i+1,j-1)+1F(i+1,j)+F(i+1,j+1)]
Py = [F(i-1,j-1)+1F(i,j-1)+F(i+1,j-1)] [F(i-1,j+1)+1F(i,j+1)+F(i+1,j+1)]
a = input image G = sqrt (Sx^2 +Sy^2) New F [getHeight(a)] [getWidth(a)] noise = imnoise (G, โsalt & pepperโ,0.01)
no
i<=getHeight(a)
yes
nr = sum(sum(G))
no
j<=getWidth(a)
yes
nn = sum(sum(noise))
F [i][j] = getPixel(a) P = abs(nn-nr)/nr
j ++ Cetak nilai pixel P
i ++
End
Gambar 3.15 Flowchart Sensitivitas Operator Prewitt
http://digilib.mercubuana.ac.id/
42
Dibawah ini adalah Flowchart Sensitivitas Deteksi Tepi Isotropic terhadap Noise Salt & Pepper sebanyak 0.01 :
start A, i=0, j=0, F [] [], Ix [][], Iy [][], G, noise, nr, nn, P;
Ix = [F(i-1,j-1)+sqrt2F(i-1,j)+F(i-1,j+1)] [F(i+1,j-1)+sqrt2F(i+1,j)+F(i+1,j+1)]
Iy = [F(i-1,j-1)+sqrt2F(i,j-1)+F(i+1,j-1)] [F(i-1,j+1)+sqrt2F(i,j+1)+F(i+1,j+1)]
a = input image G = sqrt (Ix^2 +Iy^2) New F [getHeight(a)] [getWidth(a)]
i<=getHeight(a)
no
noise = imnoise (G, โsalt & pepperโ,0.01)
yes j<=getWidth(a)
nr = sum(sum(G))
no
yes
nn = sum(sum(noise))
F [i][j] = getPixel(a)
P = abs(nn-nr)/nr
j ++
Cetak nilai pixel P
i ++
End
Gambar 3.16 Flowchart Sensitivitas Operator Isotropic
http://digilib.mercubuana.ac.id/
43
Dibawah ini adalah Flowchart Sensitivitas Deteksi Tepi Stochastic terhadap Noise Salt & Pepper sebanyak 0.01 :
start A, i=0, j=0, F [] [], Stx [][], Sty [][], G, noise, nr, nn, P;
Stx = [0.776*F(i-1,j-1)+F(i-1,j)+0.776*F(i-1,j+1)] [0.776*F(i+1,j-1)+F(i+1,j)+0.776*F(i+1,j+1)]
Sty = [0.776*F(i-1,j-1)+F(i,j-1)+0.776*F(i+1,j-1)] [0.776*F(i-,j+1)+F(i,j+1)+0.776*F(i+1,j+1)]
a = input image G = sqrt (Ix^2 +Iy^2) New F [getHeight(a)] [getWidth(a)]
i<=getHeight(a)
no
noise = imnoise (G, โsalt & pepperโ,0.01)
yes j<=getWidth(a)
no
yes
nr = sum(sum(G))
nn = sum(sum(noise))
F [i][j] = getPixel(a)
P = abs(nn-nr)/nr
j ++
Cetak nilai pixel P
i ++
End
Gambar 3.17 Flowchart Sensitivitas Operator Stochastic
http://digilib.mercubuana.ac.id/
44
http://digilib.mercubuana.ac.id/