[Insight-developers] using VectorInterpolateImageFunction with
images of CovariantVectors
Joshua Cates
cates@sci.utah.edu
Tue, 12 Nov 2002 14:35:11 -0700 (MST)
Hi Luis,
Sorry, my email was not very clear. What I'm after is the functionality
you refer to in the second half of your email: support for all
FixedArrays. I happen to be using CovariantVectors in my particular
application, but I need to represent them and interpolate as FixedArrays
in a parent class.
Can't we just change
template <typename T>
struct GetVectorDimension
{
itkStaticConstMacro(VectorDimension, int, T::VectorDimension);
};
to
template <typename T>
struct GetVectorDimension
{
itkStaticConstMacro(VectorDimension, int, T::Length);
};
and
class ITK_EXPORT VectorInterpolateImageFunction :
public ImageFunction<
TInputImage,
Vector< ITK_TYPENAME NumericTraits<typename
TPixelType::ValueType>::RealType,
::itk::GetVectorDimension<TPixelType>::VectorDimension>,
TCoordRep >
to
class ITK_EXPORT VectorInterpolateImageFunction :
public ImageFunction<
TInputImage,
FixedArray< ITK_TYPENAME NumericTraits<typename
TPixelType::ValueType>::RealType,
::itk::GetVectorDimension<TPixelType>::VectorDimension>,
TCoordRep >
Josh.
______________________________
Josh Cates
School of Computer Science
University of Utah
Email: cates@sci.utah.edu
Phone: (801) 587-7697
URL: www.cs.utk.edu/~cates
On Tue, 12 Nov 2002, Luis Ibanez wrote:
>
>
> Hi Josh,
>
> The itk::CovariantVector class was recently modified in order
> to make possible its use with the VectorInterpolateImageFunction.
> ( this happened on 10/23/02 )
>
>
> The difficulty was that VectorInterpolateImageFunction access
> the dimension as "VectorDimension" but the CovariantVector
> used to call its dimension = "CovariantVectorDimension".
>
> The header was then changed to make this "VectorDimension".
>
>
> It should be working now....
> are you testing this with a recent checkout ?
>
>
> As you said, it is easy to generalize the VectorInterpolator
> to accept any Array (actually FixedArray). It will be a matter
> of deciding how to name the Dimension.
>
> Vector and CovariantVector derive both from FixedArray.
>
> FixedArray calls its dimension "Length". We could add
> another enum ( / static int) to have a "Dimension"
> that could be used by the interpolator.
>
>
> BTW that will be quite helpful with a pending problem
> we have in the registration framework. Currently we
> cannot register RGB images. The first obstacle for
> this type of registration is the lack of interpolators
> that can act on RGBpixels. (the second obstacle is the
> lack of image metrics).
>
> Conveniently RGBPixel<> already derives from FixedArray,
> so generalizing the VectorInterpolateImageFunction to
> accept FixedArrays will solve both problems.
>
>
> Does anybody see a possible conflict with these changes ?
>
>
> Luis
>
>
>
> =====================================================
>
> Joshua Cates wrote:
>
> > Hi,
> >
> > There seems to be no way to use the VectorInterpolateImageFunction
> > subclasses with images of CovariantVectors (FixedArrays), i.e. the output
> > of GradientImageFilter. Does anyone have a workaround for this?
> >
> > At first glance, looks like VectorInterpolateImageFunction could be
> > rewritten to accept any FixedArray, instead of limiting to just
> > itk::Vector. It could then support itk::Vector and itk::CovariantVector.
> >
> > Thanks,
> >
> > Josh.
> >
> > ______________________________
> > Josh Cates
> > School of Computer Science
> > University of Utah
> > Email: cates@sci.utah.edu
> > Phone: (801) 587-7697
> > URL: www.cs.utk.edu/~cates
> >
> >
> >
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-developers
> >
> >
>
>
>