File size: 2,347 Bytes
907462b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import os
import shutil
import numpy as np
import slideio
from PIL import Image
from tqdm import tqdm

data_directory = '/home/ubuntu/thesis/data/MoNuSAC/'
image_source = data_directory + 'MoNuSAC_images_and_annotations/'
mask_source = data_directory + 'MoNuSAC_masks/'
image_destination = data_directory + 'images/'
mask_destination = data_directory + 'masks/'
image_list = os.listdir(image_source)

# Training data
for i in image_list:
    subimage_list = os.listdir(image_source + i)
    for j in subimage_list:
        if j.endswith('.tif'):
            target_image_file = image_destination + j
            shutil.copyfile(image_source + i + '/' + j, target_image_file)
            types = ["Epithelial", "Lymphocyte", "Macrophage", "Neutrophil"]
            for t in types:
                if os.path.exists(mask_source + i + '/' + j[:-4] + '/' + t):
                    mask_list = os.listdir(mask_source + i + '/' + j[:-4] + '/' + t)
                    for m in mask_list:
                        target_mask_file = mask_destination + j[:-4] + '_' + t + '.png'
                        slide = slideio.open_slide(mask_source + i + '/' + j[:-4] + '/' + t + '/' + m)
                        scene = slide.get_scene(0)
                        mask = scene.read_block((0,0, scene.size[0], scene.size[1]))
                        Image.fromarray(mask.astype(np.uint8)).save(target_mask_file)
                        
# Testing data
source = data_directory + 'MoNuSAC_Testing_Color_Coded_Masks/'
image_list = os.listdir(source)
for i in tqdm(image_list):
    subimage_list = os.listdir(source + i)
    for j in subimage_list:
        if j.endswith('.png'):
            target_image_file = image_destination + j
            shutil.copyfile(source + i + '/' + j, target_image_file)
        else:
            target_mask_file = mask_destination + j[:-17] + '.png'
            mask_array = np.array(Image.open(source + i + '/' + j))
            binary_arr = np.zeros((mask_array.shape[0], mask_array.shape[1]))
            for x in range(mask_array.shape[0]):
                for y in range(mask_array.shape[1]):
                    if mask_array[x, y, 0] == 255 or mask_array[x, y, 1] == 255 or mask_array[x, y, 2] == 255:
                        binary_arr[x][y] = 1
            Image.fromarray(binary_arr.astype(np.uint8)).save(target_mask_file)