[ITK-users] extracting each component of the GradientRecursiveGaussianImageFilter
Pol Monsó Purtí
lluna.nova at gmail.com
Fri Apr 17 12:49:44 EDT 2015
Until somebody can explain why the output of the aforementioned filter has
the same values on each component, here's how to get the gradient on each
dimension:
//features
typedef itk::RecursiveGaussianImageFilter< TImageType,
GradientImageType > GradientFilterType;
typename GradientFilterType::Pointer gradientFilter =
GradientFilterType::New();
gradientFilter->SetInput(imageROIextractor->GetOutput());
float sigma = 3.5;
gradientFilter->SetSigma( sigma );
gradientFilter->SetFirstOrder();
std::vector< typename GradientImageType::Pointer >
gradients(TImageType::ImageDimension);
try {
for(unsigned int dim = 0; dim < TImageType::ImageDimension; dim++) {
gradientFilter->SetDirection(dim);
gradientFilter->Update();
gradients[dim] = gradientFilter->GetOutput();
gradients[dim]->DisconnectPipeline();
}
} catch( itk::ExceptionObject & error ) {
std::cerr << __FILE__ << ":" << __LINE__ << " Error: " << error <<
std::endl;
return FUCKEDUP;
}
2015-04-17 16:01 GMT+02:00 Pol Monsó Purtí <lluna.nova at gmail.com>:
> Apparently, even if the default is a covariantVector of dimension
> ImageDimension (3), the three components of each "pixel" have the same
> value. So the question is still there, how do I retrieve the gradient on
> each dimension of an image?
>
> 2015-04-16 15:30 GMT+02:00 Pol Monsó Purtí <lluna.nova at gmail.com>:
>
>> Hello all,
>>
>> The declaration of thefilter is
>>
>> template<typename TInputImage, typename TOutputImage = Image<
>> CovariantVector< typename NumericTraits< typename TInputImage::PixelType
>> >::RealType, TInputImage::ImageDimension >, TInputImage::ImageDimension >>
>>
>> In my case, ImageDimension = 3
>>
>> So I have two questions.
>>
>> Question number 1:
>> Does the output image hold, for each pixel, the three derivatives? Can
>> they be accessed by
>>
>> it.Get()[0] it.Get()[1] it.Get()[2]
>>
>> where it is itk::ImageRegionIterator< GradientImageType > it(
>> gradientImage,
>> gradientImage->GetRequestedRegion() );
>>
>> ?
>>
>> Question number 2: (just for curiosity)
>> what happens when TOutputImage = Image< PixelType, Dimension> ?
>> and what happens when you create a writer with the default TOutputImage and
>> write to disk? Do the derivatives end in different channels or a magnitude
>> is computed?
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20150417/769c3e6f/attachment.html>
More information about the Insight-users
mailing list