## Image Convolution in NumPy

• Discuss

Image convolution applies a filter or kernel to an image. The kernel is a small matrix that modifies the image by performing mathematical operations on the pixels. This tutorial will use the NumPy library to perform image convolution.

First, do the necessary imports

``````import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline``````

``````img_raw = cv2.imread("garden.jpeg")
img = cv2.cvtColor(img_raw, cv2.COLOR_BGR2RGB)
plt.imshow(img)``````

The following will be the output

Step 4: Create the kernel:

``kernel = np.array([[1, 1, 1], [1, 4, 1], [1, 1, 1]])``

Step 5: convolution function:

``````def matrix_convolve2(image,kernel,a,b,mul):
print(kernel)
img_x, img_y = image.shape
kernl_x, kernl_y = kernel.shape

result = image
for i in range(img_x-int(len(kernel)/2)):
for j in range(img_y-int(len(kernel)/2)):
result[i][j] = 0
summ = 0
for s in range(-a,a+1):
for t in range(-b,b+1):
summ += kernel[s,t] * image[i+s,j+t]
result[i][j] = mul*summ

return result``````

Step 6: Call the convolve function:

``````image = matrix_convolve2(img, kernel, 1,1,(1/9))
plt.imshow(img, cmap="gray")``````

The following will be the output:

Note that this is a very simple example of image convolution, and many other types of kernels can be used for different effects. Also, the above code assumes that the image has a single color channel and you can modify it accordingly for multi-channel images.

Scroll to Top