/usr/include/InsightToolkit/Common/itkBinaryBallStructuringElement.h is in libinsighttoolkit3-dev 3.20.1+git20120521-6build1.
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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | /*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkBinaryBallStructuringElement.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 __itkBinaryBallStructuringElement_h
#define __itkBinaryBallStructuringElement_h
#include "itkNeighborhood.h"
namespace itk {
/** \class BinaryBallStructuringElement
* \brief A Neighborhood that represents a ball structuring element
* (ellipsoid) with binary elements.
*
* This class defines a Neighborhood whose elements are either 0 or 1
* depending on whether they are outside or inside an ellipsoid whose
* radii match the radii of the Neighborhood. This class can be used
* as a structuring element for the Morphology image filters.
*
* A BinaryBallStructuringElement has an N-dimensional \em radius.
* The radius is defined separately for each dimension as the number
* of pixels that the neighborhood extends outward from the center
* pixel. For example, a 2D BinaryBallStructuringElement object with
* a radius of 2x3 has sides of length 5x7.
*
* BinaryBallStructuringElement objects always have an unambiguous
* center because their side lengths are always odd.
*
* \sa Neighborhood
* \sa MorphologyImageFilter
* \sa BinaryDilateImageFilter
* \sa BinaryErodeImageFilter
*
* \ingroup Operators
* \ingroup ImageIterators
*/
template<class TPixel, unsigned int VDimension = 2,
class TAllocator = NeighborhoodAllocator<TPixel> >
class ITK_EXPORT BinaryBallStructuringElement
: public Neighborhood<TPixel, VDimension, TAllocator>
{
public:
/** Standard class typedefs. */
typedef BinaryBallStructuringElement Self;
typedef Neighborhood<TPixel, VDimension, TAllocator> Superclass;
/** External support for allocator type. */
typedef TAllocator AllocatorType;
/** External support for dimensionality. */
itkStaticConstMacro(NeighborhoodDimension, unsigned int, VDimension);
/** External support for pixel type. */
typedef TPixel PixelType;
/** Iterator typedef support. Note the naming is intentional, i.e.,
* ::iterator and ::const_iterator, because the allocator may be a
* vnl object or other type, which uses this form. */
typedef typename AllocatorType::iterator Iterator;
typedef typename AllocatorType::const_iterator ConstIterator;
/** Size and value typedef support. */
typedef typename Superclass::SizeType SizeType;
typedef typename Superclass::SizeValueType SizeValueType;
/** Radius typedef support. */
typedef typename Superclass::RadiusType RadiusType;
/** External slice iterator type typedef support. */
typedef SliceIterator<TPixel, Self> SliceIteratorType;
/** Default constructor. */
BinaryBallStructuringElement() {}
/** Default destructor. */
virtual ~BinaryBallStructuringElement() {}
/** Copy constructor. */
BinaryBallStructuringElement(const Self& other)
: Neighborhood<TPixel, VDimension, TAllocator>(other)
{
}
/** Assignment operator. */
Self &operator=(const Self& other)
{
Superclass::operator=(other);
return *this;
}
/** Build the structuring element */
void CreateStructuringElement();
protected:
private:
};
} // namespace itk
// Define instantiation macro for this template.
#define ITK_TEMPLATE_BinaryBallStructuringElement(_, EXPORT, x, y) namespace itk { \
_(2(class EXPORT BinaryBallStructuringElement< ITK_TEMPLATE_2 x >)) \
namespace Templates { typedef BinaryBallStructuringElement< ITK_TEMPLATE_2 x > \
BinaryBallStructuringElement##y; } \
}
#if ITK_TEMPLATE_EXPLICIT
# include "Templates/itkBinaryBallStructuringElement+-.h"
#endif
#if ITK_TEMPLATE_TXX
# include "itkBinaryBallStructuringElement.txx"
#endif
#endif
|