|
- import h5py
- import os
- import numpy as np
- import glob
- from skimage.filters import gaussian
-
-
- def process_data(sigma, data="train"):
- os.system("mkdir BCData/npy_anno_s{}/".format(sigma))
- os.system("mkdir BCData/npy_anno_s{}/".format(sigma) + data)
- os.system("mkdir BCData/npy_anno_s{}/".format(sigma) + data + "/positive")
- os.system("mkdir BCData/npy_anno_s{}/".format(sigma) + data + "/negative")
- image_dir = "BCData/images/" + data
- target_dir = "BCData/annotations/" + data
- target_negative_list = []
- target_positive_list = []
- _image_path_list = glob.glob(os.path.join(image_dir, '*.png'))
- _image_path_list.sort()
- base_names = []
-
- for _image_path in _image_path_list:
- base_name = os.path.basename(_image_path).replace('.png', '')
- _target_positive = os.path.join(target_dir, 'positive', '%s.h5' % (base_name))
- _target_negative = os.path.join(target_dir, 'negative', '%s.h5' % (base_name))
- base_names.append(base_name)
- if os.path.exists(_target_positive) and os.path.exists(_target_negative):
- target_negative_list.append(_target_negative)
- target_positive_list.append(_target_positive)
-
- # os.mkdir("BCData/npy_data/test")
- for i in range(len(target_negative_list)):
- # for positive
- _target_p = np.zeros(shape=(640, 640), dtype=np.float16)
- gt_file_pos = h5py.File(target_positive_list[i])
- coordinates_pos = np.asarray(gt_file_pos['coordinates'])
- for cor in coordinates_pos:
- _target_p[int(cor[1]), int(cor[0])] = 1
- # for negative
- _target_n = np.zeros(shape=(640, 640), dtype=np.float16)
- gt_file_neg = h5py.File(target_negative_list[i])
- coordinates_neg = np.asarray(gt_file_neg['coordinates'])
- for cor in coordinates_neg:
- _target_n[int(cor[1]), int(cor[0])] = 1
- _target_p = gaussian(_target_p.astype(np.uint32) * 4e2, sigma=sigma)
- _target_n = gaussian(_target_n.astype(np.uint32) * 4e2, sigma=sigma)
- # save
- # _target = np.stack((_target_p, _target_n), axis=0)
- # cors = peak_local_max(_target_n, min_distance=11, exclude_border=False)
- # input_file = _image_path_list[i]
- # img = Image.open(input_file)
- # show_img = np.array(img)[:, :, 0] + _target_n * 100
- # plt.imshow(_target_p)
- # plt.show()
- print(base_names[i])
- np.save(os.path.join("BCData/npy_anno_s{}/".format(sigma) + data + "/positive", base_names[i] + ".npy"), _target_p)
- np.save(os.path.join("BCData/npy_anno_s{}/".format(sigma) + data + "/negative", base_names[i] + ".npy"), _target_n)
-
-
- if __name__ == '__main__':
- data_list = ["test", "train", "validation", ]
- for data in data_list:
- process_data(sigma=8, data=data)
|