Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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"))