ITK  4.9.0
Insight Segmentation and Registration Toolkit
itkAnchorOpenCloseLine.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 itkAnchorOpenCloseLine_h
19 #define itkAnchorOpenCloseLine_h
20 
21 #include "itkMorphologyHistogram.h"
22 #include "itkIndent.h"
23 
24 //#define RAWHIST
25 
26 namespace itk
27 {
35 template< typename TInputPix, typename TCompare >
37 {
38 public:
39 
41  typedef TInputPix InputImagePixelType;
44  {
45  }
47 
48  void PrintSelf(std::ostream & os, Indent indent) const;
49 
52  void DoLine(std::vector<InputImagePixelType> & buffer, unsigned bufflength);
53 
54  void SetSize(unsigned int size)
55  {
56  m_Size = size;
57  }
58 
59 private:
60  unsigned int m_Size;
61 
63 
64  bool StartLine(std::vector<InputImagePixelType> & buffer,
65  InputImagePixelType & Extreme,
66  unsigned & outLeftP,
67  unsigned & outRightP);
68 
69  void FinishLine(std::vector<InputImagePixelType> & buffer,
70  InputImagePixelType & Extreme,
71  unsigned & outLeftP,
72  unsigned & outRightP);
73 
74  inline bool Compare1( const InputImagePixelType & a, const InputImagePixelType & b )
75  {
76  TCompare compare;
77  return ! compare( a, b );
78  }
79 
80  inline bool Compare2( const InputImagePixelType & a, const InputImagePixelType & b )
81  {
82  TCompare compare;
83  return compare( a, b ) || a == b;
84  }
85 
86 }; // end of class
87 } // end namespace itk
88 
89 #ifndef ITK_MANUAL_INSTANTIATION
90 #include "itkAnchorOpenCloseLine.hxx"
91 #endif
92 
93 #endif
Function::MorphologyHistogram< InputImagePixelType, TCompare > HistogramType
void DoLine(std::vector< InputImagePixelType > &buffer, unsigned bufflength)
bool Compare2(const InputImagePixelType &a, const InputImagePixelType &b)
void SetSize(unsigned int size)
class to implement openings and closings using anchor methods. This is the base class that must be in...
Control indentation during Print() invocation.
Definition: itkIndent.h:49
bool StartLine(std::vector< InputImagePixelType > &buffer, InputImagePixelType &Extreme, unsigned &outLeftP, unsigned &outRightP)
void FinishLine(std::vector< InputImagePixelType > &buffer, InputImagePixelType &Extreme, unsigned &outLeftP, unsigned &outRightP)
void PrintSelf(std::ostream &os, Indent indent) const
bool Compare1(const InputImagePixelType &a, const InputImagePixelType &b)