|
a |
|
b/src/utils.py |
|
|
1 |
import pydicom |
|
|
2 |
|
|
|
3 |
|
|
|
4 |
def window_image(img, window_center,window_width, intercept, slope): |
|
|
5 |
img = (img*slope +intercept) |
|
|
6 |
img_min = window_center - window_width//2 |
|
|
7 |
img_max = window_center + window_width//2 |
|
|
8 |
img[img<img_min] = img_min |
|
|
9 |
img[img>img_max] = img_max |
|
|
10 |
return img |
|
|
11 |
|
|
|
12 |
|
|
|
13 |
def get_first_of_dicom_field_as_int(x): |
|
|
14 |
#get x[0] as in int is x is a 'pydicom.multival.MultiValue', otherwise get int(x) |
|
|
15 |
if type(x) == pydicom.multival.MultiValue: |
|
|
16 |
return int(x[0]) |
|
|
17 |
else: |
|
|
18 |
return int(x) |
|
|
19 |
|
|
|
20 |
|
|
|
21 |
def get_windowing(data): |
|
|
22 |
dicom_fields = [data[('0028','1050')].value, #window center |
|
|
23 |
data[('0028','1051')].value, #window width |
|
|
24 |
data[('0028','1052')].value, #intercept |
|
|
25 |
data[('0028','1053')].value] #slope |
|
|
26 |
return [get_first_of_dicom_field_as_int(x) for x in dicom_fields] |