def extract_voxels(images,pred_1,truths=None):
eroded = morphology.erosion(pred_1,np.ones([3,3,3]))
dilation = morphology.dilation(eroded,np.ones([3,3,3]))
labels = measure.label(dilation) # Different labels are displayed in different colors
label_vals = np.unique(labels)
regions = measure.regionprops(labels)
kept = 0
removed = 0
data = []
for idx in range(len(regions)):
b = regions[idx].bbox
if regions[idx].area < 50:
removed += 1
continue
kept += 1
print "before->",b
b = get_bounding_box(b,images.shape)
print "after->",b
image_voxel = images[b[0]:b[3],b[1]:b[4],b[2]:b[5]]
label = 0
if not truths is None:
print "finding region in truths"
truth_voxel = truths[b[0]:b[3],b[1]:b[4],b[2]:b[5]]
nonzeros = np.count_nonzero(truth_voxel)
if nonzeros > 0:
label = 1
assert(image_voxel.size==(VOXEL_DEPTH*VOXEL_DEPTH*VOXEL_DEPTH))
print "Appending voxel with label ",label
data.append((image_voxel,label,b))
print "kept",kept,"removed",removed
sys.stdout.flush()
return data
评论列表
文章目录