17#if !defined(__mlKernelTools_H) 
   18#define __mlKernelTools_H 
   72  template<
class T, 
typename DATATYPE>
 
  121  template <
typename DATATYPE>
 
  126        return (v >= minVal) && (v <= maxVal);
 
  128        return (v <  maxVal) || (v >  minVal);
 
 
  133  template <
typename DATATYPE>
 
  139  template <
typename DATATYPE>
 
  150  template <
typename IN_DATATYPE, 
typename OUT_DATATYPE>
 
  184  template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  233  template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  245    const bool normal = minVal <= maxVal;
 
 
  303  template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  315    const bool normal = minVal <= maxVal;
 
  335          retVal += 
static_cast<IntermediateType
>(val) *
 
 
  385  template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  432            retVal += 
static_cast<IntermediateType
>(val) *
 
 
  471  template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  709                         NUM_BORDER_HANDLINGS};
 
 
  714    static const char* 
const BorderHandlingNames[];
 
  797                                                   bool             isSeparable=
false,
 
  824                                            bool           isSeparable=
false,
 
  854    template <
typename IN_DATATYPE, 
typename OUT_DATATYPE>
 
  864    template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  876    template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  891    template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  906    template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  924    template <
typename IN_DATATYPE, 
typename OUT_DATATYPE, 
typename K_DATATYPE>
 
  944    template <
typename DATATYPE>
 
  956    template <
typename DATATYPE>
 
 
  994  template <
typename DATATYPE>
 
 1025  template <
typename DATATYPE>
 
 1056    for (p.u=
ov1.u;   p.u<=
ov2.u;   p.u++){
 
 1057      for (p.t=
ov1.t;   p.t<=
ov2.t;   p.t++){
 
 1058        for (p.c=
ov1.c;   p.c<=
ov2.c;   p.c++){
 
 1059          for (p.z=
ov1.z;   p.z<=
ov2.z;   p.z++){
 
 1061            for (p.y=
ov1.y;   p.y<=
ov2.y;   p.y++){
 
 
The LineApplicator class provides pure virtual functions used by the old applyFiltering functions fro...
 
virtual ImageVector getNegativeExtent() const
Returns the negative extent of a kernel used for filtering.
 
The class PagedImage, representing a fragmented image that manages properties and data of an image lo...
 
This class manages/represents a rectangular 6D image region that is organized linearly in memory.
 
const SubImageBox & getBox() const
Returns the box describing the origin/extent of the subimage.
 
void set(const ComponentType v=0)
Sets all components to v or - if v is not specified - to 0.
 
static TSubImageBox< intT > intersect(const TSubImageBox< intT > &box1, const TSubImageBox< intT > &box2)
Returns the overlapping region of subimage regions box1 and box2.
 
A class that offers a TSubImage with a TSubImageCursor.
 
void setCursorImagePosition(const ImageVector &position)
Sets the cursor to the given 6D position relative to the origin of the complete image region.
 
bool MLValueIs0WOM(MLint8 a)
Returns true if value is 0; otherwise, it returns false.
 
#define MLKERNELEXPORT
Includes files used in many parts of the dll, defined dll-specific macros and controls any system dep...
 
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
 
MLint MLsoffset
Signed ML offset type that is a 32-bit signed integer on 32-bit platforms and a 64-bit integer on 64-...
 
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
 
static void MLKernelToolsCorrelateLineWithImageAndKernelInterval(const IN_DATATYPE *inCursor, OUT_DATATYPE *outCursor, size_t numVox, const K_DATATYPE *valTab, const MLsoffset *indexTab, size_t indexTabSize, MLsoffset srcVoxelOffset, MLdouble imgIntMinVal, MLdouble imgIntMaxVal, MLdouble kernIntMinVal, MLdouble kernIntMaxVal)
Correlate all voxels of the a row pointed to by inCursor with the current kernel and write the result...
 
static bool isScalarValueInRange(const DATATYPE &v, bool normal, double minVal, double maxVal)
 
static void MLKernelToolsCorrelateLineEvtWithIntervals(const IN_DATATYPE *inCursor, OUT_DATATYPE *outCursor, size_t numVox, const K_DATATYPE *valTab, const MLsoffset *indexTab, size_t indexTabSize, MLsoffset srcVoxelOffset, MLdouble imgIntMinVal, MLdouble imgIntMaxVal, MLdouble kernIntMinVal, MLdouble kernIntMaxVal, bool useImgInt, bool useKernInt)
Correlate all voxels of the a row pointed to by inCursor with the current kernel and write the result...
 
static void MLKernelToolsCopyLine(const IN_DATATYPE *inCursor, OUT_DATATYPE *outCursor, size_t numVox, MLsoffset srcVoxelOffset)
Copy the line from input subimage which corresponds to the line to be modified in the output image.
 
static void MLKernelToolsApplyFiltering(const ImageVector &inImgExt, LineApplicator< DATATYPE > &lineApp, KernelTools::BorderHandling borderHandling, MLdouble fillValue, TSubImageWithCursor< DATATYPE > &outSubImg, TSubImageWithCursor< DATATYPE > &inSubImg)
Global template functions for page filtering.
 
static void MLKernelToolsCorrelateLineWithKernelInterval(const IN_DATATYPE *inCursor, OUT_DATATYPE *outCursor, size_t numVox, const K_DATATYPE *valTab, const MLsoffset *indexTab, size_t indexTabSize, MLsoffset srcVoxelOffset, MLdouble minVal, MLdouble maxVal)
Correlate all voxels of the a row pointed to by inCursor with the current kernel and write the result...
 
static void MLKernelToolsCorrelateLineWithImageInterval(const IN_DATATYPE *inCursor, OUT_DATATYPE *outCursor, size_t numVox, const K_DATATYPE *valTab, const MLsoffset *indexTab, size_t indexTabSize, MLsoffset srcVoxelOffset, MLdouble minVal, MLdouble maxVal)
Correlate all voxels of the a row pointed to by inCursor with the current kernel and write the result...
 
static bool _isScalarValueInRange(const DATATYPE &v, bool normal, double minVal, double maxVal, OverloadSelector::OnTrue)
Global static template functions for line filtering.
 
static void MLKernelToolsCorrelateLine(const IN_DATATYPE *inCursor, OUT_DATATYPE *outCursor, size_t numVox, const K_DATATYPE *valTab, const MLsoffset *indexTab, size_t indexTabSize)
Correlate all voxels of the a row pointed to by inCursor with the current kernel and write the result...
 
Helper types to switch between implementations of functions by overloading.
 
The basic implementation of a filter to filter an image row with kernel operations.
 
virtual ~fctLineFilter()
Virtual destructor to avoid warnings. Currently it does nothing.
 
Wrapper for the use of object bound row filters.
 
T * pOb
Pointer to store the pointer to the class type object passed to the explicit useObjectLineFilter as p...
 
~useObjectLineFilter() override
Virtual destructor to avoid warnings. Currently it does nothing.
 
useObjectLineFilter(T *po, void(T::*pf)(TSubImageWithCursor< DATATYPE > *, TSubImageWithCursor< DATATYPE > *, size_t))
Constructor.