ITK  5.4.0
Insight Toolkit
itkScalarToRGBColormapImageFilter.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 itkScalarToRGBColormapImageFilter_h
19#define itkScalarToRGBColormapImageFilter_h
20
22#include "itkColormapFunction.h"
23#include "ITKColormapExport.h"
24
25namespace itk
26{
32{
33public:
37 enum class RGBColormapFilter : uint8_t
38 {
39 Red,
40 Green,
41 Blue,
42 Grey,
43 Hot,
44 Cool,
45 Spring,
46 Summer,
47 Autumn,
48 Winter,
49 Copper,
50 Jet,
51 HSV,
52 OverUnder
53 };
54};
55#if !defined(ITK_LEGACY_REMOVE)
57using RGBColormapFilterEnumType = ScalarToRGBColormapImageFilterEnums::RGBColormapFilter;
58// We need to expose the enum values at the class level
59// for backwards compatibility
60static constexpr RGBColormapFilterEnum Red = RGBColormapFilterEnum::Red;
61static constexpr RGBColormapFilterEnum Green = RGBColormapFilterEnum::Green;
62static constexpr RGBColormapFilterEnum Blue = RGBColormapFilterEnum::Blue;
63static constexpr RGBColormapFilterEnum Grey = RGBColormapFilterEnum::Grey;
64static constexpr RGBColormapFilterEnum Hot = RGBColormapFilterEnum::Hot;
65static constexpr RGBColormapFilterEnum Cool = RGBColormapFilterEnum::Cool;
66static constexpr RGBColormapFilterEnum Spring = RGBColormapFilterEnum::Spring;
67static constexpr RGBColormapFilterEnum Summer = RGBColormapFilterEnum::Summer;
68static constexpr RGBColormapFilterEnum Autumn = RGBColormapFilterEnum::Autumn;
69static constexpr RGBColormapFilterEnum Winter = RGBColormapFilterEnum::Winter;
70static constexpr RGBColormapFilterEnum Copper = RGBColormapFilterEnum::Copper;
71static constexpr RGBColormapFilterEnum Jet = RGBColormapFilterEnum::Jet;
72static constexpr RGBColormapFilterEnum HSV = RGBColormapFilterEnum::HSV;
73static constexpr RGBColormapFilterEnum OverUnder = RGBColormapFilterEnum::OverUnder;
74#endif
76extern ITKColormap_EXPORT std::ostream &
78
129template <typename TInputImage, typename TOutputImage>
130class ITK_TEMPLATE_EXPORT ScalarToRGBColormapImageFilter : public ImageToImageFilter<TInputImage, TOutputImage>
131{
132public:
133 ITK_DISALLOW_COPY_AND_MOVE(ScalarToRGBColormapImageFilter);
141
143 itkNewMacro(Self);
144
146 itkOverrideGetNameOfClassMacro(ScalarToRGBColormapImageFilter);
147
149 using InputImageType = TInputImage;
152 using InputImagePixelType = typename InputImageType::PixelType;
153 using OutputImageType = TOutputImage;
156 using OutputImagePixelType = typename OutputImageType::PixelType;
157
159
161#if !defined(ITK_LEGACY_REMOVE)
163 using ColormapEnumType = RGBColormapFilterEnum;
164#endif
165
166#if !defined(ITK_LEGACY_REMOVE)
167 // We need to expose the enum values at the class level
168 // for backwards compatibility
169 static constexpr RGBColormapFilterEnum Red = RGBColormapFilterEnum::Red;
170 static constexpr RGBColormapFilterEnum Green = RGBColormapFilterEnum::Green;
171 static constexpr RGBColormapFilterEnum Blue = RGBColormapFilterEnum::Blue;
172 static constexpr RGBColormapFilterEnum Grey = RGBColormapFilterEnum::Grey;
173 static constexpr RGBColormapFilterEnum Hot = RGBColormapFilterEnum::Hot;
174 static constexpr RGBColormapFilterEnum Cool = RGBColormapFilterEnum::Cool;
175 static constexpr RGBColormapFilterEnum Spring = RGBColormapFilterEnum::Spring;
176 static constexpr RGBColormapFilterEnum Summer = RGBColormapFilterEnum::Summer;
177 static constexpr RGBColormapFilterEnum Autumn = RGBColormapFilterEnum::Autumn;
178 static constexpr RGBColormapFilterEnum Winter = RGBColormapFilterEnum::Winter;
179 static constexpr RGBColormapFilterEnum Copper = RGBColormapFilterEnum::Copper;
180 static constexpr RGBColormapFilterEnum Jet = RGBColormapFilterEnum::Jet;
181 static constexpr RGBColormapFilterEnum HSV = RGBColormapFilterEnum::HSV;
182 static constexpr RGBColormapFilterEnum OverUnder = RGBColormapFilterEnum::OverUnder;
183#endif
184
186 itkSetObjectMacro(Colormap, ColormapType);
187 itkGetModifiableObjectMacro(Colormap, ColormapType);
191
195 itkSetMacro(UseInputImageExtremaForScaling, bool);
196 itkGetConstMacro(UseInputImageExtremaForScaling, bool);
197 itkBooleanMacro(UseInputImageExtremaForScaling);
200protected:
203
204 void
205 PrintSelf(std::ostream & os, Indent indent) const override;
206
209 void
211 {
212 Superclass::GenerateOutputInformation();
213 OutputImageType * output = this->GetOutput();
216 if (!output)
217 {
218 return;
219 }
220 if (output->GetNumberOfComponentsPerPixel() != 3)
221 {
222 output->SetNumberOfComponentsPerPixel(3);
223 }
224 }
225
238 void
239 DynamicThreadedGenerateData(const OutputImageRegionType & outputRegionForThread) override;
240
242 void
244
245private:
246private:
247 typename ColormapType::Pointer m_Colormap{};
248
249 bool m_UseInputImageExtremaForScaling{};
250};
251} // end namespace itk
252
253#ifndef ITK_MANUAL_INSTANTIATION
254# include "itkScalarToRGBColormapImageFilter.hxx"
255#endif
256
257#endif
Function object which maps a scalar value into an RGB colormap value.
Base class for all process objects that output image data.
typename OutputImageType::PixelType OutputImagePixelType
typename OutputImageType::RegionType OutputImageRegionType
TOutputImage OutputImageType
typename OutputImageType::Pointer OutputImagePointer
Base class for filters that take an image as input and produce an image as output.
typename InputImageType::Pointer InputImagePointer
typename InputImageType::PixelType InputImagePixelType
typename InputImageType::RegionType InputImageRegionType
Control indentation during Print() invocation.
Definition: itkIndent.h:50
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Contains all enum classes for ScalarToRGBColormapImageFilter class.
Implements pixel-wise intensity->rgb mapping operation on one image.
void BeforeThreadedGenerateData() override
void PrintSelf(std::ostream &os, Indent indent) const override
~ScalarToRGBColormapImageFilter() override=default
void DynamicThreadedGenerateData(const OutputImageRegionType &outputRegionForThread) override
void SetColormap(RGBColormapFilterEnum)
SmartPointer< const Self > ConstPointer
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
std::ostream & operator<<(std::ostream &os, const Array< TValue > &arr)
Definition: itkArray.h:216