[ITK-users] Problems Using GPU Filters

Emiliano Beronich emilianoberonich at gmail.com
Fri Jun 30 07:52:48 EDT 2017


Hi Andarahoo,

GPUBinaryThresholdImageFilter should be used with GPUImage.
Try defining:
typedef itk::GPUImage<float, 3> Image;

There is a cast in the method GPUUnaryFunctorImageFilter::GenerateData
(ancester of GPUBinaryThresholdImageFilter) which may be the cause of the
null pointer:

  typename GPUOutputImage::Pointer otPtr =  dynamic_cast< GPUOutputImage *
>( this->ProcessObject::GetOutput(0) );


Cheers,
Emiliano



2017-06-29 23:19 GMT-03:00 Andaharoo <andx_roo at live.com>:

> I've been looking to use some of the GPU filters provided by ITK recently.
> Namely the GPU anisotropic filter and binary threshold filter. I downloaded
> CUDA and ran cmake again with use gpu on flag and it found all my cuda
> stuff
> automatically. Everything appeared to build fine. I then looked up some
> implementation details and examples but couldn't really find any. There was
> one itk powerpoint from a long while ago that seemed to suggest I'd be able
> to just put a gpu filter in the pipeline like any other filter. I liked
> this
> implementation but it didn't work. So right now I have a pipeline that
> looks
> like the following in order to load images with vtk, process with itk, and
> then render with vtk.
>
> vtkToItkFilter -> array of ImageToImageFilters all connected ->
> itkToVtkFilter
>
> I tried to stick the GPUBinaryThresholdImageFilter in the array like I
> would
> a normal filter connecting it appropriately and calling update but it broke
> throwing a read access violation on line 46 of the GPUGenerateData function
> in itkGPUUnaryFunctorImageFilter.hxx saying otPtr.m_Pointer was nullptr.
>
> My code goes a little something like this:
>
> typedef itk::Image<float, 3> Image;
> typedef itk::GPUBinaryThresholdImageFilter<Image, Image>
> GPUBinaryThresholdFilter;
> GPUBinaryThresholdFilter::Pointer filter = GPUBinaryThresholdFilter::New(
> );
> double* range = pipe->GetOutput()->GetScalarRange();
> filter->SetLowerThreshold(filterWidget->getDoubleFromSlider("Lower"));
> filter->SetUpperThreshold(filterWidget->getDoubleFromSlider("Upper"));
> filter->SetOutsideValue(range[0]);
> filter->SetInsideValue(range[1]);
> filters.push_back(filter);
> if (filters.size() > 0)
>         filter->SetInput(filters.back()->GetOutput());
> else
>         filter->SetInput(vtkToItkLoader->GetOutput());
> itkToVtkFilter->SetInput(filters.back()->GetOutput());
>
>
>
> --
> View this message in context: http://itk-insight-users.
> 2283740.n2.nabble.com/Problems-Using-GPU-Filters-tp7590036.html
> Sent from the ITK Insight 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20170630/11d83c1a/attachment.html>


More information about the Insight-users mailing list