ITK
4.2.0
Insight Segmentation and Registration Toolkit
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
ITK
Modules
Filtering
CurvatureFlow
include
itkCurvatureFlowFunction.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright Insight Software Consortium
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0.txt
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*=========================================================================*/
18
#ifndef __itkCurvatureFlowFunction_h
19
#define __itkCurvatureFlowFunction_h
20
21
#include "
itkFiniteDifferenceFunction.h
"
22
#include "
itkMacro.h
"
23
24
namespace
itk
25
{
42
template
<
class
TImage >
43
class
ITK_EXPORT
CurvatureFlowFunction
:
44
public
FiniteDifferenceFunction
< TImage >
45
{
46
public
:
48
typedef
CurvatureFlowFunction
Self
;
49
typedef
FiniteDifferenceFunction< TImage >
Superclass
;
50
typedef
SmartPointer< Self >
Pointer
;
51
typedef
SmartPointer< const Self >
ConstPointer
;
52
54
itkNewMacro(
Self
);
55
57
itkTypeMacro(
CurvatureFlowFunction
,
58
FiniteDifferenceFunction
);
59
61
typedef
typename
Superclass::ImageType
ImageType
;
62
typedef
typename
Superclass::PixelType
PixelType
;
63
typedef
typename
Superclass::RadiusType
RadiusType
;
64
typedef
PixelType
ScalarValueType
;
65
typedef
typename
Superclass::PixelRealType
PixelRealType
;
66
typedef
typename
Superclass::NeighborhoodType
NeighborhoodType
;
67
typedef
typename
Superclass::NeighborhoodScalesType
NeighborhoodScalesType
;
68
typedef
typename
Superclass::FloatOffsetType
FloatOffsetType
;
69
typedef
typename
Superclass::TimeStepType
TimeStepType
;
70
72
itkStaticConstMacro(ImageDimension,
unsigned
int
, Superclass::ImageDimension);
73
84
virtual
TimeStepType
ComputeGlobalTimeStep(
void
*GlobalData)
const
;
85
91
virtual
void
* GetGlobalDataPointer()
const
92
{
93
GlobalDataStruct *ans =
new
GlobalDataStruct();
94
95
ans->m_MaxChange =
NumericTraits< ScalarValueType >::Zero
;
96
return
ans;
97
}
98
103
virtual
void
ReleaseGlobalDataPointer(
void
*GlobalData)
const
104
{
delete
(GlobalDataStruct *)GlobalData; }
105
107
void
SetTimeStep(
const
TimeStepType
& t)
108
{ m_TimeStep = t; }
109
111
const
TimeStepType
& GetTimeStep()
const
112
{
return
m_TimeStep; }
113
116
virtual
PixelType ComputeUpdate(
const
NeighborhoodType & neighborhood,
117
void
*globalData,
118
const
FloatOffsetType & offset = FloatOffsetType(0.0)
119
);
120
121
protected
:
122
127
struct
GlobalDataStruct {
128
GlobalDataStruct()
129
{
130
m_MaxChange =
NumericTraits< ScalarValueType >::Zero
;
131
}
132
133
~GlobalDataStruct() {}
134
135
ScalarValueType m_MaxChange;
136
};
138
139
CurvatureFlowFunction();
140
~CurvatureFlowFunction
() {}
141
private
:
142
CurvatureFlowFunction
(
const
Self &);
//purposely not implemented
143
void
operator=(
const
Self &);
//purposely not implemented
144
145
TimeStepType
m_TimeStep
;
146
};
147
}
// end namespace itk
148
149
#ifndef ITK_MANUAL_INSTANTIATION
150
#include "itkCurvatureFlowFunction.hxx"
151
#endif
152
153
#endif
154
Generated on Tue Jul 10 2012 23:22:59 for ITK by
1.8.1