def _construct_mask_values(self, ids):
mask_vals = {}
print("Creating Mask Values...")
size = len(self._annotations)
for idx, annotation in enumerate(self._annotations):
print(str(idx) + "/" + str(size))
series, z, y, x, d = annotation #Order as given in the tutorial for LUNA-16
r = d/2.0
try:
img, o, s = p.load(open(os.path.join(self._target_directory, series + ".pick"), "rb"))
except:
continue
if series not in mask_vals:
mask_vals[series] = {}
voxelCenter = dp.world_to_voxel_coord(np.array([x, y, z]), o, s)
x, y, z = voxelCenter
y = int(y)
z = int(z)
sliceRange = range(max(0, int(x - r/s[0])), int(x + r/s[0] + 1)) #1 so that we don't loose any information
for sliceIdx in sliceRange:
center = (z, y)
radius = math.sqrt(max(0, r*r - ((s[0] * math.fabs(x - sliceIdx))**2)))
if sliceIdx not in mask_vals[series]:
mask_vals[series][sliceIdx] = []
mask_vals[series][sliceIdx].append((center, max(radius/s[1], radius/s[2])))
print("Mask values created!")
return mask_vals
评论列表
文章目录