Edge Detection
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 citra
• Untuk memperbaiki detail
dari citra yang kabur, yang terjadi karena error atau 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. Gambar dibawah ini menggambarkan
bagaimana tepi suatu gambar diperoleh.
Metode-metode
yang digunakan dalam Edge Detection :
Metode
Sobel
Metode Sobel merupakan pengembangan metode robert dengan
menggunakan filter HPF yang diberi satu angka nol penyangga. Metode ini
mengambil prinsip dari fungsi laplacian dan gaussian yang dikenal sebagai
fungsi untuk membangkitkan HPF. Kelebihan dari metode sobel ini adalah
kemampuan untuk mengurangi noise sebelum melakukan perhitungan deteksi
tepi. Kernel filter
yang digunakan dalam metode Sobel ini adalah:
Hasil deteksi tepi menggunakan metode Sobel:
Metode Canny
Salah satu algoritma deteksi tepi modern adalah deteksi tepi
dengan menggunakan metode Canny. Deteksi tepi Canny ditemukan oleh Marr dan
Hildreth yang meneliti pemodelan persepsi visual manusia. Ada beberapa kriteria
pendeteksi tepian paling optimum yang dapat dipenuhi oleh algoritma Canny:
a. Mendeteksi dengan baik (criteria deteksi)
Kemampuan untuk meletakkan dan menandai semua tepi yang ada sesuai
dengan pemilihan parameter-parameter konvolusi yang dilakukan. Sekaligus juga
memberikan fleksibilitas yang sangat tinggi dalam hal menentukan tingkat
deteksi ketebalan tepi sesuai yang diinginkan.
b. Melokalisasi dengan baik
(criteria lokalisasi)
Dengan Canny dimungkinkan dihasilkan jarak yang minimum antara
tepi yang dideteksi dengan tepi yang asli.
c. Respon yang jelas (kriteria
respon)
Hanya ada satu respon untuk tiap tepi. Sehingga mudah dideteksi
dan tidak menimbulkan kerancuan pada pengolahan citra selanjutnya.
Hasil deteksi tepi menggunakan metode Canny:
aAlgoritma canny edge detection secara umum
(detilnya tidak baku atau bisa divariasikan) beroperasi sebagai berikut :
1. Penghalusan untuk mengurangi dampak noise terhadap
pendeteksian edge
2. Menghitung potensi gradien citra
3. non-maximal supression dari gradien citra untuk
melokalisasi edge secara presisi
4. hysteresis thresholding untuk melakukan klasifikasi akhir
Metode
Laplacian
Metode ini akan mendeteksi zero crossing ,untuk
menentukan garis batas antara hitam dan putih, yang terdapat pada turunan kedua
dari citra yang bersangkutan. Kekurangann dari penerapan perator laplacian
adalah sangat sensitif terhadap noise, namun demikian edge detection
dengan operator ini dapat di tingkatkan hasilnya
dengan menerapkan thresholding.
Sebelum menjalankan program di visual studio, harus menginstall library OpenCV menggunakan aplikasi Cmake. Untuk lebih jelasnya, dapat mampir ke blog sebelah
http://myvisionacademia.blogspot.com/
Jika sudah, anda dapat melanjutkan ke langkah-langkah berikutnya.
Untuk membuatnya di Visual Studio 2013:
- Membuat new project pada visual studio 2013 seperti pada gambar berikut:
- Kemudian akan muncul jendela baru untuk pengaturan project dan nama project. Setelah itu tekan OK, next, dan finish.
- Menambahkan
beberapa inisialisasi library yang akan digunakan.#include "stdafx.h"#include "opencv2\highgui\highgui.hpp"#include <opencv2\opencv.hpp>
- Load
gambar berekstensi *.jpg dengan program berikut:image = imread("gambar.jpg", CV_LOAD_IMAGE_COLOR);
- Menampilkan
gambar berekstensi *.jpg dengan program berikut:imshow("layar", image);
- Edge
detection dengan Canny menggunakan program sebagai berikutCanny(image, edges1, 0, 30, 3);Canny(image, edges2, 50, 30, 3);Canny(image, edges3, 100, 30, 3);
- Edge detection dengan Sobel menggunakan program sebagai berikut:
- Edge
detection dengan Laplacian menggunakan program sebagai berikut:Sobel(image, imgsobel1, -1, 1, 1);
- Mengubah
gambar RGB menjadi grayscale menggunakan program berikut:Laplacian(image, lap1,-1, 3);
- Mengubah
gambar RGB menjadi black and white menggunakan program berikut:cvtColor(image, image2, COLOR_BGR2GRAY);
Hasil:
- Edge detection dengan Canny, Sobel, dan Laplacian:
- Menggunakan canny dengan nilai variabel threshold 0, 50, dan 100.
- Gray
- Black & White
Berikut adalah kode keseluruhan:
#include "stdafx.h"
#include "opencv2\highgui\highgui.hpp"
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat image, image2, image3, img2, src1, src2, edges1, edges2, edges3, imgsobel1, imgsobel2, imgsobel3, lap1, lap2, lap3;
image = imread("gambar.jpg", CV_LOAD_IMAGE_COLOR);
resize(image, image, Size(400, 250));
cvtColor(image, image2, COLOR_BGR2GRAY);
image3 = image2 > 130;
Canny(image, edges1, 0, 30, 3);
Canny(image, edges2, 50, 30, 3);
Canny(image3, edges3, 100, 30, 3);
Sobel(image3, imgsobel1, -1, 1, 1);
Sobel(image, imgsobel2, -1, 1, 0);
Sobel(image, imgsobel3, -1, 1, 1);
Laplacian(image3, lap1,-1, 3);
//Laplacian(image, lap2, -1, 9);
//Laplacian(image, lap3, -1, 15);
imshow("Asli", image3);
imshow("Canny 0", edges1);
imshow("Canny 50", edges2);
imshow("Canny 100", edges3);
imshow("Sobel", imgsobel1);
imshow("Sobel2", imgsobel2);
imshow("Sobel3", imgsobel3);
imshow("Laplacian 1", lap1);
//imshow("Laplacian", lap2);
//imshow("Laplacian", lap3);
//imwrite("image2.jpg", image);
waitKey(0);
return 0;
}








Tidak ada komentar:
Posting Komentar