• Tidak ada hasil yang ditemukan

13 - Pendeteksian Tepi

N/A
N/A
Protected

Academic year: 2021

Membagikan "13 - Pendeteksian Tepi"

Copied!
83
0
0

Teks penuh

(1)

13 - Pendeteksian Tepi

IF4073 Interpretasi dan Pengolahan Citra

Oleh: Rinaldi Munir

Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika

Institut Teknologi Bandung 2021

(2)

Tepi (edge)

• Tepi (edge) adalah perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat.

• Tepi memiliki arah, dan arah ini berbeda-beda bergantung pada perubahan intensitas jarak perubahan intensitas  = arah tepi 

(3)

• Tepi biasanya terdapat pada batas antara dua daerah yang berbeda intensitas dengan perubahan yang sangat cepat di dalam citra.

(4)

Di mana tepi?

(5)

• Empat macam tepi: tepi curam (step edge), tepi landai (ramp edge), tepi garis (line edge), dan tepi atap (roof edge).

(6)
(7)

Citra mengandung derau

(8)

Sumber: Texas Instruments, Edge Detection

• Idealnya sebuah tepi berbentuk curam (kemiringan 90 derajat), namun

(9)

Tujuan Pendeteksian Tepi

• Pendeteksian tepi bertujuan untuk meningkatkan penampakan garis batas atau objek di dalam citra.

(10)

• Pendeteksian tepi mengekstraksi representasi gambar garis-garis di dalam citra.

(11)
(12)

• Pendeteksian tepi berguna dalam mengenali objek di dalam citra (image recognition).

(13)
(14)
(15)

• Pendeteksian tepi merupakan bagian dari analisis citra (image analysis).

• Tujuan analisis citra: mengidentifikasi parameter-parameter yang diasosiasikan dengan ciri (feature) dari objek di dalam citra, untuk selanjutnya parameter tersebut digunakan dalam menginterpretasi citra.

• Analisis citra pada dasarnya terdiri dari tiga tahapan: 1. Ekstrakasi ciri (feature extraction).

Faktor kunci dalam mengekstraksi ciri adalah kemampuan mendeteksi keberadaan tepi (edge) dari objek di dalam citra.

2. Segmentasi

Setelah tepi objek diketahui, langkah selanjutnya dalam analisis citra adalah

segmentasi, yaitu mereduksi citra menjadi objek atau region, misalnya memisahkan objek-objek yang berbeda dengan mengekstraksi batas-batas objek (boundary). 3. Klasifikasi.

Langkah terakhir dari analisis citra adalah klasifikasi, yaitu memetakan segmen-segmen yang berbeda ke dalam kelas objek yang berbeda pula.

(16)

Operator Gradien

• Pendeteksian tepi dapat dipahami dengan pendekatan kaklulus diferensial.

• Sebab, perubahan intensitas yang besar dalam jarak yang singkat dipandang sebagai fungsi yang memiliki kemiringan yang besar.

• Kemiringan fungsi dapat dihitung dengan turunan pertama (gradient)

(

) ( )

h y x F y h x F x F h , , lim 0 − + =   →

(17)

image

intensity function

(along horizontal scanline) first derivative

edges correspond to extrema of derivative

Source: L. Lazebnik

(18)

• Karena citra f(x,y) adalah fungsi dwimatra dalam bentuk diskrit, maka turunan pertamanya adalah secara parsial:

