遇到一个需求,需要将目标的轮廓排除掉,搜索发现了SimpleITK
里面一个直接可以用的函数。
参考博客
代码
import SimpleITK as sitk
import os
def get_border(image_name_):
image_path = os.path.join(work_dir,image_name_)
image = sitk.ReadImage(image_path)
# processing
border_image = sitk.LabelContour(image)
# set
border_image.SetSpacing(image.GetSpacing())
border_image.SetDirection(image.GetDirection())
border_image.SetOrigin(image.GetOrigin())
# save
sitk.WriteImage(border_image,f'border_{
image_name_}')
if __name__ == '__main__':
work_dir = "lung_labels_orgsize/"
filenames = os.listdir(work_dir)
for filename in filenames:
get_border(filename)
input(f'{
filename} done'.center(60))