-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAugmentation.py
More file actions
57 lines (47 loc) · 1.75 KB
/
Copy pathAugmentation.py
File metadata and controls
57 lines (47 loc) · 1.75 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
import os
import cv2
import shutil
import random
import numpy as np
def ChangesImage(img):
output_img = [img]
contrast_factor_dark = random.uniform(0.5, 0.9)
enhancer = cv2.addWeighted(img, contrast_factor_dark, 0, 0, 0)
output_img.append(enhancer)
contrast_factor_bright = random.uniform(1.0, 1.6)
enhancer = cv2.addWeighted(img, contrast_factor_bright, 0, 0, 0)
output_img.append(enhancer)
ram = random.choice([1, 2, 3, 4])
if ram == 1:
gaussianBlur = GaussianBlur(img)
output_img.append(gaussianBlur)
elif ram == 2:
averageBlur = AverageBlur(img)
output_img.append(averageBlur)
elif ram == 3:
gaussianNoise = GaussianNoise(img)
output_img.append(gaussianNoise)
elif ram == 4:
saltPepperNoise = SaltPepperNoise(img)
output_img.append(saltPepperNoise)
return output_img
def GaussianBlur(image, size=3):
Gauss = cv2.GaussianBlur(image, (size, size), 0)
return Gauss
def AverageBlur(image, size=3):
kernel = np.ones((size, size), np.float32) / (size * size)
averaged_image = cv2.filter2D(image, -1, kernel)
return averaged_image
def GaussianNoise(image, mean=0, sigma=25):
gauss = np.random.normal(mean, sigma, image.shape)
noisy = image + gauss.astype(np.uint8)
return noisy
def SaltPepperNoise(image, salt_prob=0.01, pepper_prob=0.01):
noisy = np.copy(image)
num_salt = np.ceil(salt_prob * image.size)
coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape]
noisy[coords[0], coords[1], :] = (255, 255, 255)
num_pepper = np.ceil(pepper_prob * image.size)
coords = [np.random.randint(0, i - 1, int(num_pepper)) for i in image.shape]
noisy[coords[0], coords[1], :] = (0, 0, 0)
return noisy