MeVisLab Toolbox Reference
ml::BitMorphologyFilter Class Reference

The class to apply BitMorphology based kernel filters to images. More...

#include <mlBitMorphologyFilter.h>

Inheritance diagram for ml::BitMorphologyFilter:
ml::KernelModule ml::KernelBaseModule ml::Module ml::FieldContainer ml::Base

Public Types

enum  BitMorphologyFilterTypes { ID = 0 , BIT_DILATION , BIT_EROSION , NUM_BIT_MORPHOLOGY_FILTERS }
 The following BitMorphology based filters are available: More...
 
- Public Types inherited from ml::KernelBaseModule
enum  InputImageRefExtent {
  Overlap = 0 , Input0_ExtWithoutFill , Input0_ExtWithFill , MaxExtentsWithoutFill ,
  MaxExtentsWithFill , NumImageRefExtents
}
 Enumerator specifying the calculation mode for the extent of the reference extent of the input image. More...
 
- Public Types inherited from ml::Module
enum  PERMITTED_TYPES {
  ONLY_SCALAR_TYPES , ONLY_DEFAULT_TYPES , ALL_REGISTERED_TYPES , ONLY_STANDARD_TYPES = ONLY_SCALAR_TYPES ,
  FULLY_OPERATIONAL = ONLY_DEFAULT_TYPES , MINIMUM_OPERATIONAL = 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...
 

Public Member Functions

 BitMorphologyFilter ()
 Constructor. More...
 
EnumFieldgetBitMorphologyFilterFld () const
 Access method to the enum field managing the binary morphological filtering algorithm. More...
 
- Public Member Functions inherited from ml::KernelModule
 KernelModule (int inputNum=1, int outputNum=1)
 Constructor. More...
 
IntFieldgetKernelXFld () const
 X extent of kernel. The field name will be "kernelX". Field default is 3 if created. More...
 
IntFieldgetKernelYFld () const
 Y extent of kernel. The field name will be "kernelY". Field default is 3 if created. More...
 
IntFieldgetKernelZFld () const
 Z extent of kernel. The field name will be "kernelZ". Field default is 1 if created. More...
 
IntFieldgetKernelCFld () const
 C extent of kernel. The field name will be "kernelC". Field default is 1 if created. More...
 
IntFieldgetKernelTFld () const
 T extent of kernel. The field name will be "kernelT". Field default is 1 if created. More...
 
IntFieldgetKernelUFld () const
 U extent of kernel. The field name will be "kernelU". Field default is 1 if created. More...
 
BoolFieldgetMakeSphericalFld () const
 Controls whether kernel is circular or rectangular (in 6D). More...
 
StringFieldgetKernelInfoFld () const
 
DoubleFieldgetKernelElementsSumFld () const
 If created this methods returns the pointer to the field containing the sum of all kernel elements, otherwise NULL is returned. More...
 
IntFieldgetNumKernelElementsFld () const
 If created this field contains the number of voxels in the kernel. More...
 
BoolFieldgetNormalizeFld () const
 
StringFieldgetExternalKernelFld () const
 
BoolFieldgetUseExternalKernelFld () const
 A field enabling the usage of the _externalKernelFld if true. More...
 
StringFieldgetKernelOutputFld () const
 A field containing the current kernel. More...
 
DoubleFieldgetImageIntervalMinFld () const
 
DoubleFieldgetImageIntervalMaxFld () const
 A field containing the maximum limit of an interval specifying the values of voxels to be filtered. More...
 
BoolFieldgetUseImageIntervalFld () const
 A field enabling the usage of the _imageIntervalMinFld and _imageIntervalMaxFld if true. More...
 
DoubleFieldgetKernelIntervalMinFld () const
 
DoubleFieldgetKernelIntervalMaxFld () const
 A field containing the maximum limit of an interval specifying the values of voxels under kernel elements to be used in a kernel operation. More...
 
BoolFieldgetUseKernelIntervalFld () const
 A field enabling the usage of the _kernelIntervalMinFld and _kernelIntervalMaxFld if true. More...
 
BoolFieldgetAutoCalcMinMaxFld () const
 
NotifyFieldgetSetAutoMinMaxFld () const
 Field which assigns the current settings of automatically determined minimum/maximum values of already calculated pages to the output image. More...
 
DoubleFieldgetOutputMinFld () const
 
DoubleFieldgetOutputMaxFld () const
 The maximum value used for the output image if _useAutoMinMax is on. More...
 
BoolFieldgetUseMinMaxFld () const
 If enabled then contents of _outputMinFld and _outputMaxFld will be used as minimum and maximum values of the output image. More...
 
- Public Member Functions inherited from ml::KernelBaseModule
KernelgetKernel ()
 
const KernelgetConstKernel () const
 Method to access the kernel as constant object. See also getKernel(). More...
 
EnumFieldgetBorderHandlingFld () const
 
DoubleFieldgetFillValueFld () const
 The field value is value written in input or output image borders where a border handling requires filling with a fill value. More...
 
EnumFieldgetReferenceExtentModeFld () const
 Returns how the reference extent for input images is calculated; valid values are InputImageRefExtent (except of NumImageRefExtents) and default is Overlap. More...
 
- Public Member Functions inherited from ml::Module
MLMetaProfilePtrgetMetaProfile () const
 Returns the meta profile for the base operator. More...
 
const char * getTypeNameFast () const
 Macro to declare methods for the ML runtime type system (see mlRuntimeSubClass.h). More...
 
