|
Medical Imaging Interaction Toolkit
2026.06.00
Medical Imaging Interaction Toolkit
|
Abstract base class for segmentation tools. More...
#include <mitkSegTool2D.h>


Classes | |
| struct | SliceInformation |
Public Member Functions | |
| mitkClassMacro (SegTool2D, Tool) | |
| void | SetShowMarkerNodes (bool show) |
| Sets whether contour marker nodes should be visible in the DataStorage. More... | |
| void | SetEnable3DInterpolation (bool) |
| Enables or disables the 3D interpolation after writing back the 2D segmentation result, and defaults to true. More... | |
| void | Activated () override |
| Called when the tool gets activated. More... | |
| void | Deactivated () override |
| Called when the tool gets deactivated. More... | |
| virtual void | SetIsTimePointChangeAware (bool _arg) |
| virtual bool | GetIsTimePointChangeAware () |
| virtual void | IsTimePointChangeAwareOn () |
| virtual void | IsTimePointChangeAwareOff () |
| DataNode * | GetWorkingDataNode () const |
| Returns the segmentation node that should be modified by the tool. More... | |
| MultiLabelSegmentation * | GetWorkingData () const |
| Returns the working data (multi-label segmentation image). More... | |
| DataNode * | GetReferenceDataNode () const |
| Returns the reference data node. More... | |
| Image * | GetReferenceData () const |
| Returns the reference image data. More... | |
Public Member Functions inherited from mitk::Tool | |
| mitkClassMacro (Tool, EventStateMachine) | |
| virtual us::ModuleResource | GetCursorIconResource () const |
| Returns the cursor icon of the tool wrapped by a usModuleResource. More... | |
| virtual us::ModuleResource | GetIconResource () const |
| Returns the tool button icon of the tool wrapped by a usModuleResource. More... | |
| virtual const char * | GetName () const =0 |
| Returns the name of this tool. Make it short! More... | |
| virtual mitk::Label::AlgorithmType | GetAlgorithmType () const |
| Returns the intrinsic algorithm type of this tool, used to stamp label provenance. More... | |
| virtual const char * | GetGroup () const |
| Name of a group. More... | |
| virtual bool | IsEligibleForAutoInit () const |
| Returns whether this tool is eligible for auto-initialization by ToolManager. More... | |
| virtual void | InitializeStateMachine () |
| Initializes the state machine for this tool based on the interaction type. More... | |
| virtual itk::Object::Pointer | GetGUI (const std::string &toolkitPrefix, const std::string &toolkitPostfix) |
| Interface for GUI creation. More... | |
| virtual NodePredicateBase::ConstPointer | GetReferenceDataPreference () const |
| Returns a predicate describing valid reference data for this tool. More... | |
| virtual NodePredicateBase::ConstPointer | GetWorkingDataPreference () const |
| Returns a predicate describing valid working data for this tool. More... | |
| virtual bool | CanHandle (const BaseData *referenceData, const BaseData *workingData) const |
| Checks if a tool can handle the given reference data and optional working data. More... | |
| virtual bool | ConfirmBeforeDeactivation () |
| Method call to invoke a dialog box just before exiting. More... | |
Public Member Functions inherited from mitk::EventStateMachine | |
| mitkClassMacro (EventStateMachine, InteractionEventHandler) | |
| bool | LoadStateMachine (const std::string &filename, const us::Module *module=nullptr) |
| Load a state machine pattern from an XML resource file. More... | |
| bool | HandleEvent (InteractionEvent *event, DataNode *dataNode) |
| Process an incoming interaction event. More... | |
| void | EnableUndo (bool enable) |
| Enable or disable the undo mechanism for this state machine. More... | |
| void | EnableInteraction (bool enable) |
| Enable or disable the state machine. More... | |
Public Member Functions inherited from mitk::InteractionEventHandler | |
| mitkClassMacroItkParent (InteractionEventHandler, itk::Object) | |
| bool | SetEventConfig (const std::string &filename, const us::Module *module=nullptr) |
| Loads a configuration from an XML resource. More... | |
| bool | SetEventConfig (const EventConfig &config) |
| Loads a configuration from an EventConfig object. More... | |
| EventConfig | GetEventConfig () const |
| Returns the current configuration. More... | |
| bool | AddEventConfig (const std::string &filename, const us::Module *module=nullptr) |
| This method extends the configuration. More... | |
| bool | AddEventConfig (const EventConfig &config) |
| This method extends the configuration. The configuration from the EventConfig object is loaded and only the ones conflicting are replaced by the new one. This way several configurations can be combined. More... | |
Public Member Functions inherited from mitk::InteractionEventObserver | |
| InteractionEventObserver () | |
| virtual | ~InteractionEventObserver () |
| void | Disable () |
| Disable this observer so it no longer receives notifications. More... | |
| void | Enable () |
| Enable this observer so it receives notifications. More... | |
| bool | IsEnabled () const |
| Check whether this observer is currently enabled. More... | |
Static Public Member Functions | |
| static bool | DetermineAffectedImageSlice (const Image *image, const PlaneGeometry *plane, int &affectedDimension, int &affectedSlice) |
| Calculates for a given Image and PlaneGeometry, which slice of the image (in index coordinates) is meant by the plane. More... | |
| static void | UpdateAllSurfaceInterpolations (const MultiLabelSegmentation *workingImage, TimeStepType timeStep, const PlaneGeometry *plane, bool detectIntersection) |
| Updates the surface interpolations by extracting contours from the given slice. More... | |
| static Image::Pointer | GetAffectedImageSliceAs2DImage (const InteractionPositionEvent *positionEvent, const Image *image, unsigned int component=0) |
| Extract the slice of an image that the user just scribbles on. The given component denotes the vector component of an vector image. More... | |
| static Image::Pointer | GetAffectedImageSliceAs2DImage (const PlaneGeometry *planeGeometry, const Image *image, TimeStepType timeStep, unsigned int component=0) |
| Extract the slice of an image cut by given plane. The given component denotes the vector component of a vector image. More... | |
| static Image::Pointer | GetAffectedImageSliceAs2DImageByTimePoint (const PlaneGeometry *planeGeometry, const Image *image, TimePointType timePoint, unsigned int component=0) |
| Extract the slice of an image cut by the given plane at a specified time point. More... | |
| static void | WriteBackSegmentationResult (const DataNode *workingNode, const PlaneGeometry *planeGeometry, const Image *segmentationResult, TimeStepType timeStep, const std::string &toolName) |
| Writes the provided segmentation result slice into the data of the passed workingNode. More... | |
| static void | WriteSliceToVolume (Image *workingImage, const PlaneGeometry *planeGeometry, const Image *slice, TimeStepType timeStep) |
| Writes a provided slice into the passed working image. More... | |
Protected Member Functions | |
| SegTool2D () | |
| SegTool2D (const char *, const us::Module *interactorModule=nullptr) | |
| ~SegTool2D () override | |
| virtual void | OnTimePointChanged () |
| bool | FilterEvents (InteractionEvent *interactionEvent, DataNode *dataNode) override |
| Filters events that cannot be handled by 2D segmentation tools. More... | |
| Image::Pointer | GetAffectedWorkingSlice (const InteractionPositionEvent *) const |
| Extract the slice of the currently selected working image that the user just scribbles on. More... | |
| Image::Pointer | GetAffectedReferenceSlice (const InteractionPositionEvent *) const |
| Extract the slice of the currently selected reference image that the user just scribbles on. More... | |
| Image::Pointer | GetAffectedReferenceSlice (const PlaneGeometry *planeGeometry, TimeStepType timeStep) const |
| void | WriteBackSegmentationResult (const InteractionPositionEvent *, const Image *segmentationResult) |
| void | WriteBackSegmentationResult (const PlaneGeometry *planeGeometry, const Image *segmentationResult, TimeStepType timeStep) |
| void | WriteBackSegmentationResults (const std::vector< SliceInformation > &sliceList, bool writeSliceToVolume=true) |
| virtual MultiLabelSegmentation::LabelValueVectorType | GetAffectedLabelValues () const |
| Returns the label value(s) whose pixels this tool's writeback actually modifies, so the provenance stamp at the writeback choke point lands on the right label. The default is the active label; tools that write a label other than the active one (e.g. erase/close operate on the clicked label) override this. An empty result records no tool use. More... | |
| int | AddContourmarker (const PlaneGeometry *planeGeometry, unsigned int sliceIndex) |
| Adds a new node called Contourmarker to the datastorage which holds a mitk::PlanarFigure. By selecting this node the slicestack will be reoriented according to the passed PlanarFigure's Geometry. More... | |
| void | DisableContourMarkers () |
| void | InteractiveSegmentationBugMessage (const std::string &message) const |
| virtual TimePointType | GetLastTimePointTriggered () |
| void | PushCursor () |
| Pushes the current tool cursor onto the cursor stack. More... | |
| void | PushCursor (us::ModuleResource cursorResource) |
| Pushes a custom cursor onto the cursor stack. More... | |
| void | PopCursor (bool popFirstCursor=false) |
| Pops the most recently pushed cursor from the stack. More... | |
| void | PopAllCursors () |
| Pops all cursors from the stack, restoring the default cursor. More... | |
Protected Member Functions inherited from mitk::Tool | |
| virtual void | SetToolManager (ToolManager *) |
| ToolManager * | GetToolManager () const |
| mitk::DataStorage * | GetDataStorage () const |
| void | ConnectActionsAndFunctions () override |
| Tool (const char *, const us::Module *interactorModule=nullptr) | |
| ~Tool () override | |
| void | Notify (InteractionEvent *interactionEvent, bool isHandled) override |
| Called by the Dispatcher to notify this observer about an InteractionEvent. More... | |
| bool | FilterEvents (InteractionEvent *, DataNode *) override |
Protected Member Functions inherited from mitk::EventStateMachine | |
| EventStateMachine () | |
| ~EventStateMachine () override | |
| void | AddActionFunction (const std::string &action, const ActionFunctionDelegate &delegate) |
| void | AddConditionFunction (const std::string &condition, const ConditionFunctionDelegate &delegate) |
| StateMachineState * | GetCurrentState () const |
| void | ResetToStartState () |
| ResetToStartState Reset state machine to it initial starting state. More... | |
| virtual bool | CheckCondition (const StateMachineCondition &condition, const InteractionEvent *interactionEvent) |
| virtual void | ExecuteAction (StateMachineAction *action, InteractionEvent *interactionEvent) |
| void | SetMouseCursor (const char *xpm[], int hotspotX, int hotspotY) |
| Sets the specified mouse cursor. More... | |
| void | ResetMouseCursor () |
| Resets the mouse cursor to its original state. More... | |
| StateMachineTransition * | GetExecutableTransition (InteractionEvent *event) |
| Returns the executable transition for the given event. More... | |
Protected Member Functions inherited from mitk::InteractionEventHandler | |
| InteractionEventHandler () | |
| ~InteractionEventHandler () override | |
| PropertyList::Pointer | GetAttributes () const |
| std::string | MapToEventVariant (InteractionEvent *interactionEvent) |
| virtual void | ConfigurationChanged () |
Static Protected Member Functions | |
| static void | UpdateSurfaceInterpolation (const std::vector< SliceInformation > &sliceInfos, const Image *workingImage, bool detectIntersection, mitk::Label::PixelType activeLabelValue, bool silent=false) |
| Updates the surface interpolation by extracting contours from given slices. More... | |
| static void | WriteBackSegmentationResults (const DataNode *workingNode, const std::vector< SliceInformation > &sliceList, bool writeSliceToVolume=true, bool allowUndo=true, const std::string &toolName="") |
| Writes all provided source slices into the data of the passed workingNode. The function does the following: 1) for every passed slice write it to workingNode (and generate and undo/redo step); 2) update the surface interpolation and 3) mark the node as modified. More... | |
| static void | WriteSliceToVolume (Image *workingImage, const SliceInformation &sliceInfo) |
| static bool | IsPositionEventInsideImageRegion (InteractionPositionEvent *positionEvent, const BaseData *data) |
Protected Attributes | |
| BaseRenderer * | m_LastEventSender |
| unsigned int | m_LastEventSlice |
Protected Attributes inherited from mitk::Tool | |
| std::string | m_EventConfig |
| Let subclasses change their event configuration. More... | |
Protected Attributes inherited from mitk::EventStateMachine | |
| bool | m_IsActive |
| UndoController * | m_UndoController |
| bool | m_UndoEnabled |
Additional Inherited Members | |
Public Types inherited from mitk::Tool | |
| typedef mitk::Label::PixelType | DefaultSegmentationDataType |
Public Types inherited from mitk::EventStateMachine | |
| typedef itk::SmartPointer< StateMachineState > | StateMachineStateType |
Public Attributes inherited from mitk::Tool | |
| Message | GUIProcessEventsMessage |
| To let GUI process new events (e.g. qApp->processEvents() ) More... | |
| Message1< std::string > | ErrorMessage |
| To send error messages (to be shown by some GUI) More... | |
| Message1< bool > | CurrentlyBusy |
| To send whether the tool is busy (to be shown by some GUI) More... | |
| Message1< std::string > | GeneralMessage |
| To send general messages (to be shown by some GUI) More... | |
Protected Types inherited from mitk::EventStateMachine | |
| typedef MessageAbstractDelegate2< StateMachineAction *, InteractionEvent *, void > | ActionFunctionDelegate |
| typedef MessageAbstractDelegate1< const InteractionEvent *, bool > | ConditionFunctionDelegate |
Abstract base class for segmentation tools.
Implements 2D segmentation specific helper methods, that might be of use to all kind of 2D segmentation tools. At the moment these are:
SegTool2D tries to structure the interaction a bit. If you pass "PressMoveRelease" as the interaction type of your derived tool, you might implement the methods OnMousePressed, OnMouseMoved, and OnMouseReleased. Yes, your guess about when they are called is correct.
$Author$
Definition at line 56 of file mitkSegTool2D.h.
|
protected |
|
protected |
|
overrideprotected |
|
overridevirtual |
Called when the tool gets activated.
Derived tools should call their parents implementation at the beginning of the overriding function.
Reimplemented from mitk::Tool.
|
protected |
Adds a new node called Contourmarker to the datastorage which holds a mitk::PlanarFigure. By selecting this node the slicestack will be reoriented according to the passed PlanarFigure's Geometry.
|
overridevirtual |
Called when the tool gets deactivated.
Derived tools should call their parents implementation at the end of the overriding function.
Reimplemented from mitk::Tool.
|
static |
Calculates for a given Image and PlaneGeometry, which slice of the image (in index coordinates) is meant by the plane.
| image | |
| plane | |
| affectedDimension | The image dimension, which is constant for all points in the plane, e.g. Axial --> 2 |
| affectedSlice | The index of the image slice |
|
protected |
|
overrideprotectedvirtual |
Filters events that cannot be handled by 2D segmentation tools.
Currently an event is discarded if it was not sent by a 2D renderwindow and if it is not of type InteractionPositionEvent
Reimplemented from mitk::EventStateMachine.
|
static |
Extract the slice of an image that the user just scribbles on. The given component denotes the vector component of an vector image.
| positionEvent | Event that specifies the plane that should be used to slice |
| image | Image that should be sliced |
| component | The component to be extracted of a given multi-component image. -1 is the default parameter to denote an invalid component. |
|
static |
Extract the slice of an image cut by given plane. The given component denotes the vector component of a vector image.
| planeGeometry | Geometry defining the slice that should be cut out. |
| image | Image that should be sliced |
| timeStep | TimeStep of the image that should be sliced |
| component | The component to be extracted of a given multi-component image. -1 is the default parameter to denote an invalid component. |
|
static |
Extract the slice of an image cut by the given plane at a specified time point.
| [in] | planeGeometry | Geometry defining the slice that should be cut out. |
| [in] | image | Image that should be sliced. |
| [in] | timePoint | Time point of the image that should be sliced. |
| [in] | component | The component to extract of a given multi-component image. |
|
protectedvirtual |
Returns the label value(s) whose pixels this tool's writeback actually modifies, so the provenance stamp at the writeback choke point lands on the right label. The default is the active label; tools that write a label other than the active one (e.g. erase/close operate on the clicked label) override this. An empty result records no tool use.
Reimplemented in mitk::FillRegionBaseTool.
|
protected |
Extract the slice of the currently selected reference image that the user just scribbles on.
|
protected |
Overload version that gets the reference slice passed on the passed plane geometry and timestep.
|
protected |
Extract the slice of the currently selected working image that the user just scribbles on.
|
virtual |
|
protectedvirtual |
| Image* mitk::SegTool2D::GetReferenceData | ( | ) | const |
Returns the reference image data.
| DataNode* mitk::SegTool2D::GetReferenceDataNode | ( | ) | const |
Returns the reference data node.
| MultiLabelSegmentation* mitk::SegTool2D::GetWorkingData | ( | ) | const |
Returns the working data (multi-label segmentation image).
| DataNode* mitk::SegTool2D::GetWorkingDataNode | ( | ) | const |
Returns the segmentation node that should be modified by the tool.
|
protected |
|
staticprotected |
Helper function to check if a position events points to a point inside the boundingbox of a passed data instance.
|
virtual |
|
virtual |
|
protectedvirtual |
This function can be reimplemented by derived classes to react on changes of the current time point. Default implementation does nothing.
Reimplemented in mitk::LiveWireTool2D.
|
protected |
Pops all cursors from the stack, restoring the default cursor.
|
protected |
Pops the most recently pushed cursor from the stack.
| [in] | popFirstCursor | If true, also pops the first/initial cursor. |
|
protected |
Pushes the current tool cursor onto the cursor stack.
|
protected |
Pushes a custom cursor onto the cursor stack.
| [in] | cursorResource | The cursor icon to push. |
| void mitk::SegTool2D::SetEnable3DInterpolation | ( | bool | ) |
Enables or disables the 3D interpolation after writing back the 2D segmentation result, and defaults to true.
|
virtual |
| void mitk::SegTool2D::SetShowMarkerNodes | ( | bool | show | ) |
Sets whether contour marker nodes should be visible in the DataStorage.
| [in] | show | If true, marker nodes are shown; otherwise hidden. |
|
static |
Updates the surface interpolations by extracting contours from the given slice.
Updates contour information for all labels that have surface contour data stored for the given plane at the given time step.
| [in] | workingImage | The segmentation image. |
| [in] | timeStep | The time step for which the surface interpolation should be updated. |
| [in] | plane | The plane in which the slice lies. |
| [in] | detectIntersection | If true, the slice is eroded before contour extraction. If the slice is empty after the erosion, it is most likely an intersecting contour and will not be added to the SurfaceInterpolationController. |
|
staticprotected |
Updates the surface interpolation by extracting contours from given slices.
| [in] | sliceInfos | Vector of slice information instances from which contours are extracted. |
| [in] | workingImage | The segmentation image. |
| [in] | detectIntersection | If true, the slice is eroded before contour extraction. If the slice is empty after erosion, it is likely an intersecting contour and will not be added to the SurfaceInterpolationController. |
| [in] | activeLabelValue | The label value of the active label. |
| [in] | silent | If true, suppresses the modification event of the SurfaceInterpolationController. |
|
static |
Writes the provided segmentation result slice into the data of the passed workingNode.
Public convenience wrapper that: (1) writes the slice to the working node and generates an undo/redo step; (2) updates the surface interpolation; and (3) marks the node as modified.
| [in] | workingNode | Pointer to the node that contains the working image. |
| [in] | planeGeometry | Indicates where the slice should be added in the data of the working node. |
| [in] | segmentationResult | Pointer to the slice image that should be written. |
| [in] | timeStep | Time step of the working node data that should be modified. |
| [in] | toolName | Name of the tool used as description in the undo operation. |
|
protected |
Convenience version that can be called for a given event (which is used to deduce timepoint and plane) and a slice image. Calls non static WriteBackSegmentationResults
|
protected |
Convenience version that can be called for a given planeGeometry, slice image and time step. Calls non static WriteBackSegmentationResults
|
staticprotected |
Writes all provided source slices into the data of the passed workingNode. The function does the following: 1) for every passed slice write it to workingNode (and generate and undo/redo step); 2) update the surface interpolation and 3) mark the node as modified.
| workingNode | Pointer to the node that contains the working image. |
| sliceList | Vector of all slices that should be written into the workingNode. If the list is empty, the function call does nothing. |
| writeSliceToVolume | If set to false the write operation (WriteSliceToVolume will be skipped) and only the surface interpolation will be updated. |
| allowUndo | Indicates if undo/redo operations should be registered for the write operation |
| toolName | Name of the tool that should be used as description in the undo operation. |
|
protected |
Overloaded version that calls the static version and also adds the contour markers.
|
static |
Writes a provided slice into the passed working image.
The content of working image that is covered by the slice will be completely overwritten.
| [in,out] | workingImage | Pointer to the image that is the target of the write operation. |
| [in] | planeGeometry | Geometry that indicates the plane that should be overwritten by the slice. |
| [in] | slice | Image containing the slice that should be written into working image. |
| [in] | timeStep | Time step of the working image that should be overwritten. |
|
staticprotected |
Convenience overloaded version that can be called with a slice info. Writes a provided slice into the passed working image. The content of working image that is covered by the slice will be completely overwritten. If asked for it also generates the needed undo/redo steps.
| workingImage | Pointer to the image that is the target of the write operation. |
| sliceInfo | SliceInfo instance that contains the slice image, the defining plane geometry and time step. |
|
protected |
Definition at line 317 of file mitkSegTool2D.h.
|
protected |
Definition at line 318 of file mitkSegTool2D.h.