SimpleITK  
sitkImageFilter.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 sitkImageFilter_h
19 #define sitkImageFilter_h
20 
21 #include "sitkMacro.h"
23 #include "sitkBasicFilters.h"
24 #include "sitkProcessObject.h"
25 
26 namespace itk::simple {
27 
35  public ProcessObject
36  {
37  public:
38  using Self = ImageFilter;
39 
40  //
41  // Type List Setup
42  //
43 
44  //
45  // Filter Setup
46  //
47 
52  ImageFilter();
53 
57  virtual ~ImageFilter() = 0;
58 
59  protected:
60 
61  // Simple ITK must use a zero based index
62  template< class TImageType>
63  static void FixNonZeroIndex( TImageType * img )
64  {
65  assert( img );
66 
67  typename TImageType::RegionType r = img->GetLargestPossibleRegion();
68  typename TImageType::IndexType idx = r.GetIndex();
69 
70  for( unsigned int i = 0; i < TImageType::ImageDimension; ++i )
71  {
72 
73  if ( idx[i] != 0 )
74  {
75  // if any of the indicies are non-zero, then just fix it
76  typename TImageType::PointType o;
77  img->TransformIndexToPhysicalPoint( idx, o );
78  img->SetOrigin( o );
79 
80  idx.Fill( 0 );
81  r.SetIndex( idx );
82 
83  // Need to set the buffered region to match largest
84  img->SetRegions( r );
85 
86  return;
87  }
88  }
89 
90  }
91 
95  void CheckImageMatchingDimension(const Image &image1, const Image& image2, const std::string &image2Name );
96 
100  void CheckImageMatchingPixelType(const Image &image1, const Image& image2, const std::string &image2Name );
101 
105  void CheckImageMatchingSize(const Image &image1, const Image& image2, const std::string &image2Name );
106  };
107  }
108 #endif
itk::simple::Image
The Image class for SimpleITK.
Definition: sitkImage.h:76
sitkBasicFilters.h
SITKBasicFilters0_EXPORT
#define SITKBasicFilters0_EXPORT
Definition: sitkBasicFilters.h:40
sitkMemberFunctionFactory.h
sitkProcessObject.h
sitkMacro.h
itk::simple::ImageFilter::FixNonZeroIndex
static void FixNonZeroIndex(TImageType *img)
Definition: sitkImageFilter.h:63
itk::simple::ImageFilter
The base interface for SimpleITK filters that take one input image.
Definition: sitkImageFilter.h:34
itk::simple::ProcessObject
Base class for SimpleITK classes based on ProcessObject.
Definition: sitkProcessObject.h:51
itk::simple
Definition: sitkAdditionalProcedures.h:28