int
main(int argc, char * argv[])
{
if (argc < 5)
{
std::cerr << "Usage: " << argv[0];
std::cerr << " inputImageFile outputDistanceMapImageFile ";
std::cerr << " outputVoronoiMapImageFilter ";
std::cerr << " outputVectorMapImageFilter ";
std::cerr << std::endl;
return EXIT_FAILURE;
}
using InputPixelType = unsigned char;
using OutputPixelType = float;
using VoronoiPixelType = unsigned short;
OutputImageType,
VoronoiImageType>;
FilterType::Pointer filter = FilterType::New();
using RescalerType =
RescalerType::Pointer scaler = RescalerType::New();
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
reader->SetFileName(argv[1]);
writer->SetFileName(argv[2]);
filter->SetInput(reader->GetOutput());
scaler->SetInput(filter->GetOutput());
writer->SetInput(scaler->GetOutput());
scaler->SetOutputMaximum(65535L);
scaler->SetOutputMinimum(0L);
try
{
writer->Update();
}
catch (const itk::ExceptionObject & exp)
{
std::cerr << "Exception caught !" << std::endl;
std::cerr << exp << std::endl;
}
const char * voronoiMapFileName = argv[3];
VoronoiWriterType::Pointer voronoiWriter = VoronoiWriterType::New();
voronoiWriter->SetFileName(voronoiMapFileName);
voronoiWriter->SetInput(filter->GetVoronoiMap());
try
{
voronoiWriter->Update();
}
catch (const itk::ExceptionObject & exp)
{
std::cerr << "Exception caught !" << std::endl;
std::cerr << exp << std::endl;
}
using OffsetImageType = FilterType::VectorImageType;
WriterOffsetType::Pointer offsetWriter = WriterOffsetType::New();
offsetWriter->SetInput(filter->GetVectorDistanceMap());
offsetWriter->SetFileName(argv[4]);
try
{
offsetWriter->Update();
}
catch (const itk::ExceptionObject & exp)
{
std::cerr << "Exception caught !" << std::endl;
std::cerr << exp << std::endl;
}
return EXIT_SUCCESS;
}