-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMean-Median-Min-Max-Image-Filteration.py
89 lines (83 loc) · 2.86 KB
/
Mean-Median-Min-Max-Image-Filteration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import cv2 as cv
import numpy as np
def padding(originalImg, padSize):
padImg = np.zeros((rows+2*padSize, columns+2*padSize), dtype=np.uint8)
# Using Splicing
padImg[padSize:rows+padSize, padSize:columns+padSize] = originalImg
return padImg
def MinFiltering(padImg, size):
output = np.zeros((rows, columns), dtype=np.uint8)
for i in range(0, rows):
for j in range(0, columns):
# using Splicing
portion = padImg[i:i+size, j:j+size]
# Converting Matrix to Array
array1 = portion.flatten()
Minv = np.min(array1)
output[i][j] = Minv
return output
def MaxFiltering(padImg, size):
output = np.zeros((rows, columns), dtype=np.uint8)
for i in range(0, rows):
for j in range(0, columns):
# using Splicing
portion = padImg[i:i+size, j:j+size]
# Converting Matrix to Array
array1 = portion.flatten()
Maxv = np.max(array1)
output[i][j] = Maxv
return output
def MedianFiltering(padImg, size):
output = np.zeros((rows, columns), dtype=np.uint8)
for i in range(0, rows):
for j in range(0, columns):
# using Splicing
portion = padImg[i:i+size, j:j+size]
# Converting Matrix to Array
array1 = portion.flatten()
medianv = np.lib.median(array1)
output[i][j] = medianv
return output
def MeanFiltering(padImg, size):
output = np.zeros((rows, columns), dtype=np.uint8)
for i in range(0, rows):
for j in range(0, columns):
# using Splicing
portion = padImg[i:i+size, j:j+size]
# Converting Matrix to Array
array1 = portion.flatten()
meanv = np.mean(array1)
output[i][j] = meanv
return output
# Taking input of Mask size
size = int(input('enter portion size: '))
# padding size
p_size = size//2
# image reading
orginalImg = cv.imread('home05Fig02.png', 0)
# getting size of image
rows = orginalImg.shape[0]
columns = orginalImg.shape[1]
# padding function call
padImg = padding(orginalImg, p_size)
# Max Function call
maxFilImg = MaxFiltering(padImg, size)
# Min Function call
minFilImg = MinFiltering(padImg, size)
# Median Function call
medianFilImg = MedianFiltering(padImg, size)
# Mean Function call
meanFilImg = MeanFiltering(padImg, size)
# Image Show
cv.imshow('Max Filtered Image', maxFilImg)
cv.waitKey(0)
cv.imshow('Min Filtered Image', minFilImg)
cv.waitKey(0)
cv.imshow('Median Filtered Image', medianFilImg)
cv.waitKey(0)
cv.imshow('Mean Filtered Image', meanFilImg)
cv.waitKey(0)
cv.imwrite('HomeTask02Max.jpg', maxFilImg)
cv.imwrite('HomeTask02Min.jpg', minFilImg)
cv.imwrite('HomeTask02Median.jpg', medianFilImg)
cv.imwrite('HomeTask02Mean.jpg', meanFilImg)