# How to denoise an Image using Median Blur in Python using OpenCV – easy project – 2022 In this blog what we will be seeing will not be something less than magic. You will be amazed after watching the power of Median Blur. So without any further due let’s dive into it.

### Let’s do it…

#### Step 1 – Import all the required packages.

```import cv2
import matplotlib.pyplot as plt
import numpy as np
import random
```

#### Step 2 – Reading our image.

```img = cv2.imread('test.tiff')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)```

#### Step 3 – Creating a black image.

`noisy = np.zeros(img.shape, np.uint8)`
• Here we have just initialized a black image of same dimensions as of our original image.
• We will be creating our noisy image out of it.

#### Step 4 – Actually creating the noisy image.

```p = 0.2

#traversing throughout the image pixels
for i in range(img.shape): #rows
for j in range(img.shape): #cols
r = random.random()
if r < p / 2:
noisy[i][j] = [0, 0, 0] #black noise
elif r < p:
noisy[i][j] = [255, 255, 255] #white noise
else:
noisy[i][j] = img[i][j] #original image pixel```
• In the first line, we have just set a random variable p/probability as 0.2.
• Then we will start traversing through the image pixels.
• Then we will take a random value r using random.random() and check if that’s less than p/2 then add a black/pepper noise (0,0,0).
• Else if the random r value is greater than p/2 and less than p then add a white/salt noise.
• Else put the pixel from the original image there.
• 98% of the time it will be the else case (pixel from the original image).

#### Step 5 – Applying Median Blur to denoise the image.

Syntax: cv2.medianBlur(src, dst, ksize)

Parameters:

```# median blur
denoised = cv2.medianBlur(noisy, 5)```

#### Step 6 – Visualizing the results.

```output = [img, noisy, denoised]

titles = ['Original', 'Noisy', 'Denoised']

for i in range(3):
plt.subplot(1, 3, i + 1)
plt.imshow(output[i])
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()```

### Let’s see the whole code…

```import cv2
import matplotlib.pyplot as plt
import numpy as np
import random

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

noisy = np.zeros(img.shape, np.uint8)

p = 0.2

# traversing throughout the image pixels
for i in range(img.shape):  # rows
for j in range(img.shape):  # cols
r = random.random()
if r < p / 2:
noisy[i][j] = [0, 0, 0]  # black noise
elif r < p:
noisy[i][j] = [255, 255, 255]  # white noise
else:
noisy[i][j] = img[i][j]  # original image pixel

# median blur
denoised = cv2.medianBlur(noisy, 5)

output = [img, noisy, denoised]

titles = ['Original', 'Noisy', 'Denoised']

for i in range(3):
plt.subplot(1, 3, i + 1)
plt.imshow(output[i])
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()
```