00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkCorrespondingMedialNodeClique_h
00018 #define __itkCorrespondingMedialNodeClique_h
00019
00020 #include "vnl/vnl_matrix.h"
00021 #include "vnl/vnl_vector.h"
00022 #include "vnl/vnl_vector_fixed.h"
00023 #include "vnl/vnl_matrix_fixed.h"
00024 #include "itkFixedArray.h"
00025 #include "itkBloxCoreAtomPixel.h"
00026
00027 #include <list>
00028
00029 namespace itk
00030 {
00031
00041 template <unsigned int VImageDimension, unsigned int VCliqueSize>
00042 class CorrespondingMedialNodeClique
00043 {
00044 public:
00045
00047 typedef BloxCoreAtomPixel<VImageDimension> ItemType;
00048
00050 std::vector<ItemType*> ItemPointer;
00051
00053 void SetNodePointer(ItemType* itemPointer, unsigned int index) {ItemPointer[index] = itemPointer;}
00054
00056 typedef FixedArray<vnl_vector_fixed<double, VImageDimension>, VCliqueSize> CoordinateType;
00057
00059 typedef vnl_vector_fixed<double, VCliqueSize> CenterOfMassType;
00060
00062 typedef vnl_matrix_fixed<double, VImageDimension+1, VImageDimension+1> TransformMatrixType;
00063
00065 void SetNodeCoordinates(CoordinateType * coordinates) {m_NodeCoordinates = coordinates;}
00066 CoordinateType * GetNodeCoordinates() {return m_NodeCoordinates;}
00067
00069 void SetCenterOfMass(CenterOfMassType * centerOfMass) {m_CenterOfMass = centerOfMass;}
00070 CenterOfMassType * GetCenterOfMass() { return m_CenterOfMass;}
00071
00073 void SetTransformMatrix(TransformMatrixType* transformMatrix) {m_TransformMatrix = transformMatrix;}
00074 TransformMatrixType * GetTransformMatrix() {return m_TransformMatrix;}
00075
00077 void SetNodeIndex(int index, int nodeIndex) {m_NodeIndex[index] = nodeIndex;}
00078 int GetNodeIndex(int index) {return m_NodeIndex[index];}
00079
00081 void SetCorrespondenceValue(int index, float correspondenceValue)
00082 {m_CorrespondenceValue[index] = correspondenceValue;}
00083 float GetCorrespondenceValue(int index) {return m_CorrespondenceValue[index];}
00084
00085 CorrespondingMedialNodeClique();
00086 ~CorrespondingMedialNodeClique();
00087
00088 private:
00089
00091 CoordinateType * m_NodeCoordinates;
00092
00094 CenterOfMassType * m_CenterOfMass;
00095
00097 TransformMatrixType * m_TransformMatrix;
00098
00100 int m_NodeIndex[VCliqueSize];
00101
00103 float m_CorrespondenceValue[VCliqueSize];
00104
00106 double m_AverageDistance;
00107 };
00108
00109
00110 }
00111
00112 #ifndef ITK_MANUAL_INSTANTIATION
00113 #include "itkCorrespondingMedialNodeClique.txx"
00114 #endif
00115
00116 #endif