/usr/include/InsightToolkit/Review/itkAnchorErodeDilateLine.h is in libinsighttoolkit3-dev 3.20.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | /*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkAnchorErodeDilateLine.h
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkAnchorErodeDilateLine_h
#define __itkAnchorErodeDilateLine_h
#include "itkAnchorHistogram.h"
#include "itkIndent.h"
namespace itk {
/**
* \class AnchorErodeDilateLine
* \brief class to implement erosions and dilations using anchor
* methods. This is the base class that must be instantiated with
* appropriate definitions of greater, less and so on. There is
* special code for cases where the structuring element is bigger than
* the image size that aren't particularly anchor related, but use the
* same data structures. Hopefully these sections occupy a very minor
* proportion of the time.
*/
template<class TInputPix, class TFunction1, class TFunction2>
class ITK_EXPORT AnchorErodeDilateLine
{
public:
/** Some convenient typedefs. */
typedef TInputPix InputImagePixelType;
void DoLine(InputImagePixelType * buffer, InputImagePixelType * inbuffer,
unsigned bufflength);
void SetSize(unsigned int size)
{
m_Size = size;
}
void PrintSelf(std::ostream &os, Indent indent) const;
AnchorErodeDilateLine();
~AnchorErodeDilateLine()
{
delete m_Histo;
}
private:
unsigned int m_Size;
TFunction1 m_TF1;
TFunction2 m_TF2;
bool m_UseVec;
typedef MorphologyHistogram<InputImagePixelType> Histogram;
typedef MorphologyHistogramVec<InputImagePixelType,TFunction1> VHistogram;
typedef MorphologyHistogramMap<InputImagePixelType,TFunction1> MHistogram;
bool StartLine(InputImagePixelType * buffer,
InputImagePixelType * inbuffer,
InputImagePixelType &Extreme,
Histogram &histo,
int &outLeftP,
int &outRightP,
int &inLeftP,
int &inRightP,
int middle, unsigned bufflength);
void FinishLine(InputImagePixelType * buffer,
InputImagePixelType * inbuffer,
InputImagePixelType &Extreme,
Histogram &histo,
int &outLeftP,
int &outRightP,
int &inLeftP,
int &inRightP,
int middle, unsigned bufflength);
bool UseVectorBasedHistogram()
{
// bool, short and char are acceptable for vector based algorithm: they do not require
// too much memory. Other types are not usable with that algorithm
return typeid(InputImagePixelType) == typeid(unsigned char)
|| typeid(InputImagePixelType) == typeid(signed char)
|| typeid(InputImagePixelType) == typeid(unsigned short)
|| typeid(InputImagePixelType) == typeid(signed short)
|| typeid(InputImagePixelType) == typeid(bool);
}
Histogram * m_Histo;
}; // end of class
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkAnchorErodeDilateLine.txx"
#endif
#endif
|