-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpreprocessing.py
162 lines (152 loc) · 5.41 KB
/
preprocessing.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import median_noise
import get_file
import flip
import artifact_removal
import pectoral_muscle
import cv2
import pydicom
import replace
from skimage import filters
import ddsm_roi
import mass_v_nonmass
import os
"""
init_folder = "D:/Akshay SRP 2018/Test-Full/CBIS-DDSM/"
DDSM = get_file.get_full_path(init_folder)
print(DDSM)
flip.flip(DDSM)
print("done w/ flip")
for i in DDSM:
ds = pydicom.dcmread(i)
nparr = ds.pixel_array
if(ds.Rows>ds.Columns):
crop_arr = nparr[(ds.Rows/2)-(ds.Columns/2):(ds.Rows/2)+(ds.Columns/2), :]
ds.Rows = ds.Columns
else:
crop_arr = nparr[:, (ds.Columns/2)-(ds.Rows/2):(ds.Columns/2)+(ds.Rows/2)]
ds.Columns = ds.Rows
res = cv2.resize(crop_arr, dsize=(224, 224), interpolation=cv2.INTER_CUBIC)
ds.Rows = 224
ds.Columns = 224
ds.PixelData = res.tostring()
ds.save_as(i)
print("done with crop")
median_noise.noise_removal(DDSM)
print("done with noise removal")
for i in DDSM:
thresh = filters.threshold_otsu(pydicom.dcmread(i).pixel_array)
pectoral_muscle.canny_remove(i)
print("done w/ otsu's and pectoral muscle")
print("done")
"""
"""
init_folder = "D:/Akshay SRP 2018/Test-ROI/CBIS-DDSM/"
DDSMroi = ddsm_roi.get_roi(init_folder)
flip.flip(DDSMroi)
print("done w/ flip roi")
for i in DDSMroi:
ds = pydicom.dcmread(i)
try:
nparr = ds.pixel_array
except AttributeError:
print("uh oh pass through at "+i)
DDSMroi.remove(i)
continue
if(ds.Rows>ds.Columns):
crop_arr = nparr[(ds.Rows/2)-(ds.Columns/2):(ds.Rows/2)+(ds.Columns/2), :]
ds.Rows = ds.Columns
else:
crop_arr = nparr[:, (ds.Columns/2)-(ds.Rows/2):(ds.Columns/2)+(ds.Rows/2)]
ds.Columns = ds.Rows
res = cv2.resize(crop_arr, dsize=(224, 224), interpolation=cv2.INTER_CUBIC)
ds.Rows = 224
ds.Columns = 224
ds.PixelData = res.tostring()
ds.save_as(i)
print("done with crop roi")
print("done roi")
"""
def final_preprocess():
init_folder1 = "C:/Srp 2018/Training-Full/"
DDSM = get_file.get_full_path(init_folder1)
#print(DDSM)
#print(len(DDSM))
init_folder = "C:/Srp 2018/Training-ROI/CBIS-DDSM/"
ROI, DDSM = ddsm_roi.get_roi_cropped(init_folder, DDSM)
mass = mass_v_nonmass.ROI_Split(DDSM, ROI)
roi_split = mass_v_nonmass.ROI_Inverse(ROI)
non_mass = mass_v_nonmass.DDSM_Split(DDSM, roi_split, ROI)
return mass, non_mass
def final_preprocess_vgg():
init_folder1 = "C:/Srp 2018/Training-Full/"
DDSM = get_file.get_full_path(init_folder1)
init_folder = "C:/Srp 2018/Training-ROI/CBIS-DDSM/"
ROI, DDSM = ddsm_roi.get_roi_cropped(init_folder, DDSM)
mass = []
for i in ROI:
list = i.split("/")
if list[len(list)-1]=="000000.dcm":
if os.access(i[0:len(i)-5]+"1.dcm", os.F_OK):
ds = pydicom.dcmread(i[0:len(i) - 5] + "1.dcm")
else:
ds = pydicom.dcmread(get_file.get_folder_other("C:/Srp 2018/Training-ROI/CBIS-DDSM/"+list[4]+"")+"000000.dcm")
else:
if os.access(i[0:len(i)-5]+"0.dcm", os.F_OK):
ds = pydicom.dcmread(i[0:len(i) - 5] + "0.dcm")
else:
ds = pydicom.dcmread(get_file.get_folder_other("C:/Srp 2018/Training-ROI/CBIS-DDSM/" + list[4] + "")+"000000.dcm")
pixel_array = ds.pixel_array.copy()
if (ds.Rows > ds.Columns):
crop_arr = pixel_array[int(ds.Rows / 2) - int(ds.Columns / 2):int(ds.Rows / 2) + int(ds.Columns / 2), :]
else:
crop_arr = pixel_array[:, int(ds.Columns / 2) - int(ds.Rows / 2):int(ds.Columns / 2) + int(ds.Rows / 2)]
res = cv2.resize(crop_arr, dsize=(56, 56), interpolation=cv2.INTER_CUBIC)
print(res.shape)
mass.append(res)
roi_split = mass_v_nonmass.ROI_Inverse(ROI)
non_mass = mass_v_nonmass.DDSM_Split(DDSM, roi_split, ROI)
return mass, non_mass
def preprocess_main():
init_folder = "D:/Akshay SRP 2018/Training-Full/"
DDSM = get_file.get_full_path(init_folder)
print(DDSM)
flip.flip(DDSM)
print("done w/ flip")
for i in DDSM:
ds = pydicom.dcmread(i)
nparr = ds.pixel_array
if(ds.Rows>ds.Columns):
crop_arr = nparr[(ds.Rows/2)-(ds.Columns/2):(ds.Rows/2)+(ds.Columns/2), :]
ds.Rows = ds.Columns
else:
crop_arr = nparr[:, (ds.Columns/2)-(ds.Rows/2):(ds.Columns/2)+(ds.Rows/2)]
ds.Columns = ds.Rows
res = cv2.resize(crop_arr, dsize=(224, 224), interpolation=cv2.INTER_CUBIC)
ds.Rows = 224
ds.Columns = 224
ds.PixelData = res.tostring()
ds.save_as(i)
print("done with crop")
median_noise.noise_removal(DDSM)
print("done with noise removal")
for i in DDSM:
thresh = filters.threshold_otsu(pydicom.dcmread(i).pixel_array)
pectoral_muscle.canny_remove(i)
print("done w/ otsu's and pectoral muscle")
print("done")
"""
#goes through preprocessing pipeline
def preprocess(init_folder):
DDSM = get_file.get_full_path(init_folder)
median_noise.noise_removal(DDSM)
flip.flip(DDSM)
threshs = artifact_removal.otsu(DDSM)
for i in range(len(DDSM)):
pectoral_muscle.remove_pec(DDSM[i], threshs[i])
#resizing the image to 224 x 224 for the model
ds = dicom.read_file(DDSM[i])
nparr = ds.pixel_array
res = cv2.resize(nparr, dsize=(224,224), interpolation=cv2.INTER_CUBIC)
ds.PixelData = res.tostring()
ds.save_as(i)
"""