 Module (int numInputImages, int numOutputImages)
 Constructor: Initializes numInputImages input images and numOutputImages output images of the module. More...
 
 ~Module () override
 Destructor: Destroys this module. More...
 
InputConnectorFieldgetInputImageField (MLint i) const
 Returns the field representing input image i. i must be a valid index. More...
 
OutputConnectorFieldgetOutputImageField (MLint i=0) const
 Returns field representing output image i. i must be a valid index. More...
 
MLint getNumInputImages () const
 Returns number of input images of this module. More...
 
MLint getNumOutputImages () const
 Returns number of output images of this module. More...
 
PagedImagegetOutputImage (MLint outputIndex=0) const
 Returns output image outputIndex. The index needs to be in the range [0, getNumOutputImages()-1]. More...
 
InputConnectorFieldaddInputImage (const char *name=nullptr)
 Adds a new input image with name to the module. More...
 
OutputConnectorFieldaddOutputImage (const char *name=nullptr)
 Adds a new output image with name to the module. More...
 
PagedImagegetInputImage (MLint inputIndex, bool getReal=false) const
 Returns the output image of the module connected to input inputIndex. More...
 
PagedImagegetUpdatedInputImage (MLint inputIndex, bool getReal=false) const
 Convenience method for safe access to the input image at index inputIndex. More...
 
MLErrorCode processAllPages (int outputIndex=-1, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Processes all pages of a module for easy implementation of page-based image processing of complete images. More...
 
MLErrorCode processAllPages (ProcessAllPagesHandler &handler, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Process input images with a ProcessAllPagesHandler handler on a temporary output image (which allocates no data) For details, see processAllPages(-1) above. More...
 
MLErrorCode processMissingPages (int outputIndex=0, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Processes all missing pages on the given output image. More...
 
void clearOutputImage (MLint i=0)
 Clear cached output image pages of output image i. More...
 
InputConnectorFieldaddInputConnector (const char *name, Module *module, MLint i) override
 
OutputConnectorFieldaddOutputConnector (const char *name, Module *module, MLint i) override
 
MLint getOutputImageInplace (MLint outputIndex=0) const
 Return optimization flag: Return index of input image whose input tile is used also as output page for output outputIndex in calculateOutputSubImage() (instead of allocating its own memory). More...
 
MLint getBypass (MLint outputIndex=0) const
 Returns the currently bypass index or -1 if bypassing is disabled (default). More...
 
THREAD_SUPPORT getThreadSupport () const
 Returns the multithreading mode supported by this module, default is NO_THREAD_SUPPORT. More...
 
bool areRecursiveHandleNotificationsPermitted () const
 Returns if recursive entries in handleNotification are permitted. More...
 
MLint getHandleNotificationEntryCounter () const
 A counter returning the current number of (recursive re)entries in handleNotification. More...
 
PERMITTED_TYPES getVoxelDataTypeSupport () const
 Returns the current state of supported voxel data types. More...
 
bool isSupportedVoxelDataType (MLDataType dt) const
 Check if a given data type is supported on the module as configured with setVoxelDataTypeSupport. More...
 
virtual INPUT_HANDLE handleInput (int, INPUT_STATE) const
 This method may be reimplemented to enable support for invalid input images on the module. More...
 
INPUT_STATE getInputState (MLint index)
 Returns the current state of the input connection. More...
 
INPUT_STATE getUpdatedInputState (MLint index)
 Returns the updated state of the input image by calling updateImageProperties(index) and returning getInputState(index) afterwards. More...
 
bool isInputImageField (Field *field) const
 Returns if the given field is an input image field. This can be used in handleNotification(), to check if one of the input images has changed. More...
 
void touchOutputImageFields () const
 Touch all output image fields to indicate that the images have changed. More...
 
FieldContainergetFieldContainer ()
 Returns a pointer to the container of all the module's fields. More...
 
const FieldContainergetFieldContainer () const
 Returns a constant pointer to the container of all the module's fields. More...
 
virtual void beginSaveFields ()
 Called before all fields data contents of this modules are saved. More...
 
virtual void endSaveFields ()
 Called after saving all field contents of this module. More...
 
- Public Member Functions inherited from ml::FieldContainer
 FieldContainer ()
 Constructor. More...
 
 ~FieldContainer () override
 Destructor: Deletes all added fields. More...
 
std::string whoAmI (bool withInstanceName=true) const
 Returns type and instance name of format "ClassTypeName(instanceName)" if the instance name is not empty and withInstanceName is true. More...
 
FieldaddField (const char *name, const char *type, const char *value)
 Adds a new field with name name, type type and value value (coded as string) to the container. More...
 
FieldaddField (Field *field)
 Adds a field, the ownership of the field is passed to the FieldContainer. More...
 
BoolFieldaddBool (const char *name)
 Creates a BoolField with name and adds it to the container. Default value is false. More...
 
BoolFieldaddBool (const char *name, bool value)
 Creates a BoolField with name and adds it to the container. More...
 
IntFieldaddInt (const char *name)
 Creates an IntField with name and adds it to the container. Default value is 0. More...
 
IntFieldaddInt (const char *name, MLint value)
 Creates an IntField with name and adds it to the container. More...
 
EnumFieldaddEnum (const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems)
 Creates an EnumField field with name and adds it to the container. More...
 
EnumFieldaddEnum (const char *name, const std::vector< std::string > &enumerationItemNames)
 Creates an EnumField field with name and adds it to the container. More...
 
template<typename EnumType >
TypedEnumField< EnumType > * addEnum (const char *name, const EnumValues< EnumType > &values, EnumType initialValue)
 Creates a TypedEnumField field with name and adds it to the container. More...
 
FloatFieldaddFloat (const char *name)
 Creates a FloatField with name and adds it to the container. Default value is 0.f. More...
 
FloatFieldaddFloat (const char *name, float value)
 Creates a FloatField with name and adds it to the container. More...
 
ProgressFieldaddProgress (const char *name)
 Creates a float ProgressField with name and adds it to the container. Default value is 0.f. More...
 
ProgressFieldaddProgress (const char *name, float value)
 Creates a float ProgressField with name and adds it to the container. More...
 
DoubleFieldaddDouble (const char *name)
 Creates a DoubleField with name and adds it to the container. Default value is 0. More...
 
DoubleFieldaddDouble (const char *name, double value)
 Creates a DoubleField with name and adds it to the container. More...
 
StringFieldaddString (const char *name)
 Creates a StringField with name and adds it to the container. Default value is empty string. More...
 
StringFieldaddString (const char *name, const std::string &value)
 Creates a StringField with name and adds it to the container. More...
 
NotifyFieldaddNotify (const char *name)
 Creates a NotifyField field with name and adds it to the container. More...
 
TriggerFieldaddTrigger (const char *name)
 Creates a TriggerField field with name and adds it to the container. More...
 
BaseFieldaddBase (const char *name)
 Creates a Base field with name and adds it to the container. Default value is NULL. More...
 
BaseFieldaddBase (const char *name, Base *value)
 Creates a Base field with name and adds it to the container. More...
 
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. More...
 
template<typename T >
BaseFieldaddBaseWithAllowedType (const char *name, T *value=nullptr)
 As above, but also sets the allowed type of the field. More...
 
template<typename T >
BaseFieldaddBaseWithAllowedType (const char *name, const ::boost::intrusive_ptr< T > &value)
 As above, but also sets the allowed type of the field. More...
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name)
 Creates a TypedBaseField with name and adds it to the container. Default value is NULL. More...
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name, T *value)
 Creates a TypedBaseField with name and adds it to the container. More...
 
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. More...
 
SoNodeFieldaddSoNode (const char *name)
 Creates a SoNodeField with name and adds it to the container. Default value is NULL. More...
 
SoNodeFieldaddSoNode (const char *name, SoNode *value)
 Creates a SoNodeField with name and adds it to the container. More...
 
PointerFieldaddPointer (const char *name)
 Creates a PointerField with name and adds it to the container. More...
 
Vector2FieldaddVector2 (const char *name)
 Creates a Vector2Field with name and adds it to the container. More...
 
Vector2FieldaddVector2 (const char *name, const Vector2 &value)
 Creates a Vector2Field with name and adds it to the container. More...
 
Vector2FieldaddVector2 (const char *name, double x, double y)
 Creates a Vector2Field with name and adds it to the container. More...
 
Vector3FieldaddVector3 (const char *name)
 Creates a Vector3Field with name and adds it to the container. More...
 
Vector3FieldaddVector3 (const char *name, const Vector3 &value)
 Creates a Vector3Field with name and adds it to the container. More...
 
Vector3FieldaddVector3 (const char *name, double x, double y, double z)
 Creates a Vector3Field with name and adds it to the container. More...
 
Vector4FieldaddVector4 (const char *name)
 Creates a Vector4Field with name and adds it to the container. More...
 
Vector4FieldaddVector4 (const char *name, const Vector4 &value)
 Creates a Vector4Field with name and adds it to the container. More...
 
Vector4FieldaddVector4 (const char *name, double x, double y, double z, double w)
 Creates a Vector4Field with name and adds it to the container. More...
 
Vector5FieldaddVector5 (const char *name)
 Creates a Vector5Field with name and adds it to the container. More...
 
Vector5FieldaddVector5 (const char *name, const Vector5 &value)
 Creates a Vector5Field with name and adds it to the container. More...
 
Vector6FieldaddVector6 (const char *name)
 Creates a Vector6Field with name and adds it to the container. More...
 
Vector6FieldaddVector6 (const char *name, const Vector6 &value)
 Creates a Vector6Field with name and adds it to the container. More...
 
Vector10FieldaddVector10 (const char *name)
 Creates a Vector10Field with name and adds it to the container. More...
 
Vector10FieldaddVector10 (const char *name, const Vector10 &value)
 Creates a Vector10Field with name and adds it to the container. More...
 
ImageVectorFieldaddImageVector (const char *name)
 Creates a ImageVectorField with name and adds it to the container. More...
 
ImageVectorFieldaddImageVector (const char *name, const ImageVector &value)
 Creates a ImageVectorField with name and adds it to the container. More...
 
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. More...
 
SubImageBoxFieldaddSubImageBox (const char *name)
 Creates a SubImageBoxField with name and adds it to the container. More...
 
SubImageBoxFieldaddSubImageBox (const char *name, const SubImageBox &value)
 Creates a SubImageBoxField with name and adds it to the container. More...
 
SubImageBoxdFieldaddSubImageBoxd (const char *name)
 Creates a SubImageBoxd field with name and adds it to the container. More...
 
SubImageBoxdFieldaddSubImageBoxd (const char *name, const SubImageBoxd &value)
 Creates a SubImageBoxd field with name and adds it to the container. More...
 
ColorFieldaddColor (const char *name)
 Creates a ColorField with name and adds it to the container. More...
 
ColorFieldaddColor (const char *name, float r, float g, float b)
 Creates a ColorField with name and adds it to the container. More...
 
ColorFieldaddColor (const char *name, const Vector3 &value)
 Creates a ColorField with name and adds it to the container. More...
 
PlaneFieldaddPlane (const char *name)
 Creates a PlaneField with name and adds it to the container. More...
 
PlaneFieldaddPlane (const char *name, double f0, double f1, double f2, double f3)
 Creates a PlaneField with name and adds it to the container. More...
 
PlaneFieldaddPlane (const char *name, const Plane &value)
 Creates a PlaneField with name and adds it to the container. More...
 
RotationFieldaddRotation (const char *name)
 Creates a RotationField with name and adds it to the container. More...
 
RotationFieldaddRotation (const char *name, const Rotation &value)
 Creates a RotationField with name and adds it to the container. More...
 
Matrix2FieldaddMatrix2 (const char *name)
 Creates a Matrix2Field with name and adds it to the container. More...
 
Matrix2FieldaddMatrix2 (const char *name, const Matrix2 &value)
 Creates a Matrix2Field with name and adds it to the container. More...
 
Matrix3FieldaddMatrix3 (const char *name)
 Creates a Matrix3Field with name and adds it to the container. More...
 
Matrix3FieldaddMatrix3 (const char *name, const Matrix3 &value)
 Creates a Matrix3Field with name and adds it to the container. More...
 
Matrix4FieldaddMatrix4 (const char *name)
 Creates a Matrix4Field with name and adds it to the container. More...
 
Matrix4FieldaddMatrix4 (const char *name, const Matrix4 &value)
 Creates a Matrix4Field with name and adds it to the container. More...
 
Matrix5FieldaddMatrix5 (const char *name)
 Creates a Matrix5Field with name and adds it to the container. More...
 
Matrix5FieldaddMatrix5 (const char *name, const Matrix5 &value)
 Creates a Matrix5Field with name and adds it to the container. More...
 
Matrix6FieldaddMatrix6 (const char *name)
 Creates a Matrix6Field with name and adds it to the container. More...
 
Matrix6FieldaddMatrix6 (const char *name, const Matrix6 &value)
 Creates a Matrix6Field with name and adds it to the container. More...
 
MatrixFieldaddMatrix (const char *name)
 Creates a MatrixField with name and adds it to the container. More...
 
MatrixFieldaddMatrix (const char *name, const Matrix4 &value)
 Creates a MatrixField with name and adds it to the container. More...
 
MLDataTypeFieldaddMLDataType (const char *name)
 Creates a MTDataTypeField with name and adds it to the container. More...
 
MLDataTypeFieldaddMLDataType (const char *name, MLDataType value)
 Creates a MTDataTypeField with name and adds it to the container. More...
 
UniversalTypeFieldaddUniversalType (const char *name)
 Creates an UniversalTypeField field with name and adds it to the container. More...
 
IntListFieldaddIntList (const char *name)
 Creates an IntListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
DoubleListFieldaddDoubleList (const char *name)
 Creates an DoubleListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
Vector2ListFieldaddVector2List (const char *name)
 Creates an Vector2ListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
Vector3ListFieldaddVector3List (const char *name)
 Creates an Vector3ListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
Vector4ListFieldaddVector4List (const char *name)
 Creates an Vector4ListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
size_t getNumFields () const
 Returns the number of added fields. More...
 
bool hasField (const std::string &name) const
 Returns true if the field with name name exists; otherwise false is returned. More...
 
FieldgetField (const std::string &name) const
 Returns the pointer to the field with name name. More...
 
FieldgetField (MLint index) const
 Returns pointer of field at index if it exists. If not, -1 is returned. More...
 
MLint getFieldIndex (Field *field) const
 Returns index of field if it exists. If not, -1 is returned. More...
 
void setFieldStringValue (const std::string &name, const std::string &value)
 Sets the value of the field with name if it exists. More...
 
std::string getFieldStringValue (const std::string &name) const
 Returns the string value of the field with name if it is found. More...
 
virtual void deactivateAttachments ()
 Disables notification handling, i.e., all fields of this module will not send notifications to attached sensors and fields any more if their values are set or changed. More...
 
- Public Member Functions inherited from ml::Base
 Base ()
 Constructor. More...
 
virtual ~Base ()
 Destructor. More...
 
virtual BasedeepCopy () const
 Set addStateToTree version number that can be accessed via getAddStateVersion() More...
 
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
 Check if this object's type is equal to or derived from one of the types given in the argument. More...
 
virtual bool isRefCountedBase () const
 Returns if the instance is derived from RefCountedBase. More...
 
virtual std::string detailString () const
 Return a string describing this object. More...
 
virtual bool implementsPersistence (PersistenceInterface) const
 Override this method to declare which persistence interfaces are implemented by your derived class. More...
 
virtual std::string persistentState () const
 Returns a string describing the object's internal state. More...
 
virtual void setPersistentState (const std::string &state)
 Restores the object's internal state from a string that had been previously generated using persistentState(). More...
 
virtual void addStateToTree (TreeNode *) const
 Attaches the object state as children of the given parent node. More...
 
virtual void readStateFromTree (TreeNode *)
 Reads the object state from the children of the given parent node. More...
 
virtual void writeTo (AbstractPersistenceOutputStream *) const
 Write the objects state to the data stream object. More...
 
virtual void readFrom (AbstractPersistenceInputStream *, int)
 Read the objects state from the data stream object. More...
 

Static Public Attributes

static const char *const BitMorphologyFilterNames [NUM_BIT_MORPHOLOGY_FILTERS]
 Strings names for BitMorphology based filters. More...
 

Protected Member Functions

void handleNotification (Field *field) override
 Called when a parameter field is changed. More...
 
void calculateOutputImageProperties (int outputIndex, PagedImage *outputImage) override
 Computes the output image properties (e.g. More...
 
 CALC_ROW_H ()
 Macro which needs to be added to the implementation of a class derived from KernelModule or KernelBaseModule. More...
 
template<typename DATATYPE >
void calcRow (MLsoffset *indexTab, size_t indexTabSize, MLsoffset srcVoxelOffset, size_t numVox, DATATYPE *inCursor, DATATYPE *outCursor, const ImageVector &)
 In this template method the filtering of one row needs to be implemented. More...
 
- Protected Member Functions inherited from ml::KernelModule
virtual void _userKernelPreUpdate ()
 Typical method to be overloaded by derived modules to apply kernel changes. More...
 
virtual void _userKernelPostUpdate ()
 Typical method to be overloaded by derived modules to apply kernel changes. More...
 
virtual void _createKernelExtentFields (int numDim=6, const ImageVector &defaultExt=ImageVector(3, 3, 1, 1, 1, 1))
 Creates the fields _kernelXFld, ... More...
 
virtual void _validateKernelExtents ()
 Checks all existing kernel extent fields and corrects all to values >= 0 if necessary. More...
 
virtual void _createMakeSphericalField (bool defaultVal=false)
 Creates a bool field which enables/disables the usage of a connected kernel. More...
 
virtual void _createNormalizeField (bool defaultVal=false)
 Creates a bool field which enables/disables the automatic normalization of the kernel after each change. More...
 
virtual void _createMinMaxCalcFields (bool defaultValue=false, bool createSetOutputMinMax=false)
 Creates a toggle field which enables the scan of calculated output pages for min/max values if enabled. More...
 
virtual void _createMinMaxFields (MLdouble minVal=0, MLdouble maxVal=0, bool defaultValue=false)
 Creates a minimum and a maximum field containing minimum/maximum values for the output image. More...
 
virtual void _createExternalKernelFields (bool createUseToggle=false, bool defaultVal=false)
 Creates a kernel input field and an information field. More...
 
virtual void _createKernelOutputField ()
 Creates a kernel output field. More...
 
virtual void _createImageIntervalFields (MLdouble min=0, MLdouble max=1024, bool createToggle=false, bool useIt=false)
 Creates two limit fields to specify an interval and - if createToggle is passed as true - a toggle to enable/disable interval usage. More...
 
virtual void _createKernelIntervalFields (MLdouble min=0, MLdouble max=1024, bool createToggle=false, bool useIt=false)
 Creates two limit fields to specify an interval and - if createToggle is passed as true - a toggle to enable/disable interval usage. More...
 
virtual void _createKernelInfoField ()
 Creates an information field about the current kernel and its creation process. More...
 
virtual void _createNumKernelElementsField ()
 Creates an information field which will contain the number of kernel elements. More...
 
virtual void _createKernelElementsSumField ()
 Creates an information field which will contain the sum of all kernel elements. More...
 
virtual void _updateKernel ()
 Convenience routine to call the typically used _updateKernel() functionality, e.g. More...
 
virtual void _updateKernel (bool permitExtentChanges)
 This is the method to update the kernel, it should be called if the kernel requires an update, e.g. More...
 
virtual void _updateKernelOutputField ()
 Updates the kernel output to the value of the kernel if the _kernelOutputFld is defined. More...
 
virtual std::string _composeKernelInfo (bool valid=true) const
 Create a string containing all important kernel information. More...
 
void _setImageInterval (MLdouble minVal=-DBL_MAX, MLdouble maxVal=DBL_MAX)
 Update private test members for fast image interval testings. More...
 
void _setKernelInterval (MLdouble minVal=-DBL_MAX, MLdouble maxVal=DBL_MAX)
 Update private test members for fast kernel testings. More...
 
bool _isInImageInterval (MLdouble v) const
 Test whether the value v is within image interval. More...
 
bool _isInKernelInterval (MLdouble v) const
 Test whether the value v is within kernel interval. More...
 
void handleNotification (Field *field) override
 Called when any parameter field is changed. More...
 
void activateAttachments () override
 Called when field loading or module cloning has finished. More...
 
void calculateOutputImageProperties (int outputIndex, PagedImage *outputImage) override
 Computes the output image properties for output outIndex. More...
 
void calcOutSubImagePostProcessing (SubImage *outSubImg, int outIndex, SubImage *inSubImgs) override
 Called to postProcess the output image outSubImg with the index outIndex from the input subimage inImg. More...
 
- Protected Member Functions inherited from ml::KernelBaseModule
 KernelBaseModule (int inputNum=1, int outputNum=1)
 Constructor. More...
 
virtual void _setCorrectCorrelationMinMax (bool imageIntervalUsed=false, MLdouble intervalMin=0, MLdouble intervalMax=0, MLint inIdx=0, MLint outIdx=0)
 This method calculates and sets the possible min/max values for output image outIdx if a correlation or convolution filtering is assumed on input inIdx. More...
 
virtual ImageVector _getCalculatedReferenceInputExt () const
 Return the reference extent of input image dependent on the current value of _referenceExtentFld. More...
 
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
 This method is not intended to be overloaded directly, because it is subject to change. More...
 
SubImageBox calculateInputSubImageBox (int inIndex, const SubImageBox &outSubImgBox, int outIndex) override
 Calculates the region of the input image needed for the calculation of the output image region defined by outSubImg and output index outIndex. More...
 
virtual void calcInSubImagePreparation (int outIndex, SubImage *inSubImgs)
 Does some preprocessing on input subimages if we have more than one. More...
 
virtual SubImageBox calculateAreaToBeCalculated (const SubImageBox &areaToBeCalculated, const SubImageBox &outSubImageBox)
 Function called after the Kernel Framework calculated which box needs to be calculated for the current outImage. More...
 
virtual ImageVector calculateOutInCoordShift (const ImageVector shift, const SubImageBox &outSubImageBox)
 Function called after the Kernel Framework calculated the shift vector between input and output. More...
 
virtual SubImageBox calculateValidDestArea (const SubImageBox &validDestArea, const SubImageBox &outSubImageBox)
 Function called after the Kernel Framework calculated the valid area in the global destination image. More...
 
virtual void _connectToAllOutputs (Field *field)
 Helper function to connect a field field to all output fields. More...
 
- Protected Member Functions inherited from ml::Module
void handleNotificationInternal (Field *field, FieldSensor::Strength strength) override
 Called from FieldContainer whenever a field changes. More...
 
virtual void provideCustomPage (int, const SubImageBox &, MLMemoryBlockHandle &)
 This method allows a Module to provide its own pages to the Host for the outputIndex output image. More...
 
void handleNotificationOff ()
 Decreases lock counter for handleNotification calls. More...
 
void handleNotificationOn ()
 Increases lock counter for handleNotification calls. More...
 
bool isHandleNotificationOn ()
 Returns true if handleNotification calls are permitted, otherwise false. More...
 
void setOutputImageInplace (MLint outputIndex=0, MLint inputIndex=0)
 Set optimization flag: If calculating a page in calculateOutputSubImage(), the output image page of output outputIndex shall use the same memory as the input page of input inputIndex. More...
 
void unsetOutputImageInplace (MLint outputIndex=0)
 Clear optimization flag: output page of output at outputIndex and input tile shall use different memory buffers in calculateOutputSubImage(). More...
 
void setBypass (MLint outputIndex=0, MLint inputIndex=0)
 Sets the input image whose pages can also be used instead of output pages for the output image at outputIndex to avoid recalculations. More...
 
void setClampPagesToImageExtent (bool flag=true)
 Enables/disables page clamping on all output images. More...
 
void setThreadSupport (THREAD_SUPPORT supportMode)
 Pass any THREAD_SUPPORT supportMode to decide whether and what type of multithreading is supported by this module. More...
 
void permitRecursiveHandleNotifications (bool enable)
 If this flag is set to enable =true, recursive entries in handleNotification are permitted. More...
 
void setVoxelDataTypeSupport (PERMITTED_TYPES permTypes)
 Specifies which types this module supports. More...
 
virtual void calculateOutputSubImage (SubImage *outputSubImage, int outputIndex, SubImage *inputSubImages)
 Calculate page outputSubImage of output image with index outputIndex given the input image tiles in array inputSubImages. More...
 
- Protected Member Functions inherited from ml::Base
virtual char * getPersistentState () const
 Returns a C string describing the object's internal state. More...
 
virtual void setPersistentState (const char *)
 Restores the object's internal state from a string that had been previously generated using getPersistentState(). More...
 
virtual void clearPersistentState (char *) const
 Disposes a string previously allocated by getPersistentState(). More...
 

Additional Inherited Members

- 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)
 For documentation see Host::getTile() function with same signature. More...
 
static MLErrorCode getTile (PagedImage *image, SubImage &subimg, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 For documentation see Host::getTile() function with same signature and Module passed as reference. More...
 
static MLErrorCode updateImageProperties (PagedImage *image)
 For documentation see Host::updateImageProperties() function with same signature. More...
 
static void freeTile (void *data)
 For documentation see Host::freeTile(). More...
 
static void updateProgress (const char *info1, const char *info2)
 For documentation see Host::updateProgress(). More...
 
static bool shouldTerminate ()
 For documentation see Host::shouldTerminate(). More...
 
static FieldgetPressedNotifyField ()
 For documentation see Host::getPressedNotifyField(). More...
 
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))
 Adapt page size. More...
 
static std::string getVoxelValueAsString (PagedImage *image, const ImageVector &position, MLErrorCode *errorCode=nullptr, const std::string &errorResult="")
 Returns the voxel value at position position of the image image. More...
 
static size_t getNumModules ()
 Returns number of instantiated modules. More...
 
static ModulegetModule (size_t index)
 Returns pointer to instantiated module index. More...
 
static MLint findModuleIndex (Module &module)
 Returns index of Module module. If not found -1 is returned. More...
 
static void destroyModule ()
 Destroys static allocated tables to avoid memory leaks. More...
 
- Protected Types inherited from ml::Module
enum  THREAD_SUPPORT {
  NO_THREAD_SUPPORT = PagedImage::NO_THREAD_SUPPORT , MULTITHREADED = PagedImage::MULTITHREADED , IO_THREAD = PagedImage::IO_THREAD , ML_CALCULATEOUTPUTSUBIMAGE_ON_STD_TYPES = PagedImage::MULTITHREADED ,
  ML_CALCULATEOUTPUTSUBIMAGE_ON_ALL_TYPES = PagedImage::MULTITHREADED
}
 Enumerator deciding whether and which type of multithreading is supported by this module. More...
 

Detailed Description

The class to apply BitMorphology based kernel filters to images.

This class implements some morphology filtering on binary image planes. It can operate only on integer images; if another image data type is connected then it will automatically be casted to an integer type if an integer type with sufficient min/max range can be found. If not then the output image will be invalidated.

For related code and more information see mlKernelExample.h, mlKernel.h, mlKernelBaseModule.h, mlKernelModule.h, mlKernelEditor.h, mlRankFilter.h, mlExtConvolutionFilter.h and mlConvolutionFilter.h.

Definition at line 38 of file mlBitMorphologyFilter.h.

Member Enumeration Documentation

◆ BitMorphologyFilterTypes

The following BitMorphology based filters are available:

