Skip to content

Commit 8928f6b

Browse files
committed
update distance evaluation
1 parent 647674d commit 8928f6b

File tree

4 files changed

+48
-25
lines changed

4 files changed

+48
-25
lines changed

pymic/test/test_assd.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from scipy import ndimage
2+
from PIL import Image
3+
import numpy as np
4+
import SimpleITK as sitk
5+
import matplotlib.pyplot as plt
6+
from pymic.util.evaluation_seg import get_edge_points
7+
8+
def test_assd_2d():
9+
img_name = "/home/x/projects/PyMIC_project/PyMIC_examples/PyMIC_data/JSRT/label/JPCLN001.png"
10+
img = Image.open(img_name)
11+
img_array = np.asarray(img)
12+
img_edge = get_edge_points(img_array > 0)
13+
s_dis = ndimage.distance_transform_edt(1-img_edge)
14+
plt.subplot(1,2,1)
15+
plt.imshow(img_edge)
16+
plt.subplot(1,2,2)
17+
plt.imshow(s_dis)
18+
plt.show()
19+
20+
def test_assd_3d():
21+
img_name = "/home/x/projects/PyMIC_project/PyMIC_examples/seg_ssl/ACDC/result/unet2d_baseline/patient001_frame01.nii.gz"
22+
img_obj = sitk.ReadImage(img_name)
23+
spacing = img_obj.GetSpacing()
24+
spacing = spacing[::-1]
25+
img_data = sitk.GetArrayFromImage(img_obj)
26+
print(img_data.shape)
27+
print(spacing)
28+
img_edge = get_edge_points(img_data > 0)
29+
s_dis = ndimage.distance_transform_edt(1-img_edge, sampling=spacing)
30+
dis_obj = sitk.GetImageFromArray(s_dis)
31+
dis_obj.CopyInformation(img_obj)
32+
sitk.WriteImage(dis_obj, "test_dis.nii.gz")
33+
34+
35+
36+
if __name__ == "__main__":
37+
test_assd_3d()

pymic/util/evaluation_seg.py

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66
import csv
77
import os
88
import sys
9-
import math
109
import pandas as pd
11-
import random
12-
import GeodisTK
13-
import configparser
1410
import numpy as np
1511
from scipy import ndimage
1612
from pymic.io.image_read_write import *
@@ -90,7 +86,7 @@ def get_edge_points(img):
9086
strt = ndimage.generate_binary_structure(2,1)
9187
else:
9288
strt = ndimage.generate_binary_structure(3,1)
93-
ero = ndimage.morphology.binary_erosion(img, strt)
89+
ero = ndimage.binary_erosion(img, strt)
9490
edge = np.asarray(img, np.uint8) - np.asarray(ero, np.uint8)
9591
return edge
9692

@@ -114,14 +110,9 @@ def binary_hd95(s, g, spacing = None):
114110
spacing = [1.0] * image_dim
115111
else:
116112
assert(image_dim == len(spacing))
117-
img = np.zeros_like(s)
118-
if(image_dim == 2):
119-
s_dis = GeodisTK.geodesic2d_raster_scan(img, s_edge, 0.0, 2)
120-
g_dis = GeodisTK.geodesic2d_raster_scan(img, g_edge, 0.0, 2)
121-
elif(image_dim ==3):
122-
s_dis = GeodisTK.geodesic3d_raster_scan(img, s_edge, spacing, 0.0, 2)
123-
g_dis = GeodisTK.geodesic3d_raster_scan(img, g_edge, spacing, 0.0, 2)
124-
113+
s_dis = ndimage.distance_transform_edt(1-s_edge, sampling = spacing)
114+
g_dis = ndimage.distance_transform_edt(1-g_edge, sampling = spacing)
115+
125116
dist_list1 = s_dis[g_edge > 0]
126117
dist_list1 = sorted(dist_list1)
127118
dist1 = dist_list1[int(len(dist_list1)*0.95)]
@@ -150,13 +141,8 @@ def binary_assd(s, g, spacing = None):
150141
spacing = [1.0] * image_dim
151142
else:
152143
assert(image_dim == len(spacing))
153-
img = np.zeros_like(s)
154-
if(image_dim == 2):
155-
s_dis = GeodisTK.geodesic2d_raster_scan(img, s_edge, 0.0, 2)
156-
g_dis = GeodisTK.geodesic2d_raster_scan(img, g_edge, 0.0, 2)
157-
elif(image_dim ==3):
158-
s_dis = GeodisTK.geodesic3d_raster_scan(img, s_edge, spacing, 0.0, 2)
159-
g_dis = GeodisTK.geodesic3d_raster_scan(img, g_edge, spacing, 0.0, 2)
144+
s_dis = ndimage.distance_transform_edt(1-s_edge, sampling = spacing)
145+
g_dis = ndimage.distance_transform_edt(1-g_edge, sampling = spacing)
160146

161147
ns = s_edge.sum()
162148
ng = g_edge.sum()

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ scikit-image>=0.16.2
55
scikit-learn>=0.22
66
scipy>=1.3.3
77
SimpleITK>=2.0.0
8-
tensorboard>=2.1.0
9-
tensorboardX>=1.9
8+
tensorboard
9+
tensorboardX
1010
torch>=1.1.12
1111
torchvision>=0.13.0

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
setuptools.setup(
1313
name = 'PYMIC',
14-
version = "0.3.1",
14+
version = "0.3.2.2",
1515
author ='PyMIC Consortium',
1616
author_email = 'wguotai@gmail.com',
1717
description = description,
@@ -28,8 +28,8 @@
2828
"scikit-learn>=0.22",
2929
"scipy>=1.3.3",
3030
"SimpleITK>=2.0.0",
31-
"tensorboard>=2.1.0",
32-
"tensorboardX>=1.9",
31+
"tensorboard",
32+
"tensorboardX",
3333
],
3434
classifiers=[
3535
'License :: OSI Approved :: Apache Software License',

0 commit comments

Comments
 (0)