Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit

A 2D segmentation tool based on LiveWire approach. The contour between the last user added point and the current mouse position is computed by searching the shortest path according to specific features of the image. The contour thus snappest to the boundary of objects. More...

#include <mitkLiveWireTool2D.h>

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

Public Member Functions

 mitkClassMacro (LiveWireTool2D, SegTool2D)
 
Pointer Clone () const
 
virtual const char ** GetXPM () const override
 Returns an icon in the XPM format. More...
 
virtual 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...
 
virtual const char * GetName () const override
 Returns the name of this tool. Make it short! More...
 
void ConfirmSegmentation ()
 Convert all current contour objects to binary segmentation image. More...
 
void ClearSegmentation ()
 Delete all current contour objects. More...
 
- 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...
 
- 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 (Image *original, const std::string &organName, const mitk::Color &color)
 
DataNode::Pointer CreateSegmentationNode (Image *image, const std::string &organName, const mitk::Color &color)
 
virtual bool CanHandle (BaseData *referenceData) const
 
- 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 corrdinates) is meant by the plane. More...
 
static void UpdateSurfaceInterpolation (const Image *slice, const Image *workingImage, const PlaneGeometry *plane, bool detectIntersection)
 Updates the surface interpolation by extracting the contour form the given slice. More...
 
- 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 ()
 
virtual ~LiveWireTool2D ()
 
void ConnectActionsAndFunctions () override
 
virtual void Activated () override
 Called when the tool gets activated. More...
 
virtual void Deactivated () override
 Called when the tool gets deactivated. More...
 
virtual void OnInitLiveWire (StateMachineAction *, InteractionEvent *interactionEvent)
 Initialize tool. More...
 
virtual void OnAddPoint (StateMachineAction *, InteractionEvent *interactionEvent)
 Add a control point and finish current segment. More...
 
virtual void OnMouseMoved (StateMachineAction *, InteractionEvent *interactionEvent)
 Actual LiveWire computation. More...
 
virtual bool OnCheckPoint (const InteractionEvent *interactionEvent)
 Check double click on first control point to finish the LiveWire tool. More...
 
virtual void OnFinish (StateMachineAction *, InteractionEvent *interactionEvent)
 Finish LiveWire tool. More...
 
virtual void OnLastSegmentDelete (StateMachineAction *, InteractionEvent *interactionEvent)
 Close the contour. More...
 
virtual void OnMouseMoveNoDynamicCosts (StateMachineAction *, InteractionEvent *interactionEvent)
 Don't use dynamic cost map for LiveWire calculation. More...
 
void FinishTool ()
 Finish contour interaction. More...
 
virtual bool IsPositionEventInsideImageRegion (InteractionPositionEvent *positionEvent, BaseData *data)
 IsPositionEventInsideImageRegion. More...
 
void EnableContourLiveWireInteraction (bool on)
 Enable interaction with contours. Contours that are created by the tool can be edited using LiveWire functionality. Points can thus be inserted, moved or deleted. More...
 
template<typename TPixel , unsigned int VImageDimension>
void FindHighestGradientMagnitudeByITK (itk::Image< TPixel, VImageDimension > *inputImage, itk::Index< 3 > &index, itk::Index< 3 > &returnIndex)
 
- Protected Member Functions inherited from mitk::SegTool2D
 SegTool2D ()
 
 SegTool2D (const char *)
 
virtual ~SegTool2D ()
 
virtual bool FilterEvents (InteractionEvent *interactionEvent, DataNode *dataNode) override
 Filters events that cannot be handle by 2D segmentation tools. More...
 
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 a dwi-image. More...
 
Image::Pointer GetAffectedImageSliceAs2DImage (const PlaneGeometry *planeGeometry, const Image *image, unsigned int timeStep, unsigned int component=0)
 Extract the slice of an image cut by given plane. The given component denotes the vector component of a dwi-image. More...
 
Image::Pointer GetAffectedWorkingSlice (const InteractionPositionEvent *)
 Extract the slice of the currently selected working image that the user just scribbles on. More...
 
Image::Pointer GetAffectedReferenceSlice (const InteractionPositionEvent *)
 Extract the slice of the currently selected reference image that the user just scribbles on. More...
 
void WriteBackSegmentationResult (const InteractionPositionEvent *, Image *)
 
void WriteBackSegmentationResult (const PlaneGeometry *planeGeometry, Image *, unsigned int timeStep)
 
void WriteBackSegmentationResult (std::vector< SliceInformation > sliceList, bool writeSliceToVolume=true)
 
void WritePreviewOnWorkingImage (Image *targetSlice, Image *sourceSlice, Image *workingImage, int paintingPixelValue, int timestep)
 
void WriteSliceToVolume (SliceInformation sliceInfo)
 
int AddContourmarker ()
 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 PlanarFigure's Geometry. More...
 
