int
main(int argc, char * argv[])
{
if (argc < 5)
{
std::cerr << "Usage: " << argv[0];
std::cerr << " inputImageFile outputDistanceMapImageFile ";
std::cerr << " outputVoronoiMapImageFile ";
std::cerr << " outputVectorMapImageFile ";
std::cerr << std::endl;
return EXIT_FAILURE;
}
using InputPixelType = unsigned char;
using OutputPixelType = unsigned short;
using VoronoiPixelType = unsigned char;
using LabelerType =
LabelerType::Pointer labeler = LabelerType::New();
OutputImageType,
VoronoiImageType>;
FilterType::Pointer filter = FilterType::New();
using RescalerType =
RescalerType::Pointer scaler = RescalerType::New();
using VoronoiRescalerType =
VoronoiRescalerType::Pointer voronoiScaler = VoronoiRescalerType::New();
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
VoronoiWriterType::Pointer voronoiWriter = VoronoiWriterType::New();
reader->SetFileName(argv[1]);
writer->SetFileName(argv[2]);
voronoiWriter->SetFileName(argv[3]);
labeler->SetInput(reader->GetOutput());
filter->SetInput(labeler->GetOutput());
scaler->SetInput(filter->GetOutput());
writer->SetInput(scaler->GetOutput());
voronoiScaler->SetInput(filter->GetVoronoiMap());
voronoiWriter->SetInput(voronoiScaler->GetOutput());
scaler->SetOutputMaximum(65535L);
scaler->SetOutputMinimum(0L);
voronoiScaler->SetOutputMaximum(255);
voronoiScaler->SetOutputMinimum(0);
writer->Update();
voronoiWriter->Update();
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;
}