ITK  5.4.0
Insight Toolkit
itkScalarChanAndVeseDenseLevelSetImageFilter.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 itkScalarChanAndVeseDenseLevelSetImageFilter_h
19#define itkScalarChanAndVeseDenseLevelSetImageFilter_h
20
24
25namespace itk
26{
55template <typename TInputImage,
56 typename TFeatureImage,
57 typename TOutputImage,
58 typename TFunction = ScalarChanAndVeseLevelSetFunction<TInputImage, TFeatureImage>,
59 class TSharedData = typename TFunction::SharedDataType>
61 : public MultiphaseDenseFiniteDifferenceImageFilter<TInputImage, TFeatureImage, TOutputImage, TFunction>
62{
63public:
64 ITK_DISALLOW_COPY_AND_MOVE(ScalarChanAndVeseDenseLevelSetImageFilter);
65
70
72 itkNewMacro(Self);
73
75 itkOverrideGetNameOfClassMacro(ScalarChanAndVeseDenseLevelSetImageFilter);
76
77 static constexpr unsigned int ImageDimension = TInputImage::ImageDimension;
78
80 using typename Superclass::InputImageType;
81 using typename Superclass::InputImagePointer;
82 using typename Superclass::InputPointType;
83 using typename Superclass::ValueType;
84 using InputSpacingType = typename InputImageType::SpacingType;
85
86 using FeatureImageType = TFeatureImage;
88 using FeaturePixelType = typename FeatureImageType::PixelType;
92
94 using OutputImageType = TOutputImage;
96 using OutputPixelType = typename OutputImageType::PixelType;
97
98 using typename Superclass::TimeStepType;
99 using typename Superclass::FiniteDifferenceFunctionType;
100
101 using FunctionType = TFunction;
103
104 using SharedDataType = TSharedData;
106
109
110#ifdef ITK_USE_CONCEPT_CHECKING
111 // Begin concept checking
112 itkConceptMacro(OutputHasNumericTraitsCheck, (Concept::HasNumericTraits<OutputPixelType>));
113 // End concept checking
114#endif
115
118 virtual void
120 {
121 this->SetInput(f);
122 }
123
124protected:
126
128
129 SharedDataPointer m_SharedData{};
130
131 void
132 Initialize() override;
133
134 void
136};
137} // end namespace itk
138
139#ifndef ITK_MANUAL_INSTANTIATION
140# include "itkScalarChanAndVeseDenseLevelSetImageFilter.hxx"
141#endif
142
143#endif
Base class for all process objects that output image data.
TOutputImage OutputImageType
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Extract a region of interest from the input image.
Dense implementation of the Chan and Vese multiphase level set image filter.
~ScalarChanAndVeseDenseLevelSetImageFilter() override=default
static Pointer New()
SmartPointer< Self > Pointer
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
long IndexValueType
Definition: itkIntTypes.h:90