ITK  6.0.0
Insight Toolkit
itkComplexConjugateImageAdaptor.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 itkComplexConjugateImageAdaptor_h
19#define itkComplexConjugateImageAdaptor_h
20
21#include "itkImageAdaptor.h"
22#include <complex>
23
24namespace itk
25{
26namespace Accessor
27{
35template <typename TComplexType>
37{
38public:
39 using ExternalType = TComplexType;
40 using InternalType = TComplexType;
41
42 static inline void
43 Set(TComplexType & output, const TComplexType & input)
44 {
45 output = std::conj(input);
46 }
47
48 static inline TComplexType
49 Get(const TComplexType & input)
50 {
51 return std::conj(input);
52 }
53};
54} // end namespace Accessor
55
63template <typename TImage>
65 : public ImageAdaptor<TImage, Accessor::ComplexConjugatePixelAccessor<typename TImage::PixelType>>
66{
67public:
68 ITK_DISALLOW_COPY_AND_MOVE(ComplexConjugateImageAdaptor);
69
73
76
78 itkNewMacro(Self);
79
81 itkOverrideGetNameOfClassMacro(ComplexConjugateImageAdaptor);
82
83#ifdef ITK_USE_CONCEPT_CHECKING
84 // Begin concept checking. */
85 itkConceptMacro(InputConvertibleToComplex,
87 typename TImage::PixelType>));
88 // End concept checking. */
89#endif
90
91protected:
93 ~ComplexConjugateImageAdaptor() override = default;
94};
95} // end namespace itk
96
97#endif
Provide access to the conjugate of a std::complex<> value.
static TComplexType Get(const TComplexType &input)
static void Set(TComplexType &output, const TComplexType &input)
Presents each pixel of a complex image as its complex conjugate.
~ComplexConjugateImageAdaptor() override=default
Base class for all data objects in ITK.
Give access to partial aspects of voxels from an Image.
Base class for most ITK classes.
Definition: itkObject.h:62
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....