-
Notifications
You must be signed in to change notification settings - Fork 17
/
prepare_test.py
100 lines (85 loc) · 2.98 KB
/
prepare_test.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
91
92
93
94
95
96
97
98
99
import numpy as np
import tensorflow as tf
import cv2 as cv
import os
import scipy.misc
import h5py
# Settings.
scale = 3
size_input = 33
size_label = 21
stride = 21
counter = 0
# data = np.zeros([size_input, size_input, 1, 1])
# label = np.zeros([size_label, size_label, 1, 1])
data = []
label = []
padding = abs(size_input - size_label) / 2
# Source: https://stackoverflow.com/questions/29100722/equivalent-im2double-function-in-opencv-python
def im2double(im):
info = np.iinfo(im.dtype) # Get the data type of the input image
return im.astype(np.float32) / info.max # Divide all values by the largest possible value in the datatype
def revert(im):
im = im * 255
im[im > 255] = 255
im[im < 0] = 0
return im.astype(np.uint8)
def revert16(im):
im = im * 65535
im[im > 65535] = 65535
return im.astype(np.uint16)
# Make sure the image shape is divisible by the scale factor. Also convert 3-channel image to 1-channel image.
def modcrop(image, scale=3):
if image.shape[2] == 1:
size = image.shape
size -= np.mod(size, scale)
image = image[0:size[0], 0:size[1]]
else:
size = image.shape[0:2]
size -= np.mod(size, scale)
image = image[0:size[0], 0:size[1], 0]
return image
def modcrop_color(image, scale=3):
size = image.shape[0:2]
size -= np.mod(size, scale)
image = image[0:size[0], 0:size[1], :]
return image
# Load and preprocess the training images.
# dirpath = './Test/Set5/'
# for root, dirs, files in os.walk(dirpath):
# for file in files:
# # Read in image and convert to ycrcb color space.
# img = cv.imread(dirpath + file)
# # cv.imshow('image',img)
# # cv.waitKey(0)
# # cv.destroyAllWindows()
# img = cv.cvtColor(img, cv.COLOR_BGR2YCR_CB)
# img = im2double(img) # Only use the luminance value.
# # Create groundtruth and baseline image.
# im_label = modcrop(img)
# size = im_label.shape
# h = size[0]
# w = size[1]
# im_temp = scipy.misc.imresize(im_label, 1/scale, interp='bicubic')
# im_input = scipy.misc.imresize(im_temp, size, interp='bicubic')
# # Generate subimages for training.
# for x in range(0, h - size_input, stride):
# for y in range(0, w - size_input, stride):
# subim_input = im_input[x : x + size_input, y : y + size_input]
# subim_label = im_label[int(x + padding) : int(x + padding + size_label), int(y + padding) : int(y + padding + size_label)]
# subim_input = subim_input.reshape([size_input, size_input, 1])
# subim_label = subim_label.reshape([size_label, size_label, 1])
# data.append(subim_input)
# label.append(subim_label)
# counter += 1
# # Shuffle the data pairs.
# order = np.random.choice(counter, counter, replace=False)
# data = np.array([data[i] for i in order])
# label = np.array([label[i] for i in order])
# print('data shape is', data.shape)
# print('label shape is', label.shape)
# # Write to HDF5 file.
# savepath = os.path.join(os.getcwd(), 'checkpoint/test.h5')
# with h5py.File(savepath, 'w') as hf:
# hf.create_dataset('data', data=data)
# hf.create_dataset('label', data=label)