-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathcmd.py
49 lines (41 loc) · 2 KB
/
cmd.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
import pydicom
import functools
print(__doc__)
ds = pydicom.dcmread('/envoyai/input/in.dcm')
# Normal mode:
print()
print("Filename.....................:", '/envoyai/input/in.dcm')
print("Storage type.................:", ds.SOPClassUID)
print("SeriesInstanceUid............:", ds.SeriesInstanceUID)
print("SopInstanceUid...............:", ds.SOPInstanceUID)
print("MediaStorageSOPInstanceUID...:", ds.file_meta.MediaStorageSOPInstanceUID)
print()
pat_name = ds.PatientName
display_name = pat_name.family_name + ", " + pat_name.given_name
print("Patient's name.......:", display_name)
print("Modality.............:", ds.Modality)
print("TransferSyntax.......:", ds.file_meta.TransferSyntaxUID)
data = ds.pixel_array
vox = functools.reduce(lambda acc, v: ('{}' if acc is None else acc + ' x {}').format(v), data.shape, None)
oneFrame = 'NumberOfFrames' not in ds or ds.NumberOfFrames == 1
print('The image has {} voxels'.format(vox))
data_downsampling = data[::8, ::8] if oneFrame else data[::, ::8, ::8]
down_vox = functools.reduce(lambda acc, v: ('{}' if acc is None else acc + ' x {}').format(v), data_downsampling.shape,
None)
print('The downsampled image has {} voxels'.format(down_vox))
# copy the data back to the original data set
ds.PixelData = data_downsampling.tobytes()
# update the information regarding the shape of the data array
if oneFrame:
ds.Rows, ds.Columns = data_downsampling.shape
else:
ds.NumberOfFrames, ds.Rows, ds.Columns = data_downsampling.shape
print("Appending the instance and series uid")
ds.file_meta.MediaStorageSOPInstanceUID = ds.file_meta.MediaStorageSOPInstanceUID + ".1"
ds.SOPInstanceUID = ds.SOPInstanceUID + ".1"
ds.SeriesInstanceUID = ds.SeriesInstanceUID + ".1"
print("SeriesInstanceUid............:", ds.SeriesInstanceUID)
print("SopInstanceUid...............:", ds.SOPInstanceUID)
print("MediaStorageSOPInstanceUID...:", ds.file_meta.MediaStorageSOPInstanceUID)
ds.save_as('/envoyai/output/out.dcm')
exit(0)