]> Creatis software - creaCLI.git/blob - ModuleCall/GenSrc/bbSlicerGradientAnisotropicDiffusion.h
All Slicer modules succesfully compiled into BBTK boxes :P
[creaCLI.git] / ModuleCall / GenSrc / bbSlicerGradientAnisotropicDiffusion.h
1 #ifndef __bbSlicerGradientAnisotropicDiffusion_h_INCLUDED__
2 #define __bbSlicerGradientAnisotropicDiffusion_h_INCLUDED__
3
4 #include "bbSlicer_EXPORT.h"
5 #include "bbtkAtomicBlackBox.h"
6
7 #include <vector>
8 #include <cstdlib>
9 #include <dlfcn.h>
10 #include <sstream>
11 #include <fstream>
12 #include <iostream>
13
14 #include <ModuleDescriptionUtilities.h>
15 #include <ModuleDescriptionParser.h>
16 #include <ModuleParameterGroup.h>
17 #include <ModuleDescription.h>
18 #include <ModuleParameter.h>
19
20 #include "CreationTool.h"
21
22 namespace bbSlicer {
23
24     class bbSlicer_EXPORT GradientAnisotropicDiffusion
25     :
26     public bbtk::AtomicBlackBox {
27         BBTK_BLACK_BOX_INTERFACE ( GradientAnisotropicDiffusion , bbtk::AtomicBlackBox ) ;
28
29         // GENERATED ARGS        
30         
31 BBTK_DECLARE_INPUT ( conductance , double );
32 BBTK_DECLARE_INPUT ( numberOfIterations , int );
33 BBTK_DECLARE_INPUT ( timeStep , double );
34 BBTK_DECLARE_INPUT ( inputVolume , std::string );
35 BBTK_DECLARE_INPUT ( outputVolume , std::string );
36
37         // EO GENERATED ARGS
38
39         BBTK_PROCESS ( Process ) ;
40         void Process ( ) ;
41     private:
42         void execute ( std::string lib , int _argc , char * _argv[] ) ;
43     } ;
44
45     BBTK_BEGIN_DESCRIBE_BLACK_BOX ( GradientAnisotropicDiffusion , bbtk::AtomicBlackBox ) ;
46     BBTK_NAME ( "GradientAnisotropicDiffusion" ) ;
47     BBTK_AUTHOR ( "Bill Lorensen" ) ;
48     BBTK_DESCRIPTION ( "Runs gradient anisotropic diffusion on a volume.Anisotropic diffusion methods reduce noise or unwanted detail in images while preserving specific image features, like edges.  For many applications, there is an assumption that light-dark transitions edges are interesting.  Standard isotropic diffusion methods move and blur light-dark boundaries.  Anisotropic diffusion methods are formulated to specifically preserve edges. The conductance term for this implementation is a function of the gradient magnitude of the image at each point, reducing the strength of diffusion at edges. The numerical implementation of this equation is similar to that described in the Perona-Malik paper, but uses a more robust technique for gradient magnitude estimation and has been generalized to N-dimensions." ) ;
49     BBTK_CATEGORY ( "Filtering.Denoising" ) ;
50
51     // GENERATED DESCRPTION
52     
53 BBTK_INPUT(GradientAnisotropicDiffusion , conductance , "conductance" , double, "");
54 BBTK_INPUT(GradientAnisotropicDiffusion , numberOfIterations , "numberOfIterations" , int, "");
55 BBTK_INPUT(GradientAnisotropicDiffusion , timeStep , "timeStep" , double, "");
56 BBTK_INPUT(GradientAnisotropicDiffusion , inputVolume , "inputVolume" , std::string, "");
57 BBTK_INPUT(GradientAnisotropicDiffusion , outputVolume , "outputVolume" , std::string, "");
58
59     // EO GENERATED DESCRIPTION
60
61     BBTK_END_DESCRIBE_BLACK_BOX ( GradientAnisotropicDiffusion ) ;
62 }
63
64 #endif // __bbSlicerGradientAnisotropicDiffusion_h_INCLUDED__
65
66