Example #1
0
def batch_process_image(images_in, save_dir, depth):
    normalizer = VahadaneNormalizer()
    i1 = read_image("./lbp_pic/reference_pic/zs_abnormal.png")
    normalizer.fit(i1)

    for image_in in images_in:
        process_image(normalizer, image_in, save_dir, depth)
Example #2
0
def process_image(normalizer, image_in, save_dir, depth):
    tokens = image_in.rsplit(os.sep, depth + 1)
    image_out = os.path.join(save_dir, *tokens[1:])
    parent_dir = os.path.dirname(image_out)
    os.makedirs(parent_dir, exist_ok=True)
    r_img = read_image(image_in)
    target = normalizer.transform(r_img)
    target = cv2.cvtColor(target, cv2.COLOR_RGB2BGR)
    cv2.imwrite(image_out, target)
Example #3
0
def process_image(normalizer, image_in, save_dir, depth):
    tokens = image_in.rsplit(os.sep, depth + 1)
    image_out = os.path.join(save_dir, *tokens[1:])
    if os.path.isfile(
            image_out):  # pass if result image has already been generated
        return
    os.makedirs(os.path.dirname(image_out), exist_ok=True)
    r_img = read_image(image_in)
    target = normalizer.transform(r_img)
    target = cv2.cvtColor(target, cv2.COLOR_RGB2BGR)
    cv2.imwrite(image_out, target)
Example #4
0
def PrepNormalizer(normalization, targetPath):
    if "Reinhard" == normalization:
        n = ReinhardNormalizer()
    elif "Macenko" == normalization:
        n = MacenkoNormalizer()
    elif "Vahadane" == normalization:
        n = VahadaneNormalizer()
    else:
        print("No knowned normalization given..")
    targetImg = read_image(targetPath)
    n.fit(targetImg)
    return n
Example #5
0
        I_prime = np.clip((255 * np.exp(-1 * np.dot(
            source_concentrations, self.stain_matrix).reshape(self.Ishape))),
                          0, 255).astype(np.uint8)

        if new_stain_mat:
            stain_matrix = self.fetcher.compute(I_prime, just_stain=True)
            return I_prime, stain_matrix
        else:
            return I_prime


if __name__ == '__main__':
    import matplotlib.pyplot as plt
    from staintools.utils import visual as vu, misc as mu

    I = vu.read_image('data/i1.png')

    # Test 0
    augmentor = TellezAugmentor('Vahadane')
    augmentor.fit(I)
    print('Fitting done')
    h, w, c = I.shape
    stack = np.zeros([10, h, w, c])
    for i in range(10):
        stack[i] = augmentor.augment(new_stain_mat=False)
    vu.patch_grid(stack, width=5)

    # Test 1
    for method in ['Macenko', 'Vahadane']:
        augmentor = TellezAugmentor(method=method)
        augmentor.fit(I)
Example #6
0
import openslide
from staintools import MacenkoNormalizer
from staintools.utils.visual import read_image, show
import scipy.misc as mc
import os
import numpy as np
from matplotlib import pyplot as plt
from skimage import measure
from skimage.morphology import dilation, erosion, square
dir = "/home/yunzhe/Downloads/segmentation_training_set/"
source_file = "/home/yunzhe/Downloads/segmentation_training_set/image02.png"
save_dir = "/home/yunzhe/norm_data_new/"
source = read_image(source_file)
normalizer = MacenkoNormalizer()
normalizer.fit(source)
filter = [[0, 1, 0], [1, 1, 1], [0, 1, 0]]
for filename in os.listdir(dir):
    if filename.endswith(".png") and not filename.endswith("_poly.png"):
        target = read_image(dir + filename)
        if dir + filename == source_file:
            mc.imsave(save_dir + filename, target)
        else:
            norm_target = normalizer.transform(target)
            show(norm_target, fig_size=(4, 4))
            mc.imsave(save_dir + filename, norm_target)

        filename_suffix = filename.split(".")[0]
        mask_file = dir + filename_suffix + "_mask.txt"
        if os.path.exists(mask_file):
            width = 0
            height = 0