ITK
4.2.0
Insight Segmentation and Registration Toolkit
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
ITK
Modules
Nonunit
Review
include
itkConstrainedRegionBasedLevelSetFunctionSharedData.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 __itkConstrainedRegionBasedLevelSetFunctionSharedData_h
19
#define __itkConstrainedRegionBasedLevelSetFunctionSharedData_h
20
21
#include "
itkRegionBasedLevelSetFunctionSharedData.h
"
22
23
namespace
itk
24
{
60
template
<
class
TInputImage,
class
TFeatureImage,
class
TSingleData >
61
class
ConstrainedRegionBasedLevelSetFunctionSharedData
:
62
public
RegionBasedLevelSetFunctionSharedData
< TInputImage, TFeatureImage, TSingleData >
63
{
64
public
:
65
66
typedef
ConstrainedRegionBasedLevelSetFunctionSharedData
Self
;
67
typedef
RegionBasedLevelSetFunctionSharedData< TInputImage, TFeatureImage, TSingleData >
68
Superclass
;
69
typedef
SmartPointer< Self >
Pointer
;
70
typedef
SmartPointer< const Self >
ConstPointer
;
71
72
itkStaticConstMacro(
ImageDimension
,
unsigned
int
, TFeatureImage::ImageDimension);
73
75
itkNewMacro(
Self
);
76
77
itkTypeMacro(
ConstrainedRegionBasedLevelSetFunctionSharedData
,
RegionBasedLevelSetFunctionSharedData
);
78
79
typedef
TInputImage
InputImageType
;
80
typedef
typename
Superclass::InputImagePointer
InputImagePointer
;
81
typedef
typename
Superclass::InputImageConstPointer
InputImageConstPointer
;
82
typedef
typename
Superclass::InputPixelType
InputPixelType
;
83
typedef
typename
Superclass::InputRegionType
InputRegionType
;
84
typedef
typename
Superclass::InputSizeType
InputSizeType
;
85
typedef
typename
Superclass::InputSizeValueType
InputSizeValueType
;
86
typedef
typename
Superclass::InputSpacingType
InputSpacingType
;
87
typedef
typename
Superclass::InputIndexType
InputIndexType
;
88
typedef
typename
Superclass::InputIndexValueType
InputIndexValueType
;
89
typedef
typename
Superclass::InputPointType
InputPointType
;
90
91
typedef
TFeatureImage
FeatureImageType
;
92
typedef
typename
Superclass::FeatureImagePointer
FeatureImagePointer
;
93
typedef
typename
Superclass::FeatureImageConstPointer
FeatureImageConstPointer
;
94
typedef
typename
Superclass::FeaturePixelType
FeaturePixelType
;
95
typedef
typename
Superclass::FeatureRegionType
FeatureRegionType
;
96
typedef
typename
Superclass::FeatureSizeType
FeatureSizeType
;
97
typedef
typename
Superclass::FeatureSizeValueType
FeatureSizeValueType
;
98
typedef
typename
Superclass::FeatureSpacingType
FeatureSpacingType
;
99
typedef
typename
Superclass::FeatureIndexType
FeatureIndexType
;
100
typedef
typename
Superclass::FeaturePointType
FeaturePointType
;
101
102
typedef
typename
Superclass::ListPixelType
ListPixelType
;
103
typedef
typename
Superclass::ListImageType
ListImageType
;
104
typedef
typename
Superclass::ListImagePointer
ListImagePointer
;
105
typedef
typename
Superclass::ListImageConstPointer
ListImageConstPointer
;
106
typedef
typename
Superclass::ListRegionType
ListRegionType
;
107
typedef
typename
Superclass::ListSizeType
ListSizeType
;
108
typedef
typename
Superclass::ListSizeValueType
ListSizeValueType
;
109
typedef
typename
Superclass::ListSpacingType
ListSpacingType
;
110
typedef
typename
Superclass::ListIndexType
ListIndexType
;
111
typedef
typename
Superclass::ListIndexValueType
ListIndexValueType
;
112
typedef
typename
Superclass::ListPointType
ListPointType
;
113
typedef
typename
Superclass::ListIteratorType
ListIteratorType
;
114
115
typedef
typename
Superclass::CentroidVectorType
CentroidVectorType
;
116
typedef
typename
Superclass::SampleType
SampleType
;
117
typedef
typename
Superclass::TreeGeneratorType
TreeGeneratorType
;
118
typedef
typename
Superclass::TreePointer
TreePointer
;
119
typedef
typename
Superclass::TreeType
TreeType
;
120
typedef
typename
Superclass::KdTreePointer
KdTreePointer
;
121
122
typedef
TSingleData
LevelSetDataType
;
123
typedef
typename
Superclass::LevelSetDataPointer
LevelSetDataPointer
;
124
typedef
typename
Superclass::LevelSetDataPointerVector
LevelSetDataPointerVector
;
125
typedef
typename
Superclass::LevelSetDataPointerVectorIterator
LevelSetDataPointerVectorIterator
;
126
127
void
PopulateListImage
()
128
{
129
ListSpacingType
spacing = this->
m_NearestNeighborListImage
->GetSpacing();
130
131
ListRegionType
region = this->
m_NearestNeighborListImage
->GetLargestPossibleRegion();
132
133
ListIteratorType
lIt(this->
m_NearestNeighborListImage
, region);
134
135
if
( this->
m_KdTree
.
IsNotNull
() )
136
{
137
for
( lIt.
GoToBegin
(); !lIt.
IsAtEnd
(); ++lIt )
138
{
139
ListIndexType
ind = lIt.
GetIndex
();
140
141
float
queryPoint[
ImageDimension
];
142
for
(
unsigned
int
i = 0; i <
ImageDimension
; i++ )
143
{
144
queryPoint[i] = ind[i] * spacing[i];
145
}
146
147
typename
TreeType::InstanceIdentifierVectorType
neighbors;
148
this->
m_KdTree
->Search(queryPoint, this->
m_NumberOfNeighbors
, neighbors);
149
150
ListPixelType
L;
151
for
(
unsigned
int
i = 0; i < this->
m_NumberOfNeighbors
; i++ )
152
{
153
if
( this->
m_LevelSetDataPointerVector
[i]->VerifyInsideRegion(ind) )
154
{
155
L.push_back(neighbors[i]);
156
}
157
}
158
lIt.
Set
(L);
159
}
160
}
161
else
162
{
163
for
( lIt.
GoToBegin
(); !lIt.
IsAtEnd
(); ++lIt )
164
{
165
ListIndexType
ind = lIt.
GetIndex
();
166
ListPixelType
L;
167
for
(
unsigned
int
i = 0; i < this->
m_FunctionCount
; i++ )
168
{
169
if
( this->
m_LevelSetDataPointerVector
[i]->VerifyInsideRegion(ind) )
170
{
171
L.push_back(i);
172
}
173
}
174
lIt.
Set
(L);
175
}
176
}
177
}
178
179
protected
:
180
ConstrainedRegionBasedLevelSetFunctionSharedData
():
Superclass
(){}
181
~ConstrainedRegionBasedLevelSetFunctionSharedData
(){}
182
private
:
183
ConstrainedRegionBasedLevelSetFunctionSharedData
(
const
Self
&);
//purposely
184
// not
185
// implemented
186
void
operator=
(
const
Self
&);
//purposely
187
// not
188
// implemented
189
};
190
}
//end namespace itk
191
192
#endif
193
Generated on Tue Jul 10 2012 23:22:24 for ITK by
1.8.1