• Biasanya , sehingga = [Gx, Gy] x y x f y x x f x y x f Gx  −  + =   = ( , ) ( , ) ( , ) y y x f y y x f y y x f Gy  −  + =   = ( , ) ( , ) ( , ) 1 =  = x y ) , ( ) , 1 ( ) , ( y x f y x f x y x f Gx = + −   = ( , ) f (x, y 1) f (x, y) y y x f Gy = + −   = dan

(19)

Misalkan susunan pixel-pixel di dalam citra: ) , ( ) , 1 ( ) , ( y x f y x f x y x f Gx = + −   = ) , ( ) 1 , ( ) , ( y x f y x f y y x f Gy = + −   =

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 2 x 2 sebagai berikut:

(20)

• Kekuatan tepi (edge strengthness): • Arah tepi:

• Hasil pendeteksian tepi adalah citra tepi (edges image):

• Keputusan apakah suatu pixel merupakan tepi atau bukan tepi dinyatakan dengan operasi pengambangan:

• T adalah nilai ambang, pixel tepi dinyatakan putih (1) sedangkan pixel bukan tepi dinyatakan hitam (0). )] , ( [ ) , (x y G f x y g =     = lainnya , 0 )] , ( [ jika , 1 ) , (x y G f x y T g

(21)
(22)
(23)

) , ( ) , 1 ( ) , ( y x f y x f x y x f Gx = + −   = ) , ( ) 1 , ( ) , ( y x f y x f y y x f Gy = + −   =

Contoh. Misalkan terdapat sebuah 5  5 citra dengan dua derajat keabuan sebagai

berikut:                 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

Hasil perhitungan gradien setiap pixel di dalam citra adalah sebagai berikut:

Citra Gradien-x Gradien-y Arah gradien

                0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 −1 −1 0 0 −1 0 0 0 0 0 0 0 ∗ ∗ ∗ ∗ ∗ 0 0 0 0 ∗ 0 0 0 0 ∗ 0 0 −1 0 ∗ 0 −1 0 0 ∗ 0 −1 0 0 * * * * * * * * *   * * * * *  * * * *  * * * 

(24)

• Kembali ke rumus kekuatan tepi:

• Karena menghitung akar lebih kompleks dan menghasilkan nilai riil, maka dalam praktek kekuatan tepi disederhanakan perhitungannya dengan menggunakan salah satu dari alternatif:

(i) G[f(x,y)] = Gx2 + Gy2 , atau (ii) G[f(x,y)] = G +x Gy , atau

(iii) G[f(x,y)] = max{Gx2 , Gy2 } , atau

(iv) G[f(x,y)] = max{ Gx , Gy }. Persamaan (ii) dan (iv) biasanya lebih disukai karena lebih mudah perhitungannya.

(25)

Efek derau di dalam citra

Dimanakah tepi?

Source: S. Seitz

Noisy input image

(26)

Solusi: lakukan pelembutan (image smoothing) terlebih dahulu, misalnya dengan penapis Gaussian f h f * h Source: S. Seitz

(27)
(28)
(29)
(30)

• Operator gradien lainnya adalah operator gradien selisih-terpusat (center-difference):

• Ekivalen dengan mask:

2 ) , 1 ( ) , 1 ( ) , ( ) , ( f x y f x y x y x f y x Dx = + − −   = 2 ) 1 , ( ) 1 , ( ) , ( ) , ( = + − −   = f x y f x y y y x f y x Dy 𝐷𝑥 = −1 0 1 𝐷𝑦 = −1 0 1

(31)

Operator Turunan Kedua (Laplace)

• Turunan kedua:

• Operator turunan kedua disebut juga operator Laplace.

• Operator Laplace mendeteksi lokasi tepi lebih akurat khususnya pada tepi yang curam.

• Pada tepi yang curam, turunan keduanya mempunyai persilangan nol

(zero-crossing), yaitu titik di mana terdapat pergantian tanda nilai

turunan kedua dari positif ke negative atau sebaliknya.

2 2 2 2 2 y f x f f   +   = 

(32)

f(x)

f /x

2f /x2

(33)
(34)

Penurunan rumus

• Hampiri turunan pertama dengan diferensial mundur (backward differential):

• Maka, turunan kedua = turunan pertama diturunkan lagi:

x y x x f y x f x y x f x G   − − =   = ( , ) ( , ) ( , ) ) ( 3 y y y x f y x f y y x f y G   − − =   = ( , ) ( , ) ( , ) ) ( 3 2 2 2 2 2 y f x f f   +   =  )) ( ( )) ( ( 3 1 3 1 G x G G y G + = x = y = 1

(35)

)) , ( ( )) , ( ( 1 )) , ( ( )) , ( ( 1 1 1 1 1 G f x y G f x y y y y x x f G y x f G x − −  +  − −   = } ) , ( ) , ( ) , ( ) , ( { 1 } ) , ( ) , ( ) , ( ) , ( { 1 y y y x f y x f y x f y y x f y x y x x f y x f y x f y x x f x   − + − −  +  +   − + − −  +  = 2 ) ( ) , ( ) , ( 2 ) , ( x y x x f y x f y x x f   − + −  + = 2 ) ( ) , ( ) , ( 2 ) , ( y y y x f y x f y y x f   − + −  + +

Dengan mengasumsikan x = y = 1, maka diperoleh:

) 1 , ( ) , ( 2 ) 1 , ( ) , 1 ( ) , ( 2 ) , 1 ( ) , ( 2 = + − + − + + − + −  f x y f x y f x y f x y f x y f x y f x y ) 1 , ( ) , 1 ( ) , ( 4 ) , 1 ( ) 1 , ( − + − − + + + + = f x y f x y f x y f x y f x y

(36)

) 1 , ( ) , ( 2 ) 1 , ( ) , 1 ( ) , ( 2 ) , 1 ( ) , ( 2 = + − + − + + − + −  f x y f x y f x y f x y f x y f x y f x y ) 1 , ( ) , 1 ( ) , ( 4 ) , 1 ( ) 1 , ( − + − − + + + + = f x y f x y f x y f x y f x y

Atau dalam bentuk mask konvolusi:

          − 0 1 0 1 4 1 0 1 0 = 0 + f(x – 1, y) + 0 + f(x, y – 1) – 4f(x, y) + f(x, y + 1) + 0 + f(x + 1, y) + 0

(37)

• Contoh berikut memperlihatkan memperlihatkan pendeteksian tepi vertikal dengan operator Laplace:

                8 8 8 8 4 4 4 8 8 8 8 4 4 4 8 8 8 8 4 4 4 8 8 8 8 4 4 4 8 8 8 8 4 4 4 0 4 8 -4 0 +4                 − + − + − + * * * * * * * * 0 0 4 4 0 * * 0 0 4 4 0 * * 0 0 4 4 0 * * * * * * * *

(i) Citra semula (ii) Hasil konvolusi

Satu baris dari hasil pendeteksian tepi:

(38)

• Contoh pendeteksian tepi diagonal (miring) dengan operator Laplace:                 8 8 4 4 4 4 4 4 8 8 8 4 4 4 4 4 8 8 8 8 4 4 4 4 8 8 8 8 8 4 4 4 8 8 8 8 8 8 4 4                 − + − + − + * * * * * * * * * 0 4 8 0 0 0 * * 0 0 4 8 0 0 * * 0 0 0 4 8 0 * * * * * * * * *

(39)

• Contoh pendeteksian tepi landai dengan operator Laplace:                 8 8 8 8 5 2 2 2 8 8 8 8 5 2 2 2 8 8 8 8 5 2 2 2 8 8 8 8 5 2 2 2 8 8 8 8 5 2 2 2

                − + − + − + * * * * * * * * * 0 0 3 0 3 0 * * 0 0 3 0 3 0 * * 0 0 3 0 3 0 * * * * * * * * *

(i) Citra semula (ii) Hasil konvolusi

Satu baris dari hasil pendeteksian tepi: 0 +3 0 –3 0

Pada contoh di atas tidak terdapat persilangan nol; lokasi tepi yang sesungguhnya ditentukan secara interpolasi.

(40)
(41)

• Kadang-kadang diinginkan memberi bobot yang lebih pada pixel tengah di antara pixel tetangganya:

• Operator Laplace termasuk ke dalam penapis lolos-tinggi sebab

jumlah seluruh koefisiennya nol dan koefisiennya mengandung nilai negatif maupun positif.

1

4

1

4

20

4

1

4

1

(42)

I = imread('camera.bmp'); figure, imshow(I); H = [0 1 0; 1 -4 1; 0 1 0]; J = uint8(convn(double(I), double(H))); figure, imshow(J) * =

(43)

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) * =

(44)

Operator Laplace of Gaussian (LoG)

• Kadangkala pendeteksian tepi dengan

operator Laplace menghasilkan tepi-tepi palsu yang disebabkan oleh gangguan pada gambar.

• Untuk mengurangi kemunculan tepi palsu, citra ditapis dulu dengan fungsi Gaussian

(45)

) , ( * ) , ( ) , (x y f x y G x y h = ) , ( ) , (x y 2h x y k = 

Berdasarkan gambar di samping:

Dapat dibuktikan bahwa

) , ( * ) , ( )] , ( * ) , ( [ 2 2 y x G y x f y x G y x f =   ) , ( * ) , ( ) , (x y f x y 2G x y k =  Jadi,

yang dalam hal ini,

2 2 2 2 ) ( 4 2 2 2 2 2 ) , (    x y e y x y x G + −       + − = 

(46)

• Tinjau

Laplacian of Gaussian operator

(47)

• Fungsi 2G(x,y) merupakan turunan kedua dari fungsi Gauss

• Kadang-kadang disebut juga fungsi Laplacian of Gaussian (LoG) atau fungsi topi orang Mexico (Mexican Hat), karena bentuk kurvanya seperti topi Meksiko.

Gaussian derivative of Gaussian

Laplacian of Gaussian

(48)

Jadi, untuk mendeteksi tepi dari citra yang mengalami gangguan, kita dapat melakukan salah satu dari dua operasi ekivalen di bawah ini: 1. konvolusi citra dengan fungsi Gauss G(x,y), kemudian lakukan

operasi Laplace terhadap hasilnya, atau

2. konvolusi citra langsung dengan penapis LoG. Contoh penapis LoG yang berukuran 5  5:

                − − − − − − − − − − − − 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

(49)
(50)
(51)

Operator gradien lainnya

• Oparator Sobel

• Operator Roberts • Operator Prewitt • Opreator Canny

(52)

Operator Sobel

• Tinjau pengaturan pixel di sekitar pixel (x,y):

• Operator Sobel adalah magnitudo dari gradien yang dihitung dengan rumus

          4 5 6 3 7 2 1 0 ) , ( a a a a y x a a a a 2 2 y x s s + M =

yang dalam hal ini, turunan parsial dihitung dengan

) ( ) (a2 ca3 a4 a0 ca7 a6 sx = + + − + + ) ( ) (a0 ca1 a22 a6 ca5 a4 sy = + + − + +

(53)

• Dengan konstanta c = 2, maka

• Dalam bentuk mask, sx dan sy dapat dinyatakan sebagai

• Arah tepi dihitung dengan persamaan

          − − − = 1 0 1 2 0 2 1 0 1 x S           − − − = 1 2 1 0 0 0 1 2 1 y S dan (x,y) = tan-1       x y S S 𝑠𝑥 = (𝑎2 + 2𝑎3 + 𝑎4) − (𝑎0 + 2𝑎7 + 𝑎6) 𝑠𝑦 = (𝑎0 + 2𝑎1 + 𝑎22) − (𝑎6 + 2𝑎5 + 𝑎4)          4 5 6 3 7 2 1 0 ) , ( a a a a y x a a a a

(54)
(55)

• Di bawah ini contoh lain pendeteksian tepi dengan operator Sobel, dimana hasil konvolusi diambangkan (thresholding) dengan T = 12.

Hasil pengambangan dengan T = 12: ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ 0 0 0 0 1 1 1 0 ∗ ∗ 0 0 0 1 1 1 0 0 ∗ ∗ 0 0 1 0 0 0 0 0 ∗ ∗ 0 1 1 0 0 0 0 0 ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗

(56)

Citra masukan Hasil operator Sobel %Sobel

I = imread('bird.bmp');

Sx = [-1 0 1; -2 0 2; -1 0 1]; Sy = [1 2 1; 0 0 0; -1 -2 -1];

Jx = conv2(double(I), double(Sx), 'same'); Jy = conv2(double(I), double(Sy), 'same'); Jedge = sqrt(Jx.^2 + Jy.^2);

imshow(I);

(57)

Operator Prewitt

• Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi menggunakan nilai c = 1:

• Kekuatan tepi dihitung dengan rumus:           − − − = 1 0 1 1 0 1 1 0 1 x P           − − − = 1 1 1 0 0 0 1 1 1 y P dan G(f(x,y)) = 𝑃𝑥2 + 𝑃𝑦2

(58)

Citra masukan Hasil operator Prewitt I = imread('bird.bmp');

Px = [-1 0 1; -1 0 1; -1 0 1]; Py = [-1 -1 -1; 0 0 0; 1 1 1];

Jx = conv2(double(I), double(Px), 'same'); Jy = conv2(double(I), double(Py), 'same'); Jedge = sqrt(Jx.^2 + Jy.^2);

imshow(I);

(59)
(60)

Operator Roberts

• Operator Roberts sering disebut juga operator silang

f(x, y) f(x + 1, y)

f(x + 1, y+1) f(x, y+1)

x

Gradien Roberts dalam arah-x dan arah-y dihitung dengan rumus:

) , ( ) 1 , 1 ( ) , (x y f x y f x y R+ = + + − ) , 1 ( ) 1 , ( ) , (x y f x y f x y R = + − +

Dalam bentuk mask konvolusi:

      − = + 1 0 0 1 R      − = − 0 1 1 0 R dan

Arah tepi dihitung dengan rumus:

(61)

• Contoh berikut ini memeperlihatkan pendeteksian tepi dengan operator Roberts:

Nilai 4 pada pojok kiri atas pada citra hasil konvolusi diperoleh dengan perhitungan sebagai berikut:

(62)

Citra masukan Hasil operator Roberts 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);

(63)
(64)

Operator Canny

• Operator deteksi tepi yang terkenal karena dapat menghasilkan tepi dengan ketebalan 1 pixel

(65)

Langkah-langkah operator Canny:

• Haluskan citra I dengan penapis Gaussian:

• Hitung gradien setiap pixel dengan salah satu dari 4 operator sebelumnya (misalnya operator Sobel)

• Jika nilai mutlak gradien suatu pixel melebihi nilai ambang T, maka pixel termasuk pixel tepi.

I

G 

(66)
(67)
(68)
(69)

Canny with Canny with original

• The choice of depends on desired behavior

– large detects large scale edges – small detects fine features

(70)

Deteksi Tepi dengan Menggunakan Matlab

• Di dalam Matlab, selain menggunakan fungsi conv2 untuk melakukan konvolusi dengan filter Sobel, Prewitt, Roberts, dan Canny, juga terdapat fungsi edge untuk mendeteksi tepi secara langsung dengan pilihan berbagai metode.

BW = edge(I) returns a binary image BW containing 1s where the function finds

edges in the grayscale or binary image I and 0s elsewhere. By default, edge uses the Sobel edge detection method.

BW = edge(I,method) detects edges in image I using the edge-detection algorithm

specified by method. Pilihan method: Sobel (default), Prewitt, Roberts, Canny, log

BW = edge(I,method,threshold) returns all edges that are stronger than threshold.

(71)

Original image Sobel I = imread('boat.bmp'); imshow(I) BW = edge(I, 'Sobel'); figure, imshow(BW)

(72)

Original image Prewitt I = imread('boat.bmp'); imshow(I) BW = edge(I, 'Prewitt'); figure, imshow(BW)

(73)

Original image Roberts I = imread('boat.bmp'); imshow(I) BW = edge(I, 'Roberts'); figure, imshow(BW)

(74)

Original image Canny I = imread('boat.bmp'); imshow(I) BW = edge(I, 'Canny'); figure, imshow(BW)

(75)

Original image

log (Laplacian of Gaussian)

I = imread('boat.bmp'); imshow(I)

BW = edge(I, 'log'); figure, imshow(BW)

(76)

Sobel Prewitt

Roberts Canny log

(77)

Original image

Gray image Sobel

(78)

Deteksi tepi pada citra yang mengandung derau

clear all

close all

clc

Im = imread('lada-gray.bmp');

figure(1),imshow(Im);title('Original image'); Im_noise = imnoise(Im,'salt & pepper', 0.05); figure(2),imshow(Im_noise);title('salt &

pepper');

%1 CANNY method

Im_edge_1 = edge(Im_noise,'Canny');

figure(3),imshow(Im_edge_1);title('Edge

detection using Canny');

%2 PREWITT method

Im_edge_2 = edge(Im_noise,'prewitt'); figure(4),imshow(Im_edge_2);title('Edge

detection using Prewitt');

%3 ZERO CROSS method

Im_edge_3 = edge(Im_noise,'zerocross'); figure(5),imshow(Im_edge_3); title('Edge

detection using Zerocross');

%4 Roberts method

Im_edge_4 = edge(Im_noise,'Roberts');

figure(6),imshow(Im_edge_4); title('Edge

detection using roberts');

%5 Roberts method

Im_edge_5 = edge(Im_noise,'Sobel');

figure(7),imshow(Im_edge_5); title('Edge

detection using Sobel’);

figure(8),

subplot(2,3,1), imshow(Im_noise);title('Noise

Image'); subplot(2,3,2), imshow(Im_edge_1);title('Canny'); subplot(2,3,3), imshow(Im_edge_2);title('Prewitt'); subplot(2,3,4), imshow(Im_edge_3); title('Zerocross'); subplot(2,3,5), imshow(Im_edge_4); title('Roberts'); subplot(2,3,6), imshow(Im_edge_5); title('Sobel');

(79)
(80)
(81)
(82)
(83)

Moral dari contoh ini: untuk mendapatkan hasil deteksi tepi yang

optimal, maka citra yang mengandung derau seharusnya ditapis terlebih dahulu untuk menghilangkan deraunya (image enhancement)

Referensi

Dokumen terkait

Menghasilkan tenaga kader pembina yang profesional dalam menguasai pengetahuan olahraga masyarakat dan kesehatan sebagai bekal dalam menyampaikan kembali pengetahuan

Ruang lingkup penelitian ini adalah pembuatan prototype sistem informasi yang dapat digunakan untuk melakukan pengelolaan data prestasi atau kualifikasi mahasiswa

Di samping itu, humus sintetis juga mengadopsi konsep humus Hayes yang menyatakan bahwa humus memiliki struktur supramolekul yang merupakan agregat dari senyawa –

Skripsi yang berjudul “Metode Guru Dalam Menanamkan Pembiasaan Akhlak Terpuji Pada Anak-Anak PAUD An-Najah Desa Bahalayung Kecamatan Bakumpai Kabupaten Barito Kuala”, ditulis

Lanjutan Pemeliharaan Periodik Jalan Cilangkap - Warungjeruk (DAK) NAMA PERUSAHAAN NPWP ALAMAT HARGA PENAWARAN TERKOREKSI (Rp) Pemenang CV... Lanjutan Peningkatan

Saat alat-alat diintegrasikan sehingga informasi yang diciptakan pada suatu alat dapat digunakan oleh orang lain, maka sebuah sistem yang mendukung pengembangan perangkat

Laporan akhir Rancang Bangun Simulasi Alat Pengujian Kinerja dan Pembersih Rongga Injektor pada Engine D6E Excavator Volvo Seri EC210B bertujuan untuk media peraga dan saran

a. Jenis penelitian ini diperuntukkan bagi dosen baru dengan kepangkatan asisten ahli. Selain untuk kepentingan akademik, adanya penelitian ini juga dimaksudkan