|
SimpleITK
|
Denoise a binary image using min/max curvature flow. More...
#include <sitkBinaryMinMaxCurvatureFlowImageFilter.h>
Inheritance diagram for itk::simple::BinaryMinMaxCurvatureFlowImageFilter:
Collaboration diagram for itk::simple::BinaryMinMaxCurvatureFlowImageFilter:Denoise a binary image using min/max curvature flow.
BinaryMinMaxCurvatureFlowImageFilter implements a curvature driven image denoising algorithm. This filter assumes that the image is essentially binary: consisting of two classes. Iso-brightness contours in the input image are viewed as a level set. The level set is then evolved using a curvature-based speed function:
\[ I_t = F_{\mbox{minmax}} |\nabla I| \]
where \( F_{\mbox{minmax}} = \min(\kappa,0) \) if \( \mbox{Avg}_{\mbox{stencil}}(x) \) is less than or equal to \( T_{threshold} \) and \( \max(\kappa,0) \) , otherwise. \( \kappa \) is the mean curvature of the iso-brightness contour at point \( x \) .
In min/max curvature flow, movement is turned on or off depending on the scale of the noise one wants to remove. Switching depends on the average image value of a region of radius \( R \) around each point. The choice of \( R \) , the stencil radius, governs the scale of the noise to be removed.
The threshold value \( T_{threshold} \) is a user specified value which discriminates between the two pixel classes.
This filter make use of the multi-threaded finite difference solver hierarchy. Updates are computed using a BinaryMinMaxCurvatureFlowFunction object. A zero flux Neumann boundary condition is used when computing derivatives near the data boundary.
Reference: "Level Set Methods and Fast Marching Methods", J.A. Sethian, Cambridge Press, Chapter 16, Second edition, 1999.
Definition at line 64 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
Public Types | |
| using | PixelIDTypeList = RealPixelIDTypeList |
| using | Self = BinaryMinMaxCurvatureFlowImageFilter |
Public Types inherited from itk::simple::ImageFilter | |
| using | Self = ImageFilter |
Public Types inherited from itk::simple::ProcessObject | |
| using | Self = ProcessObject |
Public Member Functions | |
| BinaryMinMaxCurvatureFlowImageFilter () | |
| Image | Execute (const Image &image1) |
| Image | Execute (Image &&image1) |
| std::string | GetName () const |
| uint32_t | GetNumberOfIterations () const |
| int | GetStencilRadius () const |
| double | GetThreshold () const |
| double | GetTimeStep () const |
| Self & | SetNumberOfIterations (uint32_t NumberOfIterations) |
| Self & | SetStencilRadius (int StencilRadius) |
| Self & | SetThreshold (double Threshold) |
| Self & | SetTimeStep (double TimeStep) |
| std::string | ToString () const |
| virtual | ~BinaryMinMaxCurvatureFlowImageFilter () |
Public Member Functions inherited from itk::simple::ImageFilter | |
| ImageFilter () | |
| virtual | ~ImageFilter ()=0 |
Public Member Functions inherited from itk::simple::ProcessObject | |
| virtual void | Abort () |
| virtual int | AddCommand (itk::simple::EventEnum event, const std::function< void()> &func) |
| Directly add a callback to observe an event. | |
| virtual int | AddCommand (itk::simple::EventEnum event, itk::simple::Command &cmd) |
| Add a Command Object to observer the event. | |
| virtual float | GetProgress () const |
| An Active Measurement of the progress of execution. | |
| virtual bool | HasCommand (itk::simple::EventEnum event) const |
| Query of this object has any registered commands for event. | |
| ProcessObject () | |
| virtual void | RemoveAllCommands () |
| Remove all registered commands. | |
| virtual | ~ProcessObject () |
| virtual void | DebugOn () |
| virtual void | DebugOff () |
| virtual bool | GetDebug () const |
| virtual void | SetDebug (bool debugFlag) |
| virtual void | SetNumberOfThreads (unsigned int n) |
| virtual unsigned int | GetNumberOfThreads () const |
| virtual void | SetNumberOfWorkUnits (unsigned int n) |
| virtual unsigned int | GetNumberOfWorkUnits () const |
Private Types | |
| using | MemberFunctionType = Image (Self::*)( const Image& image1 ) |
Private Member Functions | |
| template<class TImageType> | |
| Image | ExecuteInternal (const Image &image1) |
Private Attributes | |
| bool | m_InPlace {false} |
| std::unique_ptr< detail::MemberFunctionFactory< MemberFunctionType > > | m_MemberFactory |
| uint32_t | m_NumberOfIterations {5u} |
| int | m_StencilRadius {2} |
| double | m_Threshold {0.0} |
| double | m_TimeStep {0.05} |
Friends | |
| struct | detail::MemberFunctionAddressor< MemberFunctionType > |
Additional Inherited Members | |
Static Public Member Functions inherited from itk::simple::ProcessObject | |
| static bool | GetGlobalDefaultDebug () |
| static void | GlobalDefaultDebugOff () |
| static void | GlobalDefaultDebugOn () |
| static void | SetGlobalDefaultDebug (bool debugFlag) |
| static void | GlobalWarningDisplayOn () |
| static void | GlobalWarningDisplayOff () |
| static void | SetGlobalWarningDisplay (bool flag) |
| static bool | GetGlobalWarningDisplay () |
| static double | GetGlobalDefaultCoordinateTolerance () |
| Access the global tolerance to determine congruent spaces. | |
| static void | SetGlobalDefaultCoordinateTolerance (double) |
| Access the global tolerance to determine congruent spaces. | |
| static double | GetGlobalDefaultDirectionTolerance () |
| Access the global tolerance to determine congruent spaces. | |
| static void | SetGlobalDefaultDirectionTolerance (double) |
| Access the global tolerance to determine congruent spaces. | |
| static bool | SetGlobalDefaultThreader (const std::string &threader) |
| Set/Get the default threader used for process objects. | |
| static std::string | GetGlobalDefaultThreader () |
| Set/Get the default threader used for process objects. | |
| static void | SetGlobalDefaultNumberOfThreads (unsigned int n) |
| static unsigned int | GetGlobalDefaultNumberOfThreads () |
| Set/Get the default threader used for process objects. | |
Protected Member Functions inherited from itk::simple::ImageFilter | |
| void | CheckImageMatchingDimension (const Image &image1, const Image &image2, const std::string &image2Name) |
| void | CheckImageMatchingPixelType (const Image &image1, const Image &image2, const std::string &image2Name) |
| void | CheckImageMatchingSize (const Image &image1, const Image &image2, const std::string &image2Name) |
Protected Member Functions inherited from itk::simple::ProcessObject | |
| virtual unsigned long | AddITKObserver (const itk::EventObject &, itk::Command *) |
| virtual itk::ProcessObject * | GetActiveProcess () |
| virtual void | OnActiveProcessDelete () |
| virtual void | onCommandDelete (const itk::simple::Command *cmd) noexcept |
| virtual void | PreUpdate (itk::ProcessObject *p) |
| virtual void | RemoveITKObserver (EventCommand &e) |
Protected Member Functions inherited from itk::simple::NonCopyable | |
| NonCopyable ()=default | |
| NonCopyable (const NonCopyable &)=delete | |
| NonCopyable & | operator= (const NonCopyable &)=delete |
Static Protected Member Functions inherited from itk::simple::ImageFilter | |
| template<class TImageType> | |
| static void | FixNonZeroIndex (TImageType *img) |
Static Protected Member Functions inherited from itk::simple::ProcessObject | |
| template<class TImageType> | |
| static TImageType::ConstPointer | CastImageToITK (const Image &img) |
| template<class TPixelType, unsigned int VImageDimension, unsigned int VLength, template< typename, unsigned int > class TVector> | |
| static Image | CastITKToImage (itk::Image< TVector< TPixelType, VLength >, VImageDimension > *img) |
| template<unsigned int VImageDimension, unsigned int VLength, template< unsigned int > class TVector> | |
| static Image | CastITKToImage (itk::Image< TVector< VLength >, VImageDimension > *img) |
| template<class TImageType> | |
| static Image | CastITKToImage (TImageType *img) |
| static const itk::EventObject & | GetITKEventObject (EventEnum e) |
| template<typename T> | |
| static std::ostream & | ToStringHelper (std::ostream &os, const T &v) |
| static std::ostream & | ToStringHelper (std::ostream &os, const char &v) |
| static std::ostream & | ToStringHelper (std::ostream &os, const signed char &v) |
| static std::ostream & | ToStringHelper (std::ostream &os, const unsigned char &v) |
|
private |
Setup for member function dispatching
Definition at line 130 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
Define the pixels types supported by this filter
Definition at line 76 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
| using itk::simple::BinaryMinMaxCurvatureFlowImageFilter::Self = BinaryMinMaxCurvatureFlowImageFilter |
Definition at line 66 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
|
virtual |
Destructor
| itk::simple::BinaryMinMaxCurvatureFlowImageFilter::BinaryMinMaxCurvatureFlowImageFilter | ( | ) |
Default Constructor that takes no arguments and initializes default parameters
Execute the filter on the input image
|
private |
Referenced by detail::MemberFunctionAddressor< MemberFunctionType >.
|
inlinevirtual |
Name of this class
Implements itk::simple::ProcessObject.
Definition at line 114 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
|
inline |
Definition at line 93 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_NumberOfIterations.
|
inline |
Definition at line 101 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_StencilRadius.
|
inline |
Set/Get the threshold value.
Definition at line 111 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_Threshold.
|
inline |
Definition at line 85 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_TimeStep.
|
inline |
Definition at line 89 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_NumberOfIterations.
|
inline |
Definition at line 97 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_StencilRadius.
|
inline |
Set/Get the threshold value.
Definition at line 106 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_Threshold, and itk::simple::Threshold().
|
inline |
Definition at line 81 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References m_TimeStep.
|
virtual |
Print ourselves out
Reimplemented from itk::simple::ProcessObject.
|
friend |
Definition at line 131 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
References ExecuteInternal().
|
private |
Definition at line 150 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
|
private |
Definition at line 136 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
|
private |
Definition at line 143 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
Referenced by GetNumberOfIterations(), and SetNumberOfIterations().
|
private |
Definition at line 145 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
Referenced by GetStencilRadius(), and SetStencilRadius().
|
private |
Definition at line 147 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
Referenced by GetThreshold(), and SetThreshold().
|
private |
Definition at line 140 of file sitkBinaryMinMaxCurvatureFlowImageFilter.h.
Referenced by GetTimeStep(), and SetTimeStep().
1.13.2 |
Privacy Policy