zxhproj v 2.2
zxhproj

zxhMetricLogProbability.h

00001 /*=========================================================================
00002 
00003   Program:   ZXH Registration Software
00004   Author:    GAO, Gang
00005   Language:  Visual C++
00006   OS:        Windows 7
00007   Date:      $Date: From  2010-08 $
00008   Version:   $Revision: 2.0 $
00009 
00010   Description: this function requires gsl library
00011 =========================================================================*/
00012 
00013 #pragma once
00014 #include "zxh.h"
00015 #include "zxhMetricBase.h"
00016 
00017 #define PI                                                  3.1415926;
00018 #define BOUNDARY_RANGE                                      5.0
00019 
00020 #define MAX_INTENSITY                                       255
00021 #define MIN_DIST_PARAM_1                                    1
00022 #define MAX_DIST_PARAM_1                                    MAX_INTENSITY
00023 #define MIN_DIST_PARAM_2                                    1
00024 #define MAX_DIST_PARAM_2                                    100
00025 
00026 #define GAMMA_DISTRIBUTION                                  0
00027 #define GAUSSIAN_DISTRIBUTION                               1
00028 #define BEAM_THICKNESS_GAUSSIAN_SMOOTHING_2_SIGMA_SQUARED   15.0
00029 #define BOUNDARY_REFLECTION_SIGMA_SQUARED                   1800
00030 #define AIR_ACOUSTIC_IMPEDENCE                              0.0004
00031 
00032 class zxhMetricLogProbability : public zxhMetricBase
00033 {
00034 public:
00035         zxhMetricLogProbability(void){};
00036         ~zxhMetricLogProbability(void){};
00037 /*
00041     int GetRefImageCount();
00042     
00046     virtual std::string GetMetricType() {return "_LogProbability_"; } ;
00047     
00052     virtual bool SetImage(zxhImageData **pImageRef, int nImageRef);
00053     
00055     virtual int GetNoOfEchoImages()             {return _nImageRef-1;};
00057     virtual zxhImageData* GetMRImage()          { return m_ppImageRef[0] ; };
00058 
00060     virtual zxhImageData* GetEchoImage( int index) 
00061     {
00062         int d = m_ppImageRef[index+1]->GetDimension();
00063         return m_ppImageRef[index+1] ; 
00064     };
00066     virtual zxhImageData* GetEchoMaskImage( )
00067     {
00068         if(m_pMaskRef==0) return 0 ;
00069         return m_pMaskRef ;
00070     };
00072     //todo virtual bool SetImageModelingType()
00074     virtual zxhImageModelingBase* GetEchoModeling(int i)    { return & m_pModelingRef[i+1] ; } ;
00076     virtual zxhImageModelingBase* GetMRModeling(void)       { return & m_pModelingRef[0] ; } ;
00080     virtual bool SetDistanceImage(zxhImageData *pImageDist) { _pImageDist = pImageDist; return true; };
00084     virtual bool SetNearestNeighborImage(zxhImageData *pImageNeighbor) {_pImageNeighbor = pImageNeighbor; return true; };
00085 
00086 
00087     virtual bool SetGradientImages(zxhImageData *x, zxhImageData *y, zxhImageData *z)
00088     {
00089         _pImageGradX = x;
00090         _pImageGradY = y;
00091         _pImageGradZ = z;
00092 
00093         return true;
00094     };
00098     virtual int GetValue(zxhlfloat &fValue);
00099 
00103     virtual bool ComputeLogProbability();
00104 
00108     virtual bool SetLabels(int *labels, int n)
00109     {
00110         _numOfRegs = n;
00111         _regLabels = labels;
00112 
00113         return true;
00114     };
00115 
00119     virtual bool SetRegionDistanceIndices(int *idx)
00120     {
00121         _regDistIndices = idx;
00122 
00123         return true;
00124     }
00125 
00129     virtual bool SetDistanceParameters(double **p)
00130     {
00131         _distParams = p;
00132 
00133         return true;
00134     }
00135 
00139     virtual bool SetDistanceType(int *distType)
00140     {
00141         _distType = distType;
00142 
00143         return true;
00144     }
00145 
00146     virtual bool SetEchoProbePosition(double **pos)
00147     {
00148         _echoProbePos = pos;
00149 
00150         return true;
00151     }
00152 
00153     virtual bool SetRegionZValue(double *zvalues)
00154     {
00155         _regZValues = zvalues;
00156 
00157         return true;
00158     };
00159 
00160     virtual bool SetBoundaryWeights();
00161 
00162 
00163     void DebugOn()
00164     {
00165         _debug = true;
00166     }
00167 
00168     void DebugOff()
00169     {
00170         _debug = false;
00171     }
00172 
00173 protected:
00178     bool CreateGradientImages(zxhImageData *image);
00179 
00183     double N(const double);
00184 
00185 protected:
00189     int _nImageRef;
00190 
00194     zxhlfloat _fLogProb;
00195 
00199     zxhImageData **m_ppImageRef;
00200 
00204     zxhImageData *_pImageDist;
00208     zxhImageData *_pImageNeighbor;
00212     zxhImageData *_pImageGradX;
00216     zxhImageData *_pImageGradY;
00220     zxhImageData *_pImageGradZ;
00221 
00225     zxhImageData *_pImageProb;
00226 
00227 
00228     double _uniformRegProb;
00229 
00230     double **_distParams;
00231     double **_echoProbePos;
00232     double **_boundaryWeights;
00233     double **_gaussianDistCumulativeSum;
00234     double **_gammaDistCumulativeSum;
00235 
00236     double *_regZValues;
00237     double *_boundaryCumulativeSum;
00238     int    *_labelIndices;
00239     int    *_regDistIndices;
00240     int    *_regLabels;
00241     int    *_distType;
00242 
00243     int    _numOfRegs;
00244 
00245     bool   _debug;
00246         */
00247 };
 All Classes Namespaces Functions Variables Typedefs