def calc_dataset_size(train_path, test_path): train_filenames = get_filenames(train_path, 'jpg') test_filenames = get_filenames(test_path, 'jpg') random.shuffle(train_filenames) random.shuffle(test_filenames) dataset_size = len(train_filenames) return train_filenames, test_filenames, dataset_size
def normalize_imgs(imgs_arr, usr_imgs_path): usr_img_paths = get_filenames(usr_imgs_path, 'dcm') num_img_ls = [] for usr_img_path in usr_img_paths: num_img = int(usr_img_path.split('/')[-1][:-4]) num_img_ls.append(num_img) num_img_ls.sort() # print(num_img_ls) dist = len(num_img_ls) / imgs_arr.shape[0] dataset_img_paths = [] for i in range(imgs_arr.shape[0]): num_img_path = '{}/{}.dcm'.format(usr_imgs_path, num_img_ls[int(i * dist)]) dataset_img_paths.append(num_img_path) print(dataset_img_paths) for i, dataset_img_path in enumerate(dataset_img_paths): ct_dcm = pydicom.dcmread(dataset_img_path) # print(ct_dcm.pixel_array) num_mag = int(ct_dcm.pixel_array.shape[1] / imgs_arr.shape[2]) ct_img = ct_dcm.pixel_array[::num_mag, ::num_mag] / 65535 imgs_arr[i] = ct_img return imgs_arr
def get_dataset_paths(usr_imgs_path, NUM_DIVIDED=20): usr_img_paths = get_filenames(usr_imgs_path, 'dcm') num_img_list = [] for usr_img_path in usr_img_paths: num_img = int(usr_img_path.split('/')[-1][:-4]) num_img_list.append(num_img) num_img_list.sort() # print(num_img_list) dist = len(num_img_list) / NUM_DIVIDED dataset_img_paths = [] for i in range(NUM_DIVIDED): num_img_path = '{}/{}.dcm'.format(usr_imgs_path, num_img_list[int(i * dist)]) dataset_img_paths.append(num_img_path) return dataset_img_paths
def normalize_imgs(imgs_arr, user_imgs_path): user_img_paths = get_filenames(user_imgs_path, 'dcm') num_img_list = [] for user_img_path in user_img_paths: num_img = int(user_img_path.split('/')[-1][:-4]) num_img_list.append(num_img) num_img_list.sort() # print(num_img_list) dist = len(num_img_list) / imgs_arr.shape[0] dataset_img_paths = [] for i in range(imgs_arr.shape[0]): num_img_path = '{}/{}.dcm'.format(user_imgs_path, num_img_list[int(i * dist)]) dataset_img_paths.append(num_img_path) # print(dataset_img_paths) for i, dataset_img_path in enumerate(dataset_img_paths): ct_dcm = pydicom.dcmread(dataset_img_path) ct_img = transform_ctdata(ct_dcm, windowWidth=-1500, windowCenter=-600) # print(ct_dcm.pixel_array) j = i if np.average(ct_img) < 25 or np.average(ct_img) > 200 or ( np.average(ct_img) == ct_img[:, :]).all(): print('pass') j += 1 ct_dcm = pydicom.dcmread(dataset_img_paths[j]) ct_img = transform_ctdata(ct_dcm, -1500, -600) lung_img = get_lung_img(ct_img.copy(), isShow=False) output_img = get_square_img(lung_img) output_img = cv2.resize(output_img, (imgs_arr.shape[1], imgs_arr.shape[2])) imgs_arr[i] = output_img return imgs_arr
return def cv2_winClose(): ''' Press "q" to close all cv2 windows ''' cv2.waitKey(0) if cv2.waitKey(1) & 0xFF == ord('q'): # 按q键退出 return if __name__ == "__main__": path = "Data/train_images/hog_data" file_extension = "jpg" filenames = get_filenames(path, file_extension) steel = Hog_Param() # positive data for i in range(len(filenames)): img = cv2.imread(filenames[i]) cv2.imshow('a', img) cv2_winClose() img = cv2.resize((128, 64)) hist = steel.hog.compute(img, (8, 8)) for j in range(steel.featureNum): steel.featureArray[i, j] = hist[j] steel.labelArray[i, 0] = 1