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
Exemple #4
0
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
Exemple #5
0
    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