-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgenerateHist.py
125 lines (102 loc) · 4.67 KB
/
generateHist.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
## Created by: Jitesh Joshi
## Department of Computer Science, University College London
## Copyright (c) 2022
## This source code is licensed under the MIT-style license found in the
## LICENSE file in the root directory of this source tree
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import numpy as np
import cv2
import argparse
import os
import matplotlib.pyplot as plt
def main(args):
data_dir = args.img_dir
label_dir = args.label_dir
save_dir = args.save_dir
mode =int(args.mode)
if not os.path.exists(save_dir):
os.makedirs(save_dir)
img_files = []
label_files = []
img_ext = ['.npy']
label_ext = '.png'
data_dir_list = os.listdir(data_dir)
# random.shuffle(data_dir_list)
print("data_dir_list[0]", data_dir_list[0])
print("img_ext[[d in data_dir_list[0] for d in img_ext]", [d in data_dir_list[0] for d in img_ext])
img_ext = img_ext[[d in data_dir_list[0] for d in img_ext].index(True)]
for ff in range(len(data_dir_list)):
# fname = "frm_" + str(ff) + img_ext
fname = data_dir_list[ff]
img_files.append(os.path.join(data_dir, fname))
label_files.append(os.path.join(label_dir, fname.replace(img_ext, label_ext)))
min_list = []
avg_list = []
max_list = []
std_list = []
fg_avg_list = []
bg_avg_list = []
fg_max_diff_list = []
for i, fn in enumerate(img_files):
try:
if img_ext in img_files[i]: # and i < 50:
input_img = np.load(img_files[i])
label_img = cv2.imread(label_files[i], 0)
if mode == 1:
input_img = (input_img + 1) * 20
elif mode == 2:
input_img = input_img/ 1000.0
# input_img[input_img > 50] = 50
# x0, y0, x1, y1 = 32, 0, input_img.shape[0]-32, input_img.shape[1]
# input_img = input_img[x0:x1, y0:y1]
min_list.append(np.min(input_img))
avg_list.append(np.mean(input_img))
max_list.append(np.max(input_img))
std_list.append(np.std(input_img))
# print('type of input_img', type(input_img), type(input_img[0, 0]))
# print('type of label_img', type(label_img), type(label_img[0, 0]))
fg_avg_temp = np.mean(input_img[label_img > 0])
bg_avg_temp = np.mean(input_img[label_img == 0])
fg_avg_list.append(fg_avg_temp)
bg_avg_list.append(bg_avg_temp)
fg_max_diff_list.append(fg_avg_temp - np.max(input_img))
col = (np.random.random(), np.random.random(), np.random.random())
# col = (0.5, 0.5, 0.5)
hist_im, bin_edges = np.histogram(input_img, bins=1024, range=(0, 40))
plt.plot(bin_edges[0:-1], hist_im, color=col)
except KeyboardInterrupt:
return
# break
# plt.show()
plt.savefig(os.path.join(save_dir, 'histogram.jpg'), bbox_inches=0)
min_list = np.array(min_list)
avg_list = np.array(avg_list)
max_list = np.array(max_list)
std_list = np.array(std_list)
fg_avg_list = np.array(fg_avg_list)
bg_avg_list = np.array(bg_avg_list)
fg_max_diff_list = np.array(fg_max_diff_list)
np.save(os.path.join(save_dir, 'min_array.npy'), min_list)
np.save(os.path.join(save_dir, 'avg_array.npy'), avg_list)
np.save(os.path.join(save_dir, 'max_array.npy'), max_list)
np.save(os.path.join(save_dir, 'std_array.npy'), std_list)
np.save(os.path.join(save_dir, 'fg_avg_array.npy'), fg_avg_list)
np.save(os.path.join(save_dir, 'bg_avg_array.npy'), bg_avg_list)
np.save(os.path.join(save_dir, 'fg_max_diff_array.npy'), bg_avg_list)
def get_args():
parser = argparse.ArgumentParser(description='Generate the histogram plot of thermal matrix',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-i', '--img_dir', type=str,
help='Image Directory', dest='img_dir')
parser.add_argument('-l', '--label_dir', type=str,
help='Label Directory', dest='label_dir')
parser.add_argument('-m', '--mode', type=int, default=0,
help='Normalization Mode', dest='mode')
parser.add_argument('-o', '--out_dir', type=str,
help='Output Directory', dest='save_dir')
return parser.parse_args()
if __name__ == '__main__':
args = get_args()
main(args)