28 #ifndef __itkMultiGaussianImageSource_h
29 #define __itkMultiGaussianImageSource_h
31 #include "itkImageSource.h"
32 #include "itkNumericTraits.h"
33 #include "itkImageRegionIteratorWithIndex.h"
34 #include "itkImageFileWriter.h"
35 #include <itkMapContainer.h>
193 template<
typename TOutputImage >
213 typedef typename TOutputImage::SizeType
SizeType;
241 virtual void SetSize(SizeValueArrayType sizeArray);
245 virtual void SetSpacing(SpacingValueArrayType spacingArray);
249 virtual void SetOrigin(PointValueArrayType originArray);
252 virtual unsigned int GetNumberOfGaussians()
const;
254 virtual void SetNumberOfGausssians(
unsigned int );
261 virtual const IndexType GetSphereMidpoint()
const;
263 virtual double MultiGaussianFunctionValueAtPoint(
double ,
double,
double);
268 virtual void CalculateTheMidpointAndTheMeanValueWithOctree();
270 virtual void CalculateMaxAndMinInSphere();
272 virtual const IndexType GetMaxValueIndexInSphere()
const;
276 virtual const IndexType GetMinValueIndexInSphere()
const;
282 virtual void WriteXMLToTestTheCuboidInsideTheSphere();
284 virtual void CalculateEdgesInSphere(
PointType globalCoordinateMidpointCuboid,
PointType globalCoordinateMidpointSphere,
double cuboidRadius,
int level);
286 virtual double MultiGaussianFunctionValueAtCuboid(
double xMin,
double xMax,
double yMin,
double yMax,
double zMin,
double zMax);
288 virtual void InsertPoints(
PointType globalCoordinateMidpointCuboid,
double cuboidRadius);
290 virtual void GenerateCuboidSegmentationInSphere(
PointType globalCoordinateMidpointSphere );
292 virtual double FunctionPhi(
double value);
294 virtual unsigned int IntersectTheSphere(
PointType globalCoordinateMidpointCuboid,
PointType globalCoordinateMidpointSphere,
double sideLength);
296 void SetNormalDistributionValues();
302 NumericTraits< OutputImagePixelType >::NonpositiveMin(),
303 NumericTraits< OutputImagePixelType >::max() );
313 NumericTraits< OutputImagePixelType >::NonpositiveMin(),
314 NumericTraits< OutputImagePixelType >::max() );
322 void PrintSelf(std::ostream & os, Indent indent)
const override;
324 void GenerateData()
override;
325 void GenerateOutputInformation()
override;
338 unsigned int m_NumberOfGaussians;
340 unsigned int m_RadiusStepNumber;
353 typename TOutputImage::PixelType m_Min;
354 typename TOutputImage::PixelType m_Max;
360 double m_NormalDistValues [410];
361 double m_meanValueTemp;
364 mutable PointValueArrayType m_OriginArray;
365 mutable SpacingValueArrayType m_SpacingArray;
370 #ifndef ITK_MANUAL_INSTANTIATION
371 #include "itkMultiGaussianImageSource.hxx"