jarak
perubahan intensitas
= arah tepi
• Tepi memiliki arah, dan arah ini berbeda-beda pada bergantung pada
perubahan intensitas
• Tepi biasanya terdapat pada batas antara dua daerah yang
berbeda intensitas dengan perubahan yang sangat cepat di
dalam citra.
Di mana tepi?
Ini tepi
• Empat macam tepi: tepi curam (step edge), tepi landau (ramp edge), tepi
garis (line edge), dan tepi atap (roof edge).
Citra dengan tepi curam Citra dengan tepi landai Breakdown tepi landai
Citra mengandung derau
F F x h, y F x, y
lim
x h0 h
Sumber: Noah Snavely, CS6670: Computer Vision
intensity function
image (along horizontal scanline) first derivative
edges correspond to
Source: L. Lazebnik extrema of derivative
• Karena citra f(x,y) adalah fungsi dwimatra dalam bentuk diskrit, maka
turunan pertamanya adalah secara parsial:
= [Gx, Gy]
f ( x, y ) f ( x x, y ) f ( x, y )
Gx
x x
f ( x, y ) f ( x, y y ) f ( x, y )
Gy
y y
• Biasanya x y 1 , sehingga
f ( x, y ) f ( x, y )
Gx f ( x 1, y ) f ( x, y ) dan Gy f ( x, y 1) f ( x, y )
x y
Misalkan susunan pixel-pixel di dalam
citra:
Kedua turunan parsial di atas dapat
dipandang sebagai dua buah mask
konvolusi:
−1 𝐺𝑦 = −1 1
𝐺𝑥 =
1
Diferensial maju (forward differential):
Bisa juga menggunakan mask gradien
f ( x, y )
Gx f ( x 1, y ) f ( x, y ) 2 x 2 sebagai berikut:
x
f ( x, y )
Gy f ( x, y 1) f ( x, y )
y
• Kekuatan tepi (edge strengthness):
• Arah tepi:
• Keputusan apakah suatu pixel merupakan tepi atau bukan tepi dinyatakan dengan
operasi pengambangan:
1, jika G[ f ( x, y )] T
g ( x, y )
0, lainnya
• T adalah nilai ambang, pixel tepi dinyatakan putih (1) sedangkan pixel bukan tepi
dinyatakan hitam (0).
Sumber: Noah Snavely, CS6670: Computer Vision
Citra Gradien (turunan pertama)
Contoh. Misalkan terdapat sebuah 5 5 citra dengan dua derajat keabuan sebagai
berikut:
1 1 1 11 f ( x, y )
Gx f ( x 1, y ) f ( x, y )
1 1 1 11 x
f ( x, y )
1 1 1 00 Gy f ( x, y 1) f ( x, y )
y
1 1 0 00
1 1 0 0 0
Hasil perhitungan gradien setiap pixel di dalam citra adalah sebagai berikut:
2 2
(iii) G[f(x,y)] = max{ Gx , G y } , atau
(iv) G[f(x,y)] = max{ Gx , G y } . Persamaan (ii) dan (iv) biasanya lebih disukai
karena lebih mudah perhitungannya.
Sumber: Noah Snavely, CS6670: Computer Vision
Dimanakah tepi?
Source: S. Seitz
Solusi: lakukan pelembutan (image smoothing) terlebih dahulu, misalnya dengan
penapis Gaussian
f*h
f /x
2f /x2
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 ) f ( x, y y ) 2 f ( x, y ) f ( x, y y )
( x ) 2 ( 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)
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)
= 0 + f(x – 1, y) + 0 +
f(x, y – 1) – 4f(x, y) + f(x, y + 1) +
0 + f(x + 1, y) + 0
0 1 0
1 4 1
0 1 0
• Contoh berikut memperlihatkan memperlihatkan pendeteksian tepi vertikal
dengan operator Laplace:
4 4 4 8 8 8 8 * * * ** * *
4 4 4 8 8 8 8 * 0 4 4 0 0 *
4 4 4 8 8 8 8 * 0 4 4 0 0 *
4 4 4 8 8 8 8 * 0 4 4 0 0 *
4 4 4 8 8 8 8 * * * * * * *
8 +4
4 0
0 -4
4 4 8 8 8 8 8 8 * * * * ** * *
4 4 4 8 8 8 8 8 * 0 8 4 0 0 0 *
4 4 4 4 8 8 8 8 * 0 0 8 4 0 0 *
4 4 4 4 4 8 8 8 * 0 0 0 8 4 0 *
4 4 4 4 4 4 8 8 * * * * * * * *
2 2 2 5 8
8 8 8 * * * * * * * *
2 2 2 5 8
8 8 8 * 0 3 0 3 0 * 0
2 2 2 5 8
8 8 8 * 0 3 0 3 0 * 0
2 2 2 5 8
8 8 8 * 0 3 0 3 0 * 0
2 2 2 5 8 8 8 8 * * * * * * * *
Pada contoh di atas tidak terdapat persilangan nol; lokasi tepi yang
sesungguhnya ditentukan secara interpolasi.
Operator Laplace lainnya:
• Kadang-kadang diinginkan memberi bobot yang lebih pada pixel
tengah di antara pixel tetangganya:
1 4 1
4 20 4
1 4 1
* =
I = imread('lada-gray.bmp');
figure, imshow(I);
H = [1 1 1; 1 -8 1; 1 1 1];
J = uint8(convn(double(I), double(H)));
figure, imshow(J)
* =
Operator Laplace of Gaussian (LoG)
• Kadangkala pendeteksian tepi dengan
operator Laplace menghasilkan tepi-tepi
palsu yang disebabkan oleh gangguan
pada gambar.
h( x, y ) f ( x, y ) * G ( x, y )
k ( x, y ) 2 h( x, y )
2 [ f ( x, y ) * G( x, y )] f ( x, y ) * 2G( x, y )
Jadi,
k ( x , y ) f ( x , y ) * 2G ( x , y )
4
• Tinjau
Laplacian of Gaussian
operator
• Kadang-kadang disebut juga fungsi Laplacian of Gaussian (LoG) atau fungsi topi
orang Mexico (Mexican Hat), karena bentuk kurvanya seperti topi Meksiko.
Laplacian of Gaussian
0 0 1 0 0
0 1 2 1 0
1 2 16 2 1
0 1 2 1 0
0 0 1 0 0
Mask konvolusi LoG dengan = 1.4
Citra masukan Hasil operator Laplace Hasil operator LoG
Operator gradien lainnya
• Oparator Sobel
• Operator Roberts
• Operator Prewitt
• Opreator Canny
Operator Sobel
• Tinjau pengaturan pixel di sekitar pixel (x,y):
a0 a1 a2
a ( x, y ) a3
7
a6 a5 a 4
• Operator Sobel adalah magnitudo dari gradien yang dihitung dengan rumus
M= s x2 s 2y
1 0 1 1 1 1
Px 1 0 1 dan Py 0 0 0
1 0 1 1 1 1
f(x, y) f(x + 1, y) R ( x, y ) f ( x, y 1) f ( x 1, y )
Nilai 4 pada pojok kiri atas pada citra hasil konvolusi diperoleh dengan
perhitungan sebagai berikut:
f ’[0,0] = │3 – 1 │ + │4 – 2 │ = 4
I = imread('bird.bmp');
Rx = [1 0; 0 -1];
Ry = [0 1; -1 0];
Jx = conv2(double(I), double(Rx), 'same');
Jy = conv2(double(I), double(Ry), 'same');
Jedge = sqrt(Jx.^2 + Jy.^2);
imshow(I);
figure, imshow(uint8(Jedge));
• Jika nilai mutlak gradien suatu pixel melebihi nilai ambang T, maka