Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef __cmtkActiveShapeModel_h_included_
00034 #define __cmtkActiveShapeModel_h_included_
00035
00036 #include <cmtkconfig.h>
00037
00038 #include <Base/cmtkTypes.h>
00039 #include <Base/cmtkDirectionSet.h>
00040
00041 #include <System/cmtkSmartPtr.h>
00042
00043 namespace
00044 cmtk
00045 {
00046
00049
00051 class ActiveShapeModel
00052 {
00053 public:
00055 typedef SmartPointer<ActiveShapeModel> SmartPtr;
00056
00058 unsigned int NumberOfPoints;
00059
00061 unsigned int GetNumberOfPoints() const { return NumberOfPoints; }
00062
00064 CoordinateVector::SmartPtr Mean;
00065
00067 unsigned int NumberOfModes;
00068
00070 unsigned int GetNumberOfModes() const { return NumberOfModes; }
00071
00073 DirectionSet::SmartPtr Modes;
00074
00076 CoordinateVector::SmartPtr ModeVariances;
00077
00079 ActiveShapeModel() : Mean( NULL ), Modes( NULL ) {}
00080
00082 ActiveShapeModel( CoordinateVector::SmartPtr& mean, DirectionSet::SmartPtr& modes, CoordinateVector::SmartPtr& modeVariances );
00083
00088 ActiveShapeModel
00089 ( const Types::Coordinate *const* trainingSet,
00090 const unsigned int numberOfSamples,
00091 const unsigned int numberOfPoints,
00092 const unsigned int numberOfModes ) :
00093 Mean( NULL ),
00094 Modes( NULL )
00095 {
00096 this->Construct( trainingSet, numberOfSamples, numberOfPoints, numberOfModes );
00097 }
00098
00119 float Construct( const Types::Coordinate *const* trainingSet, const unsigned int numberOfSamples, const unsigned int numberOfPoints, const unsigned int numberOfModes );
00120
00123 Types::Coordinate* Generate( Types::Coordinate *const instance, const Types::Coordinate* modeWeights ) const;
00124
00132 float Decompose( const CoordinateVector* input, Types::Coordinate *const weights = NULL ) const;
00133
00134 protected:
00139 void Allocate( const unsigned int numberOfPoints, const unsigned int numberOfModes );
00140 };
00141
00143
00144 }
00145
00146 #endif // #ifndef __cmtkActiveShapeModel_h_included_