[Insight-users] Problem with curvature flow filter

Luis Ibanez luis.ibanez at kitware.com
Mon Oct 15 10:04:48 EDT 2007


Hi Pieter,

                   Thanks for posting your code.


The error is most likely in your construction of the imported image.

Where are you getting "image" from ?


Please remove the CurvatureFlow filter from the pipeline and connect
your imported image directly to the reader. That should crash too at
run time, and if so, it will discard the CurvatureFlowFilter as
a suspect.

Then, modify your code to print out the characteristics of the image
just after you import it. You can do this as:

       importFilter->Update()
       importFilter->GetOutput()->Print( std::cout );

Chances are that you will find some of the image size entries
to be set to zero. (which are obviously wrong values).

Please post to the mailing list the output of this command,
so we can give you more detailed help.



     Thanks


        Luis


----------------------
pieter Mollemans wrote:
> Hello,
> 
> I try to use a itk curvature flow filter on a 3D image volume. I load 
> this image into a (3 dimensional) buffer with  itk::ImportImageFilter, 
> then i apply the filter and eventually write everything back to a 
> buffer. When i run my program to test my code (no compile errors) , the 
> program throws a breakpoint when the buffer gets applied,
> 
> The code stops at :  
> this->GetMultiThreader()->SetNumberOfThreads(this->GetNumberOfThreads());
> in file:  itkDenseFiniteDifferenceImageFilter.txx
> the output says : "Access violation reading location"
> 
> i tried to set the number of threads manually but the error stays.
> 
> Anyone has any idea what could be the error or where to look for a 
> solution? I added my code at the bottom , i use VS2005 and itk 3.4.0
> 
> thx
> 
> ------------------------------           CODE      
> ----------------------------------------------------------
> 
> typedef short InputPixelType;
> const unsigned int Dimension = 3;
> typedef itk::Image< InputPixelType, Dimension > ImageType;
> 
> typedef itk::ImportImageFilter< InputPixelType, Dimension >   
> ImportFilterType;
> 
> ImportFilterType::Pointer importFilter = ImportFilterType::New();    
> ImportFilterType::SizeType size = {{ image->imageSize()[0], 
> image->imageSize()[1], image->imageSize()[2] }};
> ImportFilterType::IndexType index = {{ 0, 0, 0 }};
> 
> ImportFilterType::RegionType region;
> region.SetSize(  size  );
> region.SetIndex( index );
> importFilter->SetRegion( region );
> 
> double origin[ Dimension ];
> origin[0] = 0;    // X coordinate origin[1] = 0;    // Y coordinate
> origin[2] = 0;    // Z coordinate
> importFilter->SetOrigin( origin );
> 
> double spacing[ Dimension ];
> spacing[0] = 0;    // along X direction
> spacing[1] = 0;    // along Y direction
> spacing[2] = 0;    // along Z direction
> importFilter->SetSpacing( spacing );
> 
> const unsigned int numberOfPixels =  size[0] * size[1] * size[2];
> InputPixelType * localBuffer = new InputPixelType[ numberOfPixels ];
> image->loadSlices(0,160, (char *) localBuffer);
> 
> const bool importImageFilterWillOwnTheBuffer = true;
> importFilter->SetImportPointer( localBuffer, numberOfPixels, 
> importImageFilterWillOwnTheBuffer );
> 
> typedef  float OutputPixelType;
> typedef itk::Image< InputPixelType,  Dimension >   InputImageType;
> typedef itk::Image< OutputPixelType, Dimension >   OutputImageType;
> 
> typedef itk::CurvatureFlowImageFilter< InputImageType, OutputImageType 
>  >  FilterType;
> FilterType::Pointer filter = FilterType::New();
> 
> filter->SetInput( importFilter->GetOutput() );
> 
> const unsigned int numberOfIterations = 10;
> const double       timeStep = 0.065 ;
> 
> filter->SetNumberOfIterations( numberOfIterations );
> filter->SetTimeStep( timeStep );
>   try
> {
>      filter->Update();   //here the breakpoint occurs
> }
> catch( itk::ExceptionObject & err )
>    {
>        std::cerr << "ExceptionObject caught !" << std::endl;
>        std::cerr << err << std::endl;
> }
> 
> // ... then i write the image back to a buffer
> 
> _______________________________________________
> 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