Image Convolution in NumPy
- Read
- 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
Step 2: Load the image:
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.
Leave a Reply
You must be logged in to post a comment.