121
jarak
perubahan intensitas
= arah tepi
Perhatikan Gambar 8.2. Ada tiga macam tepi yang terdapat di dalam citra digital.
Ketiganya adalah:
1. Tepi curam
Tepi dengan perubahan intensitas yang tajam. Arah tepi berkisar 90.
2. Tepi landai
Disebut juga tepi lebar, yaitu tepi dengan sudut arah yang kecil. Tepi landai
dapat dianggap terdiri dari sejumlah tepi-tepi lokal yang lokasinya berdekatan.
3. Tepi yang mengandung derau (noise)
Umumnya tepi yang terdapat pada aplikasi computer vision mengandung
derau. Operasi peningkatan kualitas citra (image enhancement) dapat dilakukan
terlebih dahulu sebelum pendeteksian tepi.
derajat
keabuan
derajat
keabuan
derajat
keabuan
derajat keabuan
4 4 4
4 4 4
4 4 4
4 4 4
4 4 4
(e) citra
curam
8 8 8 8 8 4 4 5 6 7 8 8 8
8 8 8 8 8 4 4 5 6 7 8 8 8
8 8 8 8 8 4 4 5 6 7 8 8 8
8 8 8 8 8 4 4 5 6 7 8 8 8
8 8 8 8 8 4 4 5 6 7 8 8 8
dengan tepi (f) citra dengan tepi landai
122
f
G x
f = fx =
G y
y
(8.1)
Gx =
f ( x, y ) f ( x + x, y ) f ( x, y )
=
x
x
(8.2)
Gy =
f ( x , y ) f ( x , y + y ) f ( x, y )
=
y
y
(8.3)
f ( x, y )
= f ( x + 1, y ) f ( x , y )
x
f ( x , y )
Gy =
= f ( x, y + 1) f ( x, y )
y
Gx =
(8.4)
(8.5)
123
(x-1,y)
(x,y)
(x+ 1,y)
(x-1,y-1) (x,y-1)
(x+ 1,y-1)
x
Kedua turunan tersebut dapat dipandang sebagai dua buah mask konvolusi
sebagai berikut:
G1 ( x ) = [ 1 1]
1
G1 ( y ) =
1
dan
Contoh 8.1. [LOW91] Misalkan terdapat sebuah 5 5 citra dengan dua derajat
keabuan sebagai berikut:
1
1
1
1
1 1 1 1
1 1 1 1
1 1 0 0
1 0 0 0
1 0 0 0
Hasil perhitungan gradien setiap pixel di dalam citra adalah sebagai berikut:
Citra
1
1
1
1
124
1 1 1 1
1 1 1 1
1 1 0 0
1 0 0 0
1 0 0 0
Gradien-x
0
0 *
0
0
0
0
0 0 *
1 0 *
0
0
0 1
0 *
0 1
0 *
Gradien-y
0 0 0
0 0 1
0 1 0
0 0 0
* * *
0
1
0
0
*
Arah gradien
* * * * *
* * * b b
* *
* *
* * * *
* * * *
Gx + G y
(x,y) = tan-1
Gy
Gx
(8.6)
(8.7)
Karena menghitung akar adalah persoalan rumit dan menghasilkan nilai riil, maka
dalam praktek kekuatan tepi biasanya disederhanakan perhitungannya dengan
menggunakan salah satu dari alternatif rumus berikut [DUL97]:
(i) G[f(x,y)] = G x 2 + G y 2 , atau
(ii) G[f(x,y)] = G x + G y , atau
(iii) G[f(x,y)] = max{ G x 2 , G y 2 } , atau
(iv) G[f(x,y)] = max{ G x , G y } .
Dalam praktek, persamaan (ii) dan (iv) biasanya lebih disukai dan lebih mudah
dikerjakan karena mengandung jumlah operasi aritmetika yang lebih sedikit.
Hasil pendeteksian tepi adalah citra tepi (edges image) g(x,y), yang nilai setiap
pixel-nya menyatakan kekuatan tepi:
g ( x , y ) = G [ f ( x , y )]
Keputusan apakah suatu pixel merupakan tepi atau bukan tepi dinyatakan dengan
operasi pengambangan berikut:
1, jika G [ f ( x , y )] T
g( x, y) =
lainnya
0,
(8.8)
yang dalam hal ini T adalah nilai ambang, pixel tepi dinyatakan putih sedangkan
pixel bukan tepi dinyatakan hitam. Gambar 8.4 adalah contoh hasil deteksi
semua tepi citra Lena, citra Camera, dan citra botol.
125
Gambar 8.4 Deteksi semua tepi citra Lena, camera, dan botol
126
Selain operator gradien yang sudah disebutkan di atas, masih ada beberapa
operator gradien pertama yang lain yang dapat digunakan untuk mendeteksi tepi
di dalam citra, yaitu:
(a) Operator gradien selisih-terpusat (center-difference):
Dx ( x, y ) =
f ( x , y ) f ( x + 1, y ) f ( x 1, y )
=
x
2
(8.9)
Dy ( x, y ) =
f ( x, y ) f ( x, y + 1) f ( x, y 1)
=
y
2
(8.10)
D2 ( x ) = [ 1 0 1]
dan
1
D2 ( y ) = 0
1
a1
a2
a0
a ( x, y) a
3
7
a 6
a5
a4
Operator Sobel adalah magnitudo dari gradien yang dihitung dengan
M=
s 2x + s 2y
s x = ( a2 + ca3 + a 4 ) (a 0 + ca 7 + a 6 )
(8.11)
s y = ( a 0 + ca1 + a 22 ) ( a 6 + ca5 + a4 )
(8.12)
1 0 1
S x = 2 0 2
1 0 1
dan
2
1
1
Sy = 0
0
0
1 2 1
127
S
(x,y) = tan-1 y
Sx
(8.13)
3
2
4
2
4 2 5 1
1 6 4 2
5 7 1 3
2 5 7 1
5 1 3 2
* * * * *
* 18
s 2x + s 2y =
112 + ( 7 ) 2 S x + S y = 11 + 7 = 18
s 2x + s 2y dihampiri dengan menghitung
M Sx + S y .
Contoh 8.3. Di bawah ini contoh lain pendeteksian tepi dengan operator Sobel,
dimana hasil konvolusi diambangkan dengan T = 12.
Citra:
0
0
0
0
0 0 0 0 0 2 0 3 3
0 0 1 0 0 0 2 4 3
0 2 0 2 4 3 3 2 3
0 1 3 3 4 3 3 3 3
1 0 4 3 3 2 4 3 2
0 1 2 3 3 4 4 4 3
128
gradien - x + gradien - y :
*
*
*
*
* * * * * *
10 14 12 14 4 *
6 8 10 20 16 12 6 0 *
4 10 14 10 2 4 2 4 *
2 12 12 2 2 4 6 8 *
* * * * * * * * *
*
4
*
6
*
4
*
*
*
*
* * * * * *
10 14 12 14 4 *
6 8 10 20 16 12 6 0 *
4 10 14 10 2 4 2 4 *
2 12 12 2 2 4 6 8 *
* * * * * * * * *
*
4
*
6
*
4
1 0 1
Px = 1 0 1
1 0 1
dan
1
1
1
Py = 0
0
0
1 1 1
R+ ( x , y ) = f ( x + 1, y + 1) f ( x , y )
(8.14)
R ( x , y ) = f ( x, y + 1) f ( x + 1, y )
(8.15)
f(x, y+1)
f(x, y)
f(x + 1, y+1)
f(x + 1, y)
x
Gambar 8. 5 Operator silang
129
Operator R+ adalah hampiran turunan berarah dalam arah 45, sedangkan Radalah hampiran turunan berarah dalam arah 135.
Dalam bentuk mask konvolusi, operator Roberts adalah:
1 0
0 1
R+ =
dan R =
0 1
1 0
( x, y ) =
R
+ tan 1 ( )
4
R+
(8.17)
3
2
4
2
4 2 5 1
1 6 4 2
5 7 1 3
2 5 7 1
5 1 3 2
4
5
1
*
3 3 6 *
7 8 2 *
5 4 4 *
1 8 7 *
* * * *
Nilai 4 pada pojok kiri atas pada citra hasil konvolusi diperoleh dengan perhitungan
sebagai berikut:
f [0,0] = 3 1 + 4 2 = 4
130
sedangkan pada tepi yang landai tidak terdapat persilangan nol. Persilangan nol
merupakan lokasi tepi yang akurat.
Turunan kedua fungsi dengan dua peubah adalah:
2 f 2 f
+
x 2 y 2
2 f =
(8.18)
f(x)
f /x
2f /x2
G3 ( x) =
f ( x, y ) f ( x , y ) f ( x x, y )
=
x
x
(8.19)
G3 ( y) =
f ( x, y ) f ( x , y ) f ( x , y y )
=
y
y
(8.20)
131
maka
2 f =
2 f 2 f
+
x 2 y 2
= G1 (G3 ( x )) + G1 (G3 ( y ))
1
1
=
G1 ( f ( x , y )) G1 ( f ( x x , y )) +
G1 ( f ( x , y )) G1 ( f ( x , y y ))
x
y
1 f ( x + x , y ) f ( x , y ) f ( x, y ) + f ( x x, y )
{
}
x
x
1 f ( x , y + y ) f ( x , y ) f ( x , y ) + f ( x, y y )
+
{
}
y
y
=
f ( x + x , y ) 2 f ( x, y ) + f ( x x, y )
( x ) 2
f ( x , y + y ) 2 f ( x , y ) + f ( x, y y )
( y )2
2 f ( x , y ) = f ( x + 1, y ) 2 f ( x , y ) + f ( x 1, y ) + f ( x , y + 1) 2 f ( x, y ) + f ( x, y 1)
= f ( x , y 1) + f ( x 1, y ) 4 f ( x, y ) + f ( x + 1, y ) + f ( x, y + 1)
(8.21)
atau dapat dinyatakan sebagai mask:
0 1 0
1 4 1
0 1 0
Selain mask di atas, masih ada dua hampiran operator Laplace yang lain, yaitu
1 1 1
1 2 1
1 8 1 dan 2 4 2
1 2 1
1 1 1
132
Kadang-kadang diinginkan memberi bobot yang lebih pada pixel tengah di antara
pixel tetangganya. Operator Laplace yang digunakan untuk tujuan ini adalah
4
1
1
4 20 4
4
1
1
Operator Laplace termasuk ke dalam penapis lolos-tinggi sebab jumlah seluruh
koefisiennya nol dan koefisiennya mengandung nilai negatif maupun positif.
4
4
4
4
4 4 8 8 8 8
4 4 8 8 8 8
4 4 8 8 8 8
4 4 8 8 8 8
4 4 8 8 8 8
*
*
*
*
* *
* * * *
0 + 4 4 0 0 *
0 + 4 4 0 0 *
0 + 4 4 0 0 *
* *
* * * *
(ii) Hasil konvolusi
+4
-4
4 0 0
Pada contoh di atas, persilangan nol bersesuaian dengan tepi pada citra semula,
yang terdapat pada titik tengah antara dua buah pixel yang bersesuaian. Pixel tepi
seharusnya ditandai secara konsisten, apakah pixel di sebelah kiri atau di sebelah
kanan garis |.
133
Contoh 8.6. [GAL90] Pendeteksian tepi diagonal (miring) dengan operator Laplace:
4
4
4
4
4 8 8 8 8 8 8
4 4 8 8 8 8 8
4 4 4 8 8 8 8
4 4 4 4 8 8 8
4 4 4 4 4 8 8
*
*
*
*
*
0
0
0
*
* *
+8 4 0
0 0 *
0 + 8 4 0 0 *
0
0 + 8 4 0 *
*
*
*
* * *
*
2
2
2
2
2 2 5 8 8 8 8
2 2 5 8 8 8 8
2 2 5 8 8 8 8
2 2 5 8 8 8 8
2 2 5 8 8 8 8
(i) Citra semula
*
*
*
*
* * *
0 + 3 0 3 0 0 *
0 + 3 0 3 0 0 *
0 + 3 0 3 0 0 *
* * * * * * *
*
134
f(x,y)
dihaluskan dengan
fungsi Gauss, G(x,y)
h(x,y)
operator Laplace,
2
k(x,y)
Gambar 8. 7 Skema pendeteksian tepi untuk citra yang mengalami gangguan.
k ( x , y ) = 2h ( x, y )
(8.22)
h ( x, y ) = f ( x , y ) * G ( x, y )
(8.23)
dan
2 [ f ( x , y ) * G ( x , y )] = f ( x , y ) * 2G ( x, y )
(8.24)
k ( x , y ) = f ( x , y ) * 2G ( x, y )
(8.25)
Jadi,
x 2 + y 2 2 2
e
G ( x, y ) =
4
( x 2 + y2 )
2 2
(8.26)
135
2.
0 1 0
0
0
0 1 2 1 0
1 2 16 2 1
0 1 2 1 0
0
0 1 0
0
(a)
136
(b)
(c)
(d)
Gambar 8. 8 (a) citra botol; (b) Laplace; (c) Laplace dengan bobot lebih; (d) Laplacian of Gaussian
(LoG)
G [ f ( x , y )] = max{Gi [ f ( x , y )] i = 1,2,..., p}
(8.27)
Jika mask k adalah mask yang memberikan kekuatan terbesar, maka arah tepi
ditentukan dari mask k tersebut.
Operator kompas yang dipakai untuk pendeteksian tepi menampilkan tepi dari 8
macam arah mata angin:
137
Utara
1
1
1
1 2 1
1 1 1
Timur Laut
1 1
1
1 2 1
1 1 1
Timur
1 1
1 2
1 1
1
1
1
Tenggara
1 1 1
1 2 1
1
1 1
Selatan
1 1 1
1 2 1
1
1
1
Barat Daya
1 1 1
1 2 1
1 1
1
Barat
1 1 1
1 2 1
1 1 1
Barat Laut
1
1 1
1 2 1
1 1 1
Operator kompas yang tersedia dapat juga digunakan untuk mendeteksi tepi
dalam arah tertentu saja. Misalnya diinginkan mendeteksi tepi dalam arah
horizontal dan vertikal, seperti hasil pendeteksian tepi citra San Fransisco
(Gambar 8.9) dan citra WTC1109.
Tepi horizontal
Tepi vertikal
Gambar 8. 9 Deteksi tepi horizontal dan vertikal dari citra San Fransisco
138
Tepi vertikal
139
Tepi horizontal
Gambar 8.10 (lanjutan).
140