def data_target(dir, label): """Process data and attribuited label""" count = 0 data = [] target = [] for file in cv.list_files(dir): file_name = dir + file #contour = process_file(file_name) # method snake image = lib.read_image(file_name) # feature hematoma, utilize hu hematoma = lib.substance_interval(image, 40, 90) #data.append(contour.flatten()) data.append(hematoma.flatten()) #data.append(np.append(contour.flatten(),hematoma.flatten())) target.append(label) count += 1 if count == amount_files: break return [data, target]
def processing_thread(dir, files, label, id_core): features = [] labels = [] for file_name in files: # scaler = MinMaxScaler() # example minmax, scaler # hematoma = scaler.fit_transform(hematoma) norm = 'max' image = lib.read_image(dir + file_name) # feature hematoma, utilize hu # print("image matrix size : {:.2f}MB".format(image.nbytes / (1024 * 1000.0))) # lib.plot('original', image) # selem = disk(1) # image = skimage.morphology.dilation(image, selem) # lib.plot('dilation', image) # features snake = process_file(dir + file_name) # method snake hematoma = pre.normalize(lib.substance_interval(image, 30, 90), norm=norm).astype('float16') white_matter = pre.normalize(lib.substance_interval(image, 20, 30), norm=norm).astype('float16') ventriculo = pre.normalize(lib.substance_interval(image, 0, 15), norm=norm).astype('float16') white_tophat = pre.normalize(skimage.morphology.white_tophat(image), norm=norm).astype('float16') blood = pre.normalize(lib.substance_interval(image, 45, 65), norm=norm).astype('float16') # x = np.concatenate((snake,hematoma,white_matter,ventriculo,white_tophat,blood)) # print("XXData matrix size : {:.2f}MB".format(x.nbytes / (1024 * 1000.0))) # con_hem = hematoma + ventriculo + white_tophat + blood # print("Data matrix size : {:.2f}MB".format(con_hem.nbytes / (1024 * 1000.0))) # con_hem = hematoma + white_matter + ventriculo # print("Data matrix size : {:.2f}MB".format(con_hem.nbytes / (1024 * 1000.0))) np.savez_compressed(label + 'features/snake/' + file_name, snake=snake) np.savez_compressed(label + 'features/hematoma/' + file_name, hematoma=hematoma) np.savez_compressed(label + 'features/white_matter/' + file_name, white_matter=white_matter) np.savez_compressed(label + 'features/ventriculo/' + file_name, ventriculo=ventriculo) np.savez_compressed(label + 'features/white_tophat/' + file_name, white_tophat=white_tophat) np.savez_compressed(label + 'features/blood/' + file_name, blood=blood) cv.calculate_process((amount_files) / n_cores) # lib.plot('eroted', eroded) '''edges = canny(image, sigma=3, low_threshold=10, high_threshold=50) hough_radii = np.arange(1, 10, 1) hough_res = hough_circle(edges, hough_radii) accums, cx, cy, radii = hough_circle_peaks(hough_res, hough_radii,total_num_peaks=3) # Draw them fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(10, 4)) image = color.gray2rgb(image) color.rgb2gray(image) for center_y, center_x, radius in zip(cy, cx, radii): circy, circx = circle_perimeter(center_y, center_x, radius, shape=image.shape) image[circy, circx] = (220, 20, 20) ax.imshow(image, cmap=plt.cm.gray) plt.show() lib.plot('sem rgb', color.rgb2gray(image)) ''' # plt.imshow(white_tophat, cmap=plt.cm.bone) # plt.title('white_tophat') # plt.show() # hematoma =lib.substance_interval(image, 30, 90) # white_matter = lib.substance_interval(image, 20, 30) # resultado ruim se adicionar. Teste em 80 imagens # snake_method2 = snake_GAC(dir + file_name) # bone = pre.normalize(lib.substance_interval(image, 700, 3000), norm=norm) # print("aqui1") # multiotsu = threshold_multiotsu(image, classes=5) # melhora com o aumento de classe, mas piorou ao adicionar outras features # print("aqui") # regions_multi = pre.normalize(np.digitize(image, bins=multiotsu), norm=norm) ''' colorized, otsu, thresholds = lib.multiotsu(image, 3) mask_ossos = np.zeros((512, 512)) mask_ossos[otsu == 2] = 1 ossos = image * mask_ossos ossos = pre.normalize(ossos, norm=norm)''' # con_hem = np.append(snake,hematoma) # con_hem = np.append(con_hem,white_matter) '''con_hem = snake + hematoma + white_matter + ventriculo + white_tophat + blood
import lib import os input_path = "dataset/epidural" input_folder = os.fsencode(input_path) files = os.listdir(input_folder) files.sort() slices = [] for file in files: # if os.fsdecode(file) == "ID_3580adc72.dcm": # "ID_635f084fc.dcm": # "ID_559b1d8f7.dcm": #"ID_894a589ad.dcm": if os.fsdecode(file) == "ID_0ed10ec08.dcm": file = os.fsdecode(file) filename = "{}/{}".format(input_path, file) image = lib.read_image(filename) lib.histogram(image, True) lib.plot("original: {} ".format(file), image) # features hematoma = lib.substance_interval(image, 40, 90) white_matter = lib.substance_interval(image, 20, 30) blood = lib.substance_interval(image, 30, 45) bone = lib.substance_interval(image, 600, 4000) #lib.plot("blood: {}".format(file), blood) #lib.plot("hematoma: {}".format(file), hematoma) lib.histogram(blood, True) print("Done")