Skip to content

Commit bea65c7

Browse files
committed
plots
1 parent 617a865 commit bea65c7

File tree

2 files changed

+39
-13
lines changed

2 files changed

+39
-13
lines changed

keypoint_plots.py

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
result_folder = 'results/plots/keypoints'
1818

1919

20-
def plot_keypoints(image, mode, patid, slice_num, slice_dim=1, spacing=1.5):
20+
def plot_keypoints(image, mode, patid, slice_num, slice_dim=1, spacing=1.5, crop_indices=None):
2121
pts, _, _, _ = load_points(os.path.join(POINT_DIR_TS, mode), patid)
2222
pts = (pts.T + 1)/2 * np.flip(np.array(image.shape))[None]
2323

24-
crop_indices = crop_to_lung_indices(image)
24+
if crop_indices is None:
25+
crop_indices = crop_to_lung_indices(image)
2526
slice_num_cropped = slice_num - crop_indices[slice_dim].start
2627
image = image[crop_indices]
2728
index = [slice(None)] * slice_dim + [slice(slice_num_cropped, slice_num_cropped + 1)]
@@ -37,7 +38,7 @@ def plot_keypoints(image, mode, patid, slice_num, slice_dim=1, spacing=1.5):
3738
ax.set_axis_off()
3839
ax.imshow(img_slice, cmap='gray')
3940
ax.scatter(pts_slice[:, pts_index[0]], pts_slice[:, pts_index[1]], marker='+', s=150, c='orangered', linewidths=2)
40-
save_fig(fig, result_folder, f'{mode}_keypoints_s0070_slice{slice_num}', pdf=False)
41+
save_fig(fig, result_folder, f'{mode}_keypoints_{patid}_slice{slice_num}', pdf=False)
4142

4243

4344
def plot_all(patid='s0070'):
@@ -50,6 +51,31 @@ def plot_all(patid='s0070'):
5051
plot_keypoints(img_window, mode, slice_num=118, patid=patid, slice_dim=1)
5152

5253

54+
def plot_bad_example_enhancement():
55+
patid = 's1024'
56+
slice_num = 287# 316
57+
ds = ImageDataset(IMG_DIR_TS)
58+
img_index = ds.get_index(patid, 'fixed')
59+
enhanced = ds.get_enhanced_fissures(img_index)
60+
enhanced = sitk.GetArrayFromImage(enhanced)
61+
mask = resample_equal_spacing(ds.get_lung_mask(img_index), use_nearest_neighbor=True)
62+
mask = sitk.GetArrayFromImage(mask)
63+
enhanced[mask == 0], _ = slice_image(enhanced, slice_num=slice_num, slice_dim=1).max()
64+
crop_indices = (slice(15, 200), slice(0, enhanced.shape[1]), slice(130, 400))
65+
plot_keypoints(enhanced, 'enhancement', slice_num=slice_num, patid=patid, slice_dim=1, crop_indices=crop_indices)
66+
67+
img = ds.get_image(img_index)
68+
img = resample_equal_spacing(img)
69+
img_window = fissure_window_level_and_mask(sitk.GetArrayFromImage(img), mask, high=0)
70+
img_crop = img_window[crop_indices]
71+
img_slice, _ = slice_image(img_crop, slice_num=slice_num, slice_dim=1)
72+
fig = create_image_figure(img_window)
73+
ax = fig.gca()
74+
ax.set_axis_off()
75+
ax.imshow(img_slice, cmap='gray')
76+
save_fig(fig, result_folder, f'{patid}_slice{slice_num}', pdf=False)
77+
78+
5379
def plot_enhancement(patid='s0070'):
5480
ds = ImageDataset(IMG_DIR_TS)
5581
img_index = ds.get_index(patid, 'fixed')
@@ -77,21 +103,21 @@ def plot_enhancement(patid='s0070'):
77103
slice_num = 118
78104
slice_num_cropped = slice_num - crop_indices[slice_dim].start
79105

80-
enhanced = slice_image(enhanced, slice_num_cropped, slice_dim)
106+
enhanced, _ = slice_image(enhanced, slice_num_cropped, slice_dim)
81107
fig = create_image_figure(enhanced)
82108
ax = fig.gca()
83109
ax.set_axis_off()
84110
ax.imshow(enhanced)
85111
save_fig(fig, result_folder, 'enhancement_result', pdf=False)
86112

87-
planeness = slice_image(planeness, slice_num_cropped, slice_dim)
113+
planeness, _ = slice_image(planeness, slice_num_cropped, slice_dim)
88114
fig = create_image_figure(planeness)
89115
ax = fig.gca()
90116
ax.set_axis_off()
91117
ax.imshow(planeness)
92118
save_fig(fig, result_folder, 'enhancement_planeness', pdf=False)
93119

94-
hu_weights = slice_image(hu_weights, slice_num_cropped, slice_dim)
120+
hu_weights, _ = slice_image(hu_weights, slice_num_cropped, slice_dim)
95121
fig = create_image_figure(hu_weights)
96122
ax = fig.gca()
97123
ax.set_axis_off()
@@ -102,4 +128,5 @@ def plot_enhancement(patid='s0070'):
102128
if __name__ == '__main__':
103129
KP_MODES.remove('noisy')
104130
# plot_all()
105-
plot_enhancement()
131+
# plot_enhancement()
132+
plot_bad_example_enhancement()

qualitative.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@ def create_image_figure(img):
2222

2323
def slice_image(img_3d, slice_num, slice_dim):
2424
index = [slice(None)] * slice_dim + [slice(slice_num, slice_num + 1)]
25-
return img_3d[index].squeeze()
25+
return img_3d[index].squeeze(), index
2626

2727

28-
def fissure_window_level_and_mask(img: np.ndarray, mask: np.ndarray):
28+
def fissure_window_level_and_mask(img: np.ndarray, mask: np.ndarray, high=-600):
2929
low = -1024
30-
high = -600
3130
img[img < low] = low
3231
img[img > high] = high
3332
img[mask == 0] = high + 1
@@ -126,12 +125,12 @@ def kp_comparison_figure(patid='s0070', ae=False):
126125
img_windowed, fold = get_image_and_fold(patid)
127126
result_folders = {model: os.path.join(folder, f'fold{fold}', 'test_predictions', 'labelmaps') for model, folder in model_folders.items()}
128127

129-
target = sitk.ReadImage(os.path.join(result_folders['cnn'], f'{patid}_fissures_targ_fixed.nii.gz'))
128+
target = sitk.ReadImage(os.path.join(result_folders['cnn'].replace(model, 'DGCNN_seg'), f'{patid}_fissures_targ_fixed.nii.gz'))
130129
label_maps = {model: sitk.ReadImage(os.path.join(path, f'{patid}_fissures_pred_fixed.nii.gz')) for model, path in result_folders.items()}
131130
label_maps['ground-truth'] = target
132131

133132
for kp in label_maps.keys():
134-
model_name = f'DGCNN_seg_{kp}_image' if kp != 'ground-truth' else 'ground-truth'
133+
model_name = f'{model}_{kp}_image' if kp != 'ground-truth' else 'ground-truth'
135134
multi_class_overlay(img_windowed, label_maps[kp], slice_dim=2, model_name=model_name, patid=patid)
136135

137136

@@ -161,4 +160,4 @@ def comparative_figures(patid='s0070'):
161160

162161
if __name__ == '__main__':
163162
# comparative_figures()
164-
kp_comparison_figure()
163+
kp_comparison_figure(ae=True)

0 commit comments

Comments
 (0)