Deteksi tepi adalah salah satu teknik penting dalam pengolahan citra. Tepi dalam citra mengandung informasi yang berharga tentang perubahan intensitas yang signifikan antara dua objek atau bagian dari objek yang berbeda. Deteksi tepi membantu kita untuk mengidentifikasi batas-batas objek dan memisahkan mereka dari latar belakang.
Metode Sobel
Salah satu metode yang umum digunakan untuk deteksi tepi adalah operator Sobel. Operator Sobel menggunakan konsep perbedaan intensitas piksel di sekitar titik tertentu untuk menentukan apakah titik tersebut adalah tepi atau bukan.
Operator Sobel menggunakan dua kernel, yaitu kernel Sobel horizontal dan kernel Sobel vertikal. Kernel Sobel horizontal digunakan untuk mendeteksi perubahan intensitas horizontal, sedangkan kernel Sobel vertikal digunakan untuk mendeteksi perubahan intensitas vertikal.
Implementasi Metode Sobel
Untuk mengimplementasikan operator Sobel, kita perlu melakukan beberapa langkah:
- Konversi citra ke dalam skala keabuan.
- Terapkan kernel Sobel horizontal dan kernel Sobel vertikal pada citra.
- Hitung gradien magnitudo untuk setiap piksel dengan menggunakan rumus:
magnitudo = sqrt(horizontal^2 + vertikal^2)
- Tentukan ambang batas untuk memisahkan tepi dari latar belakang.
- Terapkan ambang batas pada gradien magnitudo untuk mendapatkan citra hasil deteksi tepi.
Algoritma dan Flowchart Metode Sobel
Berikut adalah Algoritma pemrosesn citra pada metode sobel.
- 0. Start
- 1. Membaca Citra
- 2. Konversi citra ke dalam citra grayscale
- 3. Gambar grayscale
- 4. Jika lanjut ke no 5, jika tidak kembali ke proses 2
- 5. Filter Sobel untuk deteksi tepi horizontal
- 6. Filter Sobel untuk deteksi tepi vertikal
- 7.Tampilkan citra asli dan citra hasil deteksi tepi
- 8. Finish
Berikut adalah flowchart dari algoritma diatas
Contoh Program Deteksi Tepi dengan Metode Sobel
Berikut adalah contoh implementasi deteksi tepi dengan menggunakan operator Sobel pada Citra Digital.
1. Metode Sobel menggunakan bahasa pemrograman Python
# Import library yang diperlukan
import cv2
import numpy as np
# Baca citra
img = cv2.imread('gambar.jpg', cv2.IMREAD_GRAYSCALE)
# Terapkan operator Sobel
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
# Hitung gradien magnitudo
gradient_magnitude = np.sqrt(np.square(sobelx) + np.square(sobely))
# Tentukan ambang batas
threshold = 100
# Terapkan ambang batas pada gradien magnitudo
edge_image = np.where(gradient_magnitude > threshold, 255, 0)
# Tampilkan citra hasil deteksi tepi
cv2.imshow('Edge Detection', edge_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Dalam contoh di atas, kita menggunakan library OpenCV untuk membaca citra dan melakukan operasi deteksi tepi dengan operator Sobel. Hasil deteksi tepi ditampilkan dalam jendela pop-up menggunakan fungsi imshow
dari OpenCV.
2. Metode Sobel Menggunakan Matlab
Berikut adalah contoh sederhana menggunakan operator Sobel untuk mendeteksi tepi pada citra menggunakan MATLAB:
% Baca citra
gambar = imread('sigarmas.jpg'); % Ganti 'sigarmas.jpg' dengan nama file citra Anda
% Konversi citra ke grayscale jika belum
if size(gambar, 3) == 3
gambar_gray = rgb2gray(gambar);
else
gambar_gray = gambar;
end
% Gunakan operator Sobel untuk mendeteksi tepi
edge_x = edge(gambar_gray, 'Sobel', [], 'horizontal'); % Deteksi tepi horizontal
edge_y = edge(gambar_gray, 'Sobel', [], 'vertical'); % Deteksi tepi vertikal
% Tampilkan citra asli dan hasil deteksi tepi
subplot(1, 3, 1);
imshow(gambar);
title('Citra Asli');
subplot(1, 3, 2);
imshow(edge_x);
title('Deteksi Tepi Horizontal (Sobel)');
subplot(1, 3, 3);
imshow(edge_y);
title('Deteksi Tepi Vertikal (Sobel)');
Keterangan Program:
Pastikan untuk mengganti 'sigarmas.jpg'
dengan nama file citra yang kalian gunakan. Program ini membaca citra, mengonversinya ke citra grayscale terlebih dahulu, kemudian menggunakan operator Sobel untuk mendeteksi tepi horizontal dan vertikal. Hasil deteksi tepi ditampilkan dalam tiga jendela: citra asli, tepi horizontal, dan tepi vertikal.
Anda dapat mengubah operator atau menerapkan metode deteksi tepi lainnya yang tersedia di MATLAB seperti Prewitt, Roberts, Canny, dll., dengan mengubah parameter pada fungsi edge()
sesuai kebutuhan Anda.
Penjelasan
- Pilih Citra: Pastikan Anda memiliki citra yang ingin Anda gunakan untuk mendeteksi tepi. Letakkan citra tersebut di folder kerja MATLAB atau tentukan path lengkap ke citra tersebut.
- Ganti Nama File Citra: Jika nama file citra tidak sama dengan ‘sigarmas.jpg’ dalam contoh sebelumnya, ubahlah nama file citra pada baris gambar = imread(‘nama_file_citra.jpg’); sesuai dengan nama file citra yang ingin Anda gunakan.
- Folder Kerja MATLAB: Jika citra yang ingin Anda gunakan tidak berada di folder kerja MATLAB, pastikan untuk menentukan path lengkap menuju citra tersebut. Misalnya, jika citra berada di folder “D:\Images”, Anda dapat mengubah baris gambar = imread(‘nama_file_citra.jpg’); menjadi gambar = imread(‘D:\Images\nama_file_citra.jpg’);.
- Simpan dan Jalankan: Setelah mengubah nama file atau path citra sesuai dengan kebutuhan Anda, simpan perubahan pada skrip MATLAB dan jalankan programnya.
Kesimpulan
Deteksi tepi dengan menggunakan operator Sobel adalah salah satu teknik yang umum digunakan dalam pengolahan citra. Dengan mengidentifikasi perubahan intensitas piksel di sekitar titik tertentu, kita dapat memisahkan objek dari latar belakang dengan lebih akurat.
Operator Sobel dapat diimplementasikan dengan mudah menggunakan library atau framework pengolahan citra seperti OpenCV.