def create_rois(im): rgba = [ (255, 255, 255, 128), (0, 128, 0, 128), ] labels = [ 'Chromosomes', 'Cell', ] # Separate ROI for each channel and time mask_files, filenames = get_mask_files(im) mask_files = get_label_files_in_t_order(im, filenames) rois = [] for t in range(im.getSizeT()): maskim = imread(mask_files[t]) assert maskim.shape[0] == im.getSizeZ() * 2 assert maskim.min() == 0 for c in range(2): roi = omero.model.RoiI() nshapes = 0 for z in range(im.getSizeZ()): maskzc = maskim[c * im.getSizeZ() + z] shapes = masks_from_label_image(maskzc, rgba=rgba[c], z=z, t=t, text=labels[c], raise_on_no_mask=False) for s in shapes: roi.addShape(s) nshapes += len(shapes) print('%s[t=%d] mask:%s shapes:%d' % (im.name, t, os.path.basename(mask_files[t]), nshapes)) rois.append(roi) return rois
def test_masks_from_label_image(self, label_image, args): masks = masks_from_label_image(label_image, **args) expected = ( # w, h, x, y, bytes (2, 2, 1, 1, np.array([224], dtype=np.uint8)), (2, 3, 2, 0, np.array([72], dtype=np.uint8)), ) assert len(masks) == 2 for i, mask in enumerate(masks): assert unwrap(mask.getWidth()) == expected[i][0] assert unwrap(mask.getHeight()) == expected[i][1] assert unwrap(mask.getX()) == expected[i][2] assert unwrap(mask.getY()) == expected[i][3] assert np.array_equal(mask.getBytes(), expected[i][4]) if args: assert unwrap(mask.getTheZ()) == 1 assert unwrap(mask.getTheC()) == 2 assert unwrap(mask.getTheT()) == 3 assert unwrap(mask.getTextValue()) == 'test' else: assert unwrap(mask.getTheZ()) is None assert unwrap(mask.getTheC()) is None assert unwrap(mask.getTheT()) is None assert unwrap(mask.getTextValue()) is None
def create_rois(mask_path): masks = masks_from_label_image( imread(mask_path), rgba=(255, 255, 255, 128)) rois = [] log.debug('Creating %d ROIs' % len(masks)) for mask in masks: roi = omero.model.RoiI() roi.addShape(mask) rois.append(roi) return rois
def create_rois(im, seg_im): print("Processing {} - {}".format(im.name, seg_im.shape)) assert im.getSizeX() == seg_im.shape[1] assert im.getSizeY() == seg_im.shape[0] rois = [] n_shapes = 0 shapes = masks_from_label_image(seg_im, rgba=RGBA, raise_on_no_mask=False) if len(shapes) > 0: n_shapes += len(shapes) for s in shapes: roi = omero.model.RoiI() roi.addShape(s) rois.append(roi) print("{} masks created.".format(n_shapes)) return rois
def test_masks_from_label_image(self, label_image, args): im = self.conn.createImageFromNumpySeq(iter([label_image]), 'omero-rois-integration') # Reload im = self.conn.getObject('Image', im.id) px = im.getPrimaryPixels().getPlane() masks = masks_from_label_image(px, **args) masks = self.save_and_return_masks(im, masks) # The rest of this is more or less the same as the unit test expected = ( # w, h, x, y, bytes (2, 2, 1, 1, np.array([224], dtype=np.uint8)), (2, 3, 2, 0, np.array([72], dtype=np.uint8)), ) assert len(masks) == 2 for i, mask in enumerate(masks): assert unwrap(mask.getWidth()) == expected[i][0] assert unwrap(mask.getHeight()) == expected[i][1] assert unwrap(mask.getX()) == expected[i][2] assert unwrap(mask.getY()) == expected[i][3] assert np.array_equal(np.frombuffer(mask.getBytes(), np.uint8), expected[i][4]) if args: assert unwrap(mask.getTheZ()) == 1 assert unwrap(mask.getTheC()) == 2 assert unwrap(mask.getTheT()) == 3 assert unwrap(mask.getTextValue()) == 'test' else: assert unwrap(mask.getTheZ()) is None assert unwrap(mask.getTheC()) is None assert unwrap(mask.getTheT()) is None assert unwrap(mask.getTextValue()) is None