# 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:

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) :

# 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) :

# 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__" :

# we have to  pass the path of the image
# and tha value of flag which is optional

# 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 TOP Interview Coding Problems/Challenges

Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates