```{index} single: Filters; ITK Min Max Curvature Flow Image Filter ``` # ITK Min Max Curvature Flow Image Filter Denoise an image using min/max curvature flow. ## Group (Subgroup) ITKCurvatureFlow (CurvatureFlow) ## Description MinMaxCurvatureFlowImageFilter implements a curvature driven image denoising algorithm. Iso-brightness contours in the grayscale input image are viewed as a level set. The level set is then evolved using a curvature-based speed function: \f[ I_t = F_{\mbox{minmax}} |\nabla I| \f] where \f$ F_{\mbox{minmax}} = \max(\kappa,0) \f$ if \f$ \mbox{Avg}_{\mbox{stencil}}(x) \f$ is less than or equal to \f$ T_{threshold} \f$ and \f$ \min(\kappa,0) \f$ , otherwise. \f$ \kappa \f$ is the mean curvature of the iso-brightness contour at point \f$ x \f$ . 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 \f$ R \f$ around each point. The choice of \f$ R \f$ , the stencil radius, governs the scale of the noise to be removed. The threshold value \f$ T_{threshold} \f$ is the average intensity obtained in the direction perpendicular to the gradient at point \f$ x \f$ at the extrema of the local neighborhood. This filter make use of the multi-threaded finite difference solver hierarchy. Updates are computed using a MinMaxCurvatureFlowFunction object. A zero flux Neumann boundary condition is used when computing derivatives near the data boundary. ## Warning This filter assumes that the input and output types have the same dimensions. This filter also requires that the output image pixels are of a real type. This filter works for any dimensional images, however for dimensions greater than 3D, an expensive brute-force search is used to compute the local threshold. Reference: "Level Set Methods and Fast Marching Methods", J.A. Sethian, Cambridge Press, Chapter 16, Second edition, 1999. ## See Also - [MinMaxCurvatureFlowFunction](https://itk.org/Doxygen/html/classitk_1_1MinMaxCurvatureFlowFunction.html) - [CurvatureFlowImageFilter](https://itk.org/Doxygen/html/classitk_1_1CurvatureFlowImageFilter.html) - [BinaryMinMaxCurvatureFlowImageFilter](https://itk.org/Doxygen/html/classitk_1_1BinaryMinMaxCurvatureFlowImageFilter.html) ### Input Parameter(s) | Parameter Name | Parameter Type | Parameter Notes | Description | |----------------|----------------|-----------------|-------------| | Time Step | Scalar Value |Float64 | The time step to be used for each iteration. | | Number Of Iterations | Scalar Value |UInt32 | Specifies the number of iterations (time-step updates) that the solver will perform to produce a solution image | | Stencil Radius | Scalar Value |Int32 | Set/Get the stencil radius. | ### Input Cell Data | Parameter Name | Parameter Type | Parameter Notes | Description | |----------------|----------------|-----------------|-------------| | Image Geometry | Geometry Selection | Image | Select the Image Geometry Group from the DataStructure. | | Input Cell Data | Array Selection | Allowed Types: float32, float64 | The image data that will be processed by this filter. | ### Output Cell Data | Parameter Name | Parameter Type | Parameter Notes | Description | |----------------|----------------|-----------------|-------------| | Output Image Data Array | DataObjectName | | The result of the processing will be stored in this Data Array. | ## Example Pipelines ## License & Copyright Please see the description file distributed with this plugin. ## DREAM3D Mailing Lists If you need help, need to file a bug report or want to request a new feature, please head over to the [DREAM3DNX-Issues](https://github.com/BlueQuartzSoftware/DREAM3DNX-Issues/discussions) GitHub site where the community of DREAM3D-NX users can help answer your questions.