[Insight-users] Gradient Difference Metric

Wes Turner wes.turner at kitware.com
Thu Jun 26 10:13:31 EDT 2008


Aviv,

I recognize that you spent unnecessary time fighting with an unexpected
implementation of a metric, and are looking for someone to fix the issue.
One of the great benefits of the ITK software process is that every filter
should have a test and the test should show how to use the filter.  In the
case of the GradientDifferenceImageToImageMetric, the test does not
perfectly address your issue in that it does not actually set up and use the
metric in the context of an optimizer, however it does evaluate the metric
at various translations of the moving and fixed image ... the same type of
evaulations that would be generated by an optimizer exploring the space
around a solution.  The output from the test clearly shows that the metric
is at a maximum when the two images are fully aligned (offset [0,0] - see
below for the test output.)  Again, I realize that this is not optimal from
the standpoint of plugging filters together in an *ad hoc* fashion, but when
you run into a problem, it is important to look for and understand the tests
of the code.  These tests can provide important clues as to how your
particular usage differs from the expected usage of the code, as well as
giving you insight into parameter settings, etc.  For this metric, the
source for the test can be found at
"Insight\Testing\Code\Algorithm\itkGradientDifferenceImageToImageMetricTest.cxx"
and the test can be executed by running "itkAlgorithmsTests2" and selecting
option 4 (after building with Testing/Examples On).

I realize that this won't help your current frustration, but as you continue
to use ITK, you will find that this is a good habit to cultivate.  Good
luck!

- Wes

Output form the itkGradientDifferenceImageToImageMetricTest:

To run a test, enter the test number: 4
Parameters: [-10, -10], Value: 16315.6, Derivatives: [7875.2, 7875.2]
Parameters: [-5, -10], Value: 16818.4, Derivatives: [17033.4, 8163.25]
Parameters: [0, -10], Value: 17279, Derivatives: [83531.2, 19402.1]
Parameters: [5, -10], Value: 16869.3, Derivatives: [-114.142, 16730.5]
Parameters: [10, -10], Value: 16334.2, Derivatives: [-93.3736, 11243.7]
Parameters: [-10, -5], Value: 16818.4, Derivatives: [8163.25, 17033.4]
Parameters: [-5, -5], Value: 17732.6, Derivatives: [18762.5, 18762.5]
Parameters: [0, -5], Value: 18478, Derivatives: [-9044.31, 54419.4]
Parameters: [5, -5], Value: 17777.6, Derivatives: [-190.489, 40302.4]
Parameters: [10, -5], Value: 16905.5, Derivatives: [-148.262, 21012.2]
Parameters: [-10, 0], Value: 17279, Derivatives: [19402.1, 83531.2]
Parameters: [-5, 0], Value: 18478, Derivatives: [54419.4, -9044.32]
Parameters: [0, 0], Value: 20000, Derivatives: [458406, 458406]
Parameters: [5, 0], Value: 18839.7, Derivatives: [-317.508, 271044]
Parameters: [10, 0], Value: 17453.9, Derivatives: [-223.557, 105338]
Parameters: [-10, 5], Value: 16869.3, Derivatives: [16730.5, -114.142]
Parameters: [-5, 5], Value: 17777.6, Derivatives: [40302.4, -190.489]
Parameters: [0, 5], Value: 18839.7, Derivatives: [271044, -317.508]
Parameters: [5, 5], Value: 18024.8, Derivatives: [-225.825, -225.825]
Parameters: [10, 5], Value: 17003.7, Derivatives: [-171.369, -127.79]
Parameters: [-10, 10], Value: 16334.2, Derivatives: [11243.7, -93.3736]
Parameters: [-5, 10], Value: 16905.5, Derivatives: [21012.2, -148.262]
Parameters: [0, 10], Value: 17453.9, Derivatives: [105338, -223.557]
Parameters: [5, 10], Value: 17003.7, Derivatives: [-127.79, -171.369]
Parameters: [10, 10], Value: 16401.4, Derivatives: [-105.449, -105.449]
GradientDifferenceImageToImageMetric (01685300)

On Thu, Jun 26, 2008 at 8:40 AM, Aviv Hurvitz <aviv.hurvitz at gmail.com>
wrote:

> I saw that in the docs.
>
> In my opinion that bit, and the cited paper, are not enough for users to
> understand what needs to be done. The fact is that it confused me, and
> apparently others as well, and the cost of this confusion was big.
>
> I suggested a few solutions:
> 1. Change the metric to go down.
> 2. Add a flag to all image metrics that says which way they go.
> 3. Clarify the metric direction in the docs.
>
> You say #1 is impossible since it might break old code, and I agree.
> (reluctantly... :)
> #2 is best, I think, since it would allow both kinds of metrics to be
> plugged into the same framework.
> #3 is probably worst, because it would only solve the problem in this
> particular metric, and it would still leave room for user errors.
>
> Having read the code, I got the feeling that no one has used this metric
> successfully. Sadly, I can't actually PROVE it now with a smoking gun. I'm
> curious to know if there is any reader out there who uses this metric. I'm
> not saying that we have a license to break it, I'm just giving you some
> background about how I feel about this metric. In my opinion, it's not on
> par with the rest of ITK, with regards to documentation, test cases, and
> code quality.
>
> I wish this thread wouldn't end with the conclusion that everything is
> perfect just the way it is. Would someone please acknowledge that there is a
> problem?
>
> Regards,
>
> - Aviv
>
>
>
> On Thu, Jun 26, 2008 at 1:17 PM, Hauke Heibel <heibel at cs.tum.edu> wrote:
>
>> Aviv Hurvitz wrote:
>>
>>> All the metrics I know in ITK go "down". There was no special
>>> documentation, ...
>>>
>> As a matter of fact there is. Take a look at
>> http://www.itk.org/Doxygen34/html/classitk_1_1GradientDifferenceImageToImageMetric.html
>> It states "after passing the squared difference through a function of type
>> 1/(1+x)".
>>
>> And I would not expect the functionality to change since there are many
>> people who got the usage right and whose code would break if the class's
>> functionality would change.
>>
>> - Hauke
>>
>> --
>> Tim Hauke Heibel
>> Computer Aided Medical Procedures (CAMP)
>> fon: +49 89 289 19427
>> fax: +49 89 289 17059
>>
>>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
>


-- 
Wesley D. Turner, Ph.D.
Kitware, Inc.
R&D Engineer
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x120
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20080626/5973c9a8/attachment-0001.htm>


More information about the Insight-users mailing list