  • ID
    Applies border handling with selected border handling modes but simply copies image to output in defined ares. Useful to compare filter results with input original data where only the filtered area changes.
  • BIT_DILATION
    A binary dilation is applied parallelly to all bit planes.
  • BIT_EROSION
    A binary erosion is applied parallelly to all bit planes.
Enumerator
ID 
BIT_DILATION 
BIT_EROSION 
NUM_BIT_MORPHOLOGY_FILTERS 

Definition at line 57 of file mlBitMorphologyFilter.h.

Constructor & Destructor Documentation

◆ BitMorphologyFilter()

ml::BitMorphologyFilter::BitMorphologyFilter ( )

Constructor.

Initializes the fields, the members and the field connections with the image output.

Note that with the following method calls an additional field interface is created as described in KernelModule and KernelBaseModule:

Also available are the fields access methods from KernelBaseModule:

Member Function Documentation

◆ CALC_ROW_H()

ml::BitMorphologyFilter::CALC_ROW_H ( )
protected

Macro which needs to be added to the implementation of a class derived from KernelModule or KernelBaseModule.

It guarantees that the correct template functions are called for images with any data type. It also overloads calculateOutputSubImage() of the base class Module. Note that CALC_ROW_CPP() also needs to be added to the .cpp file.

◆ calcRow()

template<typename DATATYPE >
void ml::BitMorphologyFilter::calcRow ( MLsoffset indexTab,
size_t  indexTabSize,
MLsoffset  srcVoxelOffset,
size_t  numVox,
DATATYPE *  inCursor,
DATATYPE *  outCursor,
const ImageVector  
)
protected

In this template method the filtering of one row needs to be implemented.

It will be called by the CALC_ROW_H() / CALC_ROW_CPP() macro. For parameter documentation see class KernelModule, mlKernelMacros.h and especially the documentation of mlKernelExample.h.

◆ calculateOutputImageProperties()

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

Computes the output image properties (e.g.

the extents) for output outIndex. The bit morphology operations are only sensible on integer images; if another image data type is connected then it will automatically be casted to an integer type if an integer type with sufficient min/max range can be found. If not then the output image will be invalidated.

Reimplemented from ml::Module.

◆ getBitMorphologyFilterFld()

EnumField* ml::BitMorphologyFilter::getBitMorphologyFilterFld ( ) const
inline

Access method to the enum field managing the binary morphological filtering algorithm.

Permitted field values are all enums from BitMorphologyFilterTypes without NUM_BIT_MORPHOLOGY_FILTERS. Default is BIT_DILATION.

Definition at line 91 of file mlBitMorphologyFilter.h.

◆ handleNotification()

void ml::BitMorphologyFilter::handleNotification ( Field field)
overrideprotectedvirtual

Called when a parameter field is changed.

Reimplemented from ml::Module.

Member Data Documentation

◆ BitMorphologyFilterNames

const char* const ml::BitMorphologyFilter::BitMorphologyFilterNames[NUM_BIT_MORPHOLOGY_FILTERS]
static

Strings names for BitMorphology based filters.

Definition at line 66 of file mlBitMorphologyFilter.h.


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