
Author(s): Sujay Kapadnis
Awalnya diterbitkan di Menuju AI.
Modul 2 — Filter Konvolusional dan Deteksi Tepi
Bab 2— Filter
Mulai dari sini? Artikel ini adalah bagian dari Seri Tutorial visi komputer. Di sinilah Anda bisa memulai.
Tujuan pembelajaran:
Apa itu Filter? Apa itu filter sobel? Bagaimana cara membuat dan menerapkan filter sobel? Apa itu filter Laplacian? Bagaimana cara membuat dan menerapkan filter Laplacian?
Prasyarat: Tutorial Sebelumnya
sumber: MidJourney
Apa itu filter?
Dalam visi komputer, filter adalah operasi matematika yang diterapkan pada gambar untuk mengubahnya dengan cara tertentu. Filter digunakan untuk mengekstrak informasi dari gambar, menyempurnakan fitur, menghilangkan noise, dan menyiapkan gambar untuk diproses lebih lanjut.
Ada banyak jenis filter yang digunakan dalam visi komputer, masing-masing dengan tujuan tertentu. Beberapa filter umum meliputi:
Filter Gaussian: menghaluskan gambar dengan menghilangkan noise frekuensi tinggi. Filter Sobel: mendeteksi tepi dalam gambar dengan menghitung gradien gambar dalam arah horizontal dan vertikal. Filter Laplacian: mendeteksi perubahan intensitas pada gambar dengan menghitung turunan kedua dari gambar. Filter median: menghilangkan noise dari gambar dengan mengganti setiap piksel dengan nilai median piksel tetangganya. Filter bilateral: menghaluskan gambar sambil mempertahankan tepi
Filter bekerja dengan menggabungkan gambar dengan matriks kecil, yang dikenal sebagai kernel atau filter. Filter dipusatkan pada setiap piksel gambar, dan nilai piksel tetangga dikalikan dengan nilai yang sesuai dalam matriks filter. Produk yang dihasilkan kemudian dijumlahkan, dan jumlah tersebut digunakan untuk mengganti nilai piksel yang sedang diproses.
Impor impor numpy sebagai np
impor matplotlib.pyplot sebagai plt
%matplotlib sebaris
impor cv2
2. Muat gambar dalam format yang Anda inginkan
Karena kami menggunakan skema warna RGB, saya akan memuat gambar langsung ke saluran RGB
gambar3 = cv2.cvtColor(cv2.imread(‘jalur_gambar’),cv2.COLOR_BGR2RGB)
3. Plot gambar
plt.imshow(gambar3)
plt.set_title(‘Gambar 3’)
plt.tampilkan()
untuk contoh yang sudah saya ambil gambar yang ditampilkan adalah seperti di bawah ini
keluaran
Menulis fungsi pembantu untuk mengonversi gambar kita menjadi skala abu-abu
def to_gray(gambar):
kembalikan cv2.cvtColor(gambar,cv2.COLOR_RGB2GRAY)
Membuat Kernel
Filter Sobel — Digunakan untuk mendeteksi tepi vertikel
format -> [-k,0,k]
mendeteksi perubahan intensitas mendadak dalam arah tertentu (horizontal di sini)
4. Saringan Sobel
di bawah ini adalah contoh format tampilan filter sobel, jika Anda ingin mempelajari matematika di balik filter ini, Anda dapat merujuk ke artikel ini
sobel_x = np.array([[-1,0,1],
[-5,0,5],
[-1,0,1]])
filtered_x = cv2.filter2D(to_gray(image3),-1,sobel_x)
#mewakili bahwa ‘jangan mengubah format gambar keluaran dan tetap sama dengan gambar masukan’
plt.imshow(filtered_x,cmap=’gray’)
keluaran:
keluaran
Mari kita lihat bagaimana perubahan nilai ambang mengubah output
# Tetapkan ambang batas, sehingga titik di atas ambang batas akan menjadi putih/terlihat
retval, binary_image1 = cv2.threshold(filtered_x,50,255,cv2.THRESH_BINARY)
retval, binary_image2 = cv2.threshold(filtered_x,100,255,cv2.THRESH_BINARY)
retval, binary_image3 = cv2.threshold(filtered_x,150,255,cv2.THRESH_BINARY)
retval, binary_image4 = cv2.threshold(filtered_x,200,255,cv2.THRESH_BINARY)
ara,(ax1,ax2,ax3,ax4) = plt.subplots(1,4,figsize=(15,8))
ax1.set_title(‘ambang batas 50’)
ax1.imshow(binary_image1,cmap=’gray’)
ax2.set_title(‘ambang 100’)
ax2.imshow(binary_image2,cmap=’gray’)
ax3.set_title(‘ambang batas 150’)
ax3.imshow(binary_image3,cmap=’gray’)
ax4.set_title(‘ambang 200’)
ax4.imshow(binary_image4,cmap=’gray’)
keluaran
Mengapa Menetapkan Ambang Batas?
Tujuan penggunaan threshold di sini adalah untuk menghilangkan noise yang ada pada sebuah gambar; misalnya, pada gambar 1 dengan ambang batas 50, kami mendeteksi banyak garis, tetapi saat kami meningkatkan ambang batas, lebih sedikit garis yang terdeteksi. Kami membutuhkan ambang tinggi saat kami hanya membutuhkan garis kuat dari gambar dan bukan noise. perhatikan gambar yang sedang kita eksperimen rn. Seandainya
Filter Sobel — Digunakan untuk mendeteksi tepi horizontal
format -> [-k,
0,
k]
mendeteksi perubahan intensitas mendadak dalam arah tertentu(vertikal di sini) sobel_y = np.array([[-1,-5,-1],
[0,0,0],
[1,5,1]])
filtered_y = cv2.filter2D(to_gray(image3),-1,sobel_y)
plt.imshow(filtered_y,cmap=’gray’)
keluaran # Tetapkan ambang batas, sehingga titik di atas ambang batas akan menjadi putih/terlihat
retval, binary_image1 = cv2.threshold(filtered_y,50,255,cv2.THRESH_BINARY)
retval, binary_image2 = cv2.threshold(filtered_y,100,255,cv2.THRESH_BINARY)
retval, binary_image3 = cv2.threshold(filtered_y,150,255,cv2.THRESH_BINARY)
retval, binary_image4 = cv2.threshold(filtered_y,200,255,cv2.THRESH_BINARY)
ara,(ax1,ax2,ax3,ax4) = plt.subplots(1,4,figsize=(15,8))
ax1.set_title(‘ambang batas 50’)
ax1.imshow(binary_image1,cmap=’gray’)
ax2.set_title(‘ambang 100’)
ax2.imshow(binary_image2,cmap=’gray’)
ax3.set_title(‘ambang batas 150’)
ax3.imshow(binary_image3,cmap=’gray’)
ax4.set_title(‘ambang 200’)
ax4.imshow(binary_image4,cmap=’gray’)
keluaran
Filter Laplace
Filter Laplacian digunakan untuk menyempurnakan tepian pada gambar. Ini menerapkan kernel turunan orde kedua ke gambar untuk mendeteksi perubahan intensitas. kernel_size = 3
def lap_filter(k):
laplacian_filter = np.array([[1, 1, 1],
[1, -k, 1],
[1, 1, 1]])
laplacian_filter = laplacian_filter / np.sum(np.abs(laplacian_filter))
return laplacian_filter # Terapkan filter Laplacian
img = cv2.imread(‘img_path’, cv2.IMREAD_GRAYSCALE)
filtered_3 = cv2.filter2D(img, -1, lap_filter(3))
filtered_5 = cv2.filter2D(img, -1, lap_filter(5))
filtered_7 = cv2.filter2D(img, -1, lap_filter(7))
ara,(ax1,ax2,ax3) = plt.subplots(1,3,figsize=(15,8))
ax1.set_title(‘k = 3’)
ax1.imshow(filtered_3,cmap=’gray’)
ax2.set_title(‘k = 5’)
ax2.imshow(filtered_5,cmap=’gray’)
ax3.set_title(‘k = 7’)
ax3.imshow(filtered_7,cmap=’gray’)
keluaran
Bungkus
Dengan ini, kami telah menyelesaikan tujuan pembelajaran kami untuk pelajaran ini.
Setelah ini, Anda akan membuat filter dan menerapkannya pada gambar pilihan Anda.
Referensi: Bahan Bacaan
Filter Laplacian Filter Median Filter Bilateral
Tautkan ke GitHub.
Tautan Katalog di sini
Mendatang
Ini untuk Filter dan jenisnya, tutorial selanjutnya akan didedikasikan untuk Filter Gaussian
Dengan ini, kita telah sampai pada akhir artikel ini. Sampai jumpa di yang berikutnya
Sampai saat itu, Ikuti lebih banyak, dan jangan lupa untuk terhubung dengan saya di LinkedIn.❤❤❤
Diterbitkan melalui Menuju AI