Kernel Convolution
Fungsi image_convolve() menerapkan kernel di atas gambar. Konvolusi kernel berarti bahwa setiap nilai piksel dihitung ulang menggunakan jumlah lingkungan berbobot yang ditentukan dalam matriks kernel. Sebagai contoh mari kita lihat kernel sederhana ini :
library(magick)
## Warning: package 'magick' was built under R version 4.2.3
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
library(rsvg)
## Warning: package 'rsvg' was built under R version 4.2.3
## Linking to librsvg 2.48.8
kern <- matrix(0, ncol = 3, nrow = 3)
kern[1, 2] <- 0.25
kern[2, c(1, 3)] <- 0.25
kern[3, 2] <- 0.25
kern
## [,1] [,2] [,3]
## [1,] 0.00 0.25 0.00
## [2,] 0.25 0.00 0.25
## [3,] 0.00 0.25 0.00
Kernel ini mengubah setiap piksel menjadi rata-rata piksel tetangga horizontal dan vertikalnya, yang menghasilkan sedikit efek buram pada gambar sebelah kanan di bawah ini :
img <- image_resize(logo, "300x300")
img_blurred <- image_convolve(img, kern)
image_append(c(img, img_blurred))
Filter Sobel adalah filter yang digunakan untuk mendeteksi tepi dalam citra. Filter ini menggunakan dua kernel, yaitu kernel Sobel vertikal dan kernel Sobel horizontal, untuk menghitung gradien citra pada arah vertikal dan horizontal.
img %>% image_convolve('Sobel') %>% image_negate()
Filter ini menghasilkan perbedaan antara dua gambar hasil konvolusi dengan kernel Gaussian yang berbeda. Parameter ‘DoG:0,0,2’ menentukan jenis filter DoG yang digunakan dengan sigma1 = 0, sigma2 = 0, dan radius = 2.
img %>% image_convolve('DoG:0,0,2') %>% image_negate()