[Insight-developers] Problem with ImageAdaptors

Luis Ibanez luis.ibanez at kitware.com
Tue Jul 18 17:58:17 EDT 2006



Hi Henning,


Well, this is an "inconvenient" bug...


Here is what happens:

    ImageAdaptor<T,N>  derives from ImageBase<N>
    Image<T,N>         derives from ImageBase<N>
    OrientedImage<T,N> derives from ImageBase<N>

The difference between the OrientedImage and the Image
is the way they implement the methods

    * TransformPhysicalPointToContinuousIndex
    * TransformPhysicalPointToIndex
    * TransformIndexToPhysicalPoint

Where N is the Image Dimension and T is the PixelType.


One way to fix the "bug" of ImageAdaptors could be
to move the Transform method up to the ImageBase,
but that will ruin the mechanism established for
the OrientedImage.

Another way is to duplicate the implementation of
the Transform methods of the Image into the
ImageAdaptor.  That's probably the simplest solution,
at this point and something that you could do in
your local copy of ITK.

For the long term of ITK, the appropriate solution
is probably to move the implementation of the
Transform method to the ImageBase and pay some
performance penalty in those images that are
axis-aligned.


In summary, the immediate solution for your problem
is to copy the methods from the Image into the
ImageAdaptor.

The bad news is that even if you copy the methods
in the ImageAdaptor, it is unlikely that you will
be able to use ImageInterpolators over image adaptors
because many of them my require neighborhood operations.

As we describe in the previous email, the PixelAccessor
trick used by the ImageAdaptors is not suitable for getting
neighborhoods of the pixels. Some interpolators may work,
as long as they don't use an ITK neighborhood class inside.



    Regards,



       Luis




----------------------
Henning Meyer wrote:
> When trying to use an image adaptor as input to a filter which uses an
> InterpolateImageFunction, there is an compiler error:
> 
> C:\devel\Visual
> Studio\libs\InsightToolkit-2.6.0\Code\Common\itkInterpolateImageFunction.h(89): 
> 
> error C2039: 'TransformPhysicalPointToContinuousIndex': Ist kein
> Element von 'itk::ImageAdaptor<TImage,TAccessor>'
>        with
>        [
>            TImage=DistImageType,
>            TAccessor=UpperThresholdAccessor
>        ]
> 
> 
> I think this is a bug, but the fix should be pretty easy.
> 
> Henning
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
> 
> 




More information about the Insight-developers mailing list