SimpleITK  
sitkCastImageFilter.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 * http://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 sitkCastImageFilter_h
19 #define sitkCastImageFilter_h
20 
21 #include "sitkImageFilter.h"
22 #include "sitkPixelIDTokens.h"
24 
25 #include <memory>
26 
27 namespace itk::simple
28 {
29 
40  : public ImageFilter
41 {
42 public:
44 
46  SITK_RETURN_SELF_TYPE_HEADER SetOutputPixelType( PixelIDValueEnum pixelID );
47  PixelIDValueEnum GetOutputPixelType( ) const;
48 
49  ~CastImageFilter() override;
50 
56 
58  std::string GetName() const override { return std::string ("CastImageFilter"); }
59 
60  // See super class for doxygen
61  std::string ToString() const override;
62 
63  // See super class for doxygen
64  Image Execute ( const Image & );
65 
66 private:
67 
69 
79  template<typename TImageType, typename TOutputImageType>
80  Image ExecuteInternalCast( const Image& inImage );
81 
82  template<typename TImageType, typename TOutputImageType>
83  Image ExecuteInternalToVector( const Image& inImage );
84 
85  template<typename TImageType, typename TOutputImageType>
86  Image ExecuteInternalToLabel( const Image& inImage );
87 
88  template<typename TImageType, typename TOutputImageType>
89  Image ExecuteInternalLabelToImage( const Image& inImage );
92 // SWIG does not appear to process private classes correctly
93 #ifndef SWIG
94 
98  template < class TMemberFunctionPointer >
100  {
101  using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
102 
103  template< typename TImageType1, typename TImageType2 >
104  TMemberFunctionPointer operator() ( ) const
105  {
106  return &ObjectType::template ExecuteInternalCast< TImageType1, TImageType2 >;
107  }
108  };
109 
113  template < class TMemberFunctionPointer >
115  {
116  using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
117 
118  template< typename TImageType1, typename TImageType2 >
119  TMemberFunctionPointer operator() ( ) const
120  {
121  return &ObjectType::template ExecuteInternalToVector< TImageType1, TImageType2 >;
122  }
123  };
124 
128  template < class TMemberFunctionPointer >
130  {
131  using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
132 
133  template< typename TImageType1, typename TImageType2 >
134  TMemberFunctionPointer operator() ( ) const
135  {
136  return &ObjectType::template ExecuteInternalToLabel< TImageType1, TImageType2 >;
137  }
138  };
139 
143  template < class TMemberFunctionPointer >
145  {
146  using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
147 
148  template< typename TImageType1, typename TImageType2 >
149  TMemberFunctionPointer operator() ( ) const
150  {
151  return &ObjectType::template ExecuteInternalLabelToImage< TImageType1, TImageType2 >;
152  }
153  };
154 #endif
155 
162  void RegisterMemberFactory2();
163  void RegisterMemberFactory2v();
164  void RegisterMemberFactory2l();
165  void RegisterMemberFactory3();
166  void RegisterMemberFactory3v();
167  void RegisterMemberFactory3l();
168  void RegisterMemberFactory4();
171  typedef Image (Self::*MemberFunctionType)( const Image& );
172  std::unique_ptr<detail::DualMemberFunctionFactory<MemberFunctionType> > m_DualMemberFactory;
173 
174 };
175 
176  SITKBasicFilters_EXPORT Image Cast ( const Image& image, PixelIDValueEnum pixelID );
177 
178 }
179 #endif
itk::simple::Image
The Image class for SimpleITK.
Definition: sitkImage.h:76
itk::simple::CastImageFilter::CastAddressor::ObjectType
typename ::detail::FunctionTraits< TMemberFunctionPointer >::ClassType ObjectType
Definition: sitkCastImageFilter.h:101
itk::simple::CastImageFilter::m_OutputPixelType
PixelIDValueEnum m_OutputPixelType
Definition: sitkCastImageFilter.h:68
itk::simple::CastImageFilter::GetName
std::string GetName() const override
Definition: sitkCastImageFilter.h:58
itk::simple::CastImageFilter::CastAddressor
Definition: sitkCastImageFilter.h:99
itk::simple::CastImageFilter::ToVectorAddressor
Definition: sitkCastImageFilter.h:114
itk::simple::PixelIDValueEnum
PixelIDValueEnum
Enumerated values of pixelIDs.
Definition: sitkPixelIDValues.h:91
sitkImageFilter.h
itk::simple::Cast
Image Cast(const Image &image, PixelIDValueEnum pixelID)
itk::simple::CastImageFilter
A hybrid cast image filter to convert images to other types of images.
Definition: sitkCastImageFilter.h:39
sitkDualMemberFunctionFactory.h
itk::simple::CastImageFilter::m_DualMemberFactory
std::unique_ptr< detail::DualMemberFunctionFactory< MemberFunctionType > > m_DualMemberFactory
Definition: sitkCastImageFilter.h:172
SITKBasicFilters_EXPORT
#define SITKBasicFilters_EXPORT
Definition: sitkBasicFilters.h:52
itk::simple::CastImageFilter::ToLabelAddressor
Definition: sitkCastImageFilter.h:129
sitkPixelIDTokens.h
itk::simple::ImageFilter
The base interface for SimpleITK filters that take one input image.
Definition: sitkImageFilter.h:34
itk::simple::CastImageFilter::ToLabelAddressor::ObjectType
typename ::detail::FunctionTraits< TMemberFunctionPointer >::ClassType ObjectType
Definition: sitkCastImageFilter.h:131
itk::simple
Definition: sitkAdditionalProcedures.h:28
itk::simple::CastImageFilter::LabelToAddressor
Definition: sitkCastImageFilter.h:144
itk::simple::CastImageFilter::ToVectorAddressor::ObjectType
typename ::detail::FunctionTraits< TMemberFunctionPointer >::ClassType ObjectType
Definition: sitkCastImageFilter.h:116
itk::simple::CastImageFilter::LabelToAddressor::ObjectType
typename ::detail::FunctionTraits< TMemberFunctionPointer >::ClassType ObjectType
Definition: sitkCastImageFilter.h:146