Medical Imaging Interaction Toolkit  2024.12.99-0da743f6
Medical Imaging Interaction Toolkit

A 2D segmentation tool based on a LiveWire approach. More...

#include <mitkLiveWireTool2D.h>

Inheritance diagram for mitk::LiveWireTool2D:
Collaboration diagram for mitk::LiveWireTool2D:

Public Member Functions

 mitkClassMacro (LiveWireTool2D, EditableContourTool)
 
us::ModuleResource GetCursorIconResource () const override
 Returns the path of a cursor icon. More...
 
us::ModuleResource GetIconResource () const override
 Returns the tool button icon of the tool wrapped by a usModuleResource. More...
 
const char * GetName () const override
 Returns the name of this tool. Make it short! More...
 
const char ** GetXPM () const override
 Returns an icon in the XPM format. More...
 
- Public Member Functions inherited from mitk::EditableContourTool
 mitkClassMacro (EditableContourTool, FeedbackContourTool)
 
virtual void ConfirmSegmentation (bool resetStatMachine=true)
 Convert current contour to binary segmentations. More...
 
virtual void ClearContour ()
 Delete all current contours. More...
 
virtual void AutoConfirmOn ()
 
virtual void AutoConfirmOff ()
 
virtual void SetAutoConfirm (bool _arg)
 
virtual bool GetAutoConfirm ()
 
virtual void AddModeOn ()
 
virtual void AddModeOff ()
 
virtual void SetAddMode (bool _arg)
 
virtual bool GetAddMode ()
 
bool IsEditingContour () const
 
bool IsDrawingContour () const
 
- Public Member Functions inherited from mitk::FeedbackContourTool
 mitkClassMacro (FeedbackContourTool, SegTool2D)
 
- Public Member Functions inherited from mitk::SegTool2D
 mitkClassMacro (SegTool2D, Tool)
 
void SetShowMarkerNodes (bool)
 
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 ()
 
- Public Member Functions inherited from mitk::Tool
 mitkClassMacro (Tool, EventStateMachine)
 
virtual std::string GetIconPath () const
 Returns the path of an icon. More...
 
virtual const char * GetGroup () const
 Name of a group. More...
 
virtual void InitializeStateMachine ()
 
virtual itk::Object::Pointer GetGUI (const std::string &toolkitPrefix, const std::string &toolkitPostfix)
 Interface for GUI creation. More...
 
virtual NodePredicateBase::ConstPointer GetReferenceDataPreference () const
 
virtual NodePredicateBase::ConstPointer GetWorkingDataPreference () const
 
DataNode::Pointer CreateEmptySegmentationNode (const Image *original, const std::string &organName, const mitk::Color &color) const
 
DataNode::Pointer CreateSegmentationNode (Image *image, const std::string &organName, const mitk::Color &color) const
 
virtual bool CanHandle (const BaseData *referenceData, const BaseData *workingData) const
 
virtual bool ConfirmBeforeDeactivation ()
 Method call to invoke a dialog box just before exiting. The method can be reimplemented in the respective tool class with business logic on when there should be a confirmation dialog from the user before the tool exits. More...
 
- Public Member Functions inherited from mitk::EventStateMachine
virtual std::vector< std::string > GetClassHierarchy () const override
 
virtual const char * GetClassName () const
 
bool LoadStateMachine (const std::string &filename, const us::Module *module=nullptr)
 Loads XML resource. More...
 
bool HandleEvent (InteractionEvent *event, DataNode *dataNode)
 
void EnableUndo (bool enable)
 Enables or disabled Undo. More...
 
void EnableInteraction (bool enable)
 Enables/disables the state machine. In un-enabled state it won't react to any events. More...
 
- Public Member Functions inherited from mitk::InteractionEventHandler
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 ()
 
void Enable ()
 
bool IsEnabled () const
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from mitk::SegTool2D
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 LabelSetImage *workingImage, TimeStepType timeStep, const PlaneGeometry *plane, bool detectIntersection)
 Updates the surface interpolations by extracting the contour form the given slice for all labels that have a surface contour information stored for the given plane at the given timestep. 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)
 
static void WriteBackSegmentationResult (const DataNode *workingNode, const PlaneGeometry *planeGeometry, const Image *segmentationResult, TimeStepType timeStep)
 
