24 #include <itkNeighborhood.h>
25 #include <itkFlatStructuringElement.h>
26 #include <itkNumericTraits.h>
34 template<
class TPixel,
unsigned int VDimension = 2,
class TAllocator = NeighborhoodAllocator<TPixel>,
class SuperClss = Neighborhood<TPixel, VDimension, TAllocator > >
42 typedef Neighborhood<TPixel, VDimension, TAllocator>
Superclass;
57 typedef typename AllocatorType::iterator
Iterator;
63 typedef typename Superclass::SizeType
SizeType;
101 Superclass::operator=(other);
122 this->SetRadius(itkKExt);
128 itkKExt = ML_NAMESPACE::ITKSizeFromMLVector<SizeType>(kExt);
129 this->SetRadius(itkKExt);
138 for (
size_t n=0; n < kernel.getTabSize(); n++){
139 pos.set(kernel.getCoordTab()[n]);
140 for (
unsigned int i=0; i<offset.GetOffsetDimension(); i++){
143 offset[i] = pos[i]-shiftHalf[i];
147 (*this)[offset] =
static_cast<TPixel
>(kernel.getValueTab()[n]);
157 template<
class TPixel,
unsigned int VDimension = 2,
class TAllocator = NeighborhoodAllocator<TPixel> >
228 #define ML_ITK_KERNEL_WRAPPER_TYPEDEFS_0(CLASS_NAME, NAMESPACE) \
233 typedef itk::MLITKStructuringElement<ITK_INDATATYPE,DIM> MLITKKernelType; \
238 typedef NAMESPACE::CLASS_NAME<_TEMPLATE_INPUTS0, MLITKKernelType> FilterType; \
245 #define ML_ITK_KERNEL_WRAPPER_TYPEDEFS_1(CLASS_NAME, NAMESPACE) \
250 typedef itk::MLITKStructuringElement<ITK_INDATATYPE,DIM> MLITKKernelType; \
255 typedef NAMESPACE::CLASS_NAME<_TEMPLATE_INPUTS1, MLITKKernelType> FilterType; \
263 #define ML_ITK_KERNEL_WRAPPER_TYPEDEFS_2(CLASS_NAME, NAMESPACE) \
268 typedef itk::MLITKStructuringElement<ITK_INDATATYPE,DIM> MLITKKernelType; \
273 typedef NAMESPACE::CLASS_NAME<_TEMPLATE_INPUTS2, MLITKKernelType> FilterType; \
281 #define ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_0(CLASS_NAME, NAMESPACE) \
286 typedef itk::FlatStructuringElement<DIM> MLITKFLATKernelType; \
291 typedef NAMESPACE::CLASS_NAME<_TEMPLATE_INPUTS0, MLITKFLATKernelType > FilterType; \
298 #define ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_1(CLASS_NAME, NAMESPACE) \
303 typedef itk::FlatStructuringElement<DIM> MLITKFLATKernelType; \
308 typedef NAMESPACE::CLASS_NAME<_TEMPLATE_INPUTS1, MLITKFLATKernelType > FilterType; \
317 #define ML_ITK_KERNEL_WRAPPER_0_2D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
318 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
319 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_0, \
320 ML_IMPLEMENT_ALL_ITK_2D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
327 #define ML_ITK_KERNEL_WRAPPER_0_3D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
328 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
329 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_0, \
330 ML_IMPLEMENT_ALL_ITK_3D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
336 #define ML_ITK_KERNEL_WRAPPER_0_6D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
337 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
338 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_0, \
339 ML_IMPLEMENT_ALL_ITK_6D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
347 #define ML_ITK_KERNEL_WRAPPER_1_2D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
348 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
349 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_1, \
350 ML_IMPLEMENT_ALL_ITK_2D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
357 #define ML_ITK_KERNEL_WRAPPER_1_3D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
358 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
359 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_1, \
360 ML_IMPLEMENT_ALL_ITK_3D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
366 #define ML_ITK_KERNEL_WRAPPER_1_6D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
367 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
368 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_1, \
369 ML_IMPLEMENT_ALL_ITK_6D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
376 #define ML_ITK_KERNEL_WRAPPER_2_6D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
377 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
378 ML_ITK_KERNEL_WRAPPER_TYPEDEFS_2, \
379 ML_IMPLEMENT_ALL_ITK_6D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
389 #define ML_ITK_FLAT_KERNEL_WRAPPER_0_2D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
390 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
391 ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_0, \
392 ML_IMPLEMENT_ALL_ITK_2D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
399 #define ML_ITK_FLAT_KERNEL_WRAPPER_0_3D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
400 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
401 ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_0, \
402 ML_IMPLEMENT_ALL_ITK_3D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
408 #define ML_ITK_FLAT_KERNEL_WRAPPER_0_6D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
409 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
410 ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_0, \
411 ML_IMPLEMENT_ALL_ITK_6D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
419 #define ML_ITK_FLAT_KERNEL_WRAPPER_1_2D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
420 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
421 ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_1, \
422 ML_IMPLEMENT_ALL_ITK_2D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
429 #define ML_ITK_FLAT_KERNEL_WRAPPER_1_3D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
430 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
431 ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_1, \
432 ML_IMPLEMENT_ALL_ITK_3D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
438 #define ML_ITK_FLAT_KERNEL_WRAPPER_1_6D(PROJECT_PREFIX, CLASS_NAME, NAMESPACE) \
439 _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASS_NAME, NAMESPACE, _ML_ITK_DETERMINE_IN_REGION_N, \
440 ML_ITK_FLAT_KERNEL_WRAPPER_TYPEDEFS_1, \
441 ML_IMPLEMENT_ALL_ITK_6D_CASES, _ML_ITK_DETERMINE_OUT_REGION_N)
Template class to create an itk structured element from an ML kernel.
Superclass::SizeType SizeType
Size and value typedef support.
virtual void CreateStructuringElement(const ml::Kernel &kernel)
Create the structuring element.
virtual ~MLITKStructuringElementBase()
Default destructor. Only superclass stuff is done.
Superclass::RadiusType RadiusType
Radius typedef support.
MLITKStructuringElementBase()
Default constructor.
virtual void setKernelFromString(const std::string &kernelStr)
Convenience constructor from a string description of an ML kernel.
itkStaticConstMacro(NeighborhoodDimension, unsigned int, VDimension)
External support for dimensionality.
TPixel PixelType
External support for pixel type.
Superclass::SizeValueType SizeValueType
TAllocator AllocatorType
External support for allocator type.
MLITKStructuringElementBase(const ml::Kernel &kernel)
Convenience constructor directly from the ML kernel.
Superclass::OffsetType OffsetType
Offset and value typedef support.
OffsetType::OffsetValueType OffsetValueType
AllocatorType::iterator Iterator
Iterator typedef support.
MLITKStructuringElementBase(const Self &other)
Copy constructor. Only superclass stuff is done.
AllocatorType::const_iterator ConstIterator
SliceIterator< TPixel, Self > SliceIteratorType
External slice iterator type typedef support.
MLITKStructuringElementBase Self
Standard self typedef.
Self & operator=(const Self &other)
Assignment operator. Only superclass stuff is done.
Neighborhood< TPixel, VDimension, TAllocator > Superclass
Standard super class typedef.
Specialized class for generated toolkit modules using normal kernels.
MLITKStructuringElement(const ml::Kernel &kernel)
Convenience constructor directly from the ML kernel.
Superclass::RadiusType RadiusType
Radius typedef support.
SliceIterator< TPixel, Self > SliceIteratorType
External slice iterator type typedef support.
TAllocator AllocatorType
External support for allocator type.
Self & operator=(const Self &other)
Assignment operator. Only superclass stuff is done.
AllocatorType::iterator Iterator
Iterator typedef support.
Superclass::OffsetType OffsetType
Offset and value typedef support.
itkStaticConstMacro(NeighborhoodDimension, unsigned int, VDimension)
External support for dimensionality.
MLITKStructuringElement(const Self &other)
Copy constructor. Only superclass stuff is done.
MLITKStructuringElement Self
Standard self typedef.
TPixel PixelType
External support for pixel type.
OffsetType::OffsetValueType OffsetValueType
MLITKStructuringElementBase< TPixel, VDimension, TAllocator, NeighbourHoodClass > Superclass
Standard super class typedef.
Superclass::SizeType SizeType
Size and value typedef support.
AllocatorType::const_iterator ConstIterator
MLITKStructuringElement()
Default constructor.
Superclass::SizeValueType SizeValueType
Neighborhood< TPixel, VDimension, TAllocator > NeighbourHoodClass
Used neighborhood.
std::string setKernel(const std::string &kernString)
Defines elements and values of the kernel matrix by a string.
Include dll-specific settings.
TKernel< KernelDataType > Kernel
Standard kernel type to be used in this kernel library.
TImageVector< MLint > ImageVector
Defines the standard ImageVector type that is used by the ML for indexing and coordinates.