[Insight-users] Distance Map
Luis Ibanez
luis.ibanez at kitware.com
Thu Aug 3 12:58:29 EDT 2006
Hi Kevin,
What is the size of your image in pixels ?
Please let us know,
Thanks
Luis
------------------------
Kevin H. Hobbs wrote:
> I tried to use the attached code to produce a distance map for my almost
> binary gray scale image. When I use the
> SignedDanielssonDistanceMapImageFilter I can get some output but it uses
> WAY to much memory. Whenever I try
> ApproximateSignedDistanceMapImageFilter the program immediately throws
> an exception that really doesn't help me much:
>
> [kevin at gargon stg_anatomy]$ time ./VTK2ITKDistanceMap tmp/011105pd2_small_piece.vti tmp/dist_011105pd2_small_piece.vti 32 8
> ERROR: In /home/kevin/kitware/VTK/Imaging/vtkImageImport.cxx, line 420
> vtkImageImport (0x58c250): Calling UpdateDataCallback: /home/kevin/kitware/Insight/Code/Common/itkMultiThreader.cxx:358:
> itk::ERROR: MultiThreader(0x57f1f0): Exception occurred during SingleMethodExecute
>
>
> real 0m5.711s
> user 0m2.928s
> sys 0m0.400s
>
>
>
> ------------------------------------------------------------------------
>
> #include "vtkImageData.h"
> #include "itkImage.h"
>
> #include "vtkITKUtility.h"
>
> #include "vtkXMLImageDataReader.h"
>
> #include "vtkImageExport.h"
> #include "itkVTKImageImport.h"
>
> #include "itkBinaryThresholdImageFilter.h"
> #include "itkApproximateSignedDistanceMapImageFilter.h"
> #include "itkSignedDanielssonDistanceMapImageFilter.h"
>
> #include "itkVTKImageExport.h"
> #include "vtkImageImport.h"
>
> #include "vtkXMLImageDataWriter.h"
>
> int main( int argc, char * argv[] )
> {
> if( argc < 5 )
> {
> std::cerr << "Usage: " << std::endl;
> std::cerr << argv[0] << std::endl
> << "\tinput_image_file" << std::endl
> << "\toutput_image_file" << std::endl
> << "\tlevel pieces" << std::endl;
> return EXIT_FAILURE;
> }
>
> char * input_image_file = argv[1];
> char * output_image_file = argv[2];
> const int level = atoi( argv[3] );
> const int pieces = atoi( argv[4] );
>
> // Pixel Types
> typedef float F_PixelType;
> typedef unsigned char UC_PixelType;
>
> // Image Types
> typedef itk::Image< F_PixelType, 3 > F_ImageType;
> typedef itk::Image< UC_PixelType, 3 > UC_ImageType;
>
> // VTK Image Reader
> vtkXMLImageDataReader * reader
> = vtkXMLImageDataReader::New();
> reader->SetFileName( input_image_file );
>
> // VTK Export
> vtkImageExport * vtk_export = vtkImageExport::New();
> vtk_export->SetInputConnection( reader->GetOutputPort() );
>
> // ITK Import
> typedef itk::VTKImageImport< UC_ImageType > ITKImportType;
> ITKImportType::Pointer itk_import = ITKImportType::New();
> ConnectPipelines( vtk_export, itk_import );
>
> // ITK Binary Threshold
> typedef itk::BinaryThresholdImageFilter
> < UC_ImageType, UC_ImageType > ThreshFilterType;
> ThreshFilterType::Pointer thresh_filter
> = ThreshFilterType::New();
> thresh_filter->SetInsideValue( 0 );
> thresh_filter->SetOutsideValue( 255 );
> thresh_filter->SetLowerThreshold( level );
> thresh_filter->SetUpperThreshold( 255 );
> thresh_filter->SetInput( itk_import->GetOutput() );
>
> // ITK Distance Filter
> typedef itk::ApproximateSignedDistanceMapImageFilter
> < UC_ImageType, F_ImageType > DistanceFilterType;
> //typedef itk::SignedDanielssonDistanceMapImageFilter
> // < UC_ImageType, F_ImageType > DistanceFilterType;
> DistanceFilterType::Pointer distance_filter
> = DistanceFilterType::New();
> distance_filter->SetInsideValue( 0 );
> distance_filter->SetOutsideValue( 255 );
> distance_filter->SetInput( thresh_filter->GetOutput() );
>
> // ITK Export
> typedef itk::VTKImageExport< F_ImageType > ITKExportType;
> ITKExportType::Pointer itk_export = ITKExportType::New();
> itk_export->SetInput( distance_filter->GetOutput() );
>
> // VTK Import
> vtkImageImport * vtk_import = vtkImageImport::New();
> ConnectPipelines( itk_export, vtk_import );
>
> // VTK Writer
> vtkXMLImageDataWriter * writer
> = vtkXMLImageDataWriter::New();
> writer->SetFileName( output_image_file );
> writer->SetNumberOfPieces( pieces );
> writer->SetInputConnection( vtk_import->GetOutputPort() );
>
> writer->Update();
>
> return 0;
> }
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
More information about the Insight-users
mailing list