Proposals:Decoupling ImageMetric from BSplineDeformableTransform

From KitwarePublic
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The Problem

  • The ImageToImageMetric knows too much
    • It is aware of the
      • BSplineDeformableTransform
      • BSplineIntepolateImageFunction
    • It performs dynamic_casting to discover the type of the Transform and Interpolator
    • It caches several arrays for the BSplineDeformableTransform
      • The caching has the following problems
        • It is not optional (can't be turned off)
        • It is memory consuming (about 3 Gigabytes)
        • It break class encapsulation

The Proposed Solution

  • Add a TransformCacher class
    • A default cacher will not do anything
    • A cacher for the BSplineDeformableTransform will take over the code that is currently in the ImageToImageMetric
    • More sophisticated cachers could be added
  • The Transform class will use the default cacher
  • The Metric will
    • request the Transform for its cacher (at run time)
    • use the cacher for passing a list of points to be mapped, and then map one by one using an index