Deteksi Tepi dengan Metode Sobel
Praktikum PCD Menengah ke-3
Berikut ini adalah praktikum Membuat deteksi tepi Sobel tanpa menggunakan pustaka seperti OpenCV memerlukan beberapa langkah tambahan, karena kita harus secara manual menerapkan operasi konvolusi untuk filter Sobel.
Langkah-langkah
Berikut adalah implementasi deteksi tepi Sobel menggunakan Python murni:
- Membaca Citra: Menggunakan pustaka standar Python untuk membaca dan memproses citra, seperti PIL (Python Imaging Library).
- Konversi ke Grayscale: Mengonversi citra ke grayscale.
- Definisikan Filter Sobel: Menentukan kernel Sobel untuk deteksi tepi horizontal dan vertikal.
- Terapkan Konvolusi: Melakukan operasi konvolusi dengan kernel Sobel pada citra.
- Gabungkan Hasil: Menggabungkan hasil deteksi tepi horizontal dan vertikal.
- Simpan atau Tampilkan Hasil: Menyimpan atau menampilkan citra hasil deteksi tepi.
Kode Program
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | from PIL import Image import numpy as np def sobel_filter(img): # Konversi ke grayscale gray = img.convert("L") # Konversi ke array numpy pixels = np.array(gray) # Sobel Kernel sobel_x = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]) sobel_y = np.array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]]) # Inisialisasi hasil height, width = pixels.shape edge_x = np.zeros((height, width)) edge_y = np.zeros((height, width)) # Terapkan Konvolusi for i in range(1, height-1): for j in range(1, width-1): region = pixels[i-1:i+2, j-1:j+2] edge_x[i, j] = np.sum(region * sobel_x) edge_y[i, j] = np.sum(region * sobel_y) # Menghitung magnitudo gradien magnitude = np.sqrt(edge_x**2 + edge_y**2) magnitude = np.uint8(magnitude) # Mengembalikan citra hasil return Image.fromarray(magnitude) # Membaca citra img = Image.open('path_ke_citra_anda.jpg') # Ganti dengan path ke citra Anda # Terapkan Sobel Filter result = sobel_filter(img) # Tampilkan hasil result.show() |
Catatan:
- Pastikan Anda memiliki PIL (sekarang dikenal sebagai Pillow) terinstall di lingkungan Python Anda. Jika belum, Anda bisa menginstallnya dengan pip install Pillow.
- Ganti 'path_ke_citra_anda.jpg' dengan path ke file citra yang ingin Anda proses.
Kode ini akan mengaplikasikan filter Sobel pada citra yang dipilih dan menampilkan hasil deteksi tepinya. Anda dapat melakukan penyesuaian lebih lanjut sesuai dengan kebutuhan praktikum Anda.