Deteksi Tepi
(Edge Detection) pada suatu citra adalah suatu proses yang menghasilkan tepi-tepi dari obyek-obyek citra, tujuannya adalah Untuk menandai bagian yang menjadi detail gambar/citra untuk memperbaiki detail dari gambar/citra yang blur, yang terjadi akrena adanya efek dari proses akuisisi citra Suatu titik (x,y) dikatakan sebagai tepi (edge) dari suatu citra bila titik tersebut mempunyai perbedaan yang tinggi dengan tetangganya. Berikut adalah macam-macam metode deteksi tepi (edge detection methods) dan pengertian dari beberapa metode deteksi tepi seperti Sobel, Prewitt, Laplace, Robert, dan Canny.
A. Sobel
Metode ini mengambil prinsip dari fungsi laplace dan gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF, dan kelebihan dari metode sobel ini adalah mengurangi noise sebelum melakukan perhitungan deteksi tepi.
B. Prewitt
Metode Prewitt merupakan pengembangan metode robert dengan menggunakan filter HPF yang diberi satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian yang dikenal sebagai fungsi untuk membangkitkan HPF.
C. Laplace
Metode Laplace adalah metode transformasi yang digunakan untuk penyelesaian persamaan diferensial.
D. Robert
Metode Robert adalah nama lain dari teknik differensial pada arah horisontal dan differensial pada arah vertikal, dengan ditambahkan proses konversi biner setelah dilakukan differensial. Maksud konversi biner adalah meratakan distribusi warna hitam dan putih.
E. Canny
Canny merupakan deteksi tepi yang optimal. Operator Canny menggunakan Gaussian Derivative Kernel untuk menyaring kegaduhan dari citra awal untuk mendapatkan hasil deteksi tepi yang halus.
Berikut ini kode menggunakan Matlab :
Berikut ini kode menggunakan Matlab :
I = imread('IB.bmp');
SxSobel = [ -1 0 1 ; -2 0 2; -1 0 1 ]
SxSobel = [ 1 2 1 ; 0 0 0 ; -1 -2 -1 ]
sobelSx = conv2(I, SxSobel);
sobelSy = conv2(I, SxSobel);
sobel = abs(sobelSx) + abs(sobelSy);
LapX = [ -1 -1 -1 ; -1 8 -1 ; -1 -1 -1 ]
LapY = [ 1 -2 1 ; -2 4 -2 ; 1 -2 1 ]
laplaceX = conv2(I, LapX);
laplaceY = conv2(I, LapY);
laplace = abs(laplaceX) + abs(laplaceY);
robX = [ 1 0 ; 0 -1 ]
robY = [ 0 1 ; -1 0 ]
robertX = conv2(I, robX);
robertX = conv2(I, robY);
roberts = abs(robertX) + abs(robertX);
perX = [ -1 0 1 ; -1 0 1; -1 0 1 ]
perY = [ 1 1 1 ; 0 0 0 ; -1 -1 -1 ]
perwitX = conv2(I, perX);
perwitY = conv2(I, perY);
perwitt = abs(perwitX) + abs(perwitY);
Canny = edge (I,'canny');
subplot(2,3,1), imshow(I);title('Asli');
subplot(2,3,2), imshow(uint8(sobel));title('Sobel');
subplot(2,3,3), imshow(uint8(laplace));title('Laplace');
subplot(2,3,4), imshow(uint8(roberts));title('Roberts');
subplot(2,3,5), imshow(uint8(perwitt));title('Perwitt');
subplot(2,3,6), imshow(Canny);title('Canny');
|
contoh gambar dari hasil tersebut :
Kesimpulan Gambar Cameraman :
Dari hasil gambar diatas gambar yang paling bagus adalah gambar Canny karena deteksi tepi nya lebih jelas dan noise nya lebih sedikit. Sedangkan gambar yang paling buruk adalah gambar Laplace karena terdapat banyak noise.
Komentar
Posting Komentar