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)
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)
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)
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
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)
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