diff --git a/Modules/DiffusionImaging/DiffusionCore/Algorithms/itkDwiGradientLengthCorrectionFilter.cpp b/Modules/DiffusionImaging/DiffusionCore/Algorithms/itkDwiGradientLengthCorrectionFilter.cpp index 343210387b..aacbd0a8c4 100644 --- a/Modules/DiffusionImaging/DiffusionCore/Algorithms/itkDwiGradientLengthCorrectionFilter.cpp +++ b/Modules/DiffusionImaging/DiffusionCore/Algorithms/itkDwiGradientLengthCorrectionFilter.cpp @@ -1,67 +1,67 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ /*========================================================================= Program: Tensor ToolKit - TTK Module: $URL: svn://scm.gforge.inria.fr/svn/ttk/trunk/Algorithms/itkElectrostaticRepulsionDiffusionGradientReductionFilter.txx $ Language: C++ Date: $Date: 2010-06-07 13:39:13 +0200 (Mo, 07 Jun 2010) $ Version: $Revision: 68 $ Copyright (c) INRIA 2010. All rights reserved. See LICENSE.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "itkDwiGradientLengthCorrectionFilter.h" itk::DwiGradientLengthCorrectionFilter::DwiGradientLengthCorrectionFilter() : m_ReferenceBValue(0) , m_RoundingValue(0) , m_ReferenceGradientDirectionContainer(0) , m_OutputGradientDirectionContainer(0) { } itk::DwiGradientLengthCorrectionFilter::~DwiGradientLengthCorrectionFilter() { } void itk::DwiGradientLengthCorrectionFilter::GenerateData() { if(m_ReferenceBValue == 0 || m_RoundingValue == 0 || m_ReferenceGradientDirectionContainer.IsNull()) itkExceptionMacro("Wrong initialization"); m_OutputGradientDirectionContainer = GradientDirectionContainerType::New(); std::cout << m_ReferenceBValue << std::endl; GradientDirectionContainerType::ConstIterator it = m_ReferenceGradientDirectionContainer->Begin(); for(; it != m_ReferenceGradientDirectionContainer->End(); ++it) { const double twonorm = it.Value().two_norm(); const double currentBValue = m_ReferenceBValue*twonorm*twonorm ; const double roundedBValue = int((currentBValue + 0.5 * m_RoundingValue)/m_RoundingValue)*m_RoundingValue; - const double f = roundedBValue/m_ReferenceBValue; + const double f = std::sqrt(roundedBValue/m_ReferenceBValue); GradientDirectionType grad = it.Value(); m_OutputGradientDirectionContainer->push_back( grad.normalize() * f ); } }