<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>ITK: itkActiveShapeModelCalculator.h Source File</title> <link href="DoxygenStyle.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Section customized for INSIGHT : Tue Jul 17 01:02:45 2001 --> <center> <a href="index.html" class="qindex">Main Page</a> <a href="modules.html" class="qindex">Groups</a> <a href="namespaces.html" class="qindex">Namespace List</a> <a href="hierarchy.html" class="qindex">Class Hierarchy</a> <a href="classes.html" class="qindex">Alphabetical List</a> <a href="annotated.html" class="qindex">Compound List</a> <a href="files.html" class="qindex">File List</a> <a href="namespacemembers.html" class="qindex">Namespace Members</a> <a href="functions.html" class="qindex">Compound Members</a> <a href="globals.html" class="qindex">File Members</a> <a href="pages.html" class="qindex">Concepts</a></center> <!-- Generated by Doxygen 1.5.9 --> <div class="navpath"><a class="el" href="dir_02e23d841c198393a6e961e9a0678fff.html">Code</a> » <a class="el" href="dir_dac74f2f86ef7740a9c4b6cbf6bd88de.html">Patented</a> </div> <div class="contents"> <h1>itkActiveShapeModelCalculator.h</h1><a href="itkActiveShapeModelCalculator_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*=========================================================================</span> <a name="l00002"></a>00002 <span class="comment"></span> <a name="l00003"></a>00003 <span class="comment"> Program: Insight Segmentation & Registration Toolkit</span> <a name="l00004"></a>00004 <span class="comment"> Module: $RCSfile: itkActiveShapeModelCalculator.h,v $</span> <a name="l00005"></a>00005 <span class="comment"> Language: C++</span> <a name="l00006"></a>00006 <span class="comment"> Date: $Date: 2009-02-01 13:08:40 $</span> <a name="l00007"></a>00007 <span class="comment"> Version: $Revision: 1.2 $</span> <a name="l00008"></a>00008 <span class="comment"></span> <a name="l00009"></a>00009 <span class="comment"> Copyright (c) Insight Software Consortium. All rights reserved.</span> <a name="l00010"></a>00010 <span class="comment"> See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.</span> <a name="l00011"></a>00011 <span class="comment"></span> <a name="l00012"></a>00012 <span class="comment"> This software is distributed WITHOUT ANY WARRANTY; without even </span> <a name="l00013"></a>00013 <span class="comment"> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR </span> <a name="l00014"></a>00014 <span class="comment"> PURPOSE. See the above copyright notices for more information.</span> <a name="l00015"></a>00015 <span class="comment"></span> <a name="l00016"></a>00016 <span class="comment">=========================================================================*/</span> <a name="l00017"></a>00017 <span class="preprocessor">#ifndef __itkActiveShapeModelCalculator_h</span> <a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define __itkActiveShapeModelCalculator_h</span> <a name="l00019"></a>00019 <span class="preprocessor"></span> <a name="l00020"></a>00020 <span class="preprocessor">#include <time.h></span> <a name="l00021"></a>00021 <span class="preprocessor">#include <math.h></span> <a name="l00022"></a>00022 <a name="l00023"></a>00023 <span class="preprocessor">#include "vnl/vnl_vector.h"</span> <a name="l00024"></a>00024 <span class="preprocessor">#include "vnl/vnl_matrix.h"</span> <a name="l00025"></a>00025 <span class="preprocessor">#include "vnl/vnl_math.h"</span> <a name="l00026"></a>00026 <span class="preprocessor">#include "vnl/algo/vnl_matrix_inverse.h"</span> <a name="l00027"></a>00027 <span class="preprocessor">#include <vnl/algo/vnl_generalized_eigensystem.h></span> <a name="l00028"></a>00028 <span class="preprocessor">#include <vnl/algo/vnl_symmetric_eigensystem.h></span> <a name="l00029"></a>00029 <a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="itkImageSliceConstIteratorWithIndex_8h.html">itkImageSliceConstIteratorWithIndex.h</a>"</span> <a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="itkImageRegionConstIterator_8h.html">itkImageRegionConstIterator.h</a>"</span> <a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="itkImageLinearIteratorWithIndex_8h.html">itkImageLinearIteratorWithIndex.h</a>"</span> <a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="itkRescaleIntensityImageFilter_8h.html">itkRescaleIntensityImageFilter.h</a>"</span> <a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="itkGradientMagnitudeImageFilter_8h.html">itkGradientMagnitudeImageFilter.h</a>"</span> <a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="itkBinaryThresholdImageFilter_8h.html">itkBinaryThresholdImageFilter.h</a>"</span> <a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="itkDanielssonDistanceMapImageFilter_8h.html">itkDanielssonDistanceMapImageFilter.h</a>"</span> <a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="itkBinaryThinningImageFilter_8h.html">itkBinaryThinningImageFilter.h</a>"</span> <a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="itkBinaryPruningImageFilter_8h.html">itkBinaryPruningImageFilter.h</a>"</span> <a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="itkPointSet_8h.html">itkPointSet.h</a>"</span> <a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="itkVector_8h.html">itkVector.h</a>"</span> <a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="itkListSample_8h.html">itkListSample.h</a>"</span> <a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="itkExceptionObject_8h.html">itkExceptionObject.h</a>"</span> <a name="l00043"></a>00043 <a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="itkConceptChecking_8h.html">itkConceptChecking.h</a>"</span> <a name="l00045"></a>00045 <a name="l00046"></a>00046 <span class="preprocessor">#include <vector></span> <a name="l00047"></a>00047 <span class="preprocessor">#include <list></span> <a name="l00048"></a>00048 <a name="l00049"></a>00049 <span class="keyword">namespace </span>itk { <a name="l00050"></a>00050 <a name="l00076"></a>00076 <span class="keyword">template</span> < <span class="keyword">class</span> TImage > <a name="l00077"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html">00077</a> <span class="keyword">class </span><a class="code" href="itkWin32Header_8h.html#7d4384322557205d75f0719c012dded6">ITK_EXPORT</a> <a class="code" href="classitk_1_1ActiveShapeModelCalculator.html" title="Base class for ActiveShapeModelCalculator object.">ActiveShapeModelCalculator</a> : <span class="keyword">public</span> <a class="code" href="classitk_1_1Object.html" title="Base class for most itk classes.">Object</a> <a name="l00078"></a>00078 { <a name="l00079"></a>00079 <span class="keyword">public</span>: <a name="l00081"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#3e0c34f7080e4a5846159094fa048561">00081</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1ActiveShapeModelCalculator.html" title="Base class for ActiveShapeModelCalculator object.">ActiveShapeModelCalculator<TImage></a> <a class="code" href="classitk_1_1LightObject.html" title="Light weight base class for most itk classes.">Self</a>; <a name="l00082"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#55345ce4c6576c7afecdee686460370e">00082</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Object.html" title="Base class for most itk classes.">Object</a> <a class="code" href="classitk_1_1LightObject.html" title="Light weight base class for most itk classes.">Superclass</a>; <a name="l00083"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#50baa98885cceab9459c642e5ed2f61c">00083</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1SmartPointer.html">SmartPointer<Self></a> <a class="code" href="classitk_1_1SmartPointer.html">Pointer</a>; <a name="l00084"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#2ea92e124891d06b3e1c01c9dcbdeff1">00084</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1SmartPointer.html">SmartPointer<const Self></a> <a class="code" href="classitk_1_1SmartPointer.html">ConstPointer</a>; <a name="l00085"></a>00085 <a name="l00087"></a>00087 <a class="code" href="itkMacro_8h.html#0fdc15685afa271857c57e7cd482f30c">itkNewMacro</a>(<a class="code" href="classitk_1_1LightObject.html" title="Light weight base class for most itk classes.">Self</a>); <a name="l00088"></a>00088 <a name="l00090"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#6c0af3f8a1809bf7a7585d651c3cd7aa">00090</a> <a class="code" href="itkMacro_8h.html#574c1f86661d409dd32c742307a0e96a">itkTypeMacro</a>(<a class="code" href="classitk_1_1ActiveShapeModelCalculator.html" title="Base class for ActiveShapeModelCalculator object.">ActiveShapeModelCalculator</a>, <a class="code" href="classitk_1_1Object.html" title="Base class for most itk classes.">Object</a>); <a name="l00091"></a>00091 <a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keywordtype">float</span> PixelType; <a name="l00098"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#c12241b68451a71d0e7794ea1c1cc800">00098</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Pixel8bitsType; <a name="l00099"></a>00099 <a name="l00101"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#8e5ac14dec1aed101dec3535ccd1b6a0">00101</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Vector.html">Vector< double, 2 ></a> <a class="code" href="classitk_1_1Vector.html">Vector2DType</a>; <a name="l00102"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#fa5ab33baf402d42c20e614b884449d3">00102</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Vector.html">Vector< double, 3 ></a> <a class="code" href="classitk_1_1Vector.html">Vector3DType</a>; <a name="l00103"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#c7890d9afbb468d91b744c9887c18632">00103</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector< unsigned int, 2 ></a> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">MeasurementVectorType</a>; <a name="l00104"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#6c151e7f56fb642f4f136e4687e5d547">00104</a> <span class="keyword">typedef</span> std::vector< unsigned int> VectorType; <a name="l00105"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#a725991b69e50b3eaf734f86bcade952">00105</a> <span class="keyword">typedef</span> <a class="code" href="classvnl__vector.html">vnl_vector<double></a> <a class="code" href="classvnl__vector.html">VectorOfDoubleType</a>; <a name="l00106"></a>00106 <a name="l00107"></a>00107 <a name="l00110"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#b32d40d5675a9ad9f77d3a93a11f9b49">00110</a> <span class="keyword">typedef</span> <a class="code" href="classvnl__matrix.html">vnl_matrix<double></a> <a class="code" href="classvnl__matrix.html">MatrixOfDoubleType</a>; <a name="l00111"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#4da12f567114b94131d634078b0a165d">00111</a> <span class="keyword">typedef</span> <a class="code" href="classvnl__matrix.html">vnl_matrix<int></a> <a class="code" href="classvnl__matrix.html">MatrixOfIntegerType</a>; <a name="l00112"></a>00112 <a name="l00114"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#979fbcd78c0f60ca2a2afcfb602aac11">00114</a> <span class="keyword">typedef</span> TImage Image3DType; <a name="l00115"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#0354f8399f2e013c69199e04d1f2cf01">00115</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image< PixelType, 2 ></a> <a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image2DType</a>; <a name="l00116"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#a8f3687a7144dff6050d385ddedffc61">00116</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image< Pixel8bitsType, 2 ></a> <a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image2D8bitsType</a>; <a name="l00117"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#a656768dc2b0b8bdc7ac818c1fd5ec81">00117</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image< Pixel8bitsType, 3 ></a> <a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">Image3D8bitsType</a>; <a name="l00118"></a>00118 <a name="l00120"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#f6dd623e7b25315b5908f6a1d248d439">00120</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#be32dc19e71d40322ad9828b9ab40853">Image2D8bitsType::IndexType</a> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#be32dc19e71d40322ad9828b9ab40853">IndexType</a>; <a name="l00121"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#f2326541ae619f5e3b34e16ca79b124b">00121</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#be32dc19e71d40322ad9828b9ab40853">Image3DType::IndexType</a> Index3DType; <a name="l00122"></a>00122 <a name="l00124"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#883494fc749da5a4c5948c31ccfe9edc">00124</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classitk_1_1SmartPointer.html">Image2DType::Pointer</a> <a class="code" href="classitk_1_1SmartPointer.html">Image2DPointer</a>; <a name="l00125"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#139e9ef7c47bc804f719ac4c4b80cacf">00125</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="itkFEMMacro_8h.html#68fafcc6909430ccd70cbc4aeee0107c">Image3DType::ConstPointer</a> Image3DConstPointer; <a name="l00126"></a>00126 <a name="l00128"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#bdf5f0bdd66cd267ae93c680e85c94d8">00128</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1PointSet.html" title="A superclass of the N-dimensional mesh structure; supports point (geometric coordinate...">PointSet< unsigned short, 2 ></a> <a class="code" href="classitk_1_1PointSet.html" title="A superclass of the N-dimensional mesh structure; supports point (geometric coordinate...">PointSetType</a>; <a name="l00129"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#33b2bac5951df372178afe32b9fbf254">00129</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> PointSetType::PointType PointType; <a name="l00130"></a>00130 <a name="l00132"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#86bb7d0669f95c36fd6796ada8b0d0f5">00132</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> PointSetType::PointsContainer PointsContainer; <a name="l00133"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#1762c138a7e41d05381c5041c56768a2">00133</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> PointSetType::PointDataContainer PointDataContainer; <a name="l00134"></a>00134 <a name="l00136"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#c18769feab65856b5d05c790c3e14adf">00136</a> <span class="keyword">typedef</span> std::list<IndexType> List2DType; <a name="l00137"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#f09ae1f97c25ab382959daa894c90296">00137</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Statistics_1_1ListSample.html" title="This class is the native implementation of the ListSampleBase.">Statistics::ListSample< MeasurementVectorType ></a> <a class="code" href="classitk_1_1Statistics_1_1ListSample.html" title="This class is the native implementation of the ListSampleBase.">SampleType</a>; <a name="l00138"></a>00138 <a name="l00140"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#01eb6bd0f14ddc184c49334fb7052daf">00140</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1ImageLinearIteratorWithIndex.html" title="A multi-dimensional image iterator that visits image pixels within a region in a...">ImageLinearIteratorWithIndex< Image2DType ></a> <a class="code" href="classitk_1_1ImageLinearIteratorWithIndex.html" title="A multi-dimensional image iterator that visits image pixels within a region in a...">LinearIteratorType</a>; <a name="l00141"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#007cf4ff062c1d40f12e4e7333b6f7bb">00141</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1ImageSliceConstIteratorWithIndex.html" title="Multi-dimensional image iterator which only walks a region.">ImageSliceConstIteratorWithIndex< Image3DType ></a> <a class="code" href="classitk_1_1ImageSliceConstIteratorWithIndex.html" title="Multi-dimensional image iterator which only walks a region.">SliceIteratorType</a>; <a name="l00142"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#6e455ebafae0a7055187373d12cdbe4c">00142</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1ImageRegionConstIterator.html" title="A multi-dimensional iterator templated over image type that walks a region of pixels...">ImageRegionConstIterator< Image3D8bitsType ></a> <a class="code" href="classitk_1_1ImageRegionConstIterator.html" title="A multi-dimensional iterator templated over image type that walks a region of pixels...">ConstIteratorType</a>; <a name="l00143"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#7ff51bfc78c3fae5a2ff8a37d9ee60bc">00143</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1ImageRegionIterator.html" title="A multi-dimensional iterator templated over image type that walks a region of pixels...">ImageRegionIterator< Image2D8bitsType ></a> <a class="code" href="classitk_1_1ImageRegionIterator.html" title="A multi-dimensional iterator templated over image type that walks a region of pixels...">IteratorType</a>; <a name="l00144"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#0b4fbf79e795180100cd480b2e1c7354">00144</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1NeighborhoodIterator.html" title="Defines iteration of a local N-dimensional neighborhood of pixels across an itk::Image...">NeighborhoodIterator< Image2D8bitsType ></a> <a class="code" href="classitk_1_1NeighborhoodIterator.html" title="Defines iteration of a local N-dimensional neighborhood of pixels across an itk::Image...">NeighborIteratorType</a>; <a name="l00145"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#7038c3ab5397f9b4d6585a7a826a0862">00145</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> PointsContainer::Iterator PointsIterator; <a name="l00146"></a>00146 <a name="l00148"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#f0ce52eca041de94a2f259ce4ec6eb91">00148</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1GradientMagnitudeImageFilter.html" title="Computes the gradient magnitude of an image region at each pixel.">GradientMagnitudeImageFilter< Image3DType, Image3DType ></a> <a class="code" href="classitk_1_1GradientMagnitudeImageFilter.html" title="Computes the gradient magnitude of an image region at each pixel.">GradientFilterType</a>; <a name="l00149"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#5d7b925d7760a5f14e612696f1cadae7">00149</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1BinaryThresholdImageFilter.html" title="Binarize an input image by thresholding.">BinaryThresholdImageFilter<Image3DType, Image3DType ></a> <a class="code" href="classitk_1_1BinaryThresholdImageFilter.html" title="Binarize an input image by thresholding.">BinaryFilterType</a>; <a name="l00150"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#cedbd1be876957448da9c968f79e0c8e">00150</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1BinaryThresholdImageFilter.html" title="Binarize an input image by thresholding.">BinaryThresholdImageFilter<Image2DType, Image2D8bitsType ></a> <a class="code" href="classitk_1_1BinaryThresholdImageFilter.html" title="Binarize an input image by thresholding.">BinaryFilterType1</a>; <a name="l00151"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#5c5d25f588488d605142acc7f3c766e2">00151</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1BinaryThresholdImageFilter.html" title="Binarize an input image by thresholding.">BinaryThresholdImageFilter<Image3DType, Image3D8bitsType ></a> <a class="code" href="classitk_1_1BinaryThresholdImageFilter.html" title="Binarize an input image by thresholding.">BinaryFilterType2</a>; <a name="l00152"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#c7244dbb41030b709cf194c153dce98e">00152</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1DanielssonDistanceMapImageFilter.html">DanielssonDistanceMapImageFilter< Image3DType, Image3DType ></a> <a class="code" href="classitk_1_1DanielssonDistanceMapImageFilter.html">DistanceMapFilterType</a>; <a name="l00153"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#fb7ec418c840d0070012eb8a19d05a5e">00153</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1BinaryThinningImageFilter.html" title="This filter computes one-pixel-wide edges of the input image.">BinaryThinningImageFilter< Image2D8bitsType, Image2D8bitsType ></a> <a class="code" href="classitk_1_1BinaryThinningImageFilter.html" title="This filter computes one-pixel-wide edges of the input image.">ThinFilterType</a>; <a name="l00154"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#04f1d6bb1e3a8668711e8748131ff93c">00154</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1BinaryPruningImageFilter.html" title="This filter removes &quot;spurs&quot; of less than a certain length in the input...">BinaryPruningImageFilter< Image2D8bitsType, Image2D8bitsType ></a> <a class="code" href="classitk_1_1BinaryPruningImageFilter.html" title="This filter removes &quot;spurs&quot; of less than a certain length in the input...">PruneFilterType</a>; <a name="l00155"></a>00155 <a name="l00157"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#cf6aeaa02e57b6a59c80524d017e6552">00157</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetImage( <span class="keyword">const</span> Image3DType * image ) <a name="l00158"></a>00158 { <a name="l00159"></a>00159 <span class="keywordflow">if</span> ( m_Image != image ) <a name="l00160"></a>00160 { <a name="l00161"></a>00161 m_Image = image; <a name="l00162"></a>00162 this->Modified(); <a name="l00163"></a>00163 m_Valid = <span class="keyword">false</span>; <a name="l00164"></a>00164 } <a name="l00165"></a>00165 } <a name="l00167"></a>00167 <a name="l00171"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#fdad5e9215acbbe818208e0045c9d49f">00171</a> <span class="keywordtype">void</span> SetLowerThresholdGradient(<span class="keyword">const</span> <span class="keywordtype">double</span> &lt) <a name="l00172"></a>00172 { m_LowerThreshold = lt; } <a name="l00173"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#0d6a8c527c7b64338e5fc698de3113f1">00173</a> <span class="keyword">const</span> <span class="keywordtype">double</span> &GetLowerThresholdGradient()<span class="keyword"> const</span> <a name="l00174"></a>00174 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_LowerThreshold; } <a name="l00176"></a>00176 <a name="l00180"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#6c6828958953a7f6774d63ba92950b86">00180</a> <span class="keywordtype">void</span> SetUpperThresholdMeanDistance(<span class="keyword">const</span> <span class="keywordtype">double</span> &ut1) <a name="l00181"></a>00181 { m_UpperThreshold1 = ut1; } <a name="l00182"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#1d6a4e5bcace9ee2f085c33ae95ef88a">00182</a> <span class="keyword">const</span> <span class="keywordtype">double</span> &GetUpperThresholdMeanDistance()<span class="keyword"> const</span> <a name="l00183"></a>00183 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_UpperThreshold1; } <a name="l00185"></a>00185 <a name="l00189"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#7d2e0e06d2dbf27798491319894081a4">00189</a> <span class="keywordtype">void</span> SetUpperThresholdDistance(<span class="keyword">const</span> <span class="keywordtype">double</span> &ut2) <a name="l00190"></a>00190 { m_UpperThreshold2 = ut2; } <a name="l00191"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#4aae14148cf13625f5f059130be1691e">00191</a> <span class="keyword">const</span> <span class="keywordtype">double</span> &GetUpperThresholdDistance()<span class="keyword"> const</span> <a name="l00192"></a>00192 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_UpperThreshold2; } <a name="l00194"></a>00194 <a name="l00196"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#8f344b470d11ddbb3537af1d9b9e83a4">00196</a> <span class="keywordtype">void</span> SetTolerance(<span class="keyword">const</span> <span class="keywordtype">double</span> &t) <a name="l00197"></a>00197 { m_Tolerance = t; } <a name="l00198"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#eb077ef56be4f09848cda88b4ca05606">00198</a> <span class="keyword">const</span> <span class="keywordtype">double</span> &GetTolerance()<span class="keyword"> const</span> <a name="l00199"></a>00199 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_Tolerance; } <a name="l00201"></a>00201 <a name="l00203"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#8b4cac1f9791014f0485d4a659d9deb6">00203</a> <span class="keywordtype">void</span> SetPruneIteration(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &t) <a name="l00204"></a>00204 { m_PruneIteration = t; } <a name="l00205"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#353ce510283756e3d84191345b576189">00205</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &GetPruneIteration()<span class="keyword"> const</span> <a name="l00206"></a>00206 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_PruneIteration; } <a name="l00208"></a>00208 <a name="l00210"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#2e4fcc007d7194dab10b78a477d2097d">00210</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &GetNumberOfTrainingImages()<span class="keyword"> const</span> <a name="l00211"></a>00211 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m_NumberOfTrainingImages; } <a name="l00212"></a>00212 <a name="l00218"></a>00218 <span class="keywordtype">void</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#f75a5945cdd8315676941024a0b8c1e9">GenerateData</a>( ); <a name="l00219"></a>00219 <a name="l00221"></a>00221 VectorOfDoubleType GetMeanShape(); <a name="l00222"></a>00222 <a name="l00224"></a>00224 VectorOfDoubleType GetEigenvalues(); <a name="l00225"></a>00225 <a name="l00227"></a>00227 MatrixOfDoubleType GetEigenvector(); <a name="l00228"></a>00228 <a name="l00229"></a>00229 <span class="keyword">protected</span>: <a name="l00230"></a>00230 <a name="l00231"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#aea2af916dffa768573b0bb55502c253">00231</a> <a class="code" href="classitk_1_1ActiveShapeModelCalculator.html" title="Base class for ActiveShapeModelCalculator object.">ActiveShapeModelCalculator</a>(): m_NumberOfTrainingImages(0) <a name="l00232"></a>00232 { <a name="l00233"></a>00233 m_LowerThreshold = 10.0; <span class="comment">// default value</span> <a name="l00234"></a>00234 m_UpperThreshold1 = 1.0; <span class="comment">// default value</span> <a name="l00235"></a>00235 m_UpperThreshold2 = 1.0; <span class="comment">// default value</span> <a name="l00236"></a>00236 m_Tolerance = 2.0; <span class="comment">// default value</span> <a name="l00237"></a>00237 m_PruneIteration = 3; <span class="comment">// default value</span> <a name="l00238"></a>00238 m_NumberOfTrainingImages = 0; <a name="l00239"></a>00239 m_EigenVectors.set_size(0,0); <a name="l00240"></a>00240 m_EigenValues.set_size(0); <a name="l00241"></a>00241 m_Means.set_size(0); <a name="l00242"></a>00242 m_Valid = <span class="keyword">false</span>; <a name="l00243"></a>00243 m_Image = <a class="code" href="itkVoronoiDiagram2D_8h.html#070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>; <a name="l00244"></a>00244 } <a name="l00245"></a>00245 <a name="l00246"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#12311fcc90585102f4cbabca1d2afd27">00246</a> <a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#12311fcc90585102f4cbabca1d2afd27">~ActiveShapeModelCalculator</a>() {} <a name="l00247"></a>00247 <a name="l00248"></a><a class="code" href="classitk_1_1ActiveShapeModelCalculator.html#62cc05daa0aa8122372c6b6cdfd11915">00248</a> <span class="keywordtype">void</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#920ae03048a5ad715d803ca2e92b52de">PrintSelf</a>(std::ostream& os, <a class="code" href="classitk_1_1Indent.html" title="Control indentation during Print() invocation.">Indent</a> indent)<span class="keyword"> const</span> <a name="l00249"></a>00249 <span class="keyword"> </span>{ <a name="l00250"></a>00250 <a class="code" href="namespaceHardConnectedComponentImageFilter.html#920ae03048a5ad715d803ca2e92b52de">Superclass::PrintSelf</a>(os,indent); <a name="l00251"></a>00251 os << indent << <span class="stringliteral">"LowerThreshold: "</span> << m_LowerThreshold << std::endl; <a name="l00252"></a>00252 os << indent << <span class="stringliteral">"UpperThreshold1: "</span> << m_UpperThreshold1 << std::endl; <a name="l00253"></a>00253 os << indent << <span class="stringliteral">"UpperThreshold2: "</span> << m_UpperThreshold2 << std::endl; <a name="l00254"></a>00254 os << indent << <span class="stringliteral">"Tolerance: "</span> << m_Tolerance << std::endl; <a name="l00255"></a>00255 os << indent << <span class="stringliteral">"Number of training images: "</span> << m_NumberOfTrainingImages << std::endl; <a name="l00256"></a>00256 os << indent << <span class="stringliteral">"Number of iteration for Prunig filter: "</span> << m_PruneIteration << std::endl; <a name="l00257"></a>00257 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<<<span class="stringliteral">" "</span>); <a name="l00258"></a>00258 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<<<span class="stringliteral">"Results of the shape model"</span>); <a name="l00259"></a>00259 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<<<span class="stringliteral">"===================================="</span>); <a name="l00260"></a>00260 <a name="l00261"></a>00261 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">"The mean shape: "</span>); <a name="l00262"></a>00262 <a name="l00263"></a>00263 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< m_Means); <a name="l00264"></a>00264 <a name="l00265"></a>00265 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">" "</span>); <a name="l00266"></a>00266 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">"================== "</span>); <a name="l00267"></a>00267 <a name="l00268"></a>00268 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">"The eigen values: "</span>); <a name="l00269"></a>00269 <a name="l00270"></a>00270 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< m_EigenValues); <a name="l00271"></a>00271 <a name="l00272"></a>00272 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">" "</span>); <a name="l00273"></a>00273 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">"================== "</span>); <a name="l00274"></a>00274 <a name="l00275"></a>00275 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">"The eigen vectors: "</span>); <a name="l00276"></a>00276 <a name="l00277"></a>00277 <a name="l00278"></a>00278 <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_Means.size(); i++) <a name="l00279"></a>00279 { <a name="l00280"></a>00280 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< m_EigenVectors.get_row(i)); <a name="l00281"></a>00281 } <a name="l00282"></a>00282 <a name="l00283"></a>00283 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">" "</span>); <a name="l00284"></a>00284 <a class="code" href="itkMacro_8h.html#8d62178b29e22f1b0a10e0283f5939f2">itkDebugMacro</a>(<< <span class="stringliteral">"+++++++++++++++++++++++++"</span>); <a name="l00285"></a>00285 }<span class="comment">// end PrintSelf</span> <a name="l00286"></a>00286 <a name="l00287"></a>00287 <a name="l00288"></a>00288 <span class="keyword">private</span>: <a name="l00289"></a>00289 <a class="code" href="classitk_1_1ActiveShapeModelCalculator.html" title="Base class for ActiveShapeModelCalculator object.">ActiveShapeModelCalculator</a>(<span class="keyword">const</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#ac7d0120fe5292cdcdddb6163b8cb150">Self</a>&); <span class="comment">//purposely not implemented</span> <a name="l00290"></a>00290 <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#ac7d0120fe5292cdcdddb6163b8cb150">Self</a>&); <span class="comment">//purposely not implemented</span> <a name="l00291"></a>00291 <a name="l00292"></a>00292 <span class="keywordtype">bool</span> m_Valid; <span class="comment">// Have parameters been computed yet?</span> <a name="l00293"></a>00293 <span class="keywordtype">float</span> m_LowerThreshold; <a name="l00294"></a>00294 <span class="keywordtype">float</span> m_UpperThreshold1; <a name="l00295"></a>00295 <span class="keywordtype">float</span> m_UpperThreshold2; <a name="l00296"></a>00296 <span class="keywordtype">float</span> m_Tolerance; <a name="l00297"></a>00297 VectorOfDoubleType m_Means; <a name="l00298"></a>00298 MatrixOfDoubleType m_EigenVectors; <a name="l00299"></a>00299 VectorOfDoubleType m_EigenValues; <a name="l00300"></a>00300 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_NumberOfTrainingImages; <a name="l00301"></a>00301 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_PruneIteration; <a name="l00302"></a>00302 Image3DConstPointer m_Image; <a name="l00303"></a>00303 <a name="l00304"></a>00304 }; <span class="comment">// class ActiveShapeModelCalculator</span> <a name="l00305"></a>00305 <a name="l00306"></a>00306 } <span class="comment">// end of namespace itk</span> <a name="l00307"></a>00307 <a name="l00308"></a>00308 <span class="preprocessor">#ifndef ITK_MANUAL_INSTANTIATION</span> <a name="l00309"></a>00309 <span class="preprocessor"></span><span class="preprocessor">#include "itkActiveShapeModelCalculator.txx"</span> <a name="l00310"></a>00310 <span class="preprocessor">#endif</span> <a name="l00311"></a>00311 <span class="preprocessor"></span> <a name="l00312"></a>00312 <span class="preprocessor">#endif</span> <a name="l00313"></a>00313 <span class="preprocessor"></span> </pre></div></div> <hr><address><small> Generated at Thu May 7 22:04:31 2009 for ITK by <a href="http://www.stack.nl/~dimitri/doxygen/index.html"> <img src="http://www.stack.nl/~dimitri/doxygen/doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53> </a> 1.5.9 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2000</small></address> </body> </html>