forked from choosehappy/HistoQC
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSaveModule.py
More file actions
81 lines (59 loc) · 2.75 KB
/
SaveModule.py
File metadata and controls
81 lines (59 loc) · 2.75 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import logging
import os
from skimage import io, img_as_ubyte
from distutils.util import strtobool
from skimage import color
import numpy as np
import json
import matplotlib.pyplot as plt
def blend2Images(img, mask):
if (img.ndim == 3):
img = color.rgb2gray(img)
if (mask.ndim == 3):
mask = color.rgb2gray(mask)
img = img[:, :, None] * 1.0 # can't use boolean
mask = mask[:, :, None] * 1.0
out = np.concatenate((mask, img, mask), 2)
return out
def saveFinalMask(s, params):
logging.info(f"{s['filename']} - \tsaveUsableRegion")
mask = s["img_mask_use"]
for mask_force in s["img_mask_force"]:
mask[s[mask_force]] = 0
io.imsave(s["outdir"] + os.sep + s["filename"] + "_mask_use.png", img_as_ubyte(mask))
if strtobool(params.get("use_mask", "False")): # set default to False, should we create and save the fusion mask?
img = s.getImgThumb(s["image_work_size"])
out = blend2Images(img, mask)
io.imsave(s["outdir"] + os.sep + s["filename"] + "_fuse.png", img_as_ubyte(out))
return
def saveThumbnails(s, params):
logging.info(f"{s['filename']} - \tsaveThumbnail")
# we create 2 thumbnails for usage in the front end, one relatively small one, and one larger one
# img = s.getImgThumb(params.get("image_work_size", "1.25x"))
# io.imsave(s["outdir"] + os.sep + s["filename"] + "_thumb.png", img)
# img = s.getImgThumb(params.get("small_dim", 500))
# io.imsave(s["outdir"] + os.sep + s["filename"] + "_thumb_small.png", img)
# save additional thumbnails
basename = s["outdir"] + os.sep + s["filename"]
label = s["os_handle"].associated_images["label"]
macro = s["os_handle"].associated_images["macro"]
thumbnail = s["os_handle"].associated_images["thumbnail"]
label_resize = label.copy()
label_resize.thumbnail((500, 500))
macro_resize = macro.copy()
macro_resize.thumbnail((500, 500))
thumbnail_resize = thumbnail.copy()
thumbnail_resize.thumbnail((500, 500))
io.imsave(basename + "_macro_small.png", np.asarray(macro_resize))
io.imsave(basename + "_thumbnail_small.png", np.asarray(thumbnail_resize))
io.imsave(basename + "_label_small.png", np.asarray(label_resize))
def save_thumbs(s, params):
label = s["os_handle"].associated_images["label"]
macro = s["os_handle"].associated_images["macro"]
thumbnail = s["os_handle"].associated_images["thumbnail"]
label.thumbnail((500, 500))
macro.thumbnail((500,500))
thumbnail.thumbnail((500,500))
io.imsave(s["outdir"] + os.sep + s["filename"] + "label_thumb_small.png", label)
io.imsave(s["outdir"] + os.sep + s["filename"] + "macro_thumb_small.png", macro)
io.imsave(s["outdir"] + os.sep + s["filename"] + "thumbnail_thumb_small.png", thumbnail)