void InteractiveSegmentationBugMessage (const std::string &message)
 
- Protected Member Functions inherited from mitk::Tool
virtual void SetToolManager (ToolManager *)
 
void ConnectActionsAndFunctions () override
 
 Tool ()
 
 Tool (const char *)
 
virtual ~Tool ()
 
virtual void Notify (InteractionEvent *interactionEvent, bool isHandled) override
 
bool FilterEvents (InteractionEvent *, DataNode *) override
 
- Protected Member Functions inherited from mitk::EventStateMachine
 EventStateMachine ()
 
virtual ~EventStateMachine ()
 
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 (if modified by the SlicesCoordinator) 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 ()
 
virtual ~InteractionEventHandler ()
 
PropertyList::Pointer GetAttributes () const
 
std::string MapToEventVariant (InteractionEvent *interactionEvent)
 
virtual void ConfigurationChanged ()
 

Protected Attributes

mitk::ContourModel::Pointer m_Contour
 
mitk::DataNode::Pointer m_ContourModelNode
 
mitk::ContourModel::Pointer m_LiveWireContour
 
mitk::DataNode::Pointer m_LiveWireContourNode
 
mitk::ContourModel::Pointer m_EditingContour
 
mitk::DataNode::Pointer m_EditingContourNode
 
mitk::ContourModelLiveWireInteractor::Pointer m_ContourInteractor
 
mitk::Image::Pointer m_WorkingSlice
 
mitk::ImageLiveWireContourModelFilter::Pointer m_LiveWireFilter
 
bool m_CreateAndUseDynamicCosts
 
std::vector< std::pair< mitk::DataNode::Pointer, mitk::PlaneGeometry::Pointer > > m_WorkingContours
 
std::vector< std::pair< mitk::DataNode::Pointer, mitk::PlaneGeometry::Pointer > > m_EditingContours
 
std::vector< mitk::ContourModelLiveWireInteractor::Pointerm_LiveWireNodes
 
- 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...
 
ToolManagerm_ToolManager
 
- Protected Attributes inherited from mitk::EventStateMachine
bool m_IsActive
 
UndoControllerm_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 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
 

Detailed Description

A 2D segmentation tool based on LiveWire approach. The contour between the last user added point and the current mouse position is computed by searching the shortest path according to specific features of the image. The contour thus snappest to the boundary of objects.

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

Definition at line 49 of file mitkLiveWireTool2D.h.

Constructor & Destructor Documentation

mitk::LiveWireTool2D::LiveWireTool2D ( )
protected

Definition at line 54 of file mitkLiveWireTool2D.cpp.

mitk::LiveWireTool2D::~LiveWireTool2D ( )
protectedvirtual

Definition at line 58 of file mitkLiveWireTool2D.cpp.

Member Function Documentation

void mitk::LiveWireTool2D::Activated ( )
overrideprotectedvirtual

Called when the tool gets activated.

Derived tools should call their parents implementation at the beginning of the overriding function.

Reimplemented from mitk::Tool.

Definition at line 144 of file mitkLiveWireTool2D.cpp.

void mitk::LiveWireTool2D::ClearSegmentation ( )

Delete all current contour objects.

Definition at line 220 of file mitkLiveWireTool2D.cpp.

Pointer mitk::LiveWireTool2D::Clone ( ) const
void mitk::LiveWireTool2D::ConfirmSegmentation ( )

Convert all current contour objects to binary segmentation image.

Definition at line 168 of file mitkLiveWireTool2D.cpp.

References mitk::ContourModelUtils::FillContourInSlice(), mitk::BaseData::GetTimeGeometry(), and mitk::ContourModelUtils::ProjectContourTo2DSlice().

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::EventStateMachine.

Definition at line 111 of file mitkLiveWireTool2D.cpp.

References CONNECT_CONDITION, and CONNECT_FUNCTION.

void mitk::LiveWireTool2D::Deactivated ( )
overrideprotectedvirtual

Called when the tool gets deactivated.

Derived tools should call their parents implementation at the end of the overriding function.

Reimplemented from mitk::Tool.

Definition at line 151 of file mitkLiveWireTool2D.cpp.

void mitk::LiveWireTool2D::EnableContourLiveWireInteraction ( bool  on)
protected

Enable interaction with contours. Contours that are created by the tool can be edited using LiveWire functionality. Points can thus be inserted, moved or deleted.

Parameters
ontrue to have interaction enabled.

Definition at line 157 of file mitkLiveWireTool2D.cpp.

template<typename TPixel , unsigned int VImageDimension>
void mitk::LiveWireTool2D::FindHighestGradientMagnitudeByITK ( itk::Image< TPixel, VImageDimension > *  inputImage,
itk::Index< 3 > &  index,
itk::Index< 3 > &  returnIndex 
)
protected

