def post_process(img: structure.BrainImage, segmentation: sitk.Image, probability: sitk.Image, **kwargs) -> sitk.Image: """Post-processes a segmentation. Args: img (structure.BrainImage): The image. segmentation (sitk.Image): The segmentation (label image). probability (sitk.Image): The probabilities images (a vector image). Returns: sitk.Image: The post-processed image. """ print('-' * 10, 'Post-processing', img.id_) # construct pipeline pipeline = fltr.FilterPipeline() if kwargs.get('crf_post', False): pipeline.add_filter(fltr_postp.DenseCRF()) pipeline.set_param( fltr_postp.DenseCRFParams(img.images[structure.BrainImageTypes.T1], img.images[structure.BrainImageTypes.T2], probability), 0) return pipeline.execute(segmentation)
def post_process(img: structure.BrainImage, segmentation: sitk.Image, probability: sitk.Image, **kwargs) -> sitk.Image: """Post-processes a segmentation. Args: img (structure.BrainImage): The image. segmentation (sitk.Image): The segmentation (label image). probability (sitk.Image): The probabilities images (a vector image). Returns: sitk.Image: The post-processed image. """ print('-' * 10, 'Post-processing', img.id_) # construct pipeline pipeline = fltr.FilterPipeline() if kwargs.get('simple_post', False): pipeline.add_filter(fltr_postp.ImagePostProcessing()) pipeline.set_param(fltr_postp.ImagePostProcessingParam(probability, variance=kwargs.get('variance', 1.0), preserve_background=kwargs.get('preserve_background', False)), len(pipeline.filters) - 1) if kwargs.get('crf_post', False): pipeline.add_filter(fltr_postp.DenseCRF()) pipeline.set_param(fltr_postp.DenseCRFParams(img.images[structure.BrainImageTypes.T1w], img.images[structure.BrainImageTypes.T2w], probability), len(pipeline.filters) - 1) return pipeline.execute(segmentation)