+ // Compute cost map
+ typedef itk::MinimumMaximumImageCalculator< TImage > TMinMax;
+ typedef itk::InvertIntensityImageFilter< TImage > TInvert;
+ typedef itk::DanielssonDistanceMapImageFilter< TImage, TScalarImage > TDanielsson;
+ typedef itk::UnaryFunctorImageFilter< TScalarImage, TScalarImage, InvertPixelFunctor > TInvertFunctor;
+
+ TMinMax::Pointer input_image_min_max = TMinMax::New( );
+ input_image_min_max->SetImage( input_image );
+ input_image_min_max->Compute( );
+
+ TInvert::Pointer invert = TInvert::New( );
+ invert->SetInput( input_image );
+ invert->SetMaximum( input_image_min_max->GetMaximum( ) );
+
+ TDanielsson::Pointer danielsson = TDanielsson::New( );
+ danielsson->SetInput( invert->GetOutput( ) );
+ danielsson->InputIsBinaryOn( );
+ danielsson->SquaredDistanceOff( );
+ danielsson->UseImageSpacingOn( );
+
+ TInvertFunctor::Pointer invert_pixels = TInvertFunctor::New( );
+ invert_pixels->SetInput( danielsson->GetOutput( ) );
+ invert_pixels->Update( );
+