Definition at line 588 of file mitkLiveWireTool2D.cpp.

References mitk::New().

void mitk::LiveWireTool2D::FinishTool ( )
protected

Finish contour interaction.

Definition at line 489 of file mitkLiveWireTool2D.cpp.

References us::GetModuleContext(), and mitk::DataInteractor::New().

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

Returns the path of a cursor icon.

Reimplemented from mitk::Tool.

Definition at line 134 of file mitkLiveWireTool2D.cpp.

References ModuleContext::GetModule(), and us::GetModuleContext().

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.

Definition at line 129 of file mitkLiveWireTool2D.cpp.

References ModuleContext::GetModule(), and us::GetModuleContext().

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.

Definition at line 139 of file mitkLiveWireTool2D.cpp.

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.

Definition at line 124 of file mitkLiveWireTool2D.cpp.

bool mitk::LiveWireTool2D::IsPositionEventInsideImageRegion ( mitk::InteractionPositionEvent positionEvent,
mitk::BaseData data 
)
protectedvirtual

IsPositionEventInsideImageRegion.

Parameters
interactionEvent
Returns

Definition at line 227 of file mitkLiveWireTool2D.cpp.

References mitk::BaseData::GetGeometry(), mitk::InteractionPositionEvent::GetPositionInWorld(), mitk::BaseGeometry::IsInside(), and MITK_WARN.

mitk::LiveWireTool2D::mitkClassMacro ( LiveWireTool2D  ,
SegTool2D   
)
static Pointer mitk::LiveWireTool2D::New ( )
static
bool mitk::LiveWireTool2D::OnCheckPoint ( const InteractionEvent interactionEvent)
protectedvirtual

Check double click on first control point to finish the LiveWire tool.

Definition at line 427 of file mitkLiveWireTool2D.cpp.

References mitk::InteractionPositionEvent::GetPositionInWorld(), mitk::InteractionEvent::GetSender(), and mitk::BaseRenderer::GetTimeStep().

void mitk::LiveWireTool2D::OnFinish ( StateMachineAction ,
InteractionEvent interactionEvent 
)
protectedvirtual
void mitk::LiveWireTool2D::OnMouseMoveNoDynamicCosts ( StateMachineAction ,
InteractionEvent interactionEvent 
)
protectedvirtual

Don't use dynamic cost map for LiveWire calculation.

Definition at line 419 of file mitkLiveWireTool2D.cpp.

Member Data Documentation

mitk::ContourModel::Pointer mitk::LiveWireTool2D::m_Contour
protected

Definition at line 115 of file mitkLiveWireTool2D.h.

mitk::ContourModelLiveWireInteractor::Pointer mitk::LiveWireTool2D::m_ContourInteractor
protected

Definition at line 133 of file mitkLiveWireTool2D.h.

mitk::DataNode::Pointer mitk::LiveWireTool2D::m_ContourModelNode
protected

Definition at line 118 of file mitkLiveWireTool2D.h.

bool mitk::LiveWireTool2D::m_CreateAndUseDynamicCosts
protected

Definition at line 141 of file mitkLiveWireTool2D.h.

mitk::ContourModel::Pointer mitk::LiveWireTool2D::m_EditingContour
protected

Definition at line 127 of file mitkLiveWireTool2D.h.

mitk::DataNode::Pointer mitk::LiveWireTool2D::m_EditingContourNode
protected

Definition at line 130 of file mitkLiveWireTool2D.h.

std::vector<std::pair<mitk::DataNode::Pointer, mitk::PlaneGeometry::Pointer> > mitk::LiveWireTool2D::m_EditingContours
protected

Definition at line 144 of file mitkLiveWireTool2D.h.

mitk::ContourModel::Pointer mitk::LiveWireTool2D::m_LiveWireContour
protected

Definition at line 121 of file mitkLiveWireTool2D.h.

mitk::DataNode::Pointer mitk::LiveWireTool2D::m_LiveWireContourNode
protected

Definition at line 124 of file mitkLiveWireTool2D.h.

mitk::ImageLiveWireContourModelFilter::Pointer mitk::LiveWireTool2D::m_LiveWireFilter
protected

Definition at line 139 of file mitkLiveWireTool2D.h.

std::vector<mitk::ContourModelLiveWireInteractor::Pointer> mitk::LiveWireTool2D::m_LiveWireNodes
protected

Definition at line 145 of file mitkLiveWireTool2D.h.

std::vector<std::pair<mitk::DataNode::Pointer, mitk::PlaneGeometry::Pointer> > mitk::LiveWireTool2D::m_WorkingContours
protected

Definition at line 143 of file mitkLiveWireTool2D.h.

mitk::Image::Pointer mitk::LiveWireTool2D::m_WorkingSlice
protected

Definition at line 136 of file mitkLiveWireTool2D.h.


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