#include #include #include #include #include "itkSkeletonizeImageFilter.h" #include "itkChamferDistanceTransformImageFilter.h" int main(int argc, char** argv) { typedef itk::Image Image; itk::ImageFileReader::Pointer reader = itk::ImageFileReader::New(); reader->SetFileName(argv[1]); reader->Update(); Image::Pointer image = reader->GetOutput(); typedef itk::SkeletonizeImageFilter > Skeletonizer; typedef itk::ChamferDistanceTransformImageFilter DistanceMapFilterType; DistanceMapFilterType::Pointer distanceMapFilter = DistanceMapFilterType::New(); unsigned int weights[] = { 16, 21, 27 }; distanceMapFilter->distanceFromObject = false; distanceMapFilter->SetWeights(weights, weights+3); distanceMapFilter->SetInput(image); distanceMapFilter->Update(); Skeletonizer::Pointer skeletonizer = Skeletonizer::New(); skeletonizer->SetInput(image); skeletonizer->SetOrderingImage(distanceMapFilter->GetOutput()); skeletonizer->Update(); Image::Pointer skeleton = skeletonizer->GetOutput(); itk::ImageFileWriter::Pointer writer = itk::ImageFileWriter::New(); writer->SetFileName(argv[2]); writer->SetInput(skeleton); writer->Update(); return EXIT_SUCCESS; }