ITK  5.4.0
Insight Toolkit
itkLaplacianRecursiveGaussianImageFilter.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkLaplacianRecursiveGaussianImageFilter_h
19#define itkLaplacianRecursiveGaussianImageFilter_h
20
22#include "itkImage.h"
23#include "itkCommand.h"
24
25namespace itk
26{
43template <typename TInputImage, typename TOutputImage = TInputImage>
44class ITK_TEMPLATE_EXPORT LaplacianRecursiveGaussianImageFilter : public ImageToImageFilter<TInputImage, TOutputImage>
45{
46public:
47 ITK_DISALLOW_COPY_AND_MOVE(LaplacianRecursiveGaussianImageFilter);
48
54
56 using InputImageType = TInputImage;
57 using PixelType = typename InputImageType::PixelType;
58
60 static constexpr unsigned int ImageDimension = TInputImage::ImageDimension;
61
62 static constexpr unsigned int NumberOfSmoothingFilters = ImageDimension - 1;
63
65
69 using InternalRealType = float;
71
74
77
80
83
86
88 using OutputImageType = TOutputImage;
89 using OutputPixelType = typename OutputImageType::PixelType;
90
91
95
97 itkNewMacro(Self);
98
100 itkOverrideGetNameOfClassMacro(LaplacianRecursiveGaussianImageFilter);
101
103 void
106 GetSigma() const;
112 void
113 SetNormalizeAcrossScale(bool normalize);
114 itkGetConstMacro(NormalizeAcrossScale, bool);
117protected:
120 void
121 PrintSelf(std::ostream & os, Indent indent) const override;
122
124 void
125 GenerateData() override;
126
127 // Override since the filter produces the entire dataset
128 void
130
131private:
132 GaussianFilterPointer m_SmoothingFilters[NumberOfSmoothingFilters]{};
133 DerivativeFilterPointer m_DerivativeFilter{};
134
136 bool m_NormalizeAcrossScale{};
137};
138} // end namespace itk
139
140#ifndef ITK_MANUAL_INSTANTIATION
141# include "itkLaplacianRecursiveGaussianImageFilter.hxx"
142#endif
143
144#endif
Base class for all data objects in ITK.
Base class for filters that take an image as input and produce an image as output.
Templated n-dimensional image class.
Definition: itkImage.h:89
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Computes the Laplacian of Gaussian (LoG) of an image.
~LaplacianRecursiveGaussianImageFilter() override=default
typename NumericTraits< PixelType >::RealType RealType
void PrintSelf(std::ostream &os, Indent indent) const override
void EnlargeOutputRequestedRegion(DataObject *output) override
Light weight base class for most itk classes.
A Command subclass that calls a pointer to a member function.
Definition: itkCommand.h:87
Define additional traits for native types such as int or float.
Base class for computing IIR convolution with an approximation of a Gaussian kernel.
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....