forked from vieiraeduardos/ufma-processing-image-repository
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfiltros.py
More file actions
70 lines (47 loc) · 1.73 KB
/
Copy pathfiltros.py
File metadata and controls
70 lines (47 loc) · 1.73 KB
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
import cv2
import numpy
def media(img, length):
value = 0
edge = length // 2
rows, cols = img.shape
result = numpy.ones((rows, cols), dtype=numpy.float32)
for i in range(rows - edge):
for j in range(cols - edge):
for x in range(length):
for y in range(length):
value += img[i - edge + x, j - edge + y]
result[i, j] = numpy.round((value * 1) / (length * length))
value = 0
return numpy.uint8(result)
def gaussian(img):
value = 0
mask = numpy.array([1, 2, 1, 2, 4, 2, 1, 2, 1])
windowsize = 3
edge = windowsize // 2
neighbors = []
rows, cols = img.shape
result = numpy.ones((rows, cols), dtype=numpy.float32)
for i in range(edge, rows - edge):
for j in range(edge, cols - edge):
for x in range(windowsize):
for y in range(windowsize):
neighbors.append(img[i-edge+x, j-edge+y])
for k in range(len(neighbors)):
value += neighbors[k] * mask[k]
value = numpy.round(value / 16)
if value < 0 :
value = 0
if value > 255:
value = 255
result[i, j] = value
value = 0
neighbors.clear()
return numpy.uint8(result)
img = cv2.imread("lena.jpg", 0)
b = media(img, 5)
g = gaussian(img)
cv2.imshow("Original", img)
cv2.imshow("Filtro da Media", b)
cv2.imshow("Gaussiano", g)
cv2.waitKey(0)
cv2.destroyAllWindows()