Home » Python

Smoothen the image by performing blurring operation on a grayscale image using user defined mean blur filter in Python

In this article, we will see how to make user-defined mean blur filter of the required size and using this perform blurring operation on the image in Python?
Submitted by Ankit Rai, on May 26, 2019

Image Blurring refers to making the image less clear or distinct. The Mean Filter often used to remove noise from an image or signal.

In this program, we will be using two functions of OpenCV-python (cv2) module.. let's see their syntax and descriptions first:

1) imread():
It takes an absolute path/relative path of your image file as an argument and returns its corresponding image matrix.

If flag value is:

  • 1: Loads a color image.
  • 0: Loads image in grayscale mode.
  • -1: Loads image as such including alpha channel.

If the flag value is not given then show the original image, which path is given.

2) imshow():
It takes window name and image matrix as an argument in order to display an image in a display window with a specified window name.

Also In this program, we will be using one function of numpy module.

mean(): It takes array and returns the mean of the array.

Also, in this program we are using the concept of array slicing

Let, A is 1-d array:
A[start:stop:step]

  1. start: Starting number of the sequence.
  2. stop: Generate numbers up to, but not including this number.
  3. step: Difference between each number in the sequence.

Example:

    A = [1,2,3,4,5,6,7,8,9,10]
    print(A[ 1: 5])

    Output:
    [2,3,4,5]

Python program for smoothen a grayscale image by using user-defined mean

# import cv2 module
import cv2

# import numpy module as np
import numpy as np

# Define a function for performing
# Mean Blur on images
def MeanBlur(img,size) :
    Ic = img

    # run a loop from half of the size + 1 to  upto
    # number of rows present in the image
    for i in range(size//2 + 1, Ic.shape[0]) :
        
        # run a loop  from half of the size + 1 upto
        # number of columns present in the image
        for j in range(size//2 +1, Ic.shape[1]) :

            # Take a sub-matrix of specifed order form Ic image matrix 
            N = Ic[i-size//2 : i+ size//2 + 1, j - size//2: j+ size//2 + 1]

            # find out mean of submatrix
            mean = np.mean(N)

            # assing that mean value to the specified pixel coordinates 
            img[i, j] = mean

    # return blur image
    return img


# Driver code
if __name__ == "__main__" :

    # read an image using imread() function of cv2
    # we have to  pass the path of the image
    # and tha value of flag which is optional
    img = cv2.imread(r'C:\Users\user\Desktop\pic6.jpg',0)

    # displaying the gray scale image
    cv2.imshow('original image',img)

    # order of the submatrix
    order = 5

    # MeanBlur function calling
    img = MeanBlur(img,order)

    # displaying the smoothen image
    cv2.imshow("smooth image",img)

Output

Smoothen a grayscale image in Python - output



Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.