CASToR  3.0
Tomographic Reconstruction (PET/SPECT/CT)
iPenaltyMedianRootPrior.hh
Go to the documentation of this file.
1 /*
2 This file is part of CASToR.
3 
4  CASToR is free software: you can redistribute it and/or modify it under the
5  terms of the GNU General Public License as published by the Free Software
6  Foundation, either version 3 of the License, or (at your option) any later
7  version.
8 
9  CASToR is distributed in the hope that it will be useful, but WITHOUT ANY
10  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12  details.
13 
14  You should have received a copy of the GNU General Public License along with
15  CASToR (in file GNU_GPL.TXT). If not, see <http://www.gnu.org/licenses/>.
16 
17 Copyright 2017-2019 all CASToR contributors listed below:
18 
19  --> Didier BENOIT, Claude COMTAT, Marina FILIPOVIC, Thibaut MERLIN, Mael MILLARDET, Simon STUTE, Valentin VIELZEUF
20 
21 This is CASToR version 3.0.
22 */
23 
30 #ifndef IPENALTYMEDIANROOTPRIOR_HH
31 #define IPENALTYMEDIANROOTPRIOR_HH 1
32 
33 #include "vPenalty.hh"
34 #include "sAddonManager.hh"
35 #include "sOutputManager.hh"
36 
37 #define MRF_NEIGHBORHOOD_SPHERE 0
38 #define MRF_NEIGHBORHOOD_BOX 1
39 #define MRF_NEIGHBORHOOD_6_NEAREST 2
40 
41 #define MRF_NOT_DEFINED -1
42 
43 #define MRF_NEIGHBOR_X 0
44 #define MRF_NEIGHBOR_Y 1
45 #define MRF_NEIGHBOR_Z 2
46 
53 {
54  // -------------------------------------------------------------------
55  // Constructor & Destructor
56  public:
57 
72 
73  // -------------------------------------------------------------------
74  // Public member functions
75  public:
76  // Function for automatic insertion (put the class name as the parameter and do not add semi-column at the end of the line)
88  int ReadConfigurationFile(const string& a_configurationFile);
99  int ReadOptionsList(const string& a_optionsList);
112  int LocalPreProcessingStep(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th);
125  FLTNB ComputePenaltyValue(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th);
138  FLTNB ComputeFirstDerivative(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th);
151  FLTNB ComputeSecondDerivative(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th);
152 
153  // -------------------------------------------------------------------
154  // Private member functions
155  private:
165  void ShowHelpSpecific();
182  int InitializeSpecific();
203  int BuildSpecificNeighborhood(INTNB a_voxel, int a_th);
215  int ComputeMedianInNeighborhood(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th);
216 
217  // -------------------------------------------------------------------
218  // Data members
219  private:
220  // Neighborhood
229  // Specific
231 };
232 
233 // Class for automatic insertion (set here the visible optimizer's name as the first parameter,
234 // put the class name as the second parameter and do NOT add semi-colon at the end of the line)
236 
237 #endif
238 
#define FLTNB
Definition: gVariables.hh:81
int BuildSpecificNeighborhood(INTNB a_voxel, int a_th)
FLTNB ComputePenaltyValue(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th)
Implementation of the pure virtual vPenalty::ComputePenaltyValue()
int ReadOptionsList(const string &a_optionsList)
A function used to read options from a list of options.
void ShowHelpSpecific()
A function used to show help about the child penalty.
~iPenaltyMedianRootPrior()
The destructor of iPenaltyMedianRootPrior.
int InitializeSpecific()
This function is used to initialize specific stuff to the child penalty.
int CheckSpecificParameters()
A private function used to check the parameters settings specific to the child penalty.
int LocalPreProcessingStep(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th)
A public function computing a local pre-processing step for the penalty.
FLTNB ComputeFirstDerivative(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th)
Implementation of the pure virtual vPenalty::ComputeFirstDerivative()
int ReadConfigurationFile(const string &a_configurationFile)
A function used to read options from a configuration file.
FLTNB ComputeSecondDerivative(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th)
Implementation of the pure virtual vPenalty::ComputeSecondDerivative()
#define FUNCTION_PENALTY(CLASS)
Definition: vPenalty.hh:303
Declaration of class vPenalty.
This class is designed to generically described any penalty applied to MAP algorithms.
Definition: vPenalty.hh:48
#define INTNB
Definition: gVariables.hh:92
int ComputeMedianInNeighborhood(int a_tbf, int a_rbf, int a_cbf, INTNB a_voxel, int a_th)
A private function computing the median in the neighborhood of the provided index.
Declaration of class sOutputManager.
#define CLASS_PENALTY(NAME, CLASS)
Definition: vPenalty.hh:307
iPenaltyMedianRootPrior()
The constructor of iPenaltyMedianRootPrior.
This class implements the "median root prior".
Declaration of class sAddonManager.
int BuildNeighborhoodKernel()
A function used to build the neighborhood kernel.