#ifndef __bbSlicerGradientAnisotropicDiffusion_h_INCLUDED__ #define __bbSlicerGradientAnisotropicDiffusion_h_INCLUDED__ #include "bbSlicer_EXPORT.h" #include "bbtkAtomicBlackBox.h" #include #include #include #include #include #include #include #include #include #include #include #include "CreationTool.h" namespace bbSlicer { class bbSlicer_EXPORT GradientAnisotropicDiffusion : public bbtk::AtomicBlackBox { BBTK_BLACK_BOX_INTERFACE ( GradientAnisotropicDiffusion , bbtk::AtomicBlackBox ) ; // GENERATED ARGS BBTK_DECLARE_INPUT ( conductance , double ); BBTK_DECLARE_INPUT ( numberOfIterations , int ); BBTK_DECLARE_INPUT ( timeStep , double ); BBTK_DECLARE_INPUT ( inputVolume , std::string ); BBTK_DECLARE_INPUT ( outputVolume , std::string ); // EO GENERATED ARGS BBTK_PROCESS ( Process ) ; void Process ( ) ; private: void execute ( std::string lib , int _argc , char * _argv[] ) ; } ; BBTK_BEGIN_DESCRIBE_BLACK_BOX ( GradientAnisotropicDiffusion , bbtk::AtomicBlackBox ) ; BBTK_NAME ( "GradientAnisotropicDiffusion" ) ; BBTK_AUTHOR ( "Bill Lorensen" ) ; 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." ) ; BBTK_CATEGORY ( "Filtering.Denoising" ) ; // GENERATED DESCRPTION BBTK_INPUT(GradientAnisotropicDiffusion , conductance , "conductance" , double, ""); BBTK_INPUT(GradientAnisotropicDiffusion , numberOfIterations , "numberOfIterations" , int, ""); BBTK_INPUT(GradientAnisotropicDiffusion , timeStep , "timeStep" , double, ""); BBTK_INPUT(GradientAnisotropicDiffusion , inputVolume , "inputVolume" , std::string, ""); BBTK_INPUT(GradientAnisotropicDiffusion , outputVolume , "outputVolume" , std::string, ""); // EO GENERATED DESCRIPTION BBTK_END_DESCRIBE_BLACK_BOX ( GradientAnisotropicDiffusion ) ; } #endif // __bbSlicerGradientAnisotropicDiffusion_h_INCLUDED__