| View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||
| 0004893 | ITK | public | 2007-04-17 07:21 | 2007-09-10 12:33 | |||||
| Reporter | Ralf Floca | ||||||||
| Assigned To | Luis Ibanez | ||||||||
| Priority | low | Severity | feature | Reproducibility | always | ||||
| Status | closed | Resolution | fixed | ||||||
| Platform | OS | OS Version | |||||||
| Product Version | |||||||||
| Target Version | Fixed in Version | ||||||||
| Summary | 0004893: itk::RegularStepGradientDescentBaseOptimizer doesn't check validity of m_GradientMagnitudeTolerance | ||||||||
| Description | The itk::RegularStepGradientDescentBaseOptimizer doesn't check validity of the member m_GradientMagnitudeTolerance before starting the optimization. If an invalid (negative) tolerance is set, it is possible that the optimizer will have a gradientMagnitude of 0.0 but won’t stop. This causes the itk::RegularStepGradientDescentOptimizer to compute a factor of -1.#INF in itk::RegularStepGradientDescentOptimizer::AdvanceOneStep and therefore undefined transformation parameters as a step result. This causes e.g. an application to crash when the resulting transformation is used by a metric (like in image registration), because transformed points are undefined too (see also Bug 0004892). I would suggest that itk::RegularStepGradientDescentBaseOptimizer implements a validity check in itk::RegularStepGradientDescentBaseOptimizer::StartOptimization() like: if( m_GradientMagnitudeTolerance < 0.0 ) { itkExceptionMacro(<< "Gradient magnitude tolerance must be greater or equal 0.0. Current value is " << m_GradientMagnitudeTolerance ); | ||||||||
| Tags | No tags attached. | ||||||||
| Resolution Date | |||||||||
| Sprint | |||||||||
| Sprint Status | |||||||||
| Attached Files | |||||||||
| Relationships | |
| Relationships |
| Notes | |
|
(0007338) Ralf Floca (reporter) 2007-04-17 07:25 |
Forgot an brace on the suggested solution. Correct version: if( m_GradientMagnitudeTolerance < 0.0 ) { itkExceptionMacro(<< "Gradient magnitude tolerance must be greater or equal 0.0. Current value is " << m_GradientMagnitudeTolerance ); } |
|
(0008906) Luis Ibanez (manager) 2007-09-10 12:23 |
The validity check has been added to the StartOptimization() method: http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Numerics/itkRegularStepGradientDescentBaseOptimizer.cxx?root=Insight&sortby=date&r2=1.24&r1=1.23 [^] |
|
(0008907) Luis Ibanez (manager) 2007-09-10 12:32 |
A test for the exception was also added to Insight/Testing/Code/Numerics/ itkRegularStepGradientDescentOptimizerTest.cxx http://www.itk.org/cgi-bin/viewcvs.cgi/Testing/Code/Numerics/itkRegularStepGradientDescentOptimizerTest.cxx?root=Insight&sortby=date&r2=1.23&r1=1.22 [^] |
|
(0008908) Luis Ibanez (manager) 2007-09-10 12:33 |
The modifications were committed and the tests are passing. |
| Notes |
| Issue History | |||
| Date Modified | Username | Field | Change |
| 2007-09-10 12:23 | Luis Ibanez | Note Added: 0008906 | |
| 2007-09-10 12:32 | Luis Ibanez | Note Added: 0008907 | |
| 2007-09-10 12:33 | Luis Ibanez | Status | assigned => closed |
| 2007-09-10 12:33 | Luis Ibanez | Note Added: 0008908 | |
| 2007-09-10 12:33 | Luis Ibanez | Resolution | open => fixed |
| Issue History |
| Copyright © 2000 - 2018 MantisBT Team |