-
Notifications
You must be signed in to change notification settings - Fork 1
/
ddsm_roi.py
108 lines (94 loc) · 3.2 KB
/
ddsm_roi.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import pydicom
import get_file
def get_roi_cropped(init_folder, DDSM_main):
DDSM = get_file.get_full_path_folder(init_folder)
DDSM_ROI = []
for i in range(len(DDSM))[::-1]:
ds = pydicom.dcmread(DDSM[i]+"000000.dcm")
#print(getDDSMequivalent(DDSM[i]))
try:
if is_mask_cropped(ds.pixel_array.copy()):
DDSM_ROI.append(DDSM[i]+"000000.dcm")
else:
try:
x = pydicom.dcmread(DDSM[i]+"000001.dcm")
DDSM_ROI.append(DDSM[i]+"000001.dcm")
except IOError:
DDSM_ROI.append(DDSM[i]+"000000.dcm")
print("went here")
except AttributeError:
try:
DDSM_main.remove(getDDSMequivalent(DDSM[i]))
except ValueError:
print(DDSM[i])
print(getDDSMequivalent(DDSM[i]))
#print("uh oh at "+i)
for j in range(len(DDSM_ROI))[::-1]:
try:
try:
x = pydicom.dcmread(DDSM_ROI[j]).pixel_array
except AttributeError:
try:
DDSM_main.remove(getDDSMequivalent(DDSM_ROI[j]))
except ValueError:
blahblah = 1
DDSM_ROI.remove(DDSM_ROI[j])
except IndexError:
blahblah = 1
print(len(DDSM_ROI))
print(len(DDSM_main))
return DDSM_ROI, DDSM_main
def get_roi(init_folder):
DDSM = get_file.get_full_path_folder(init_folder)
DDSM_ROI = []
print(DDSM)
for i in DDSM[::-1]:
ds = pydicom.dcmread(i+"000000.dcm")
try:
if is_mask(ds.pixel_array.copy()):
DDSM_ROI.append(i+"000000.dcm")
else:
try:
x = pydicom.dcmread(i+"000001.dcm")
DDSM_ROI.append(i+"000001.dcm")
except IOError:
DDSM_ROI.append(i+"000000.dcm")
print("went here for "+i)
except AttributeError:
blahblah = 1
print("uh oh at "+i)
for j in DDSM_ROI[::-1]:
try:
x = pydicom.dcmread(j).pixel_array
except AttributeError:
DDSM_ROI.remove(j)
print("uh oh2 at "+j)
print(len(DDSM_ROI))
return DDSM_ROI
def get_roi_single(init_folder):
folder = get_file.get_folder(init_folder)
ds = pydicom.dcmread(folder+"000000.dcm")
if is_mask(ds.pixel_array):
return folder+"000000.dcm"
else:
return folder+"000001.dcm"
def is_mask_cropped(pixel_array):
return pixel_array.shape[0] == 224 and pixel_array.shape[1] == 224
def is_mask(pixel_array):
return pixel_array.shape[0] > 1000 and pixel_array.shape[1] > 1000
def make_mask(pixel_array):
y = 0
x = 0
for pixels in range(pixel_array.shape[0]*pixel_array.shape[1]):
if pixel_array[y, x] != 0:
pixel_array[y,x] = 1
if x == pixel_array.shape[0]-1:
y += 1
x = 0
continue
x+=1
return pixel_array
def getDDSMequivalent(filename):
import get_file
list = filename.split("/")
return get_file.get_file("C:/Srp 2018/Training-Full/"+list[4][0:len(list[4])-2])