Sinopsis
Contents
Deteksi tepi/edge detection banyak digunakan untuk analisis citra dalam tingkat dasar. Operasi ini diterapkan dalam grayscale; binary/logical/bw pada gambar. Secara umum deteksi tepi gambar dibagi menjadi 2 yaitu
- Deteksi tepi berdasarkan turunan pertama
- Deteksi tepi berdasarkan turunan kedua
Kalian akan belajar bahwa deteksi tepi/Edge Detection merupakan penerapan teknik convolution dengan beberapa jenis filter. Jenis filter tertentu digunakan untuk menghasilkan sensitifitas terhadap tepian objek
Deteksi tepi Turunan pertama
Menggunakan operator convolution dengan beberapa jenis kernel/filter yaitu robert, canny, prewit dengan menggunakan 2 arah yaitu arah x dan y untuk mendapatkan tepian vertikal dan horisontal. Untuk mendapatkan hasil yang maksimal, juga bisa menggunakan penerapan gradient, dengan rumus umum berikut Jika dan adalah filter/kernel, maka gradient dapat dirumuskan
Operator Robert
Operator Sobel
Operator Prewitt
Operator Canny
Penerapan Edge Detection dengan Convolution
Untuk penerapan edge detection turunan pertama, kalian bisa menggunakan convolution seperti dalam bahasa python yaitu disini https://www.softscients.web.id/2019/11/edge-detection-dengan-sobel.html. Dalam versi Matlab, kalian bisa menggunakan kode berikut untuk operator untuk format binary yang harus kalian ubah kedalam skala 0 s.d 255
clc;clear all;close all; I = imread('orientasi.png'); bw = im2bw(I); %ubah kedalam binary 0 dan 1 bw = double(bw)*255; %buat skala menjadi 0 s.d 255 Gx = [1,0; 0,-1]; Gy = [0,1; -1,0]; Hx = conv2(double(bw),Gx); Hy = conv2(double(bw),Gy); gradient = sqrt(Hx.^2+Hy.^2); figure,imshow(uint8(bw)),title('grayscale'); figure,imshow(uint8(Hx)),title('arah X'); figure,imshow(uint8(Hy)),title('arah y'); figure,imshow(uint8(gradient)),title('Gradient');
Kalian bisa melihat, gambar tersebut sudah muncul tepinya saja, kalian juga menggunakan objek lain seperti berikut untuk mode gambar grayscale.
clc;clear all;close all; I = imread('bunga.jpg'); gray = rgb2gray(I); Gx = [1,0; 0,-1]; Gy = [0,1; -1,0]; Hx = conv2(double(gray),Gx); Hy = conv2(double(gray),Gy); gradient = sqrt(Hx.^2+Hy.^2); gradient = gradient*2; %agar lebih terlihat tepinya kali 2 figure,imshow(gray),title('grayscale'); figure,imshow(uint8(Hx)),title('arah X'); figure,imshow(uint8(Hy)),title('arah y'); figure,imshow(uint8(gradient)),title('Gradient');
Penerapan Edge Detection dengan Function Edge
Kode sebelumnya terasa agak panjang sekali, sebenarnya kalian bisa menggunakan function edge di matlab yaitu gambar tersebut dalam mode binary/bw. Contohnya seperti berikut
clc;clear all;close all; I = imread('orientasi.png'); bw = im2bw(I); %ubah kedalam binary 0 dan 1 canny = edge(bw,'canny'); %harus format binary, bukan grayscale figure,imshow(bw),title('asli'); figure,imshow(canny),title('canny');