static void WriteSliceToVolume (Image *workingImage, const PlaneGeometry *planeGeometry, const Image *slice, TimeStepType timeStep, bool allowUndo)
 
- Static Public Member Functions inherited from mitk::EventStateMachine
static const char * GetStaticNameOfClass ()
 
- Static Public Member Functions inherited from mitk::InteractionEventHandler
static const char * GetStaticNameOfClass ()
 

Protected Member Functions

 LiveWireTool2D ()
 
 ~LiveWireTool2D () override
 
void ConnectActionsAndFunctions () override
 
void UpdateLiveWireContour ()
 
void OnTimePointChanged () override
 
mitk::Point3D PrepareInitContour (const mitk::Point3D &clickedPoint) override
 
virtual void FinalizePreviewContour (const Point3D &clickedPoint) override
 
virtual void InitializePreviewContour (const Point3D &clickedPoint) override
 
virtual void UpdatePreviewContour (const Point3D &clickedPoint) override
 
- Protected Member Functions inherited from mitk::EditableContourTool
 EditableContourTool ()
 
 ~EditableContourTool () override
 
void Activated () override
 Called when the tool gets activated. More...
 
void Deactivated () override
 Called when the tool gets deactivated. More...
 
virtual void OnInitContour (StateMachineAction *, InteractionEvent *interactionEvent)
 Initialize tool. More...
 
virtual void OnAddPoint (StateMachineAction *, InteractionEvent *interactionEvent)
 Add a control point and finish current segment. More...
 
virtual void OnDrawing (StateMachineAction *, InteractionEvent *interactionEvent)
 Draw a contour according to the mouse movement when mouse button is pressed and mouse is moved. More...
 
virtual void OnEndDrawing (StateMachineAction *, InteractionEvent *interactionEvent)
 
virtual void OnMouseMoved (StateMachineAction *, InteractionEvent *interactionEvent)
 Computation of the preview contour. More...
 
virtual void OnFinish (StateMachineAction *, InteractionEvent *interactionEvent)
 Finish EditableContour tool. More...
 
virtual bool OnCheckPlane (const InteractionEvent *interactionEvent)
 Check if the event happened on the current plane. More...
 
virtual bool OnCheckDistanceToControlPoint (const InteractionEvent *interactionEvent)
 Checks if the event happened with enough distances to the last control points (to avoid unintended/accidental drawing) More...
 
void EnableContourInteraction (bool on)
 
void ReleaseInteractors ()
 
virtual void ReleaseHelperObjects (bool includeWorkingContour=true)
 
virtual void RemoveHelperObjectsFromDataStorage (bool includeWorkingContour=true)
 
ContourModel::Pointer CreateNewContour () const
 
virtual void UpdateClosureContour (mitk::Point3D endpoint)
 
mitk::ContourModelGetContour ()
 
const mitk::ContourModelGetContour () const
 
- Protected Member Functions inherited from mitk::FeedbackContourTool
 FeedbackContourTool ()
 
 FeedbackContourTool (const char *)
 
 ~FeedbackContourTool () override
 
const ContourModelGetFeedbackContour () const
 
void InitializeFeedbackContour (bool isClosed)
 
void ClearsCurrentFeedbackContour (bool isClosed)
 
void UpdateCurrentFeedbackContour (const ContourModel *sourceModel, TimeStepType sourceTimeStep=0)
 
void UpdateFeedbackContour (const ContourModel *sourceModel, TimeStepType feedbackTimeStep, TimeStepType sourceTimeStep=0)
 
void AddVertexToCurrentFeedbackContour (const Point3D &point)
 
void AddVertexToFeedbackContour (const Point3D &point, TimeStepType feedbackTimeStep)
 
void SetFeedbackContourVisible (bool)
 
void SetFeedbackContourColor (float r, float g, float b)
 Provide values from 0.0 (black) to 1.0 (full color) More...
 
void SetFeedbackContourColorDefault ()
 
void Deactivated () override
 Called when the tool gets deactivated. More...
 
void Activated () override
 Called when the tool gets activated. More...
 
ContourModel::Pointer ProjectContourTo2DSlice (const Image *slice, const ContourModel *contourIn3D)
 Projects a contour onto an image point by point. Converts from world to index coordinates. More...
 
