NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkSimultaneousUnconstrainedMatrixReconRegnMethod.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkSimultaneousUnconstrainedMatrixReconRegnMethod_h
16 #define itkSimultaneousUnconstrainedMatrixReconRegnMethod_h
17 
18 #include <itkProcessObject.h>
19 #include <itkImage.h>
21 #include <itkSingleValuedNonLinearOptimizer.h>
22 #include <itkProjectionGeometry.h>
24 
25 namespace itk
26 {
27 
42  template <class TScalarType = double, class IntensityType = float>
43  class ITK_EXPORT SimultaneousUnconstrainedMatrixReconRegnMethod : public ProcessObject
44  {
45  public:
48  typedef ProcessObject Superclass;
49  typedef SmartPointer<Self> Pointer;
50  typedef SmartPointer<const Self> ConstPointer;
51 
54 
56  itkNewMacro(Self);
57 
59  itkTypeMacro(SimultaneousUnconstrainedMatrixReconRegnMethod, ProcessObject);
60 
61  // Some convenient typedefs.
62 
64  typedef vnl_vector<IntensityType> VectorType;
65 
70  typedef typename SimultaneousUnconstrainedReconRegnType::Pointer SimultaneousUnconstrainedReconRegnPointer;
74  typedef typename SimultaneousUnconstrainedReconRegnType::SpacingType SimultaneousUnconstrainedReconRegnSpacingType;
75  typedef typename SimultaneousUnconstrainedReconRegnType::PointType SimultaneousUnconstrainedReconRegnPointType;
77 
79  typedef SingleValuedNonLinearOptimizer OptimizerType;
80  typedef typename OptimizerType::Pointer OptimizerPointer;
81 
85 
89 
94 
97  typedef SimultaneousUnconstrainedReconRegnType SimultaneousUnconstrainedReconRegnOutputType;
98  typedef typename SimultaneousUnconstrainedReconRegnOutputType::Pointer SimultaneousUnconstrainedReconRegnOutputPointer;
99  typedef typename SimultaneousUnconstrainedReconRegnOutputType::ConstPointer SimultaneousUnconstrainedReconRegnOutputConstPointer;
100 
102  itkSetObjectMacro( Optimizer, OptimizerType );
103  itkGetObjectMacro( Optimizer, OptimizerType );
104 
106  itkSetObjectMacro( Metric, MetricType );
107  itkGetObjectMacro( Metric, MetricType );
108 
110  itkSetObjectMacro( ProjectionGeometry, ProjectionGeometryType );
111  itkGetObjectMacro( ProjectionGeometry, ProjectionGeometryType );
112 
114  itkSetObjectMacro( ReconstructionUpdateCommand, ReconstructionUpdateCommandType );
115  itkGetObjectMacro( ReconstructionUpdateCommand, ReconstructionUpdateCommandType );
116 
118  //void SetSimultaneousUnconReconRegnEstimate( SimultaneousUnconstrainedReconRegnType *im3D);
119 
121  // void UpdateSimultaneousUnconReconRegnEstimate( SimultaneousUnconstrainedReconRegnType *im3D);
124  // void UpdateSimultaneousUnconReconRegnEstimateWithAverage( SimultaneousUnconstrainedReconRegnType *im3D);
126  // void UpdateInitialParameters(void);
127 
129  // bool SetInputProjectionSetOne( VectorType *im2DOne);
130  // bool SetInputProjectionSetTwo( VectorType *im2DTwo);
131 
133  void SetSimultaneousUnconReconRegnVolumeSize( SimultaneousUnconstrainedReconRegnSizeType &reconRegnSize )
134  { m_ReconRegnVolumeSize = reconRegnSize; };
135  void SetSimultaneousUnconReconRegnVolumeSpacing( SimultaneousUnconstrainedReconRegnSpacingType &reconRegnSpacing )
136  {m_ReconRegnVolumeSpacing = reconRegnSpacing;};
137  void SetSimultaneousUnconReconRegnVolumeOrigin( SimultaneousUnconstrainedReconRegnPointType &reconRegnOrigin )
138  {m_ReconRegnVolumeOrigin = reconRegnOrigin;};
139 
141  virtual void Initialise() throw (ExceptionObject);
142 
144  // VectorType *GetInputOne();
146  // VectorType *GetInputTwo();
148  SimultaneousUnconstrainedReconRegnOutputType *GetOutput();
149 
151  SimultaneousUnconstrainedReconRegnOutputType *GetReconstructedVolume() const;
152 
155  virtual DataObjectPointer MakeOutput(unsigned long int idx);
156 
159  unsigned long GetMTime() const;
160 
161  protected:
163  virtual ~SimultaneousUnconstrainedMatrixReconRegnMethod() {};
164  void PrintSelf(std::ostream& os, Indent indent) const;
165 
168  virtual void GenerateOutputInformation() {};
169 
174  void StartSimultaneousUnconReconRegn(void);
175 
180  void StartOptimization(void);
181 
184  void GenerateData ();
185 
186 
187  private:
188  SimultaneousUnconstrainedMatrixReconRegnMethod(const Self&); // purposely not implemented
189  void operator=(const Self&); // purposely not implemented
190 
191  bool m_FlagInitialised;
192 
193  OptimizerPointer m_Optimizer;
194  MetricPointer m_Metric;
195  ProjectionGeometryPointer m_ProjectionGeometry;
196 
197  // VectorType* m_ProjectionImageSetOne;
198  // VectorType* m_ProjectionImageSetTwo;
199  SimultaneousUnconstrainedReconRegnPointer m_VolumeEstimate;
200 
201  ParametersType m_InitialParameters;
202  ParametersType m_LastParameters;
203 
204  SimultaneousUnconstrainedReconRegnSizeType m_ReconRegnVolumeSize;
205  SimultaneousUnconstrainedReconRegnSpacingType m_ReconRegnVolumeSpacing;
206  SimultaneousUnconstrainedReconRegnPointType m_ReconRegnVolumeOrigin;
207 
209  ReconstructionUpdateCommandPointer m_ReconstructionUpdateCommand;
210 
211  };
212 
213 
214 } // end namespace itk
215 
216 #ifndef ITK_MANUAL_INSTANTIATION
217 #include "itkSimultaneousUnconstrainedMatrixReconRegnMethod.txx"
218 #endif
219 
220 #endif
221 
222 
223 
224 
SimultaneousUnconstrainedReconRegnType SimultaneousUnconstrainedReconRegnOutputType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:97
MetricType::ParametersType ParametersType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:93
ReconstructionUpdateCommand::Pointer ReconstructionUpdateCommandPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:53
SmartPointer< Self > Pointer
Definition: itkProjectionGeometry.h:36
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
void SetSimultaneousUnconReconRegnVolumeOrigin(SimultaneousUnconstrainedReconRegnPointType &reconRegnOrigin)
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:137
SimultaneousUnconstrainedReconRegnOutputType::Pointer SimultaneousUnconstrainedReconRegnOutputPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:98
virtual void GenerateOutputInformation()
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:168
Definition: niftkITKAffineResampleImage.cxx:74
SimultaneousUnconstrainedReconRegnType::RegionType SimultaneousUnconstrainedReconRegnRegionType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:71
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
OptimizerType::Pointer OptimizerPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:80
SmartPointer< Self > Pointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMetric.h:45
SimultaneousUnconstrainedReconRegnType::IndexType SimultaneousUnconstrainedReconRegnIndexType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:76
SingleValuedCostFunction::ParametersType ParametersType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMetric.h:84
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
itk::ProjectionGeometry< IntensityType > ProjectionGeometryType
The projection geometry type.
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:87
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ProcessObject Superclass
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:48
ProjectionGeometryType::Pointer ProjectionGeometryPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:88
Base class for Image Reconstruction Methods.
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:43
SimultaneousUnconstrainedReconRegnType::PointType SimultaneousUnconstrainedReconRegnPointType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:75
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
Image< IntensityType, 3 > SimultaneousUnconstrainedReconRegnType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:69
vnl_vector< IntensityType > VectorType
Type of the vector to store the two input vectors.
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:59
void SetSimultaneousUnconReconRegnVolumeSpacing(SimultaneousUnconstrainedReconRegnSpacingType &reconRegnSpacing)
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:135
itk::SmartPointer< Self > Pointer
Definition: itkReconstructionUpdateCommand.h:41
SimultaneousUnconstrainedReconRegnType::SizeType SimultaneousUnconstrainedReconRegnSizeType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:73
SimultaneousUnconstrainedReconRegnType::PixelType SimultaneousUnconstrainedReconRegnPixelType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:72
SingleValuedNonLinearOptimizer OptimizerType
Type of the optimizer.
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:79
SimultaneousUnconstrainedMatrixReconRegnMethod Self
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:47
SimultaneousUnconstrainedReconRegnType::SpacingType SimultaneousUnconstrainedReconRegnSpacingType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:74
itk::ReconstructionUpdateCommand ReconstructionUpdateCommandType
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:52
SmartPointer< const Self > ConstPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:50
SimultaneousUnconstrainedReconRegnType::Pointer SimultaneousUnconstrainedReconRegnPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:70
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
void SetSimultaneousUnconReconRegnVolumeSize(SimultaneousUnconstrainedReconRegnSizeType &reconRegnSize)
Set the 3D reconstruction estimate volume.
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:133
Class to compute the difference between a reconstruction estimate and the target set of 2D projection...
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMetric.h:38
SimultaneousUnconstrainedMatrixReconRegnMetric< double, float > MetricType
The type of the metric.
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:83
SmartPointer< Self > Pointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:49
SimultaneousUnconstrainedReconRegnOutputType::ConstPointer SimultaneousUnconstrainedReconRegnOutputConstPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:99
MetricType::Pointer MetricPointer
Definition: itkSimultaneousUnconstrainedMatrixReconRegnMethod.h:84
Override this class to redefine DoExecute().
Definition: itkReconstructionUpdateCommand.h:36