Skip to content

Commit daea37d

Browse files
FILT: ITKImageProcessing - Add new batch of filters (#884)
Signed-off-by: Jared Duffey <[email protected]> Signed-off-by: Michael Jackson <[email protected]> Co-authored-by: Michael Jackson <[email protected]>
1 parent 60a8121 commit daea37d

File tree

125 files changed

+8766
-192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+8766
-192
lines changed

src/Plugins/ITKImageProcessing/CMakeLists.txt

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ if(NOT ITKIMAGEPROCESSING_LEAN_AND_MEAN)
109109
ITKAbsImage
110110
ITKAcosImage
111111
ITKAdaptiveHistogramEqualizationImage
112+
ITKApproximateSignedDistanceMapImage
112113
ITKAsinImage
113114
ITKAtanImage
114115
ITKBinaryDilateImage
@@ -119,33 +120,48 @@ if(NOT ITKIMAGEPROCESSING_LEAN_AND_MEAN)
119120
ITKBinaryThinningImage
120121
ITKBinaryThresholdImage
121122
ITKBlackTopHatImage
123+
ITKConnectedComponentImage
122124
ITKCosImage
125+
ITKCurvatureAnisotropicDiffusionImage
126+
ITKCurvatureFlowImage
127+
ITKDanielssonDistanceMapImage
123128
ITKDilateObjectMorphologyImage
129+
ITKDoubleThresholdImage
124130
ITKErodeObjectMorphologyImage
125131
ITKExpImage
126132
ITKExpNegativeImage
133+
ITKGradientAnisotropicDiffusionImage
127134
ITKGradientMagnitudeImage
135+
ITKGradientMagnitudeRecursiveGaussianImage
128136
ITKGrayscaleDilateImage
129137
ITKGrayscaleErodeImage
130138
ITKGrayscaleMorphologicalClosingImage
131139
ITKGrayscaleMorphologicalOpeningImage
140+
ITKImportFijiMontageFilter
132141
ITKIntensityWindowingImage
133142
ITKInvertIntensityImage
134-
ITKImportFijiMontageFilter
143+
ITKIsoContourDistanceImage
144+
ITKLaplacianRecursiveGaussianImage
135145
ITKLog10Image
136146
ITKLogImage
137147
ITKMaskImage
148+
ITKMinMaxCurvatureFlowImage
138149
ITKNormalizeImage
139150
ITKNotImage
140151
ITKOtsuMultipleThresholdsImage
152+
ITKRegionalMaximaImage
153+
ITKRegionalMinimaImage
141154
ITKRelabelComponentImage
142155
ITKSigmoidImage
156+
ITKSignedDanielssonDistanceMapImage
143157
ITKSinImage
144158
ITKSqrtImage
145159
ITKSquareImage
146160
ITKTanImage
147161
ITKThresholdImage
162+
ITKThresholdMaximumConnectedComponentsImage
148163
ITKWhiteTopHatImage
164+
ITKZeroCrossingImage
149165

150166
# -----------------------------------------------------------------------------
151167
# These filters only work on Scalar inputs
@@ -166,30 +182,14 @@ if(NOT ITKIMAGEPROCESSING_LEAN_AND_MEAN)
166182
# ITKBoxMeanImage
167183

168184
# -----------------------------------------------------------------------------
169-
# These filters have a fixed output type
185+
# These filters need to have their type or dimension fixed
170186
# -----------------------------------------------------------------------------
171-
# ITKApproximateSignedDistanceMapImage
172-
# ITKMinMaxCurvatureFlowImage
173-
# ITKGradientAnisotropicDiffusionImage
174-
# ITKCurvatureAnisotropicDiffusionImage
175187
# ITKBoundedReciprocalImage
176-
# ITKConnectedComponentImage
177-
# ITKCurvatureFlowImage
178-
# ITKDanielssonDistanceMapImage
179-
# ITKDoubleThresholdImage
180-
# ITKGradientMagnitudeRecursiveGaussianImage
181-
# ITKIsoContourDistanceImage
182-
# ITKLaplacianRecursiveGaussianImage
183-
# ITKMeanProjectionImage
184188
# ITKNormalizeToConstantImage
185-
# ITKRegionalMaximaImage
186-
# ITKRegionalMinimaImage
189+
# ITKMeanProjectionImage
187190
# ITKStandardDeviationProjectionImage
188191
# ITKSumProjectionImage
189-
# ITKThresholdMaximumConnectedComponentsImage
190-
# ITKZeroCrossingImage
191192
# ITKMorphologicalWatershedFromMarkersImage
192-
# ITKSignedDanielssonDistanceMapImage
193193
# ITKSmoothingRecursiveGaussianImage
194194

195195
# -----------------------------------------------------------------------------
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# ITK Approximate Signed Distance Map Image Filter (ITKApproximateSignedDistanceMapImage)
2+
3+
Create a map of the approximate signed distance from the boundaries of a binary image.
4+
5+
## Group (Subgroup)
6+
7+
ITKDistanceMap (DistanceMap)
8+
9+
## Description
10+
11+
The ApproximateSignedDistanceMapImageFilter takes as input a binary image and produces a signed distance map. Each pixel value in the output contains the approximate distance from that pixel to the nearest "object" in the binary image. This filter differs from the DanielssonDistanceMapImageFilter in that it calculates the distance to the "object edge" for pixels within the object.
12+
13+
Negative values in the output indicate that the pixel at that position is within an object in the input image. The absolute value of a negative pixel represents the approximate distance to the nearest object boundary pixel.
14+
15+
WARNING: This filter requires that the output type be floating-point. Otherwise internal calculations will not be performed to the appropriate precision, resulting in completely incorrect (read: zero-valued) output.
16+
17+
The distances computed by this filter are Chamfer distances, which are only an approximation to Euclidean distances, and are not as exact approximations as those calculated by the DanielssonDistanceMapImageFilter . On the other hand, this filter is faster.
18+
19+
This filter requires that an "inside value" and "outside value" be set as parameters. The "inside value" is the intensity value of the binary image which corresponds to objects, and the "outside value" is the intensity of the background. (A typical binary image often represents objects as black (0) and background as white (usually 255), or vice-versa.) Note that this filter is slightly faster if the inside value is less than the outside value. Otherwise an extra iteration through the image is required.
20+
21+
This filter uses the FastChamferDistanceImageFilter and the IsoContourDistanceImageFilter internally to perform the distance calculations.
22+
23+
## See Also
24+
25+
- [DanielssonDistanceMapImageFilter](https://itk.org/Doxygen/html/classitk_1_1DanielssonDistanceMapImageFilter.html)
26+
27+
- [SignedDanielssonDistanceMapImageFilter](https://itk.org/Doxygen/html/classitk_1_1SignedDanielssonDistanceMapImageFilter.html)
28+
29+
- [SignedMaurerDistanceMapImageFilter](https://itk.org/Doxygen/html/classitk_1_1SignedMaurerDistanceMapImageFilter.html)
30+
31+
- [FastChamferDistanceImageFilter](https://itk.org/Doxygen/html/classitk_1_1FastChamferDistanceImageFilter.html)
32+
33+
- [IsoContourDistanceImageFilter](https://itk.org/Doxygen/html/classitk_1_1IsoContourDistanceImageFilter.html)
34+
35+
## Author
36+
37+
- Zach Pincus
38+
39+
% Auto generated parameter table will be inserted here
40+
41+
## Example Pipelines
42+
43+
## License & Copyright
44+
45+
Please see the description file distributed with this plugin.
46+
47+
## DREAM3D Mailing Lists
48+
49+
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.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# ITK Bounded Reciprocal Image Filter (ITKBoundedReciprocalImage)
2+
3+
Computes 1/(1+x) for each pixel in the image.
4+
5+
## Group (Subgroup)
6+
7+
ITKImageIntensity (ImageIntensity)
8+
9+
## Description
10+
11+
The filter expects both the input and output images to have the same number of dimensions, and both of a scalar image type.
12+
13+
## Parameters
14+
15+
| Name | Type | Description |
16+
|------|------|-------------|
17+
18+
## Required Geometry
19+
20+
Image Geometry
21+
22+
## Required Objects
23+
24+
| Name |Type | Description |
25+
|-----|------|-------------|
26+
| Input Image Geometry | DataPath | DataPath to the Input Image Geometry |
27+
| Input Image Data Array | DataPath | Path to input image with pixel type matching BasicPixelIDTypeList |
28+
29+
## Created Objects
30+
31+
| Name |Type | Description |
32+
|-----|------|-------------|
33+
| Output Image Data Array | DataPath | Path to output image with pixel type matching BasicPixelIDTypeList |
34+
35+
## Example Pipelines
36+
37+
## License & Copyright
38+
39+
Please see the description file distributed with this plugin.
40+
41+
## DREAM3D Mailing Lists
42+
43+
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.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# ITK Connected Component Image Filter (ITKConnectedComponentImage)
2+
3+
Label the objects in a binary image.
4+
5+
## Group (Subgroup)
6+
7+
ITKConnectedComponents (ConnectedComponents)
8+
9+
## Description
10+
11+
ConnectedComponentImageFilter labels the objects in a binary image (non-zero pixels are considered to be objects, zero-valued pixels are considered to be background). Each distinct object is assigned a unique label. The filter experiments with some improvements to the existing implementation, and is based on run length encoding along raster lines. If the output background value is set to zero (the default), the final object labels start with 1 and are consecutive. If the output background is set to a non-zero value (by calling the SetBackgroundValue() routine of the filter), the final labels start at 0, and remain consecutive except for skipping the background value as needed. Objects that are reached earlier by a raster order scan have a lower label. This is different to the behaviour of the original connected component image filter which did not produce consecutive labels or impose any particular ordering.
12+
13+
After the filter is executed, ObjectCount holds the number of connected components.
14+
15+
## See Also
16+
17+
- [ImageToImageFilter](https://itk.org/Doxygen/html/classitk_1_1ImageToImageFilter.html)
18+
19+
% Auto generated parameter table will be inserted here
20+
21+
## Example Pipelines
22+
23+
## License & Copyright
24+
25+
Please see the description file distributed with this plugin.
26+
27+
## DREAM3D Mailing Lists
28+
29+
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.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# ITK Curvature Anisotropic Diffusion Image Filter (ITKCurvatureAnisotropicDiffusionImage)
2+
3+
This filter performs anisotropic diffusion on a scalar itk::Image using the modified curvature diffusion equation (MCDE).
4+
5+
## Group (Subgroup)
6+
7+
ITKAnisotropicSmoothing (AnisotropicSmoothing)
8+
9+
## Description
10+
11+
For detailed information on anisotropic diffusion and the MCDE see itkAnisotropicDiffusionFunction and itkCurvatureNDAnisotropicDiffusionFunction.
12+
13+
## Parameter Information
14+
15+
The input and output to this filter must be a scalar itk::Image with numerical pixel types (float or double). A user defined type which correctly defines arithmetic operations with floating point accuracy should also give correct results.
16+
17+
Please first read all the documentation found in [AnisotropicDiffusionImageFilter](https://itk.org/Doxygen/html/classitk_1_1AnisotropicDiffusionImageFilter.html) and [AnisotropicDiffusionFunction](https://itk.org/Doxygen/html/classitk_1_1AnisotropicDiffusionFunction.html). Also see CurvatureNDAnisotropicDiffusionFunction.
18+
19+
- Set/GetNumberOfIterations specifies the number of iterations (time-step updates) that the solver will perform to produce a solution image. The appropriate number of iterations is dependent on the application and the image being processed. As a general rule, the more iterations performed, the more diffused the image will become.
20+
21+
- Set/GetTimeStep: In the anisotropic diffusion filter hierarchy, the time step is set explicitly by the user. The time step referred to here corresponds exactly to Δ𝑡 in the finite difference update equation described in FiniteDifferenceImageFilter (see itkFiniteDifferenceImageFilter for more information). Appropriate time steps for solving this type of p.d.e. depend on the dimensionality of the image and the order of the equation. Stable values for most 2D and 3D functions are 0.125 and 0.0625, respectively, when the pixel spacing is unity or is turned off. In general, you should keep the time step below (PixelSpacing)/2𝑁+1, where 𝑁 is the number of image dimensions. A filter will automatically attempt to constrain its time step to a stable value and generate a run-time warning if the time step is set too high.
22+
23+
- Set/GetConductanceParameter: The conductance parameter controls the sensitivity of the conductance term in the basic anisotropic diffusion equation. It affects the conductance term in different ways depending on the particular variation on the basic equation. As a general rule, the lower the value, the more strongly the diffusion equation preserves image features (such as high gradients or curvature). A high value for conductance will cause the filter to diffuse image features more readily. Typical values range from 0.5 to 2.0 for data like the Visible Human color data, but the correct value for your application is wholly dependent on the results you want from a specific data set and the number or iterations you perform.
24+
25+
[More information about AnisotropicDiffusionFunction](https://itk.org/Doxygen/html/classitk_1_1AnisotropicDiffusionFunction.html)
26+
27+
## Default Value Caveats
28+
29+
The default time step for this filter is set to the maximum theoretically stable value: 0.5 / 2^N, where N is the dimensionality of the image. For a 2D image, this means valid time steps are below 0.1250. For a 3D image, valid time steps are below 0.0625.
30+
31+
## See Also
32+
33+
- [AnisotropicDiffusionImageFilter](https://itk.org/Doxygen/html/classitk_1_1AnisotropicDiffusionImageFilter.html)
34+
- [AnisotropicDiffusionFunction](https://itk.org/Doxygen/html/classitk_1_1AnisotropicDiffusionFunction.html)
35+
- [CurvatureNDAnisotropicDiffusionFunction](https://itk.org/Doxygen/html/classitk_1_1CurvatureNDAnisotropicDiffusionFunction.html)
36+
37+
% Auto generated parameter table will be inserted here
38+
39+
## Example Pipelines
40+
41+
## License & Copyright
42+
43+
Please see the description file distributed with this plugin.
44+
45+
## DREAM3D Mailing Lists
46+
47+
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.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# ITK Curvature Flow Image Filter (ITKCurvatureFlowImage)
2+
3+
Denoise an image using curvature driven flow.
4+
5+
## Group (Subgroup)
6+
7+
ITKCurvatureFlow (CurvatureFlow)
8+
9+
## Description
10+
11+
CurvatureFlowImageFilter 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:
12+
13+
\f[ I_t = \kappa |\nabla I| \f] where \f$ \kappa \f$ is the curvature.
14+
15+
The advantage of this approach is that sharp boundaries are preserved with smoothing occurring only within a region. However, it should be noted that continuous application of this scheme will result in the eventual removal of all information as each contour shrinks to zero and disappear.
16+
17+
Note that unlike level set segmentation algorithms, the image to be denoised is already the level set and can be set directly as the input using the SetInput() method.
18+
19+
This filter has two parameters: the number of update iterations to be performed and the timestep between each update.
20+
21+
The timestep should be "small enough" to ensure numerical stability. Stability is guarantee when the timestep meets the CFL (Courant-Friedrichs-Levy) condition. Broadly speaking, this condition ensures that each contour does not move more than one grid position at each timestep. In the literature, the timestep is typically user specified and have to manually tuned to the application.
22+
23+
This filter make use of the multi-threaded finite difference solver hierarchy. Updates are computed using a CurvatureFlowFunction object. A zero flux Neumann boundary condition when computing derivatives near the data boundary.
24+
25+
This filter may be streamed. To support streaming this filter produces a padded output which takes into account edge effects. The size of the padding is m_NumberOfIterations on each edge. Users of this filter should only make use of the center valid central region.
26+
27+
## Warning
28+
29+
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 floating point type. This filter works for any dimensional images.
30+
31+
## Reference
32+
33+
"Level Set Methods and Fast Marching Methods", J.A. Sethian, Cambridge Press, Chapter 16, Second edition, 1999.
34+
35+
## See Also
36+
37+
- [DenseFiniteDifferenceImageFilter](https://itk.org/Doxygen/html/classitk_1_1DenseFiniteDifferenceImageFilter.html)
38+
39+
- [CurvatureFlowFunction](https://itk.org/Doxygen/html/classitk_1_1CurvatureFlowFunction.html)
40+
41+
- [MinMaxCurvatureFlowImageFilter](https://itk.org/Doxygen/html/classitk_1_1MinMaxCurvatureFlowImageFilter.html)
42+
43+
- [BinaryMinMaxCurvatureFlowImageFilter](https://itk.org/Doxygen/html/classitk_1_1BinaryMinMaxCurvatureFlowImageFilter.html)
44+
45+
46+
% Auto generated parameter table will be inserted here
47+
48+
## Example Pipelines
49+
50+
## License & Copyright
51+
52+
Please see the description file distributed with this plugin.
53+
54+
## DREAM3D Mailing Lists
55+
56+
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.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# ITK Danielsson Distance Map Image Filter (ITKDanielssonDistanceMapImage)
2+
3+
This filter computes the distance map of the input image as an approximation with pixel accuracy to the Euclidean distance.
4+
5+
## Group (Subgroup)
6+
7+
ITKDistanceMap (DistanceMap)
8+
9+
## Description
10+
11+
The input is assumed to contain numeric codes defining objects. The filter will produce as output the following images:
12+
13+
- A Voronoi partition using the same numeric codes as the input.
14+
- A distance map with the approximation to the euclidean distance. from a particular pixel to the nearest object to this pixel in the input image.
15+
- A vector map containing the component of the vector relating the current pixel with the closest point of the closest object to this pixel. Given that the components of the distance are computed in "pixels", the vector is represented by an itk::Offset. That is, physical coordinates are not used.
16+
17+
This filter is N-dimensional and known to be efficient in computational time. The algorithm is the N-dimensional version of the 4SED algorithm given for two dimensions in:
18+
19+
Danielsson, Per-Erik. Euclidean Distance Mapping. Computer Graphics and Image Processing 14, 227-248 (1980).
20+
21+
% Auto generated parameter table will be inserted here
22+
23+
## Example Pipelines
24+
25+
## License & Copyright
26+
27+
Please see the description file distributed with this plugin.
28+
29+
## DREAM3D Mailing Lists
30+
31+
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.

0 commit comments

Comments
 (0)