# Smoothen a grayscale image by performing blurring operation using user defined median blur filter

In this article, we will see **how to make user defined medium blur filter of required size and using this perform blurring operation on the image?**

Submitted by Ankit Rai, on May 18, 2019

Image Blurring refers to making the image less clear or distinct. The Median Filter often used to remove noise from an image or signal. Median filtering is very widely used in digital image processing because, under certain conditions, it preserves edges while removing noise.

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**.

**median():** It takes array and returns the median 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]

**start:**Starting number of the sequence.**stop:**Generate numbers up to, but not including this number.**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

# import cv2 module import cv2 # import numpy module as np import numpy as np # Define a function for performing # Median Blur on images def MedianBlur(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 median of submatrix med = np.median(N) # assing that medium value to the specified pixel coordinates img[i, j] = med # 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 # MedianBlur function calling img = MedianBlur(img,order) # displaying the smoothen image cv2.imshow("smooth image",img)

**Output**

TOP Interview Coding Problems/Challenges

- Run-length encoding (find/print frequency of letters in a string)
- Sort an array of 0's, 1's and 2's in linear time complexity
- Checking Anagrams (check whether two string is anagrams or not)
- Relative sorting algorithm
- Finding subarray with given sum
- Find the level in a binary tree with given sum K
- Check whether a Binary Tree is BST (Binary Search Tree) or not
- 1[0]1 Pattern Count
- Capitalize first and last letter of each word in a line
- Print vertical sum of a binary tree
- Print Boundary Sum of a Binary Tree
- Reverse a single linked list
- Greedy Strategy to solve major algorithm problems
- Job sequencing problem
- Root to leaf Path Sum
- Exit Point in a Matrix
- Find length of loop in a linked list
- Toppers of Class
- Print All Nodes that don't have Sibling
- Transform to Sum Tree
- Shortest Source to Destination Path

Comments and Discussions