-
Notifications
You must be signed in to change notification settings - Fork 1
/
preprocess.py
executable file
·90 lines (73 loc) · 2.94 KB
/
preprocess.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
90
from os import listdir
from os.path import isfile, join
from PIL import Image
from PIL import ImageOps
from PIL import ImageFilter
import skimage.filters as filters
import skimage.transform as transform
import skimage.io as io
import matplotlib
import matplotlib.pyplot as plt
import skimage.restoration as restoration
import skimage.color as color
import skimage.exposure as exposure
import skimage.util as skutil
from toolz.functoolz import compose, pipe
from functools import partial
io.use_plugin('pil')
# preprocess_library = 'Pillow'
preprocess_library = 'skimage'
def main():
input_dir_path = join("images", "input")
output_dir_path = join("images", "output")
for file in listdir(input_dir_path):
input_file_path = join(input_dir_path, file)
if isfile(input_file_path) and file.endswith(".png"):
print("Processing {file}".format(file=file))
output_file_path = join(output_dir_path, file)
image = read_image(input_file_path)
processed_image = preprocess(image)
save_image(processed_image, output_file_path)
def save_image(image, image_file_path):
print('Saving Image')
if preprocess_library == 'Pillow':
return image.save(image_file_path)
elif preprocess_library == 'skimage':
return io.imsave(image_file_path, image)
else:
raise ValueError("Invalid preprocess library: ${library}".format(library=preprocess_library))
def read_image(image_file_path):
print('Reading Image')
if preprocess_library == 'Pillow':
return Image.open(image_file_path)
elif preprocess_library == 'skimage':
return io.imread(image_file_path)
else:
raise ValueError("Invalid preprocess library: ${library}".format(library=preprocess_library))
def preprocess(image):
print('Preprocessing Image')
if preprocess_library == 'Pillow':
return preprocess_pillow(image)
elif preprocess_library == 'skimage':
return preprocess_skimage(image)
else:
raise ValueError("Invalid preprocess_library: '${library}'".format(library=preprocess_library))
def preprocess_skimage(image):
return pipe(image,
color.rgb2gray,
#partial(restoration.denoise_bilateral, multichannel=False),
#exposure.equalize_hist,
partial(exposure.adjust_gamma, gamma=0.75),
#lambda img: img > filters.threshold_local(img, block_size=11, method='mean'),
#lambda img: img > filters.threshold_otsu(img),
#lambda img: img > filters.threshold_local(img, block_size=7),
#skutil.img_as_int,
partial(transform.pyramid_expand, upscale=2)
)
def preprocess_pillow(image):
upscale_factor = 2
large_img = image.resize((image.size[0] * upscale_factor, image.size[1] * upscale_factor))
greyscale_img = large_img.convert('L')
return greyscale_img
if __name__ == "__main__":
main()