Widget HTML Atas


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:

  1. Membaca Citra: Menggunakan pustaka standar Python untuk membaca dan memproses citra, seperti PIL (Python Imaging Library).
  2. Konversi ke Grayscale: Mengonversi citra ke grayscale.
  3. Definisikan Filter Sobel: Menentukan kernel Sobel untuk deteksi tepi horizontal dan vertikal.
  4. Terapkan Konvolusi: Melakukan operasi konvolusi dengan kernel Sobel pada citra.
  5. Gabungkan Hasil: Menggabungkan hasil deteksi tepi horizontal dan vertikal.
  6. 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:

  1. Pastikan Anda memiliki PIL (sekarang dikenal sebagai Pillow) terinstall di lingkungan Python Anda. Jika belum, Anda bisa menginstallnya dengan pip install Pillow.
  2. 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.