ContourModel::Pointer BackProjectContourFrom2DSlice (const BaseGeometry *sliceGeometry, const ContourModel *contourIn2D)
 Projects a slice index coordinates of a contour back into world coordinates. More...
 
void WriteBackFeedbackContourAsSegmentationResult (const InteractionPositionEvent *positionEvent, int paintingPixelValue, bool setInvisibleAfterSuccess=true)
 
void FillContourInSlice (ContourModel *projectedContour, Image *sliceImage, int paintingPixelValue=1)
 Fill a contour in a 2D slice with a specified pixel value. More...
 
void FillContourInSlice (ContourModel *projectedContour, unsigned int timeStep, Image *sliceImage, int paintingPixelValue=1)
 Fill a contour in a 2D slice with a specified pixel value at a given time step. More...
 
- Protected Member Functions inherited from mitk::SegTool2D
 SegTool2D ()
 
 SegTool2D (const char *, const us::Module *interactorModule=nullptr)
 
 ~SegTool2D () override
 
DataNodeGetWorkingDataNode () const
 returns the segmentation node that should be modified by the tool. More...
 
ImageGetWorkingData () const
 
DataNodeGetReferenceDataNode () const
 
ImageGetReferenceData () const
 
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)
 
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 InteractiveSegmentationBugMessage (const std::string &message) const
 
virtual TimePointType GetLastTimePointTriggered ()
 
void PushCursor ()
 
void PushCursor (us::ModuleResource cursorResource)
 
void PopCursor (bool popFirstCursor=false)
 
void PopAllCursors ()
 
- Protected Member Functions inherited from mitk::Tool
virtual void SetToolManager (ToolManager *)
 
ToolManagerGetToolManager () const
 
mitk::DataStorageGetDataStorage () const
 
void ConnectActionsAndFunctions () override
 
 Tool (const char *, const us::Module *interactorModule=nullptr)
 
 ~Tool () override
 
void Notify (InteractionEvent *interactionEvent, bool isHandled) override
 
bool FilterEvents (InteractionEvent *, DataNode *) override
 
- Protected Member Functions inherited from mitk::EventStateMachine
 EventStateMachine ()
 
 ~EventStateMachine () override
 
void AddActionFunction (const std::string &action, TActionFunctor *functor)
 
void AddActionFunction (const std::string &action, const ActionFunctionDelegate &delegate)
 
void AddConditionFunction (const std::string &condition, const ConditionFunctionDelegate &delegate)
 
StateMachineStateGetCurrentState () 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...
 
StateMachineTransitionGetExecutableTransition (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 ()
 

Additional Inherited Members

- Public Types inherited from mitk::Tool
typedef mitk::Label::PixelType DefaultSegmentationDataType
 
- Public Types inherited from mitk::EventStateMachine
typedef EventStateMachine Self
 
typedef InteractionEventHandler Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 
typedef std::map< std::string, TActionFunctor * > ActionFunctionsMapType
 
typedef itk::SmartPointer< StateMachineStateStateMachineStateType
 
- Public Types inherited from mitk::InteractionEventHandler
typedef InteractionEventHandler Self
 
typedef itk::Object Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 
- 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
 
- Static Protected Member Functions inherited from mitk::SegTool2D
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 the contour form the given slice. More...
 
static void WriteBackSegmentationResults (const DataNode *workingNode, const std::vector< SliceInformation > &sliceList, bool writeSliceToVolume=true)
 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, bool allowUndo)
 
static bool IsPositionEventInsideImageRegion (InteractionPositionEvent *positionEvent, const BaseData *data)
 
- Protected Attributes inherited from mitk::EditableContourTool
mitk::DataNode::Pointer m_ContourNode
 
mitk::ContourModel::Pointer m_PreviewContour
 
mitk::DataNode::Pointer m_PreviewContourNode
 
mitk::ContourModel::Pointer m_ClosureContour
 
mitk::DataNode::Pointer m_ClosureContourNode
 
mitk::ContourModel::Pointer m_CurrentRestrictedArea
 
mitk::Image::Pointer m_ReferenceDataSlice
 
PlaneGeometry::ConstPointer m_PlaneGeometry
 
mitk::DataInteractor::Pointer m_ContourInteractor
 
bool m_AutoConfirm
 
bool m_AddMode
 
