forked from choosehappy/HistoQC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBrightContrastModule.py
59 lines (44 loc) · 1.71 KB
/
BrightContrastModule.py
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
import logging
import numpy as np
from skimage.color import convert_colorspace, rgb2gray
from distutils.util import strtobool
def getBrightnessGray(s,params):
logging.info(f"{s['filename']} - \tgetContrast")
limit_to_mask = strtobool(params.get("limit_to_mask", "True"))
img = s.getImgThumb(s["image_work_size"])
img_g = rgb2gray(img)
if (limit_to_mask):
img_g = img_g[s["img_mask_use"]]
s.addToPrintList("grayscale_brightness", str(img_g.mean()))
return
def getBrightnessByChannelinColorSpace(s,params):
logging.info(f"{s['filename']} - \tgetContrast")
limit_to_mask = strtobool(params.get("limit_to_mask", "True"))
to_color_space = params.get("to_color_space","RGB")
img = s.getImgThumb(s["image_work_size"])
suffix=""
if(to_color_space != "RGB"):
img = convert_colorspace(img,"RGB",to_color_space)
suffix="_"+to_color_space
for chan in range(0,3):
vals=img[:, :, chan]
if (limit_to_mask):
vals= vals[s["img_mask_use"]]
s.addToPrintList(("chan%d_brightness"+suffix) % (chan+1), str(vals.mean()))
return
def getContrast(s,params):
logging.info(f"{s['filename']} - \tgetContrast")
limit_to_mask = strtobool(params.get("limit_to_mask", True))
img = s.getImgThumb(s["image_work_size"])
img = rgb2gray(img)
if (limit_to_mask):
img = img[s["img_mask_use"]]
# Michelson contrast
max_img = img.max()
min_img = img.min()
contrast=(max_img-min_img)/(max_img+min_img)
s.addToPrintList("michelson_contrast", str(contrast))
#RMS contrast
rms_contrast=np.sqrt(pow(img - img.mean(), 2).sum() /len(img))
s.addToPrintList("rms_contrast", str(rms_contrast))
return