View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0005081ITKpublic2007-05-23 11:582010-11-07 00:47
ReporterFrank Miller 
Assigned ToLuis Ibanez 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0005081: Derivative of ImageToImageMetrics in OrientedImage case
DescriptionThe ImageToImageMetrics do not calculate their derivative properly with respect to physical coordinates. This is only the case when the moving image has an orientation matrix that is not the identity. As a consequence, registration is impossible when using images of type OrientedImage.

A simple solution is to replace the gradient of the moving image with the gradient mapped by the direction matrix in each of the ImageToImageMetrics that provide a derivative.

However, perhaps a better solution would be to change the CentralDifferenceImageFunction (and others?) so that the gradient is oriented properly.

I have attached a patch that implements the simple solution in the following metrics.

TagsNo tags attached.
Resolution Date
Sprint Statusbacklog
Attached Filesdiff file icon fix.diff [^] (3,533 bytes) 1969-12-31 19:00 [Show Content]


Luis Ibanez (manager)
2007-10-03 08:30

We have discussed this problem at various tcons and we have converged to the following solution

1) Add to itk::Image a method for converting IndexGradients to PhysicalSpaceGradients. These method will apply the rotation indicated by the direction cosines

2) Add boolean flags to the classes that compute Gradients
   (e.g. CentralDifferences, GradientRecursiveGaussian, GradientFilter)
   to enable the use (or not) of the image direction in the gradient
   computation. The flags will be off by default (for backwards-compatibility).
   When enabled the flags will invoke the method in the image class (1) for
   converting index gradients to physical space gradients. In this way we will
   prevent users of normal images to have to pay for computations that they dont

3) In the ImageMetrics, turn on the use of the boolean flags in the helper
   classes (2) used for computing gradients. In this way, registration will
   be computed consistently.

4) Add a CMake variable to enable the use of all the above, and in that
   manner preserve backward-compatibility by offering by default the
   wrong behaviour.
Luis Ibanez (manager)
2007-10-03 08:55

A page describing this approach [^]

has been added to the proposals Wiki page: [^]
Luis Ibanez (manager)
2008-02-01 13:36

The reason for not moving the TransformIndexToPhysicalPoint family of methods to the ImageBase class is that it will require them to be virtual and templated methods simultaneously.
Luis Ibanez (manager)
2010-11-07 00:47

This has now been fixed.

The Metrics now instruct the derivative calculator helper classes to take the orientation of the image into account.

 Issue History
Date Modified Username Field Change
2007-10-03 08:24 Luis Ibanez Assigned To Jim Miller => Luis Ibanez
2007-10-03 08:30 Luis Ibanez Note Added: 0009365
2007-10-03 08:30 Luis Ibanez Status assigned => acknowledged
2007-10-03 08:55 Luis Ibanez Note Added: 0009366
2008-02-01 13:36 Luis Ibanez Note Added: 0010366
2008-08-11 17:35 Rupert Brooks Note Added: 0012986
2008-08-11 17:36 Rupert Brooks Note Deleted: 0012986
2010-11-07 00:47 Luis Ibanez Sprint Status => backlog
2010-11-07 00:47 Luis Ibanez Note Added: 0022966
2010-11-07 00:47 Luis Ibanez Status acknowledged => closed
2010-11-07 00:47 Luis Ibanez Resolution open => fixed

Copyright © 2000 - 2018 MantisBT Team