- Protected Attributes inherited from mitk::SegTool2D
BaseRendererm_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
 
UndoControllerm_UndoController
 
bool m_UndoEnabled
 

Detailed Description

A 2D segmentation tool based on a LiveWire approach.

The contour between the last point and the current mouse position is computed by searching the shortest path according to specific features of the image. The contour thus tends to snap to the boundary of objects.

The tool always assumes that unconfirmed contours are always defined for the current time point. So the time step in which the contours will be stored as segmentations will be determined when the contours got confirmed. Then they will be transferred to the slices of the currently selected time step. Changing the time point/time step while tool is active will updated the working slice the live wire filter. So the behavior of the active live wire contour is always WYSIWYG (What you see is what you get).

See also
SegTool2D
ImageLiveWireContourModelFilter
Warning
Only to be instantiated by mitk::ToolManager.

Definition at line 44 of file mitkLiveWireTool2D.h.

Constructor & Destructor Documentation

◆ LiveWireTool2D()

mitk::LiveWireTool2D::LiveWireTool2D ( )
protected

◆ ~LiveWireTool2D()

mitk::LiveWireTool2D::~LiveWireTool2D ( )
overrideprotected

Member Function Documentation

◆ ConnectActionsAndFunctions()

void mitk::LiveWireTool2D::ConnectActionsAndFunctions ( )
overrideprotectedvirtual

Is called after loading a statemachine. Overwrite this function in specific interactor implementations. Connect actions and functions using the CONNECT_FUNCTION macro within this function.

Reimplemented from mitk::EditableContourTool.

◆ FinalizePreviewContour()

virtual void mitk::LiveWireTool2D::FinalizePreviewContour ( const Point3D clickedPoint)
overrideprotectedvirtual

Reimplemented from mitk::EditableContourTool.

◆ GetCursorIconResource()

us::ModuleResource mitk::LiveWireTool2D::GetCursorIconResource ( ) const
overridevirtual

Returns the path of a cursor icon.

Reimplemented from mitk::Tool.

◆ GetIconResource()

us::ModuleResource mitk::LiveWireTool2D::GetIconResource ( ) const
overridevirtual

Returns the tool button icon of the tool wrapped by a usModuleResource.

Returns
a valid ModuleResource or an invalid if this function is not reimplemented

Reimplemented from mitk::Tool.

◆ GetName()

const char* mitk::LiveWireTool2D::GetName ( ) const
overridevirtual

Returns the name of this tool. Make it short!

This name has to fit into some kind of button in most applications, so take some time to think of a good name!

Implements mitk::Tool.

◆ GetXPM()

const char** mitk::LiveWireTool2D::GetXPM ( ) const
overridevirtual

Returns an icon in the XPM format.

This icon has to fit into some kind of button in most applications, so make it smaller than 25x25 pixels.

XPM is e.g. supported by The Gimp. But if you open any XPM file in your text editor, you will see that you could also "draw" it with an editor.

Implements mitk::Tool.

◆ InitializePreviewContour()

virtual void mitk::LiveWireTool2D::InitializePreviewContour ( const Point3D clickedPoint)
overrideprotectedvirtual

Reimplemented from mitk::EditableContourTool.

◆ mitkClassMacro()

mitk::LiveWireTool2D::mitkClassMacro ( LiveWireTool2D  ,
EditableContourTool   
)

◆ New()

static Pointer mitk::LiveWireTool2D::New ( )
static

◆ OnTimePointChanged()

void mitk::LiveWireTool2D::OnTimePointChanged ( )
overrideprotectedvirtual

This function can be reimplemented by derived classes to react on changes of the current time point. Default implementation does nothing.

Reimplemented from mitk::SegTool2D.

◆ PrepareInitContour()

mitk::Point3D mitk::LiveWireTool2D::PrepareInitContour ( const mitk::Point3D clickedPoint)
overrideprotectedvirtual

Reimplemented from mitk::EditableContourTool.

◆ UpdateLiveWireContour()

void mitk::LiveWireTool2D::UpdateLiveWireContour ( )
protected

◆ UpdatePreviewContour()

virtual void mitk::LiveWireTool2D::UpdatePreviewContour ( const Point3D clickedPoint)
overrideprotectedvirtual

Reimplemented from mitk::EditableContourTool.


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