Exemplo n.º 1
0
sizeX, sizeY, sizeC = (reader.rdr.getSizeX(),
                       reader.rdr.getSizeY(), reader.rdr.getSizeC())
tiler = Tiler((sizeX, sizeY, sizeC),
              (tile_size, tile_size, sizeC), overlap=0.05)


def preprocess(img):
    img = cv2.resize(img, (0, 0), fx=1/downsample, fy=1/downsample)
    img = cv2.medianBlur(img, 3)
    return img


print('Loading and processing tiles')
imgs = []
for i, img in tqdm(tiler.iterate(reader_func), total=len(tiler)):
    imgs.append(preprocess(img))

masks, flows, styles, diams = model.eval(
    imgs, diameter=diameter, channels=channels)

# Process shapes
print('Converting masks to shapes')
geoms = []
for tile_idx, mask in tqdm(enumerate(masks), total=len(masks)):
    x_offset, y_offset, _ = tiler.get_tile_bbox_position(tile_idx)[0]
    for i in range(mask.max()):
        m = (mask == i+1).astype(np.uint8)
        c, hier = cv2.findContours(m, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
        c = max(c, key=cv2.contourArea).squeeze()
        c[:, 0] = c[:, 0] + x_offset/downsample