ITK  4.13.0
Insight Segmentation and Registration Toolkit
itkChangeLabelLabelMapFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
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 itkChangeLabelLabelMapFilter_h
19 #define itkChangeLabelLabelMapFilter_h
20 
22 #include <map>
23 
24 namespace itk
25 {
48 template< typename TImage >
49 class ITK_TEMPLATE_EXPORT ChangeLabelLabelMapFilter:
50  public InPlaceLabelMapFilter< TImage >
51 {
52 public:
58 
60  typedef TImage ImageType;
61  typedef typename ImageType::Pointer ImagePointer;
62  typedef typename ImageType::ConstPointer ImageConstPointer;
63  typedef typename ImageType::PixelType PixelType;
64  typedef typename ImageType::IndexType IndexType;
65  typedef typename ImageType::LabelObjectType LabelObjectType;
66 
68  itkStaticConstMacro(ImageDimension, unsigned int, TImage::ImageDimension);
69 
71  itkNewMacro(Self);
72 
75 
76  typedef typename std::map< PixelType, PixelType > ChangeMapType;
77  typedef typename ChangeMapType::const_iterator ChangeMapIterator;
78 
79 #ifdef ITK_USE_CONCEPT_CHECKING
80  // Begin concept checking
81 /* itkConceptMacro(InputEqualityComparableCheck,
82  (Concept::EqualityComparable<InputImagePixelType>));
83  itkConceptMacro(IntConvertibleToInputCheck,
84  (Concept::Convertible<int, InputImagePixelType>));
85  itkConceptMacro(InputOStreamWritableCheck,
86  (Concept::OStreamWritable<InputImagePixelType>));*/
87 // End concept checking
88 #endif
89 
92  void SetChangeMap(const ChangeMapType & changeMap);
93 
94  const ChangeMapType & GetChangeMap() const;
95 
96  void SetChange(const PixelType & oldLabel, const PixelType & newLabel);
97 
98  void ClearChangeMap();
99 
100 protected:
102  ~ChangeLabelLabelMapFilter() ITK_OVERRIDE {}
103 
104  void GenerateData() ITK_OVERRIDE;
105 
106  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
107 
108  ChangeMapType m_MapOfLabelToBeReplaced;
109 
110 private:
111  ITK_DISALLOW_COPY_AND_ASSIGN(ChangeLabelLabelMapFilter);
112 }; // end of class
113 } // end namespace itk
114 
115 #ifndef ITK_MANUAL_INSTANTIATION
116 #include "itkChangeLabelLabelMapFilter.hxx"
117 #endif
118 
119 #endif
Light weight base class for most itk classes.
ImageType::LabelObjectType LabelObjectType
InPlaceLabelMapFilter< TImage > Superclass
Base class for filters that takes an image as input and overwrites that image as the output...
Replace the label Ids of selected LabelObjects with new label Ids.
ChangeMapType::const_iterator ChangeMapIterator
Control indentation during Print() invocation.
Definition: itkIndent.h:49
std::map< PixelType, PixelType > ChangeMapType