ITK
4.3.0
Insight Segmentation and Registration Toolkit
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
ITK
Modules
Numerics
Eigen
include
itkSymmetricEigenSystem.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 __itkSymmetricEigenSystem_h
19
#define __itkSymmetricEigenSystem_h
20
21
#include "
itkObject.h
"
22
#include "vnl/algo/vnl_symmetric_eigensystem.h"
23
#include "
itkObjectFactory.h
"
24
#include "
itkObject.h
"
25
#include "
itkFixedArray.h
"
26
#include "
itkMatrix.h
"
27
#include "
itkObjectFactory.h
"
28
29
namespace
itk
30
{
46
template
<
class
TMatrixElement,
int
VNumberOfRows >
47
class
ITK_EXPORT
SymmetricEigenSystem
:
public
Object
48
{
49
public
:
51
typedef
SymmetricEigenSystem
Self
;
52
typedef
Object
Superclass
;
53
typedef
SmartPointer< Self >
Pointer
;
54
typedef
SmartPointer< const Self >
ConstPointer
;
55
57
itkTypeMacro(
SymmetricEigenSystem
,
Object
);
58
60
itkNewMacro(
Self
);
61
63
typedef
FixedArray< TMatrixElement, VNumberOfRows >
ArrayType
;
64
66
typedef
FixedArray< ArrayType, VNumberOfRows >
Array2DType
;
67
69
typedef
Array2DType
EigenVectorArrayType
;
70
72
typedef
ArrayType
EigenValueArrayType
;
73
75
typedef
Matrix< TMatrixElement, VNumberOfRows, VNumberOfRows >
MatrixType
;
76
78
typedef
vnl_symmetric_eigensystem< TMatrixElement >
InternalEigenSystemType
;
79
81
itkSetObjectMacro(
Matrix
,
MatrixType
);
82
MatrixType
* GetMatrix()
83
{
return
m_Matrix; }
85
92
itkSetMacro(UseAbsoluteOrder,
bool
);
93
itkGetMacro(UseAbsoluteOrder,
bool
);
95
97
EigenVectorArrayType
* GetEigenVectors()
98
{
return
&m_EigenVectors; }
99
101
EigenValueArrayType
* GetEigenValues()
102
{
return
&m_EigenValues; }
103
106
void
Update()
107
{ this->GenerateData(); }
108
109
protected
:
110
SymmetricEigenSystem
();
111
virtual
~
SymmetricEigenSystem
();
112
void
PrintSelf(std::ostream & os,
Indent
indent)
const
;
113
115
void
GenerateData();
116
117
private
:
118
SymmetricEigenSystem
(
const
Self &);
//purposely not implemented
119
void
operator=(
const
Self &);
//purposely not implemented
120
122
MatrixType
*
m_Matrix
;
123
125
EigenVectorArrayType
m_EigenVectors
;
126
128
EigenValueArrayType
m_EigenValues
;
129
132
bool
m_UseAbsoluteOrder
;
133
};
134
}
// end namespace itk
135
136
#ifndef ITK_MANUAL_INSTANTIATION
137
#include "itkSymmetricEigenSystem.hxx"
138
#endif
139
140
#endif
141
Generated on Sun Dec 9 2012 01:28:17 for ITK by
1.8.2