def __init__(self, image_filename, model_object, input_cube_size=None): self.shutdown_signal = False self.worker_threads = [] self.worker_thread_count = 1 self.requires_padding = False self.model_cube_size = np.array([15, 15, 23]) if input_cube_size is None: self.input_cube_size = self.model_cube_size else: self.input_cube_size = np.array(input_cube_size) for i in range(3): if self.input_cube_size[i] != self.model_cube_size[i]: self.requires_padding = True if self.input_cube_size[i] > self.model_cube_size[i]: raise ValueError( "Input Cube size cannot be larger than model cube size " + str(self.model_cube_size)) self.q = None self.spacing_factor, self.image = ImageHelper.read_image( image_filename, correct_spacing=True) self.org_ndarray = sitk.GetArrayFromImage(self.image) ndarray = np.float32(np.swapaxes(self.org_ndarray, 0, 2)) ndarray -= np.mean(ndarray, axis=0) ndarray /= np.std(ndarray, axis=0) self.ndarray = ndarray self.model = model_object
def get_image(self, id): is_last_run = False self.image_locks[id].acquire() if id not in self.images: image_path = os.path.abspath(self.input_path + id + '.img.gz') self.images[id] = ImageHelper.read_image(image_path) self.image_locks[id].release() return self.images[id], is_last_run
def load_cubes_raw(self): cube_shape = None counter = 0 for idx in self.image_data: sys.stdout.write("\rLoading Images {0} out of {1}...".format( counter, len(self.image_data))) sys.stdout.flush() counter += 1 image_path = os.path.abspath(self.input_path + idx + '.img.gz') image = ImageHelper.read_image(image_path, correct_spacing=False) roi_list = self.image_data[idx] cube_shape = self.load_image_cubes(image, roi_list, self.roi_size_max) return self.roi_size_max
def extract_cubes_one_image(self): counter = 0 rois = [] self.read_rois() idx = None idx = '081832_20060531_1149725568.2203' roi_list = self.image_data[idx] spacing_factor = 1 if idx not in self.images: image_path = os.path.abspath(self.input_path + idx + '.img.gz') # spacing_factor, self.images[idx] = ImageHelper.read_image(image_path, correct_spacing=True) spacing_factor = 1 self.images[idx] = ImageHelper.read_image(image_path, correct_spacing=False) the_one_roi = None for roi in roi_list: if roi.roi_start_idx[0] != 101: continue the_one_roi = roi roi.rescale_depth(spacing_factor) cube = roi.load_cube(self.images[idx], padded_size=self.cube_size) assert (list(cube.shape) == self.cube_max_size) counter += 1 print(counter) counter = 0 roi_list = [the_one_roi] for roi_1 in roi_list: counter += 1 roi_1.lookup_table = self.class_lookup roi_1.y = self.class_lookup[roi_1.roi_class] for roi_2 in roi_list: roi_1.intersects(roi_2) print(counter) rois.extend(self.image_data[idx]) pickle.dump([the_one_roi], open("one_image.p", "wb"))