CoolFace
Apppublic

Pathovis/basic_preprocessing_steps

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
stain_normalization.py62 linesDownload Raw Back to root
1from __future__ import annotations2 3# Clear logger to use tiatoolbox.logger4import logging5 6if logging.getLogger().hasHandlers():7    logging.getLogger().handlers.clear()8 9from pathlib import Path10 11import matplotlib as mpl12import matplotlib.pyplot as plt13import requests14import skimage.color15 16from tiatoolbox import data, logger17from tiatoolbox.tools import stainnorm18from tiatoolbox.wsicore import wsireader19from PIL import Image20import numpy as np21 22stain_normalization_wsi_examples = [['images/sample_wsi_small.svs']]23 24def normalize_stain(source_wsi_file, output):25    # create a file handler26    wsi_reader = wsireader.WSIReader.open(input_img=source_wsi_file.name)27    wsi_info = wsi_reader.info.as_dict()28    # we will print out each info line by line29    print(*list(wsi_info.items()), sep="\n")  # noqa: T20130    wsi_thumb = wsi_reader.slide_thumbnail(resolution=1.25, units="power")31    sample = wsi_reader.read_region(32        location=[800, 1600],33        level=0,34        size=[800, 800],  # in X, Y35    )36    target_image = data.stain_norm_target()37    method_name_list = ["Reinhard", "Ruifrok", "Macenko", "Vahadane"]38    plt.subplot(2, 3, 1)39    plt.imshow(sample)40    plt.title("Source Image")41    plt.axis("off")42    plt.subplot(2, 3, 4)43    plt.imshow(target_image)44    plt.title("Target Image")45    plt.axis("off")46 47    pos = [2, 3, 5, 6]48    for idx, method_name in enumerate(method_name_list):49        stain_normalizer = stainnorm.get_normalizer(method_name)50        stain_normalizer.fit(target_image)51 52        normed_sample = stain_normalizer.transform(sample.copy())53        plt.subplot(2, 3, pos[idx])54        plt.imshow(normed_sample)55        plt.title(method_name.capitalize())56        plt.axis("off")57    plt.tight_layout()58    # plt.show()59    img = plt.savefig('images/test.png')60    image = Image.open('images/test.png')61    numpy_array = np.array(image)62    return numpy_array