MeVisLab Toolbox Reference
ml::KernelModule Class Reference

#include <mlKernelModule.h>

Inheritance diagram for ml::KernelModule:
ml::KernelBaseModule ml::Module ml::FieldContainer ml::Base ml::BitMorphologyFilter ml::CloseGapFilter ml::CompassFilter ml::ConvolutionFilter ml::Correlation ml::ExtConvolutionFilter ml::KernelCurvatureEstimationFilter ml::LocalMaximaFilter ml::MorphologyFilter ml::RankFilter ml::RobertsFilter ml::SigmaFilter ml::Sobel3DFilter ml::StdDeviationFilter ml::SurroundFilter ml::ZeroCrossingsFilter

Public Member Functions

 KernelModule (int inputNum=1, int outputNum=1)
Fields to specify kernel geometry. See \c _createKernelExtentFields() which creates these fields. If not called then NULL is returned otherwise.
IntFieldgetKernelXFld () const
 X extent of kernel. The field name will be "kernelX". Field default is 3 if created.
IntFieldgetKernelYFld () const
 Y extent of kernel. The field name will be "kernelY". Field default is 3 if created.
IntFieldgetKernelZFld () const
 Z extent of kernel. The field name will be "kernelZ". Field default is 1 if created.
IntFieldgetKernelCFld () const
 C extent of kernel. The field name will be "kernelC". Field default is 1 if created.
IntFieldgetKernelTFld () const
 T extent of kernel. The field name will be "kernelT". Field default is 1 if created.
IntFieldgetKernelUFld () const
 U extent of kernel. The field name will be "kernelU". Field default is 1 if created.
BoolFieldgetMakeSphericalFld () const
Read only information fields.
StringFieldgetKernelInfoFld () const
DoubleFieldgetKernelElementsSumFld () const
IntFieldgetNumKernelElementsFld () const
Public Member Functions inherited from ml::KernelBaseModule
KernelgetKernel ()
const KernelgetConstKernel () const
 Method to access the kernel as constant object. See also getKernel().
EnumFieldgetBorderHandlingFld () const
DoubleFieldgetFillValueFld () const
EnumFieldgetReferenceExtentModeFld () const
Public Member Functions inherited from ml::Module
MLMetaProfilePtrgetMetaProfile () const
 Returns the metaprofile for the base operator.
const char * getTypeNameFast () const
 Module (int numInputImages, int numOutputImages)
 ~Module () override
InputConnectorFieldgetInputImageField (MLint i) const
 Returns the field representing input image i. i must be a valid index.
OutputConnectorFieldgetOutputImageField (MLint i=0) const
 Returns the field representing output image i. i must be a valid index.
MLint getNumInputImages () const
 Returns the number of input images of this module.
MLint getNumOutputImages () const
 Returns the number of output images of this module.
PagedImagegetOutputImage (MLint outputIndex=0) const
 Returns the output image outputIndex. The index needs to be in the range [0, getNumOutputImages()-1].
