[ITK-users] itk::BinaryThinningImageFilter3D

Matt McCormick matt.mccormick at kitware.com
Wed Nov 11 07:45:28 EST 2015


Hello,

>From the screenshot, it is unclear whether the thinning worked or not
-- it would be better to visualize in 3D instead of 2D planes.

HTH,
Matt

On Wed, Nov 11, 2015 at 3:33 AM, Daoued23 <mlt.khawla at gmail.com> wrote:
> Hello everyone,
>
> I want to get an Hybrid Skeleton. So I started by testing itk's filter
> "itk::BinaryThinningImageFilter3D" to obtain the curve skeleton, but it
> doesn't seem to work. Here is my code.
>
> #include "itkImage.h"
> #include "itkImageFileReader.h"
> #include "itkImageFileWriter.h"
>
> #include "itkConnectedThresholdImageFilter.h"
> #include "itkImageRegionIterator.h"
> #include "itkBinaryThinningImageFilter3D.h"
>
> #include <iostream>
> #include <stdlib.h>
> using namespace std;
>
> int main(int argc, char* argv[])
> {
>   // Verify the number of parameters in the command line
>   if( argc <= 2 )
>   {
>     std::cerr << "Usage: " << std::endl;
>     std::cerr << argv[0] << " inputImageFile outputImageFile" << std::endl;
>     return EXIT_FAILURE;
>   }
>   char* infilename  = argv[1];
>   char* outfilename = argv[2];
>
>   const   unsigned int Dimension = 3;
>   typedef signed short PixelType;
>   typedef itk::Image< PixelType, Dimension > ImageType;
>
>   // Read image
>   typedef itk::ImageFileReader< ImageType > ReaderType;
>   ReaderType::Pointer reader = ReaderType::New();
>   reader->SetFileName( infilename );
>   try
>   {
>     reader->Update();
>   }
>   catch (itk::ExceptionObject &ex)
>   {
>     std::cout << ex << std::endl;
>     return EXIT_FAILURE;
>   }
>   cout << infilename << " sucessfully read." << endl;
>
>   // Define the thinning filter
>   typedef itk::BinaryThinningImageFilter3D< ImageType, ImageType >
> ThinningFilterType;
>   ThinningFilterType::Pointer thinningFilter = ThinningFilterType::New();
>   thinningFilter->SetInput( reader->GetOutput() );
>   thinningFilter->Update();
>
>   // output to file
>   typedef itk::ImageFileWriter< ImageType > WriterType;
>   WriterType::Pointer writer = WriterType::New();
>   writer->SetInput( thinningFilter->GetOutput() );
>   writer->SetFileName( outfilename );
>
>   try
>   {
>     writer->Update();
>   }
>   catch (itk::ExceptionObject &ex)
>   {
>     std::cout << ex << std::endl;
>     return EXIT_FAILURE;
>   }
>   cout << outfilename << " sucessfully written." << endl;
>
>   cout << "Program terminated normally." << endl;
>   return EXIT_SUCCESS;
> }
>
>
> And here is the volume I get in return, the initial volume is a region of
> trabecular bone of size 30x30x30 voxels.
> <http://itk-users.7.n7.nabble.com/file/n36449/thinningitk.png>
>
>
>
> --
> View this message in context: http://itk-users.7.n7.nabble.com/itk-BinaryThinningImageFilter3D-tp36449.html
> Sent from the ITK - Users mailing list archive at Nabble.com.
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users


More information about the Insight-users mailing list