|
MeVisLab Toolbox Reference
|
Example to demonstrate the development of an ML module with an output image based on AlgorithmModule. More...
#include <mlAlgorithmModuleExampleWithOutputImage.h>
Public Member Functions | |
| AlgorithmModuleExampleWithOutputImage () | |
| ~AlgorithmModuleExampleWithOutputImage () override final | |
| CalculateOutputImageHandler * | createCalculateOutputImageHandler (PagedImage *outputImage) override final |
| Public Member Functions inherited from ml::AlgorithmModule | |
| AlgorithmModule (int numInputImages, int numOutputImages) | |
| Forwards given parameters to base class constructor. | |
| ~AlgorithmModule () override | |
| void | handleNotification (Field *field) override |
| Never overwrite this method in derivative! | |
| void | activateAttachments () override |
| Never overwrite this method in derivative! | |
| void | calculateOutputImageProperties (int outputIndex, PagedImage *outputImage) override |
| Never overwrite this method in derivative! | |
| Public Member Functions inherited from ml::Module | |
| MLMetaProfilePtr & | getMetaProfile () const |
| Returns the metaprofile for the base operator. | |
| const char * | getTypeNameFast () const |
| Module (int numInputImages, int numOutputImages) | |
| ~Module () override | |
| InputConnectorField * | getInputImageField (MLint i) const |
Returns the field representing input image i. i must be a valid index. | |
| OutputConnectorField * | getOutputImageField (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. | |
| PagedImage * | getOutputImage (MLint outputIndex=0) const |
Returns the output image outputIndex. The index needs to be in the range [0, getNumOutputImages()-1]. | |
| InputConnectorField * | addInputImage (const char *name=nullptr) |
| OutputConnectorField * | addOutputImage (const char *name=nullptr) |
| PagedImage * | getInputImage (MLint inputIndex, bool getReal=false) const |
| PagedImage * | getUpdatedInputImage (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 |
| Field * | addField (const char *name, const char *type, const char *value) |
| Field * | addField (Field *field) |
Adds a field, the ownership of the field is passed to the FieldContainer. | |
| BoolField * | addBool (const char *name) |
Creates a BoolField with name and adds it to the container. Default value is false. | |
| BoolField * | addBool (const char *name, bool value) |
Creates a BoolField with name and adds it to the container. | |
| IntField * | addInt (const char *name) |
Creates an IntField with name and adds it to the container. Default value is 0. | |
| IntField * | addInt (const char *name, MLint value) |
Creates an IntField with name and adds it to the container. | |
| EnumField * | addEnum (const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems) |
| EnumField * | addEnum (const char *name, const std::vector< std::string > &enumerationItemNames) |
| template<typename EnumType> | |
| TypedEnumField< EnumType > * | addEnum (const char *name, const EnumValues< EnumType > &values, EnumType initialValue) |
| FloatField * | addFloat (const char *name) |
Creates a FloatField with name and adds it to the container. Default value is 0.f. | |
| FloatField * | addFloat (const char *name, float value) |
Creates a FloatField with name and adds it to the container. | |
| ProgressField * | addProgress (const char *name) |
Creates a float ProgressField with name and adds it to the container. Default value is 0.f. | |
| ProgressField * | addProgress (const char *name, float value) |
Creates a float ProgressField with name and adds it to the container. | |
| DoubleField * | addDouble (const char *name) |
Creates a DoubleField with name and adds it to the container. Default value is 0. | |
| DoubleField * | addDouble (const char *name, double value) |
Creates a DoubleField with name and adds it to the container. | |
| StringField * | addString (const char *name) |
Creates a StringField with name and adds it to the container. Default value is empty string. | |
| StringField * | addString (const char *name, const std::string &value) |
Creates a StringField with name and adds it to the container. | |
| NotifyField * | addNotify (const char *name) |
Creates a NotifyField field with name and adds it to the container. | |
| TriggerField * | addTrigger (const char *name) |
| BaseField * | addBase (const char *name) |
Creates a Base field with name and adds it to the container. Default value is NULL. | |
| BaseField * | addBase (const char *name, Base *value) |
Creates a Base field with name and adds it to the container. | |
| BaseField * | addBase (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> | |
| BaseField * | addBaseWithAllowedType (const char *name, T *value=nullptr) |
| As above, but also sets the allowed type of the field. | |
| template<typename T> | |
| BaseField * | addBaseWithAllowedType (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. | |
| SoNodeField * | addSoNode (const char *name) |
Creates a SoNodeField with name and adds it to the container. Default value is NULL. | |
| SoNodeField * | addSoNode (const char *name, SoNode *value) |
Creates a SoNodeField with name and adds it to the container. | |
| PointerField * | addPointer (const char *name) |
Creates a PointerField with name and adds it to the container. | |
| Vector2Field * | addVector2 (const char *name) |
Creates a Vector2Field with name and adds it to the container. | |
| Vector2Field * | addVector2 (const char *name, const Vector2 &value) |
Creates a Vector2Field with name and adds it to the container. | |
| Vector2Field * | addVector2 (const char *name, double x, double y) |
Creates a Vector2Field with name and adds it to the container. | |
| Vector3Field * | addVector3 (const char *name) |
Creates a Vector3Field with name and adds it to the container. | |
| Vector3Field * | addVector3 (const char *name, const Vector3 &value) |
Creates a Vector3Field with name and adds it to the container. | |
| Vector3Field * | addVector3 (const char *name, double x, double y, double z) |
Creates a Vector3Field with name and adds it to the container. | |
| Vector4Field * | addVector4 (const char *name) |
Creates a Vector4Field with name and adds it to the container. | |
| Vector4Field * | addVector4 (const char *name, const Vector4 &value) |
Creates a Vector4Field with name and adds it to the container. | |
| Vector4Field * | addVector4 (const char *name, double x, double y, double z, double w) |
Creates a Vector4Field with name and adds it to the container. | |
| Vector5Field * | addVector5 (const char *name) |
Creates a Vector5Field with name and adds it to the container. | |
| Vector5Field * | addVector5 (const char *name, const Vector5 &value) |
Creates a Vector5Field with name and adds it to the container. | |
| Vector6Field * | addVector6 (const char *name) |
Creates a Vector6Field with name and adds it to the container. | |
| Vector6Field * | addVector6 (const char *name, const Vector6 &value) |
Creates a Vector6Field with name and adds it to the container. | |
| Vector10Field * | addVector10 (const char *name) |
Creates a Vector10Field with name and adds it to the container. | |
| Vector10Field * | addVector10 (const char *name, const Vector10 &value) |
Creates a Vector10Field with name and adds it to the container. | |
| ImageVectorField * | addImageVector (const char *name) |
Creates a ImageVectorField with name and adds it to the container. | |
| ImageVectorField * | addImageVector (const char *name, const ImageVector &value) |
Creates a ImageVectorField with name and adds it to the container. | |
| ImageVectorField * | addImageVector (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. | |
| SubImageBoxField * | addSubImageBox (const char *name) |
Creates a SubImageBoxField with name and adds it to the container. | |
| SubImageBoxField * | addSubImageBox (const char *name, const SubImageBox &value) |
Creates a SubImageBoxField with name and adds it to the container. | |
| SubImageBoxdField * | addSubImageBoxd (const char *name) |
Creates a SubImageBoxd field with name and adds it to the container. | |
| SubImageBoxdField * | addSubImageBoxd (const char *name, const SubImageBoxd &value) |
Creates a SubImageBoxd field with name and adds it to the container. | |
| ColorField * | addColor (const char *name) |
Creates a ColorField with name and adds it to the container. | |
| ColorField * | addColor (const char *name, float r, float g, float b) |
Creates a ColorField with name and adds it to the container. | |
| ColorField * | addColor (const char *name, const Vector3 &value) |
Creates a ColorField with name and adds it to the container. | |
| PlaneField * | addPlane (const char *name) |
Creates a PlaneField with name and adds it to the container. | |
| PlaneField * | addPlane (const char *name, double f0, double f1, double f2, double f3) |
Creates a PlaneField with name and adds it to the container. | |
| PlaneField * | addPlane (const char *name, const Plane &value) |
Creates a PlaneField with name and adds it to the container. | |
| RotationField * | addRotation (const char *name) |
Creates a RotationField with name and adds it to the container. | |
| RotationField * | addRotation (const char *name, const Rotation &value) |
Creates a RotationField with name and adds it to the container. | |
| Matrix2Field * | addMatrix2 (const char *name) |
Creates a Matrix2Field with name and adds it to the container. | |
| Matrix2Field * | addMatrix2 (const char *name, const Matrix2 &value) |
Creates a Matrix2Field with name and adds it to the container. | |
| Matrix3Field * | addMatrix3 (const char *name) |
Creates a Matrix3Field with name and adds it to the container. | |
| Matrix3Field * | addMatrix3 (const char *name, const Matrix3 &value) |
Creates a Matrix3Field with name and adds it to the container. | |
| Matrix4Field * | addMatrix4 (const char *name) |
Creates a Matrix4Field with name and adds it to the container. | |
| Matrix4Field * | addMatrix4 (const char *name, const Matrix4 &value) |
Creates a Matrix4Field with name and adds it to the container. | |
| Matrix5Field * | addMatrix5 (const char *name) |
Creates a Matrix5Field with name and adds it to the container. | |
| Matrix5Field * | addMatrix5 (const char *name, const Matrix5 &value) |
Creates a Matrix5Field with name and adds it to the container. | |
| Matrix6Field * | addMatrix6 (const char *name) |
Creates a Matrix6Field with name and adds it to the container. | |
| Matrix6Field * | addMatrix6 (const char *name, const Matrix6 &value) |
Creates a Matrix6Field with name and adds it to the container. | |
| MatrixField * | addMatrix (const char *name) |
Creates a MatrixField with name and adds it to the container. | |
| MatrixField * | addMatrix (const char *name, const Matrix4 &value) |
Creates a MatrixField with name and adds it to the container. | |
| MLDataTypeField * | addMLDataType (const char *name) |
Creates a MTDataTypeField with name and adds it to the container. | |
| MLDataTypeField * | addMLDataType (const char *name, MLDataType value) |
Creates a MTDataTypeField with name and adds it to the container. | |
| UniversalTypeField * | addUniversalType (const char *name) |
Creates an UniversalTypeField field with name and adds it to the container. | |
| IntListField * | addIntList (const char *name) |
Creates an IntListField field with name and empty list value and adds it to the container. | |
| IntListField * | addIntList (const char *name, const std::vector< MLint > &value) |
Creates an IntListField field with name and given list value and adds it to the container. | |
| DoubleListField * | addDoubleList (const char *name) |
Creates an DoubleListField field with name and empty list value and adds it to the container. | |
| DoubleListField * | addDoubleList (const char *name, const std::vector< double > &value) |
Creates an DoubleListField field with name and given list value and adds it to the container. | |
| Vector2ListField * | addVector2List (const char *name) |
Creates an Vector2ListField field with name and empty list value and adds it to the container. | |
| Vector2ListField * | addVector2List (const char *name, const std::vector< Vector2 > &value) |
Creates an Vector2ListField field with name and given list value and adds it to the container. | |
| Vector3ListField * | addVector3List (const char *name) |
Creates an Vector3ListField field with name and empty list value and adds it to the container. | |
| Vector3ListField * | addVector3List (const char *name, const std::vector< Vector3 > &value) |
Creates an Vector3ListField field with name and given list value and adds it to the container. | |
| Vector4ListField * | addVector4List (const char *name) |
Creates an Vector4ListField field with name and empty list value and adds it to the container. | |
| Vector4ListField * | addVector4List (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. | |
| Field * | getField (const std::string &name) const |
| Field * | getField (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 Base * | deepCopy () 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 | |
| void | validateInput () override final |
| Validates the values of module's input fields (object and parameter fields). | |
| void | update () override final |
| Executes the algorithm and updates the values of module's output fields with results. | |
| void | clear () override final |
| Clears the values of module's output fields (object and parameter fields). | |
| void | setOutputImageProperties (int outputIndex, PagedImage *outputImage) override final |
Sets properties of the output image at output outputIndex. | |
| Protected Member Functions inherited from ml::AlgorithmModule | |
| bool | _isInputField (const Field *field) const |
| Returns true if the field is treated as an input field that changes the module parameterization and requires an update. | |
| Protected Member Functions inherited from ml::Module | |
| void | handleNotificationInternal (Field *field, FieldSensor::Strength strength) override |
| virtual SubImageBox | calculateInputSubImageBox (int, const SubImageBox &outputSubImageBox, int) |
| virtual void | calculateOutputSubImage (SubImage *outputSubImage, int outputIndex, SubImage *inputSubImages) |
| 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) |
Additional Inherited Members | |
| 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 Field * | getPressedNotifyField () |
| 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 Module * | getModule (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::AlgorithmModule | |
| enum | EStatusCode { SC_OK = 0 , SC_ERROR_INPUT_OBJECT , SC_ERROR_INPUT_PARAMETER , SC_ERROR_INTERNAL } |
Contains possible values of field statusCode. 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 } |
Example to demonstrate the development of an ML module with an output image based on AlgorithmModule.
Definition at line 13 of file mlAlgorithmModuleExampleWithOutputImage.h.
| ml::AlgorithmModuleExampleWithOutputImage::AlgorithmModuleExampleWithOutputImage | ( | ) |
Referenced by setOutputImageProperties().
|
finaloverride |
|
finaloverrideprotectedvirtual |
Clears the values of module's output fields (object and parameter fields).
Implements ml::AlgorithmModule.
References clear().
Referenced by clear().
|
finaloverridevirtual |
Creates the CalculateOutputImageHandler for the given output image outputImage.
The default implementation returns a CalculateOutputImageHandler that maps the interface back to the Module, callings its calculateOutputSubImage() and calculateInputSubImageBox(). Although this default implementation might feel simpler than implementing your own handler, please note that it is worth the effort and that it makes several issues much simpler:
A derived module may reimplement this virtual function to provide a CalculateOutputImageHandler that is used for the calculation of the pages of the given outputImage. Since this is called for each output image individually, it is possible to create different handlers for different output images. This method is to be called by the ML Host after calculateOutputImageProperties() was called for one of the output images and the output image is valid after that call. Because of this, it is also possible to return a different handler for the same output image, depending on the module state. For example, one handler that implements one kind of filter and another one which implements another kind of filter, instead of using a switch statement in a single handler. If you are concerned about thread-safety, please make sure that you copy all needed states in the constructor of your handler and do not store any back-references to the module, the output image, field pointers, etc.
Reimplemented from ml::Module.
References createCalculateOutputImageHandler().
Referenced by createCalculateOutputImageHandler().
|
finaloverrideprotectedvirtual |
Sets properties of the output image at output outputIndex.
| outputIndex | Index of affected output image field. |
| outputImage | Affected output image. |
| Throws | an exception of type AlgorithmModule::Error on failure. |
Reimplemented from ml::AlgorithmModule.
References AlgorithmModuleExampleWithOutputImage(), ML_MODULE_CLASS_HEADER, and setOutputImageProperties().
Referenced by setOutputImageProperties().
|
finaloverrideprotectedvirtual |
Executes the algorithm and updates the values of module's output fields with results.
| Throws | an exception of type AlgorithmModule::Error on failure. |
Implements ml::AlgorithmModule.
References update().
Referenced by update().
|
finaloverrideprotectedvirtual |
Validates the values of module's input fields (object and parameter fields).
| Throws | an exception of type AlgorithmModule::Error on failure. |
Implements ml::AlgorithmModule.
References validateInput().
Referenced by validateInput().