Materi
Konvolusi menggeser kernel kecil, misalnya 3 × 3, ke setiap piksel. Di setiap posisi, piksel-piksel di bawah kernel dikalikan bobot kernel yang bersesuaian lalu dijumlahkan, dan jumlah itu menjadi nilai keluaran. scipy.ndimage.convolve(input, weights) mengerjakannya untuk seluruh citra. Kernel rata-rata berisi sembilan bobot 1/9, sehingga setiap piksel diganti rata-rata tetangganya: derau kecil memudar, tepi ikut kabur. scipy.ndimage.uniform_filter(input, size=3) memberi hasil yang sama tanpa menulis kernel.
Di tepi citra sebagian kernel jatuh di luar larik. Argumen mode menentukan isinya, dan bawaannya 'reflect': nilai di luar diisi pantulan piksel di dalam. Tanpa ini, piksel pinggir akan dirata-rata dengan nol dan menggelap.
Blur Gaussian memberi bobot lebih besar pada tetangga yang lebih dekat. gaussian_filter(input, sigma) memakai simpangan baku sigma: makin besar sigma, makin lebar dan makin kabur. Bila argumen radius ditulis, dokumentasinya menyebut panjang kernel di setiap sumbu menjadi 2 × radius + 1. Tutorial ndimage juga membedakan konvolusi dengan korelasi: konvolusi membalik kernel lebih dulu, sehingga keduanya sama hanya untuk kernel simetris seperti rata-rata dan Gaussian.
import numpy as np
from scipy import ndimage
baris = np.array([[0, 0, 90, 0, 0]], dtype=float)
k = np.ones((1, 3)) / 3 # rata-rata 3 tetangga mendatar
print(ndimage.convolve(baris, k)) # [[ 0. 30. 30. 30. 0.]]