/*=========================================================================
Program: vv http://www.creatis.insa-lyon.fr/rio/vv
- Authors belong to:
+ Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
#ifndef ITKBSPLINEINTERPOLATEIMAGEFUNCTIONWITHLUT_H
#define ITKBSPLINEINTERPOLATEIMAGEFUNCTIONWITHLUT_H
-/* =========================================================================
-
- @file itkBSplineInterpolateImageFunctionWithLUT.h
- @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
-
- Copyright (c)
- * CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image).
- All rights reserved. See Doc/License.txt or
- http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
- * Léon Bérard cancer center, 28 rue Laënnec, 69373 Lyon cedex 08, France
- * http://www.creatis.insa-lyon.fr/rio
-
- 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 "itkBSplineWeightsCalculator.h"
-//#include "clitkTimer.h"
#include <itkBSplineInterpolateImageFunction.h>
+#include "clitkCommon.h"
+
namespace itk {
template <
itkNewMacro(Self);
/** Setting LUT sampling (one parameters by dimension or a single
- one for all dim); Default is 10 (for each dim) **/
+ one for all dim); Default is 20 (for each dim) **/
void SetLUTSamplingFactor(const int& s);
void SetLUTSamplingFactors(const SizeType& s);
void SetSplineOrders(const SizeType & SplineOrders);
/** Set the input image. This must be set by the user. */
- virtual void SetInputImage(const TImageType * inputData);
- //void SetOutputSpacing(const SpacingType & s);
- //void SetInputImageIsCoefficient(bool inputIsCoef) { mInputIsCoef = inputIsCoef; }
+ virtual void SetInputImage(const TImageType * inputData) ITK_OVERRIDE;
+
+ /** Evaluate the function at a ContinuousIndex position.
+ Overwritten for taking LUT into account (RP: multi-threading-compatible version,
+ the threadID is actually ignored) */
+ virtual OutputType EvaluateAtContinuousIndex(const ContinuousIndexType & index, unsigned int /* threadID */ ) const ITK_OVERRIDE
+ {
+ return this->EvaluateAtContinuousIndex( index );
+ }
/** Evaluate the function at a ContinuousIndex position.
Overwritten for taking LUT into account */
- virtual OutputType EvaluateAtContinuousIndex(const ContinuousIndexType & index ) const;
+ virtual OutputType EvaluateAtContinuousIndex(const ContinuousIndexType & index ) const ITK_OVERRIDE;
/** Static convenient functions to compute BSpline weights for
various order, dimension, sampling ... **/
static void ComputeBlendingWeights(int dim, int order, int sampling, TCoefficientType * weights);
- /** Timer giving computation time for coefficients computation **/
- // const clitk::Timer & GetCoefTimer() const { return mCoefficientTimer; }
-
- /** Get estimated error **/
-
- double GetIntrinsicError() const { return *mIntrinsecError; }
- long GetNumberOfError() const { return *mNumberOfError; }
- double GetIntrinsicErrorMax() const { return *mIntrinsecErrorMax; }
-
protected:
BSplineInterpolateImageFunctionWithLUT();
~BSplineInterpolateImageFunctionWithLUT(){;}
/** Sampling factors for LUT weights **/
SizeType mSamplingFactors;
bool mWeightsAreUpToDate;
- //SpacingType mOutputSpacing;
-
- double * mIntrinsecError;
- double * mIntrinsecErrorMax;
- long * mNumberOfError;
-
- //JV add iscoeff, and splineorders
- // bool mInputIsCoef;
SizeType mSplineOrders;
// Filter to compute weights
void UpdateWeightsProperties();
IndexType GetSampleIndexOfPixelPosition(const ContinuousIndexType & x, IndexType & EvaluateIndex) const;
- // Timing options
- // clitk::Timer mCoefficientTimer;
- // clitk::Timer mLUTTimer;
- bool mTimerEnabled;
-
- //JV threadsafety: everything on the stack
- //std::vector<int> mCorrectedSupportOffset;
- //std::vector<IndexType> mCorrectedSupportIndex;
- TCoefficientType * coef;
}; // end class itkBSplineInterpolateImageFunctionWithLUT
} // end namespace