Medical Imaging Interaction Toolkit
2018.4.99-389bf124
Medical Imaging Interaction Toolkit
|
A slice based region growing tool. More...
#include <mitkRegionGrowingTool.h>
Public Member Functions | |
mitkClassMacro (RegionGrowingTool, FeedbackContourTool) | |
Pointer | Clone () const |
const char ** | GetXPM () const override |
Returns an icon in the XPM format. More... | |
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... | |
![]() | |
mitkClassMacro (FeedbackContourTool, 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... | |
![]() | |
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) |
DataNode::Pointer | CreateSegmentationNode (Image *image, const std::string &organName, const mitk::Color &color) |
virtual bool | CanHandle (BaseData *referenceData) const |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
InteractionEventObserver () | |
virtual | ~InteractionEventObserver () |
void | Disable () |
void | Enable () |
bool | IsEnabled () const |
Static Public Member Functions | |
static Pointer | New () |
![]() | |
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 const char * | GetStaticNameOfClass () |
![]() | |
static const char * | GetStaticNameOfClass () |
Protected Member Functions | |
RegionGrowingTool () | |
~RegionGrowingTool () override | |
void | ConnectActionsAndFunctions () override |
void | Activated () override |
Called when the tool gets activated. More... | |
void | Deactivated () override |
Called when the tool gets deactivated. More... | |
virtual void | OnMousePressed (StateMachineAction *, InteractionEvent *interactionEvent) |
OnMousePressed is called when the user clicks. Calls either OnMousePressedInside() or OnMousePressedOutside(). More... | |
virtual void | OnMousePressedInside () |
OnMousePressedInside can be used to implement behaviour when the user clicks inside a segmentation. More... | |
virtual void | OnMousePressedOutside (StateMachineAction *, InteractionEvent *interactionEvent) |
OnMousePressedOutside is called when the user clicks outside of the segmented area. Grows a region. More... | |
virtual void | OnMouseMoved (StateMachineAction *, InteractionEvent *interactionEvent) |
OnMouseMoved is called when the user moves the mouse with the left mouse button pressed. Adjusts the thresholds. Up: Increase upper threshold, decrease lower threshold. Down: Decrease upper threshold, increase lower threshold. Right: Increase both thresholds. Left: Decrease both thresholds. More... | |
virtual void | OnMouseReleased (StateMachineAction *, InteractionEvent *interactionEvent) |
OnMouseReleased converts the feedback contour to a segmentation. More... | |
template<typename TPixel , unsigned int imageDimension> | |
void | GetNeighborhoodAverage (itk::Image< TPixel, imageDimension > *itkImage, itk::Index< imageDimension > index, ScalarType *result, unsigned int neighborhood=1) |
Template to calculate average pixel value around index using a square/cube with radius neighborhood. Example: 1 = 3x3 pixels, 2 = 5x5 pixels, etc. More... | |
template<typename TPixel , unsigned int imageDimension> | |
void | IsInsideSegmentation (itk::Image< TPixel, imageDimension > *itkImage, itk::Index< imageDimension > index, bool *result) |
Template to check whether index is inside already segmented area. More... | |
template<typename TPixel , unsigned int imageDimension> | |
void | StartRegionGrowing (itk::Image< TPixel, imageDimension > *itkImage, itk::Index< imageDimension > seedPoint, std::array< ScalarType, 2 > thresholds, mitk::Image::Pointer &outputImage) |
Template that calls an ITK filter to do the region growing. More... | |
![]() | |
FeedbackContourTool () | |
FeedbackContourTool (const char *) | |
~FeedbackContourTool () override | |
ContourModel * | GetFeedbackContour () |
void | SetFeedbackContour (ContourModel::Pointer) |
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 () |
ContourModel::Pointer | ProjectContourTo2DSlice (Image *slice, ContourModel *contourIn3D, bool correctionForIpSegmentation=false, bool constrainToInside=true) |
Projects a contour onto an image point by point. Converts from world to index coordinates. More... | |
ContourModel::Pointer | BackProjectContourFrom2DSlice (const BaseGeometry *sliceGeometry, ContourModel *contourIn2D, bool correctionForIpSegmentation=false) |
Projects a slice index coordinates of a contour back into world coordinates. More... | |
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... | |
![]() | |
SegTool2D () | |
SegTool2D (const char *, const us::Module *interactorModule=nullptr) | |
~SegTool2D () override | |
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 (const std::vector< SliceInformation > &sliceList, bool writeSliceToVolume=true) |
void | WritePreviewOnWorkingImage (Image *targetSlice, Image *sourceSlice, Image *workingImage, int paintingPixelValue, int timestep) |
void | WriteSliceToVolume (const 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) |
![]() | |
virtual void | SetToolManager (ToolManager *) |
void | ConnectActionsAndFunctions () override |
Tool () | |
Tool (const char *, const us::Module *interactorModule=nullptr) | |
~Tool () override | |
void | Notify (InteractionEvent *interactionEvent, bool isHandled) override |
bool | FilterEvents (InteractionEvent *, DataNode *) override |
![]() | |
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) |
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 (if modified by the SlicesCoordinator) to its original state. More... | |
StateMachineTransition * | GetExecutableTransition (InteractionEvent *event) |
Returns the executable transition for the given event. More... | |
![]() | |
InteractionEventHandler () | |
~InteractionEventHandler () override | |
PropertyList::Pointer | GetAttributes () const |
std::string | MapToEventVariant (InteractionEvent *interactionEvent) |
virtual void | ConfigurationChanged () |
Protected Attributes | |
Image::Pointer | m_ReferenceSlice |
Image::Pointer | m_WorkingSlice |
ScalarType | m_SeedValue |
itk::Index< 3 > | m_SeedPoint |
std::array< ScalarType, 2 > | m_Thresholds |
std::array< ScalarType, 2 > | m_InitialThresholds |
Point2I | m_LastScreenPosition |
int | m_ScreenYDifference |
int | m_ScreenXDifference |
![]() | |
ContourModel::Pointer | m_FeedbackContour |
DataNode::Pointer | m_FeedbackContourNode |
bool | m_FeedbackContourVisible |
![]() | |
BaseRenderer * | m_LastEventSender |
unsigned int | m_LastEventSlice |
![]() | |
std::string | m_EventConfig |
Let subclasses change their event configuration. More... | |
ToolManager * | m_ToolManager |
![]() | |
bool | m_IsActive |
UndoController * | m_UndoController |
bool | m_UndoEnabled |
A slice based region growing tool.
When the user presses the mouse button, RegionGrowingTool will use the gray values at that position to initialize a region growing algorithm (in the affected 2D slice).
By moving the mouse up and down while the button is still pressed, the user can widen or narrow the threshold window, i.e. select more or less within the desired region. The current result of region growing will always be shown as a contour to the user.
After releasing the button, the current result of the region growing algorithm will be written to the working image of this tool's ToolManager.
If the first click is inside a segmentation, nothing will happen (other behaviour, for example removal of a region, can be implemented via OnMousePressedInside()).
$Author$
Definition at line 52 of file mitkRegionGrowingTool.h.
|
protected |
Definition at line 50 of file mitkRegionGrowingTool.cpp.
|
overrideprotected |
Definition at line 62 of file mitkRegionGrowingTool.cpp.
|
overrideprotectedvirtual |
Called when the tool gets activated.
Derived tools should call their parents implementation at the beginning of the overriding function.
Reimplemented from mitk::FeedbackContourTool.
Definition at line 97 of file mitkRegionGrowingTool.cpp.
Pointer mitk::RegionGrowingTool::Clone | ( | ) | const |
|
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 66 of file mitkRegionGrowingTool.cpp.
References CONNECT_FUNCTION, OnMouseMoved(), OnMousePressed(), and OnMouseReleased().
|
overrideprotectedvirtual |
Called when the tool gets deactivated.
Derived tools should call their parents implementation at the end of the overriding function.
Reimplemented from mitk::FeedbackContourTool.
Definition at line 102 of file mitkRegionGrowingTool.cpp.
|
overridevirtual |
Returns the path of a cursor icon.
Reimplemented from mitk::Tool.
Definition at line 85 of file mitkRegionGrowingTool.cpp.
References ModuleContext::GetModule(), us::GetModuleContext(), and us::Module::GetResource().
|
overridevirtual |
Returns the tool button icon of the tool wrapped by a usModuleResource.
Reimplemented from mitk::Tool.
Definition at line 78 of file mitkRegionGrowingTool.cpp.
References ModuleContext::GetModule(), us::GetModuleContext(), and us::Module::GetResource().
|
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 92 of file mitkRegionGrowingTool.cpp.
|
protected |
Template to calculate average pixel value around index using a square/cube with radius neighborhood. Example: 1 = 3x3 pixels, 2 = 5x5 pixels, etc.
Definition at line 109 of file mitkRegionGrowingTool.cpp.
References k(), and MITK_DEBUG.
Referenced by OnMousePressedOutside().
|
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 73 of file mitkRegionGrowingTool.cpp.
|
protected |
Template to check whether index is inside already segmented area.
Definition at line 171 of file mitkRegionGrowingTool.cpp.
Referenced by OnMousePressed().
mitk::RegionGrowingTool::mitkClassMacro | ( | RegionGrowingTool | , |
FeedbackContourTool | |||
) |
|
static |
|
protectedvirtual |
OnMouseMoved is called when the user moves the mouse with the left mouse button pressed. Adjusts the thresholds. Up: Increase upper threshold, decrease lower threshold. Down: Decrease upper threshold, increase lower threshold. Right: Increase both thresholds. Left: Decrease both thresholds.
Definition at line 483 of file mitkRegionGrowingTool.cpp.
References AccessFixedDimensionByItk_3, mitk::FeedbackContourTool::BackProjectContourFrom2DSlice(), mitk::RenderingManager::ForceImmediateUpdate(), mitk::RenderingManager::GetInstance(), m_InitialThresholds, m_LastScreenPosition, m_ReferenceSlice, m_ScreenXDifference, m_ScreenYDifference, m_SeedPoint, m_SeedValue, m_Thresholds, m_WorkingSlice, MITK_DEBUG, mitk::ImageToContourModelFilter::New(), mitk::ContourModel::New(), mitk::Image::New(), mitk::FeedbackContourTool::ProjectContourTo2DSlice(), mitk::FeedbackContourTool::SetFeedbackContour(), mitk::FeedbackContourTool::SetFeedbackContourVisible(), and StartRegionGrowing().
Referenced by ConnectActionsAndFunctions().
|
protectedvirtual |
OnMousePressed is called when the user clicks. Calls either OnMousePressedInside() or OnMousePressedOutside().
Definition at line 281 of file mitkRegionGrowingTool.cpp.
References AccessFixedDimensionByItk_2, mitk::SegTool2D::GetAffectedReferenceSlice(), mitk::SegTool2D::GetAffectedWorkingSlice(), mitk::BaseRenderer::GetSlice(), IsInsideSegmentation(), mitk::SegTool2D::m_LastEventSender, mitk::SegTool2D::m_LastEventSlice, m_LastScreenPosition, m_ReferenceSlice, m_SeedPoint, m_WorkingSlice, MITK_DEBUG, and OnMousePressedOutside().
Referenced by ConnectActionsAndFunctions().
|
protectedvirtual |
OnMousePressedInside can be used to implement behaviour when the user clicks inside a segmentation.
Definition at line 338 of file mitkRegionGrowingTool.cpp.
|
protectedvirtual |
OnMousePressedOutside is called when the user clicks outside of the segmented area. Grows a region.
Definition at line 404 of file mitkRegionGrowingTool.cpp.
References AccessFixedDimensionByItk_3, mitk::FeedbackContourTool::BackProjectContourFrom2DSlice(), mitk::RenderingManager::GetInstance(), GetNeighborhoodAverage(), mitk::ToolManager::GetReferenceData(), mitk::BaseRenderer::GetRenderWindow(), mitk::LevelWindow::GetWindow(), m_InitialThresholds, mitk::SegTool2D::m_LastEventSender, m_ReferenceSlice, m_SeedPoint, m_SeedValue, m_Thresholds, mitk::Tool::m_ToolManager, m_WorkingSlice, MITK_DEBUG, mitk::ContourModelUtils::MoveZerothContourTimeStep(), mitk::ImageToContourModelFilter::New(), mitk::ContourModel::New(), mitk::Image::New(), mitk::FeedbackContourTool::ProjectContourTo2DSlice(), mitk::RenderingManager::RequestUpdate(), mitk::FeedbackContourTool::SetFeedbackContour(), mitk::FeedbackContourTool::SetFeedbackContourVisible(), and StartRegionGrowing().
Referenced by OnMousePressed().
|
protectedvirtual |
OnMouseReleased converts the feedback contour to a segmentation.
Definition at line 564 of file mitkRegionGrowingTool.cpp.
References mitk::ContourModelUtils::FillContourInSlice(), mitk::FeedbackContourTool::GetFeedbackContour(), mitk::ContourModel::GetNumberOfVertices(), mitk::ContourModel::GetVertexAt(), mitk::ToolManager::GetWorkingData(), m_ScreenXDifference, m_ScreenYDifference, mitk::Tool::m_ToolManager, m_WorkingSlice, MITK_DEBUG, mitk::ContourModel::New(), mitk::FeedbackContourTool::ProjectContourTo2DSlice(), mitk::FeedbackContourTool::SetFeedbackContourVisible(), and mitk::SegTool2D::WriteBackSegmentationResult().
Referenced by ConnectActionsAndFunctions().
|
protected |
Template that calls an ITK filter to do the region growing.
Definition at line 187 of file mitkRegionGrowingTool.cpp.
References mitk::GrabItkImageMemory(), and MITK_DEBUG.
Referenced by OnMouseMoved(), and OnMousePressedOutside().
|
protected |
Definition at line 139 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), and OnMousePressedOutside().
|
protected |
Definition at line 140 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), and OnMousePressed().
|
protected |
Definition at line 133 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), OnMousePressed(), and OnMousePressedOutside().
|
protected |
Definition at line 142 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), and OnMouseReleased().
|
protected |
Definition at line 141 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), and OnMouseReleased().
|
protected |
Definition at line 137 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), OnMousePressed(), and OnMousePressedOutside().
|
protected |
Definition at line 136 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), and OnMousePressedOutside().
|
protected |
Definition at line 138 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), and OnMousePressedOutside().
|
protected |
Definition at line 134 of file mitkRegionGrowingTool.h.
Referenced by OnMouseMoved(), OnMousePressed(), OnMousePressedOutside(), and OnMouseReleased().