[Insight-users] ITK filter dimensions.
Simon Alexander
skalexander at gmail.com
Mon Mar 3 13:51:32 EST 2014
Fabian,
You can use itk::ImageIOFactory::CreateImageIO to create an IO object
that will read metadata about your image, for example it will have a
GetNumberOfDimensions method.
You'll have to specialize your template instantiations on the dimensions
you need then.
e.g., something like:
auto imageIO =
itk::ImageIOFactory::CreateImageIO(filename,itk::ImageIOFactory::ReadMode);
imageIO->SetFileName(filename);
imageIO->ReadImageInformation();
auto dimensions = imageIO->GetNumberOfDimensions();
switch (dimensions)
{
case 2:
SwitchOnDimension<2U>(any args you need);
break;
case 3:
SwitchOnDimension<3U>(any args you need);
break;
...
}
and somewhere you have
template <unsigned int Dimension>
void SwitchOnDimension(any args you need)
{
//something like this
#typedef itk::Image<double, Dimension> ImageType
... etc.
}
Above isn't tested but you get the rough idea.
On Mon, Mar 3, 2014 at 1:46 PM, Simon Alexander <skalexander at gmail.com>wrote:
> Fabian,
>
> You can use itk::ImageIOFactory::CreateImageIO to create an IO object
> that will read metadata about your image, for example it will have a
> GetNumberOfDimensions method.
>
> You'll have to specialize your template instantiations on the dimensions
> you need then.
>
> e.g., something like:
>
> auto imageIO =
> itk::ImageIOFactory::CreateImageIO(filename,itk::ImageIOFactory::ReadMode);
> imageIO->SetFileName(filename);
> imageIO->ReadImageInformation();
> auto dimensions = imageIO->GetNumberOfDimensions();
>
> switch (dimensions)
> {
> case 2:
> SwitchOnComponent<2U>(config, identity, info);
> break;
> case 3:
> SwitchOnComponent<3U>(config, identity, info);
> break;
>
>
>
>
>
>
> On Mon, Mar 3, 2014 at 1:32 PM, Fabian Torres <fabian.trobles at gmail.com>wrote:
>
>> Hi all.
>>
>> I´m making a filter in ITK for surface enhancement. This filter is an
>> itkImageToImageFilter.
>>
>> Sometimes I will use this filter with 2D images an sometimes with 3D
>> images. The thing is that inside this filter I have to use some other itk
>> components and I need to specify the number of dimensions I´m using. So
>> this is a problem since itk does not let me use variables to specify this.
>>
>> I´m using the next for 3D:
>>
>> typedef itk::Vector< PixelType, 3 > VectorPixelType;
>> typedef itk::Vector< VectorPixelType, 3 > MatrixPixelType;
>> typedef itk::SymmetricSecondRankTensor< PixelType, 3 > TensorPixelType;
>>
>> typedef itk::Image< TensorPixelType, 3 > TensorImageType;
>>
>> but I also need to work with 2D and use the same filter.
>>
>> Is there a way to know the number of dimensions of the filter input
>> image, and declare the typedefs using this value?
>>
>>
>>
>> --
>> Fabián Torres Robles
>> Maestria en Ciencias en Ingeniería Electrónica
>> Ingeniería en Sistemas Electrónicos
>> tel. 58081280, 0445534661338
>> e-mail fabian.trobles at gmail.com, dae.wong at gmail.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://www.itk.org/mailman/listinfo/insight-users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20140303/b42e9b6b/attachment.html>
More information about the Insight-users
mailing list