Wednesday, February 5, 2020

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection


Sinopsis

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
  1. Deteksi tepi berdasarkan turunan pertama
  2. 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 \(G_x\) dan \(G_y\) adalah filter/kernel, maka \(G\) gradient dapat dirumuskan $$|G|=\sqrt{G_x^2+G_y^2}$$

Operator Robert

 $$ G_x \begin{pmatrix} 1 & 0\\ 0 & -1\\ \end{pmatrix} $$
 $$ G_y \begin{pmatrix} 0 & 1\\ -1 & 0\\ \end{pmatrix} $$

Operator Sobel

 $$ G_x \begin{pmatrix} -1 & -2 & -1\\ 0 & 0 & 0\\ 1 & 2 & 1 \end{pmatrix} $$
 $$ G_y \begin{pmatrix} -1 & 0 & 1\\ 2 & 0 & 2\\ -1 & 0 & 1\\ \end{pmatrix} $$

Operator Prewitt

$$ G_x \begin{pmatrix} -1 & -1 & -1\\ 0 & 0 & 0\\ 1 & 1 & 1\\ \end{pmatrix} $$
$$ G_y \begin{pmatrix} -1 & 0 & 1\\ 1 & 0 & 1\\ -1 & 0 & 1\\ \end{pmatrix} $$

Operator Canny

$$ G_{xy}=\frac{1}{115} \begin{pmatrix} 2 & 4 & 5 & 4 & 2\\ 4 & 9 & 12 & 9 & 4\\ 5 & 12 & 15 & 12 & 5\\ 4 & 9 & 12 & 9 & 4\\ 2 & 4 & 5 & 4 & 2\\ \end{pmatrix} $$

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 \(robert\) 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');
 

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection


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');

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

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');


Buku Pengolahan Citra Digital dengan Matlab-Edge Detection

Buku Pengolahan Citra Digital dengan Matlab-Edge Detection



No comments:

Post a Comment