Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkBloxCoreAtomPixel.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003 Program:   Insight Segmentation & Registration Toolkit
00004 Module:    $RCSfile: itkBloxCoreAtomPixel.h,v $
00005 Language:  C++
00006 Date:      $Date: 2003/09/10 14:29:02 $
00007 Version:   $Revision: 1.21 $
00008 
00009 Copyright (c) Insight Software Consortium. All rights reserved.
00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
00011 
00012 This software is distributed WITHOUT ANY WARRANTY; without even
00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00014 PURPOSE.  See the above copyright notices for more information.
00015 
00016 =========================================================================*/
00017 #ifndef __itkBloxCoreAtomPixel_h
00018 #define __itkBloxCoreAtomPixel_h
00019 
00020 #include "vnl/vnl_matrix_fixed.h"
00021 #include "vnl/vnl_vector_fixed.h"
00022 #include "vnl/algo/vnl_generalized_eigensystem.h"
00023 
00024 #include "itkObject.h"
00025 #include "itkBloxCoreAtomItem.h"
00026 #include "itkBloxBoundaryPointItem.h"
00027 #include "itkPoint.h"
00028 #include "itkCovariantVector.h"
00029 #include "itkBloxPixel.h"
00030 
00031 namespace itk
00032 {
00033 
00041 template <unsigned int NDimensions>
00042 class ITK_EXPORT BloxCoreAtomPixel : public BloxPixel< BloxCoreAtomItem<NDimensions> >
00043 {
00044 public:
00045 
00047   typedef BloxCoreAtomPixel                            Self;
00048   typedef BloxPixel< BloxCoreAtomItem<NDimensions> >   Superclass; 
00049   typedef SmartPointer<Self>                           Pointer;
00050   typedef SmartPointer<const Self>                     ConstPointer;
00051 
00053   typedef BloxCoreAtomItem<NDimensions> CoreAtomItemType;
00054 
00056   typedef BloxBoundaryPointItem<NDimensions> BPItemType;
00057 
00059   typedef Point<double, NDimensions> PositionType;
00060 
00062   typedef CovariantVector<double, NDimensions> GradientType;
00063 
00065   typedef vnl_vector_fixed<double, NDimensions> VectorType;
00066 
00068   typedef vnl_vector_fixed<double, NDimensions> EigenvalueType;
00069 
00071   typedef vnl_matrix_fixed<double, NDimensions, NDimensions> EigenvectorType;
00072 
00074   typedef vnl_matrix_fixed<double, NDimensions, NDimensions> MatrixType;
00075 
00077   double CalcMeanCoreAtomDiameter();
00078 
00080   bool DoCoreAtomEigenanalysis();
00081 
00083   void DoVotedEigenanalysis();
00084 
00086   double GetMeanCoreAtomDiameter() {return m_MeanCoreAtomDiameter;}
00087   double GetMeanCoreAtomIntensity() {return m_MeanCoreAtomIntensity;}
00088   EigenvalueType GetEigenvalues() {return m_Eigenvalues;}
00089   EigenvalueType GetVotedEigenvalues() {return m_VotedEigenvalues;}
00090   EigenvectorType GetEigenvectors() {return m_Eigenvectors;}
00091   EigenvectorType GetVotedEigenvectors() {return m_VotedEigenvectors;}
00092   PositionType GetLocationSums() {return m_LocationSums;}
00093   double GetWeightSum() {return m_WeightSum;}
00094 
00096   MatrixType* GetRawCMatrixPointer() {return &m_RawCMatrix;}
00097 
00099   void CollectVote(MatrixType* pMatrix, double strength, double count);
00100 
00102   void NormalizeVotedCMatrix();
00103 
00105   void CalcWeightedCoreAtomLocation(double weight_factor, Self * votingPixel);
00106 
00108   void CalcMeanCoreAtomIntensity();
00109 
00111   PositionType GetVotedLocation();
00112 
00113   BloxCoreAtomPixel();
00114   ~BloxCoreAtomPixel();
00115 
00116 private:
00117 
00119   double m_MeanCoreAtomDiameter;
00120 
00122   MatrixType m_RawCMatrix;
00123 
00127   EigenvalueType m_Eigenvalues;
00128 
00131   EigenvectorType m_Eigenvectors;
00132 
00134   MatrixType m_VotedCMatrix;
00135 
00137   EigenvalueType m_VotedEigenvalues;
00138 
00140   EigenvectorType m_VotedEigenvectors;
00141 
00144   double m_ConstituencySize;
00145 
00147   PositionType m_LocationSums;
00148 
00150   PositionType m_VotedLocation;
00151 
00153   double m_WeightSum;
00154 
00156   double m_MeanCoreAtomIntensity;
00157 };
00158 
00159 
00160 } // end namespace itk
00161 
00162 #ifndef ITK_MANUAL_INSTANTIATION
00163 #include "itkBloxCoreAtomPixel.txx"
00164 #endif
00165 
00166 #endif

Generated at Wed May 24 22:52:16 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000