forked from BRAINSia/BRAINSTools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCreateField.h
151 lines (131 loc) · 5.5 KB
/
CreateField.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*=========================================================================
*
* Copyright SINAPSE: Scalable Informatics for Neuroscience, Processing and Software Engineering
* The University of Iowa
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
/**
* \defgroup CF Create Field
* \ingroup Reg
*/
#ifndef __CreateField_h
#define __CreateField_h
#include "itkObjectFactory.h"
#include "itkObject.h"
#include "itkFixedArray.h"
#include "itkArray.h"
#include "itkVector.h"
#include "itkImage.h"
#include "itkMultiResolutionPDEDeformableRegistration.h"
#include "itkRecursiveMultiResolutionPyramidImageFilter.h"
namespace itk
{
template <typename TImage, typename T2Image>
class CreateField : public Object
{
public:
typedef CreateField Self;
typedef Object Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
itkTypeMacro(MIMApplication, Object);
itkNewMacro(Self);
itkSetStringMacro(Image1Filename);
itkGetStringMacro(Image1Filename);
itkSetStringMacro(Image2Filename);
itkGetStringMacro(Image2Filename);
itkSetStringMacro(ParameterFilename);
typedef TImage ImageType;
typedef typename ImageType::Pointer ImagePointer;
itkStaticConstMacro(ImageDimension, unsigned int, TImage::ImageDimension);
typedef Array<unsigned int> IterationsArrayType;
itkGetConstObjectMacro(ImageOne, ImageType);
itkGetConstObjectMacro(ImageTwo, ImageType);
itkSetObjectMacro(ImageOne, ImageType);
itkSetObjectMacro(ImageTwo, ImageType);
itkSetMacro(NumberOfHistogramLevels, unsigned long);
itkGetMacro(NumberOfHistogramLevels, unsigned long);
itkGetMacro(NumberOfMatchPoints, unsigned long);
itkSetMacro(NumberOfMatchPoints, unsigned long);
itkGetMacro(NumberOfLevels, unsigned short);
typedef FixedArray<unsigned int,
itkGetStaticConstMacro(ImageDimension)> ShrinkFactorsType;
itkGetMacro(Image1ShrinkFactors, ShrinkFactorsType);
itkSetMacro(Image1ShrinkFactors, ShrinkFactorsType);
itkGetMacro(Image2ShrinkFactors, ShrinkFactorsType);
itkSetMacro(Image2ShrinkFactors, ShrinkFactorsType);
itkGetConstReferenceMacro(NumberOfIterations, IterationsArrayType);
typedef TImage InputImageType;
typedef typename InputImageType::PixelType InputPixelType;
typedef T2Image OutputImageType;
itkGetConstObjectMacro(FixedImage, OutputImageType);
itkGetConstObjectMacro(MovingImage, OutputImageType);
itkGetMacro(FixedImageMinimum, InputPixelType);
itkGetMacro(MovingImageMinimum, InputPixelType);
typedef TImage
FixedImageType;
typedef T2Image
MovingImageType;
typedef Vector<float,
itkGetStaticConstMacro(ImageDimension)> FieldPixelType;
typedef Image<FieldPixelType,
itkGetStaticConstMacro(ImageDimension)> TDisplacementField;
typedef RecursiveMultiResolutionPyramidImageFilter<FixedImageType,
FixedImageType> FixedImagePyramidType;
typedef RecursiveMultiResolutionPyramidImageFilter<MovingImageType,
MovingImageType> MovingImagePyramidType;
typedef MultiResolutionPDEDeformableRegistration<FixedImageType,
MovingImageType, TDisplacementField> RegistrationType;
typedef Array<unsigned int>
UnsignedIntArray;
itkSetClampMacro( NumberOfLevels, unsigned short, 1,
NumericTraits<unsigned short>::max() );
itkSetMacro(NumberOfIterations, UnsignedIntArray);
itkGetConstObjectMacro(DisplacementField, TDisplacementField);
void StartNewLevel();
void Execute();
void ReleaseDataFlagOn();
protected:
CreateField();
virtual ~CreateField();
private:
typename ImageType::Pointer m_ImageOne;
typename ImageType::Pointer m_ImageTwo;
std::string m_Image1Filename;
std::string m_Image2Filename;
std::string m_ParameterFilename;
unsigned long m_NumberOfHistogramLevels;
unsigned long m_NumberOfMatchPoints;
unsigned short m_NumberOfLevels;
ShrinkFactorsType m_Image1ShrinkFactors;
ShrinkFactorsType m_Image2ShrinkFactors;
UnsignedIntArray m_NumberOfIterations;
InputPixelType m_FixedImageMinimum;
InputPixelType m_MovingImageMinimum;
typename OutputImageType::Pointer m_FixedImage;
typename OutputImageType::Pointer m_MovingImage;
typename FixedImagePyramidType::Pointer m_FixedImagePyramid;
typename MovingImagePyramidType::Pointer m_MovingImagePyramid;
typename TDisplacementField::Pointer m_DisplacementField;
unsigned long m_Tag;
typename RegistrationType::Pointer m_Registration;
typedef typename OutputImageType::Pointer OutputImagePointer;
void NormalizeImage(InputImageType *input, OutputImagePointer & output, InputPixelType & min);
};
}
#ifndef ITK_MANUAL_INSTANTIATION
#include "CreateField.hxx"
#endif
#endif