InputConnectorFieldaddInputImage (const char *name=nullptr)
OutputConnectorFieldaddOutputImage (const char *name=nullptr)
PagedImagegetInputImage (MLint inputIndex, bool getReal=false) const
PagedImagegetUpdatedInputImage (MLint inputIndex, bool getReal=false) const
MLErrorCode processAllPages (int outputIndex=-1, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
MLErrorCode processAllPages (ProcessAllPagesHandler &handler, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
MLErrorCode processMissingPages (int outputIndex=0, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
void clearOutputImage (MLint i=0)
 Clears cached output image pages of output image i.
MLint getOutputImageInplace (MLint outputIndex=0) const
MLint getBypass (MLint outputIndex=0) const
THREAD_SUPPORT getThreadSupport () const
bool areRecursiveHandleNotificationsPermitted () const
MLint getHandleNotificationEntryCounter () const
PERMITTED_TYPES getVoxelDataTypeSupport () const
bool isSupportedVoxelDataType (MLDataType dt) const
virtual INPUT_HANDLE handleInput (int, INPUT_STATE) const
INPUT_STATE getInputState (MLint index)
INPUT_STATE getUpdatedInputState (MLint index)
bool isInputImageField (Field *field) const
void touchOutputImageFields () const
 Touches all output image fields to indicate that the images have changed.
virtual void beginSaveFields ()
virtual void endSaveFields ()
Public Member Functions inherited from ml::FieldContainer
 FieldContainer ()
 Constructor.
 ~FieldContainer () override
 Destructor: Deletes all added fields.
std::string whoAmI (bool withInstanceName=true) const
FieldaddField (const char *name, const char *type, const char *value)
FieldaddField (Field *field)
 Adds a field, the ownership of the field is passed to the FieldContainer.
BoolFieldaddBool (const char *name)
 Creates a BoolField with name and adds it to the container. Default value is false.
BoolFieldaddBool (const char *name, bool value)
 Creates a BoolField with name and adds it to the container.
IntFieldaddInt (const char *name)
 Creates an IntField with name and adds it to the container. Default value is 0.
IntFieldaddInt (const char *name, MLint value)
 Creates an IntField with name and adds it to the container.
EnumFieldaddEnum (const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems)
EnumFieldaddEnum (const char *name, const std::vector< std::string > &enumerationItemNames)
template<typename EnumType>
TypedEnumField< EnumType > * addEnum (const char *name, const EnumValues< EnumType > &values, EnumType initialValue)
FloatFieldaddFloat (const char *name)
 Creates a FloatField with name and adds it to the container. Default value is 0.f.
FloatFieldaddFloat (const char *name, float value)
 Creates a FloatField with name and adds it to the container.
ProgressFieldaddProgress (const char *name)
 Creates a float ProgressField with name and adds it to the container. Default value is 0.f.
ProgressFieldaddProgress (const char *name, float value)
 Creates a float ProgressField with name and adds it to the container.
DoubleFieldaddDouble (const char *name)
 Creates a DoubleField with name and adds it to the container. Default value is 0.
DoubleFieldaddDouble (const char *name, double value)
 Creates a DoubleField with name and adds it to the container.
StringFieldaddString (const char *name)
 Creates a StringField with name and adds it to the container. Default value is empty string.
StringFieldaddString (const char *name, const std::string &value)
 Creates a StringField with name and adds it to the container.
NotifyFieldaddNotify (const char *name)
 Creates a NotifyField field with name and adds it to the container.
TriggerFieldaddTrigger (const char *name)
BaseFieldaddBase (const char *name)
 Creates a Base field with name and adds it to the container. Default value is NULL.
BaseFieldaddBase (const char *name, Base *value)
 Creates a Base field with name and adds it to the container.
BaseFieldaddBase (const char *name, const RefCountedBasePtr &value)
 Creates a Base field with name and adds it to the container. Sets the value from intrusive pointer.
template<typename T>
BaseFieldaddBaseWithAllowedType (const char *name, T *value=nullptr)
 As above, but also sets the allowed type of the field.
template<typename T>
BaseFieldaddBaseWithAllowedType (const char *name, const ::boost::intrusive_ptr< T > &value)
 As above, but also sets the allowed type of the field.
template<typename T>
TypedBaseField< T > * addTypedBase (const char *name)
 Creates a TypedBaseField with name and adds it to the container. Default value is NULL.
template<typename T>
TypedBaseField< T > * addTypedBase (const char *name, T *value)
 Creates a TypedBaseField with name and adds it to the container.
template<typename T>
TypedBaseField< T > * addTypedBase (const char *name, const ::boost::intrusive_ptr< T > &value)
 Creates a TypedBaseField with name and adds it to the container. Sets the value from intrusive pointer.
SoNodeFieldaddSoNode (const char *name)
 Creates a SoNodeField with name and adds it to the container. Default value is NULL.
SoNodeFieldaddSoNode (const char *name, SoNode *value)
 Creates a SoNodeField with name and adds it to the container.
PointerFieldaddPointer (const char *name)
 Creates a PointerField with name and adds it to the container.
Vector2FieldaddVector2 (const char *name)
 Creates a Vector2Field with name and adds it to the container.
Vector2FieldaddVector2 (const char *name, const Vector2 &value)
 Creates a Vector2Field with name and adds it to the container.
Vector2FieldaddVector2 (const char *name, double x, double y)
 Creates a Vector2Field with name and adds it to the container.
Vector3FieldaddVector3 (const char *name)
 Creates a Vector3Field with name and adds it to the container.
Vector3FieldaddVector3 (const char *name, const Vector3 &value)
 Creates a Vector3Field with name and adds it to the container.
Vector3FieldaddVector3 (const char *name, double x, double y, double z)
 Creates a Vector3Field with name and adds it to the container.
Vector4FieldaddVector4 (const char *name)
 Creates a Vector4Field with name and adds it to the container.
Vector4FieldaddVector4 (const char *name, const Vector4 &value)
 Creates a Vector4Field with name and adds it to the container.
Vector4FieldaddVector4 (const char *name, double x, double y, double z, double w)
 Creates a Vector4Field with name and adds it to the container.
Vector5FieldaddVector5 (const char *name)
 Creates a Vector5Field with name and adds it to the container.
Vector5FieldaddVector5 (const char *name, const Vector5 &value)
 Creates a Vector5Field with name and adds it to the container.
Vector6FieldaddVector6 (const char *name)
 Creates a Vector6Field with name and adds it to the container.
Vector6FieldaddVector6 (const char *name, const Vector6 &value)
 Creates a Vector6Field with name and adds it to the container.
Vector10FieldaddVector10 (const char *name)
 Creates a Vector10Field with name and adds it to the container.
Vector10FieldaddVector10 (const char *name, const Vector10 &value)
 Creates a Vector10Field with name and adds it to the container.
ImageVectorFieldaddImageVector (const char *name)
 Creates a ImageVectorField with name and adds it to the container.
ImageVectorFieldaddImageVector (const char *name, const ImageVector &value)
 Creates a ImageVectorField with name and adds it to the container.
ImageVectorFieldaddImageVector (const char *name, MLint x, MLint y, MLint z, MLint c, MLint t, MLint u)
 Creates a ImageVectorField with name and adds it to the container.
SubImageBoxFieldaddSubImageBox (const char *name)
 Creates a SubImageBoxField with name and adds it to the container.
SubImageBoxFieldaddSubImageBox (const char *name, const SubImageBox &value)
 Creates a SubImageBoxField with name and adds it to the container.
SubImageBoxdFieldaddSubImageBoxd (const char *name)
 Creates a SubImageBoxd field with name and adds it to the container.
SubImageBoxdFieldaddSubImageBoxd (const char *name, const SubImageBoxd &value)
 Creates a SubImageBoxd field with name and adds it to the container.
ColorFieldaddColor (const char *name)
 Creates a ColorField with name and adds it to the container.
ColorFieldaddColor (const char *name, float r, float g, float b)
 Creates a ColorField with name and adds it to the container.
ColorFieldaddColor (const char *name, const Vector3 &value)
 Creates a ColorField with name and adds it to the container.
PlaneFieldaddPlane (const char *name)
 Creates a PlaneField with name and adds it to the container.
PlaneFieldaddPlane (const char *name, double f0, double f1, double f2, double f3)
 Creates a PlaneField with name and adds it to the container.
PlaneFieldaddPlane (const char *name, const Plane &value)
 Creates a PlaneField with name and adds it to the container.
RotationFieldaddRotation (const char *name)
 Creates a RotationField with name and adds it to the container.
RotationFieldaddRotation (const char *name, const Rotation &value)
 Creates a RotationField with name and adds it to the container.
Matrix2FieldaddMatrix2 (const char *name)
 Creates a Matrix2Field with name and adds it to the container.
Matrix2FieldaddMatrix2 (const char *name, const Matrix2 &value)
 Creates a Matrix2Field with name and adds it to the container.
Matrix3FieldaddMatrix3 (const char *name)
 Creates a Matrix3Field with name and adds it to the container.
Matrix3FieldaddMatrix3 (const char *name, const Matrix3 &value)
 Creates a Matrix3Field with name and adds it to the container.
Matrix4FieldaddMatrix4 (const char *name)
 Creates a Matrix4Field with name and adds it to the container.
Matrix4FieldaddMatrix4 (const char *name, const Matrix4 &value)
 Creates a Matrix4Field with name and adds it to the container.
Matrix5FieldaddMatrix5 (const char *name)
 Creates a Matrix5Field with name and adds it to the container.
Matrix5FieldaddMatrix5 (const char *name, const Matrix5 &value)
 Creates a Matrix5Field with name and adds it to the container.
Matrix6FieldaddMatrix6 (const char *name)
 Creates a Matrix6Field with name and adds it to the container.
Matrix6FieldaddMatrix6 (const char *name, const Matrix6 &value)
 Creates a Matrix6Field with name and adds it to the container.
MatrixFieldaddMatrix (const char *name)
 Creates a MatrixField with name and adds it to the container.
MatrixFieldaddMatrix (const char *name, const Matrix4 &value)
 Creates a MatrixField with name and adds it to the container.
MLDataTypeFieldaddMLDataType (const char *name)
 Creates a MTDataTypeField with name and adds it to the container.
MLDataTypeFieldaddMLDataType (const char *name, MLDataType value)
 Creates a MTDataTypeField with name and adds it to the container.
UniversalTypeFieldaddUniversalType (const char *name)
 Creates an UniversalTypeField field with name and adds it to the container.
IntListFieldaddIntList (const char *name)
 Creates an IntListField field with name and empty list value and adds it to the container.
IntListFieldaddIntList (const char *name, const std::vector< MLint > &value)
 Creates an IntListField field with name and given list value and adds it to the container.
DoubleListFieldaddDoubleList (const char *name)
 Creates an DoubleListField field with name and empty list value and adds it to the container.
DoubleListFieldaddDoubleList (const char *name, const std::vector< double > &value)
 Creates an DoubleListField field with name and given list value and adds it to the container.
Vector2ListFieldaddVector2List (const char *name)
 Creates an Vector2ListField field with name and empty list value and adds it to the container.
Vector2ListFieldaddVector2List (const char *name, const std::vector< Vector2 > &value)
 Creates an Vector2ListField field with name and given list value and adds it to the container.
Vector3ListFieldaddVector3List (const char *name)
 Creates an Vector3ListField field with name and empty list value and adds it to the container.
Vector3ListFieldaddVector3List (const char *name, const std::vector< Vector3 > &value)
 Creates an Vector3ListField field with name and given list value and adds it to the container.
Vector4ListFieldaddVector4List (const char *name)
 Creates an Vector4ListField field with name and empty list value and adds it to the container.
Vector4ListFieldaddVector4List (const char *name, const std::vector< Vector4 > &value)
 Creates an Vector4ListField field with name and given list value and adds it to the container.
size_t getNumFields () const
 Returns the number of added fields.
bool hasField (const std::string &name) const
 Returns true if the field with name name exists; otherwise, false is returned.
FieldgetField (const std::string &name) const
FieldgetField (MLint index) const
 Returns pointer of field at index if it exists. If not, -1 is returned.
MLint getFieldIndex (Field *field) const
 Returns index of field if it exists. If not, -1 is returned.
void setFieldStringValue (const std::string &name, const std::string &value)
std::string getFieldStringValue (const std::string &name) const
virtual void deactivateAttachments ()
Public Member Functions inherited from ml::Base
 Base ()
 Constructor.
virtual ~Base ()
 Destructor.
virtual BasedeepCopy () const
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
virtual bool isRefCountedBase () const
 Returns whether the instance is derived from RefCountedBase.
virtual std::string detailString () const
virtual bool implementsPersistence (PersistenceInterface) const
virtual std::string persistentState () const
 Returns a string describing the object's internal state.
virtual void setPersistentState (const std::string &state)
virtual void addStateToTree (TreeNode *) const
 Attaches the object state as children of the given parent node.
virtual void readStateFromTree (TreeNode *)
 Reads the object state from the children of the given parent node.
virtual void writeTo (AbstractPersistenceOutputStream *) const
virtual void readFrom (AbstractPersistenceInputStream *, int)

Protected Member Functions

Update or modification for the kernel.
virtual void _userKernelPreUpdate ()
virtual void _userKernelPostUpdate ()
Convenience routines to create kernel control and information fields.
virtual void _createKernelExtentFields (int numDim=6, const ImageVector &defaultExt=ImageVector(3, 3, 1, 1, 1, 1))
virtual void _validateKernelExtents ()
virtual void _createMakeSphericalField (bool defaultVal=false)
virtual void _createNormalizeField (bool defaultVal=false)
virtual void _createMinMaxCalcFields (bool defaultValue=false, bool createSetOutputMinMax=false)
virtual void _createMinMaxFields (MLdouble minVal=0, MLdouble maxVal=0, bool defaultValue=false)
virtual void _createExternalKernelFields (bool createUseToggle=false, bool defaultVal=false)
virtual void _createKernelOutputField ()
virtual void _createImageIntervalFields (MLdouble min=0, MLdouble max=1024, bool createToggle=false, bool useIt=false)
virtual void _createKernelIntervalFields (MLdouble min=0, MLdouble max=1024, bool createToggle=false, bool useIt=false)
virtual void _createKernelInfoField ()
virtual void _createNumKernelElementsField ()
virtual void _createKernelElementsSumField ()
Kernel and output field updates.
virtual void _updateKernel ()
virtual void _updateKernel (bool permitExtentChanges)
virtual void _updateKernelOutputField ()
virtual std::string _composeKernelInfo (bool valid=true) const
Interval testing and initialization.
void _setImageInterval (MLdouble minVal=-DBL_MAX, MLdouble maxVal=DBL_MAX)
void _setKernelInterval (MLdouble minVal=-DBL_MAX, MLdouble maxVal=DBL_MAX)
bool _isInImageInterval (MLdouble v) const
bool _isInKernelInterval (MLdouble v) const
Inherited and extended methods overloaded from \c KernelBaseModule.
void handleNotification (Field *field) override
void activateAttachments () override
void calculateOutputImageProperties (int outputIndex, PagedImage *outputImage) override
void calcOutSubImagePostProcessing (SubImage *outSubImg, int outIndex, SubImage *inSubImgs) override
Protected Member Functions inherited from ml::KernelBaseModule
 KernelBaseModule (int inputNum=1, int outputNum=1)
virtual void _setCorrectCorrelationMinMax (bool imageIntervalUsed=false, MLdouble intervalMin=0, MLdouble intervalMax=0, MLint inIdx=0, MLint outIdx=0)
virtual ImageVector _getCalculatedReferenceInputExt () const
virtual void _calcKernelPage (SubImage *outSubImg, int outIndex, SubImage *inSubImgs, int numInSubImgs, MLsoffset *indexTab, size_t indexTabSize, MLsoffset srcVoxelOffset, size_t loopIdx, size_t iteration, const ImageVector &ov1, const ImageVector &ov2, const ImageVector &pOf, size_t numVox)=0
 number of voxels in row to be processed.
SubImageBox calculateInputSubImageBox (int inIndex, const SubImageBox &outSubImgBox, int outIndex) override
virtual void calcInSubImagePreparation (int outIndex, SubImage *inSubImgs)
virtual SubImageBox calculateAreaToBeCalculated (const SubImageBox &areaToBeCalculated, const SubImageBox &outSubImageBox)
virtual ImageVector calculateOutInCoordShift (const ImageVector shift, const SubImageBox &outSubImageBox)
virtual SubImageBox calculateValidDestArea (const SubImageBox &validDestArea, const SubImageBox &outSubImageBox)
virtual void _connectToAllOutputs (Field *field)
Protected Member Functions inherited from ml::Module
void handleNotificationInternal (Field *field, FieldSensor::Strength strength) override
virtual void provideCustomPage (int, const SubImageBox &, MLMemoryBlockHandle &)
void handleNotificationOff ()
void handleNotificationOn ()
bool isHandleNotificationOn ()
 Returns true if handleNotification calls are permitted; otherwise, it returns false.
void setOutputImageInplace (MLint outputIndex=0, MLint inputIndex=0)
void unsetOutputImageInplace (MLint outputIndex=0)
void setBypass (MLint outputIndex=0, MLint inputIndex=0)
void setClampPagesToImageExtent (bool flag=true)
void setThreadSupport (THREAD_SUPPORT supportMode)
void permitRecursiveHandleNotifications (bool enable)
void setVoxelDataTypeSupport (PERMITTED_TYPES permTypes)

Field to normalize kernel after geometry changes.

BoolFieldgetNormalizeFld () const

Fields for kernel input and output connections. Created only on demand, NULL otherwise.

StringFieldgetExternalKernelFld () const
BoolFieldgetUseExternalKernelFld () const
StringFieldgetKernelOutputFld () const

Fields for an image interval. Created only on demand, NULL otherwise.

DoubleFieldgetImageIntervalMinFld () const
DoubleFieldgetImageIntervalMaxFld () const
BoolFieldgetUseImageIntervalFld () const

Field for a kernel interval. Created only on demand, NULL otherwise.

DoubleFieldgetKernelIntervalMinFld () const
DoubleFieldgetKernelIntervalMaxFld () const
BoolFieldgetUseKernelIntervalFld () const

Automatic min/max calculation for output image. Created only on demand, NULL otherwise.

BoolFieldgetAutoCalcMinMaxFld () const
NotifyFieldgetSetAutoMinMaxFld () const

Minimum/Maximum setting for output image.

DoubleFieldgetOutputMinFld () const
DoubleFieldgetOutputMaxFld () const
BoolFieldgetUseMinMaxFld () const

Additional Inherited Members

Public Types inherited from ml::KernelBaseModule
enum  InputImageRefExtent {
  Overlap = 0 , Input0_ExtWithoutFill , Input0_ExtWithFill , MaxExtentsWithoutFill ,
  MaxExtentsWithFill , NumImageRefExtents
}
Public Types inherited from ml::Module
enum  PERMITTED_TYPES { ONLY_SCALAR_TYPES , ONLY_DEFAULT_TYPES , ALL_REGISTERED_TYPES }
 See documentation of setVoxelDataTypeSupport. More...
enum  INPUT_STATE { DISCONNECTED = 0 , CONNECTED_BUT_INVALID = 1 , CONNECTED_AND_VALID = 2 , CONNECTED_BUT_NEEDS_UPDATE = 3 }
 See documentation of handleInput. More...
enum  INPUT_HANDLE { INVALIDATE = 0 , ALLOW_INVALID_INPUT = 2 }
 See documentation of handleInput. More...
Public Types inherited from ml::Base
enum  PersistenceInterface { PersistenceByString , PersistenceByTreeNode , PersistenceByStream }
 This enum describes the different persistence interfaces available. More...
Static Public Member Functions inherited from ml::Module
static MLErrorCode getTile (PagedImage *image, SubImageBox loc, MLDataType datatype, void **data, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
static MLErrorCode getTile (PagedImage *image, SubImage &subimg, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
static MLErrorCode updateImageProperties (PagedImage *image)
static void freeTile (void *data)
 For documentation see Host::freeTile().
static void updateProgress (const char *info1, const char *info2)
 For documentation see Host::updateProgress().
static bool shouldTerminate ()
 For documentation see Host::shouldTerminate().
static FieldgetPressedNotifyField ()
 For documentation see Host::getPressedNotifyField().
static void adaptPageExtent (ImageVector &pageExtent, MLDataType imageType, const ImageVector &newImgExtent, const ImageVector &oldImgExtent, const ImageVector &pageUnit=ImageVector(0), const ImageVector &minPageExtent=ImageVector(0), const ImageVector &maxPageExtent=ImageVector(0))
static std::string getVoxelValueAsString (PagedImage *image, const ImageVector &position, MLErrorCode *errorCode=nullptr, const std::string &errorResult="")
static size_t getNumModules ()
 Returns the number of instantiated modules.
static ModulegetModule (size_t index)
 Returns a pointer to instantiated module index.
static MLint findModuleIndex (Module &module)
 Returns the index of Module module. If not found, -1 is returned.
static void destroyModule ()
Protected Types inherited from ml::Module
enum  THREAD_SUPPORT { NO_THREAD_SUPPORT = PagedImage::NO_THREAD_SUPPORT , MULTITHREADED = PagedImage::MULTITHREADED , IO_THREAD = PagedImage::IO_THREAD }

Detailed Description

The typically used convenience class to apply a kernel to an image. Many convenience methods are available to configure the module with certain fields combinations so that derived modules don't need to implement most inputs for kernel extents, fill value, kernel input and output connectors, image and kernel intervals etc.

Definition at line 37 of file mlKernelModule.h.

Constructor & Destructor Documentation

◆ KernelModule()

ml::KernelModule::KernelModule ( int inputNum = 1,
int outputNum = 1 )

Constructor. Initializes the fields, the members and the field connections with the field container. Default configuration is with one input and one output if no arguments are passed.

Referenced by calcOutSubImagePostProcessing().

Member Function Documentation

◆ _composeKernelInfo()

virtual std::string ml::KernelModule::_composeKernelInfo ( bool valid = true) const
protectedvirtual

Create a string containing all important kernel information. If false is passed then an invalid message is added.

◆ _createExternalKernelFields()

virtual void ml::KernelModule::_createExternalKernelFields ( bool createUseToggle = false,
bool defaultVal = false )
protectedvirtual

Creates a kernel input field and an information field. The information field contains a message showing whether the kernel in the input is valid or not. If _createUseToggle is true then the field _useExternalKernelFld is created and initialized to defaultVal (false if not passed differently). The default value of the kernel input is an empty string, i.e. an undefined kernel. The information string field is set to "Invalid" The _useExternalKernelFld and _externalKernelFld are attached to field of output 0 so that changes will notify the output image immediately. handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createImageIntervalFields()

virtual void ml::KernelModule::_createImageIntervalFields ( MLdouble min = 0,
MLdouble max = 1024,
bool createToggle = false,
bool useIt = false )
protectedvirtual

Creates two limit fields to specify an interval and - if createToggle is passed as true - a toggle to enable/disable interval usage. The default values are 0 for the minimum and 1024 for the maximum field if not specified differently. The used field names will be "intervalMinOfFilteredVoxels", "intervalMaxOfFilteredVoxels" and "useIntervalOfFilteredVoxels", the member names _imageIntervalMin, _imageIntervalMax and _useImageInterval. The fields are attached to the field of output 0 so that changes will notify the output image immediately. This interval is usually used to select those voxels which are filtered voxel values not in the interval are bypassed unchanged. handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createKernelElementsSumField()

virtual void ml::KernelModule::_createKernelElementsSumField ( )
protectedvirtual

Creates an information field which will contain the sum of all kernel elements. The created field is only intended as a read-only field users. The field name will be "kernelElementsSum" and the field default results from the created default kernel. This field is especially useful to connect from when sum of kernel elements is needed elsewhere. handleNotification is not called on creation or initialization process.

◆ _createKernelExtentFields()

virtual void ml::KernelModule::_createKernelExtentFields ( int numDim = 6,
const ImageVector & defaultExt = ImageVector(3, 3, 1, 1, 1, 1) )
protectedvirtual

Creates the fields _kernelXFld, ... _kernelUFld and initializes them with the values 3,3,1,1,1,1 if not passed differently to defaultExt. If numDim is passed as a value < 6 then only numDim fields are created, e.g. _kernelXFld and _kernelYFld are created if numDim is 2. The field names will be "kernelX", ... , "kernelU", respectively. The fields are attached to the field of output 0 so that changes will notify the output image immediately. handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createKernelInfoField()

virtual void ml::KernelModule::_createKernelInfoField ( )
protectedvirtual

Creates an information field about the current kernel and its creation process. The default value is "Invalid". handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createKernelIntervalFields()

virtual void ml::KernelModule::_createKernelIntervalFields ( MLdouble min = 0,
MLdouble max = 1024,
bool createToggle = false,
bool useIt = false )
protectedvirtual

Creates two limit fields to specify an interval and - if createToggle is passed as true - a toggle to enable/disable interval usage. The default values are 0 for the minimum and 1024 for the maximum field if not specified differently. The used field names will be "intervalMinOfVoxelsForFiltering", "kernelIintervalMaxOfVoxelsForFiltering" and "useIntervalOfVoxelsForFiltering", the member names _kernelIntervalMinFld, _kernelIntervalMaxFld and _useKernelIntervalFld. The fields are attached to the field of output 0 so that changes will notify the output image immediately. These fields are used to specify a selection interval for the values of voxels under kernel elements to be used in a kernel operation. handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createKernelOutputField()

virtual void ml::KernelModule::_createKernelOutputField ( )
protectedvirtual

Creates a kernel output field. It will be set to the current kernel if _updateKernelOutputField() is called. The default value of the kernel input is an empty string, i.e. an undefined kernel. handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createMakeSphericalField()

virtual void ml::KernelModule::_createMakeSphericalField ( bool defaultVal = false)
protectedvirtual

Creates a bool field which enables/disables the usage of a connected kernel. Default value will be false(=off) if not passed differently as defaultVal. See also _makeSphericalFld. The field name will be "makeSpherical". The field is attached to the field of output 0 so that changes will notify the output image immediately. handleNotification is not called on creation or initialization process. To be called only once in the constructor, more calls will generate warnings.

◆ _createMinMaxCalcFields()

virtual void ml::KernelModule::_createMinMaxCalcFields ( bool defaultValue = false,
bool createSetOutputMinMax = false )
protectedvirtual

Creates a toggle field which enables the scan of calculated output pages for min/max values if enabled. This is useful since many kernel operations have unpredictable results - so the minimum and maximum values of the output image is difficult to foresee. The protected members _autoMin autoMax are updated and _autoMinMaxValid indicates whether these members are valid. The field name will be "autoCalcMinMax". The default value is false=off if not specified differently as defaultVal.

In combination with the fields _outputMinFld and _outputMaxFld it might be useful to have an assignment button to transfer _autoMin and _autoMax to them. Pass _createSetOutputMinMax as true. Then such a button is created with the name "setOutputMinMax". See also _createOutputMinMaxFields. The toggle field is attached to the field of output 0 so that changes will notify the output image immediately. The button will not be attached to the output image since the _outputMinFld and _outputMaxFld usually will be. To be called only once in the constructor, more calls will generate warnings.

◆ _createMinMaxFields()

virtual void ml::KernelModule::_createMinMaxFields ( MLdouble minVal = 0,
MLdouble maxVal = 0,
bool defaultValue = false )
protectedvirtual

Creates a minimum and a maximum field containing minimum/maximum values for the output image. This is useful since many kernel operations have unpredictable results - so the minimum and maximum values of the output image is difficult to foresee. The field names will be "outputMin" and "outputMax". The default values are 0 and 0 if not specified differently. See also _outputMinFld and _outputMaxFld. Also an enable/disable button is created which enables/disables the usage of those min/max fields. It field name will be "useMinMax". Its default value is false if not specified differently by defaultValue. All fields are attached to the field of output 0 so that changes will notify the output image immediately. To be called only once in the constructor, more calls will generate warnings.

◆ _createNormalizeField()

virtual void ml::KernelModule::_createNormalizeField ( bool defaultVal = false)
protectedvirtual

Creates a bool field which enables/disables the automatic normalization of the kernel after each change. Default value will be false(=off) if not passed differently as defaultVal. The field name will be "autoNormalize". See also _normalizeFld. handleNotification is not called on creation or initialization process. The field is attached to the field of output 0 so that changes will notify the output image immediately. To be called only once in the constructor, more calls will generate warnings.

◆ _createNumKernelElementsField()

virtual void ml::KernelModule::_createNumKernelElementsField ( )
protectedvirtual

Creates an information field which will contain the number of kernel elements. The created field is only intended as a read-only field users. The field name will be "numKernelElements" and the field default results from the created default kernel. This field is especially useful to connect from when the number of kernel elements is needed elsewhere. handleNotification is not called on creation or initialization process.

◆ _isInImageInterval()

bool ml::KernelModule::_isInImageInterval ( MLdouble v) const
protected

Test whether the value v is within image interval. Note that the interval is considered exclusively if maximum is smaller than minimum, i.e. all values between maximum and minimum are excluded and all others are included. Intervals where minVal == maxVal are considered as a normal interval.

◆ _isInKernelInterval()

bool ml::KernelModule::_isInKernelInterval ( MLdouble v) const
protected

Test whether the value v is within kernel interval. Note that the interval is considered exclusively if maximum is smaller than minimum, i.e. all values between maximum and minimum are excluded and all others are included. Intervals where minVal == maxVal are considered as a normal interval.

◆ _setImageInterval()

void ml::KernelModule::_setImageInterval ( MLdouble minVal = -DBL_MAX,
MLdouble maxVal = DBL_MAX )
protected

Update private test members for fast image interval testings. Filtering can be applied to a subset of voxels by setting a threshold interval which includes the convoluted voxels. If used then only voxels >= min and <=max are modified by filtering. Default is (-DBL_MAX, DBL_MAX).

◆ _setKernelInterval()

void ml::KernelModule::_setKernelInterval ( MLdouble minVal = -DBL_MAX,
MLdouble maxVal = DBL_MAX )
protected

Update private test members for fast kernel testings. When filtering an image then voxels covered by kernel elements outside a certain grey level interval can be excluded. If used then only voxels >= min and <=max are multiplied with kernel values. Otherwise these products are not added to the resulting output image voxel. Default is (-DBL_MAX, DBL_MAX).

◆ _updateKernel() [1/2]

virtual void ml::KernelModule::_updateKernel ( )
inlineprotectedvirtual

Convenience routine to call the typically used _updateKernel() functionality, e.g. at the end of constructors or in handleNotification(). Normally it is not intended to be overloaded.

Definition at line 437 of file mlKernelModule.h.

References _updateKernel().

Referenced by _updateKernel().

◆ _updateKernel() [2/2]

virtual void ml::KernelModule::_updateKernel ( bool permitExtentChanges)
protectedvirtual

This is the method to update the kernel, it should be called if the kernel requires an update, e.g. in handleNotification and dependent field updates shall take place. Normally it is not intended to be overloaded. The following operations are performed:

  • _userKernelPreUpdate() is called. So derived modules can apply kernel changes. This method is called by _updateKernel() to supply a method where the application can change the kernel BEFORE the kernel input is checked or kernel extents are set. See _updateKernel(permitExtentChanges) for more Infos.
  • Existing fields are evaluated:
    • If a kernel input is defined and enabled and permitExtentChanges is true then the kernel is set to the input state. If an invalid kernel is connected a 1x1x1x1x1x1 kernel is set. A not created _useExternalKernelFld is always considered as an enabled kernel input. On no kernel input or if it's disabled the current kernel is not modified.
    • If no kernel input is defined or if it's disabled and permitExtentChanges is true then a kernel is created from the specified kernel extents. If kernel extent fields are not defined then the kernel is left unchanged.
    • If the _makeSphericalFld is defined and enabled the kernel is made spherical. Otherwise the kernel is left unchanged.
    • If the _normalizeFld is defined and enabled the kernel is normalized. Otherwise the kernel is left unchanged.
  • The method _userKernelPostUpdate() is called. This method is called by _updateKernel() to supply a method where the application can change the kernel AFTER all automatic changes and BEFORE the output kernel fields, the _kernelInfoFld, the _numKernelElementsFld and the _kernelElementSumFld are updated.
  • The output and information fields are updated:
    • The kernel output is updated if it exists.
    • If the _kernelElementsSumFld is defined then it's updated. Otherwise it's left unchanged.
    • If the _numKernelElementsFld is defined then it's updated. Otherwise it's left unchanged.

◆ _updateKernelOutputField()

virtual void ml::KernelModule::_updateKernelOutputField ( )
protectedvirtual

Updates the kernel output to the value of the kernel if the _kernelOutputFld is defined.

◆ _userKernelPostUpdate()

virtual void ml::KernelModule::_userKernelPostUpdate ( )
inlineprotectedvirtual

Typical method to be overloaded by derived modules to apply kernel changes. This method is called by _updateKernel(permitExtentChanges) to supply a method where the application can change the kernel AFTER all automatic changes and BEFORE the output kernel fields, the _kernelInfoFld, the _numKernelElementsFld and the _kernelElementSumFld are updated. See _updateKernel(permitExtentChanges) for more Infos.

Reimplemented in ml::CloseGapFilter, ml::ConvolutionFilter, ml::ExtConvolutionFilter, ml::MorphologyFilter, and ml::SurroundFilter.

Definition at line 258 of file mlKernelModule.h.

◆ _userKernelPreUpdate()

virtual void ml::KernelModule::_userKernelPreUpdate ( )
inlineprotectedvirtual

Typical method to be overloaded by derived modules to apply kernel changes. This method is called by _updateKernel(permitExtentChanges) to supply a method where the application can change the kernel BEFORE the kernel input is checked or kernel extents are set. See updateKernel(permitExtentChanges) for more Infos.

Definition at line 248 of file mlKernelModule.h.

◆ _validateKernelExtents()

virtual void ml::KernelModule::_validateKernelExtents ( )
protectedvirtual

Checks all existing kernel extent fields and corrects all to values >= 0 if necessary.

◆ activateAttachments()

void ml::KernelModule::activateAttachments ( )
overrideprotectedvirtual

Called when field loading or module cloning has finished. It's necessary to update the kernel then to the current state of the fields.

Reimplemented from ml::FieldContainer.

Reimplemented in ml::RankFilter, and ml::SigmaFilter.

◆ calcOutSubImagePostProcessing()

void ml::KernelModule::calcOutSubImagePostProcessing ( SubImage * outSubImg,
int outIndex,
SubImage * inSubImgs )
overrideprotectedvirtual

Called to postProcess the output image outSubImg with the index outIndex from the input subimage inImg. It adds calculating of min/max values after filtering. Note that this method should be called in derived classes after page calculation which, however, is usually done automatically by the usage of CALC_ROW macros which filter all rows of a page by calling calcRow. For more information see KernelExample and mlKernelMacros.h. So "overloading by hand" is typically not recommended.

Reimplemented from ml::KernelBaseModule.

References KernelModule().

◆ calculateOutputImageProperties()

void ml::KernelModule::calculateOutputImageProperties ( int outputIndex,
PagedImage * outputImage )
overrideprotectedvirtual

Computes the output image properties for output outIndex. This includes adapted min/max values, data type adjustments etc. The world coordinates and the extents of the output image are corrected dependent on the border handling (already done in KernelBaseModule). At last always the data type is checked (and eventually corrected) whether it can manage the currently set minimum and maximum voxel values.

Reimplemented from ml::KernelBaseModule.

Reimplemented in ml::LocalMaximaFilter, ml::MorphologyFilter, ml::RankFilter, ml::RobertsFilter, ml::SigmaFilter, ml::Sobel3DFilter, ml::StdDeviationFilter, ml::SurroundFilter, and ml::ZeroCrossingsFilter.

◆ getAutoCalcMinMaxFld()

BoolField * ml::KernelModule::getAutoCalcMinMaxFld ( ) const
inline

A field enabling the automatic minimum/maximum value setting of the output image. This is useful since many kernel operations have unpredictable results - so the minimum and maximum values of the output image is difficult to foresee. After calculation of an image fraction the min/max range is updated since more image values are known. Note that an enabled _autoCalcMinMaxFld causes that calculated output pages are automatically scanned for their minimum and maximum values. The field name will be "autoCalcMinMax". See also _createAutoCalcMinMaxFields() which creates this field. Otherwise NULL is returned. The field default value is false(=off) if created.

Definition at line 200 of file mlKernelModule.h.

◆ getExternalKernelFld()

StringField * ml::KernelModule::getExternalKernelFld ( ) const
inline

Input connection field for kernels. The field name will be "externalKernel". See also _createExternalKernelFields() which creates this field. Otherwise NULL is returned. Field default is an empty and invalid content if created.

Definition at line 91 of file mlKernelModule.h.

◆ getImageIntervalMaxFld()

DoubleField * ml::KernelModule::getImageIntervalMaxFld ( ) const
inline

A field containing the maximum limit of an interval specifying the values of voxels to be filtered. The field name will be "intervalMaxOfFilteredVoxels". See also _createImageIntervalFields() which creates this field. Otherwise NULL is returned. Field default is 1024 if created.

Definition at line 149 of file mlKernelModule.h.

◆ getImageIntervalMinFld()

DoubleField * ml::KernelModule::getImageIntervalMinFld ( ) const
inline

A field containing the minimum limit of an interval specifying the values of voxels to be filtered. The field name will be "intervalMinOfFilteredVoxels". See also _createImageIntervalFields() which creates this field. Otherwise NULL is returned. Field default is 0 if created.

Definition at line 142 of file mlKernelModule.h.

◆ getKernelCFld()

IntField * ml::KernelModule::getKernelCFld ( ) const
inline

C extent of kernel. The field name will be "kernelC". Field default is 1 if created.

Definition at line 58 of file mlKernelModule.h.

◆ getKernelElementsSumFld()

DoubleField * ml::KernelModule::getKernelElementsSumFld ( ) const
inline

If created this methods returns the pointer to the field containing the sum of all kernel elements, otherwise NULL is returned. See also _createKernelElementsSumField() which creates this field. The field name will be "kernelElementsSum", and the field default results from the created default kernel. This field is especially useful to connect from when sum of kernel elements is needed elsewhere. Note that this field is only intended as a read-only field for users.

Definition at line 123 of file mlKernelModule.h.

◆ getKernelInfoFld()

StringField * ml::KernelModule::getKernelInfoFld ( ) const
inline

An information string showing the current validity of the kernel input string. See also _createKernelInfoField() which creates this field. Otherwise NULL is returned. Field default is "Invalid" if created.

Definition at line 113 of file mlKernelModule.h.

◆ getKernelIntervalMaxFld()

DoubleField * ml::KernelModule::getKernelIntervalMaxFld ( ) const
inline

A field containing the maximum limit of an interval specifying the values of voxels under kernel elements to be used in a kernel operation. The field name will be "intervalMaxOfVoxelsForFiltering". See also _createKernelIntervalFields() which creates this field. Otherwise NULL is returned. Field default is 1024.

Definition at line 175 of file mlKernelModule.h.

◆ getKernelIntervalMinFld()

DoubleField * ml::KernelModule::getKernelIntervalMinFld ( ) const
inline

A field containing the minimum limit of an interval specifying the values of voxels under kernel elements to be used in a kernel operation. The field name will be "intervalMinOfVoxelsForFiltering". See also _createKernelIntervalFields() which creates this field. Otherwise NULL is returned. Field default is 0.

Definition at line 168 of file mlKernelModule.h.

◆ getKernelOutputFld()

StringField * ml::KernelModule::getKernelOutputFld ( ) const
inline

A field containing the current kernel. So other modules can be connected to get the kernel. The field name will be "kernelOutput". See also _createKerneOutput() which creates this field. Otherwise NULL is returned. Field default is an empty and undefined kernel if created.

Definition at line 104 of file mlKernelModule.h.

◆ getKernelTFld()

IntField * ml::KernelModule::getKernelTFld ( ) const
inline

T extent of kernel. The field name will be "kernelT". Field default is 1 if created.

Definition at line 60 of file mlKernelModule.h.

◆ getKernelUFld()

IntField * ml::KernelModule::getKernelUFld ( ) const
inline

U extent of kernel. The field name will be "kernelU". Field default is 1 if created.

Definition at line 62 of file mlKernelModule.h.

◆ getKernelXFld()

IntField * ml::KernelModule::getKernelXFld ( ) const
inline

X extent of kernel. The field name will be "kernelX". Field default is 3 if created.

Definition at line 52 of file mlKernelModule.h.

◆ getKernelYFld()

IntField * ml::KernelModule::getKernelYFld ( ) const
inline

Y extent of kernel. The field name will be "kernelY". Field default is 3 if created.

Definition at line 54 of file mlKernelModule.h.

◆ getKernelZFld()

IntField * ml::KernelModule::getKernelZFld ( ) const
inline

Z extent of kernel. The field name will be "kernelZ". Field default is 1 if created.

Definition at line 56 of file mlKernelModule.h.

◆ getMakeSphericalFld()

BoolField * ml::KernelModule::getMakeSphericalFld ( ) const
inline

Controls whether kernel is circular or rectangular (in 6D). The field name will be "makeSpherical". See also _createMakeSphericalField() which creates this field. Otherwise NULL is returned. Field default is Off (=false) if created.

Definition at line 68 of file mlKernelModule.h.

◆ getNormalizeFld()

BoolField * ml::KernelModule::getNormalizeFld ( ) const
inline

Controls whether kernel is automatically normalized after each change. The field name will be "normalize". See also _createNormalizeField() which creates this field. Otherwise NULL is returned. Field default is Off (=false) if created.

Definition at line 79 of file mlKernelModule.h.

◆ getNumKernelElementsFld()

IntField * ml::KernelModule::getNumKernelElementsFld ( ) const
inline

If created this field contains the number of voxels in the kernel. See also _createNumKernelElementsField() which creates this field. Otherwise NULL is returned. The field name will be "numKernelElements", and the field default results from the created default kernel. Note that this field is only intended as a read-only field.

Definition at line 130 of file mlKernelModule.h.

◆ getOutputMaxFld()

DoubleField * ml::KernelModule::getOutputMaxFld ( ) const
inline

The maximum value used for the output image if _useAutoMinMax is on. See also _createMinMaxFields() which creates this field. Otherwise NULL is returned. The field name will be "outputMax", field default is 0 if created.

Definition at line 223 of file mlKernelModule.h.

◆ getOutputMinFld()

DoubleField * ml::KernelModule::getOutputMinFld ( ) const
inline

The minimum value used for the output image if _useAutoMinMax is on. See also _createMinMaxFields() which creates this field. Otherwise NULL is returned. The field name will be "outputMin", field default is 0 if created.

Definition at line 218 of file mlKernelModule.h.

◆ getSetAutoMinMaxFld()

NotifyField * ml::KernelModule::getSetAutoMinMaxFld ( ) const
inline

Field which assigns the current settings of automatically determined minimum/maximum values of already calculated pages to the output image. The field name will be "setAutoMinMax". See also _createAutoCalcMinMaxFields() which creates this field. Otherwise NULL is returned. Field default is off(=false) if created.

Definition at line 208 of file mlKernelModule.h.

◆ getUseExternalKernelFld()

BoolField * ml::KernelModule::getUseExternalKernelFld ( ) const
inline

A field enabling the usage of the _externalKernelFld if true. The field name will be "useExternalKernel". See also _createExternalKernel() which creates this field. Otherwise NULL is returned. Field default is off if created.

Definition at line 97 of file mlKernelModule.h.

◆ getUseImageIntervalFld()

BoolField * ml::KernelModule::getUseImageIntervalFld ( ) const
inline

A field enabling the usage of the _imageIntervalMinFld and _imageIntervalMaxFld if true. The field name will be "useIntervalOfFilteredVoxels". See also _createImageIntervalFields() which creates this field. Otherwise NULL is returned. Field default is off if created.

Definition at line 156 of file mlKernelModule.h.

◆ getUseKernelIntervalFld()

BoolField * ml::KernelModule::getUseKernelIntervalFld ( ) const
inline

A field enabling the usage of the _kernelIntervalMinFld and _kernelIntervalMaxFld if true. The field name will be "useIntervalOfVoxelsForFiltering". See also _createKernelIntervalFields() which creates this field. Otherwise NULL is returned. Field default is off if created.

Definition at line 182 of file mlKernelModule.h.

◆ getUseMinMaxFld()

BoolField * ml::KernelModule::getUseMinMaxFld ( ) const
inline

If enabled then contents of _outputMinFld and _outputMaxFld will be used as minimum and maximum values of the output image. See also _createMinMaxFields() which creates this field. Otherwise NULL is returned. The field name will be "useMinMax", field default is false if created.

Definition at line 229 of file mlKernelModule.h.

◆ handleNotification()

void ml::KernelModule::handleNotification ( Field * field)
overrideprotectedvirtual

Called when any parameter field is changed. field points to the field which has been changed and whose new state has to be handled.

Reimplemented from ml::Module.

Reimplemented in ml::MorphologyFilter, ml::RankFilter, ml::RobertsFilter, ml::SigmaFilter, ml::Sobel3DFilter, and ml::SurroundFilter.


The documentation for this class was generated from the following file: