Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

mitk::MorphologicTool Class Reference

#include <mitkMorphologicTool.h>

Inheritance diagram for mitk::MorphologicTool:
Inheritance graph
[legend]
Collaboration diagram for mitk::MorphologicTool:
Collaboration graph
[legend]

List of all members.

Public Types

typedef MorphologicTool Self
typedef Tool Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
const char * GetGroup () const
 Name of a group.
virtual unsigned int GetRadius ()
void SetRadius (unsigned int)
virtual bool GetPreview ()
virtual void SetPreview (bool _arg)
virtual void PreviewOn ()
virtual void PreviewOff ()
virtual void Activated ()
 Called when the tool gets activated (registered to mitk::GlobalInteraction).
virtual void Deactivated ()
 Called when the tool gets deactivated (unregistered from mitk::GlobalInteraction).
void AcceptPreview (const std::string &name, const Color &color)
virtual void CancelPreviewing ()

Protected Member Functions

 MorphologicTool ()
 MorphologicTool (const char *)
virtual ~MorphologicTool ()
virtual void UpdatePreview ()
virtual mitk::Image::Pointer ApplyFilter (mitk::Image::Pointer image)
virtual void SetupPreviewNodeFor (mitk::DataNode *nodeToProceed)
virtual void OnRoiDataChanged ()

Protected Attributes

unsigned int m_Radius
bool m_Preview
mitk::DataNode::Pointer m_FeedbackNode
mitk::DataNodem_NodeToProceed
mitk::DataNodem_OriginalNode

Detailed Description

Definition at line 9 of file mitkMorphologicTool.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::MorphologicTool::ConstPointer

Reimplemented from mitk::Tool.

Reimplemented in mitk::ClosingTool, mitk::DilateTool, mitk::ErodeTool, and mitk::OpeningTool.

Definition at line 13 of file mitkMorphologicTool.h.

typedef itk::SmartPointer<Self> mitk::MorphologicTool::Pointer

Reimplemented from mitk::Tool.

Reimplemented in mitk::ClosingTool, mitk::DilateTool, mitk::ErodeTool, and mitk::OpeningTool.

Definition at line 13 of file mitkMorphologicTool.h.

Reimplemented from mitk::Tool.

Reimplemented in mitk::ClosingTool, mitk::DilateTool, mitk::ErodeTool, and mitk::OpeningTool.

Definition at line 13 of file mitkMorphologicTool.h.

Reimplemented from mitk::Tool.

Reimplemented in mitk::ClosingTool, mitk::DilateTool, mitk::ErodeTool, and mitk::OpeningTool.

Definition at line 13 of file mitkMorphologicTool.h.


Constructor & Destructor Documentation

mitk::MorphologicTool::MorphologicTool (  ) [protected]

Definition at line 10 of file mitkMorphologicTool.cpp.

References m_FeedbackNode, mitk::BoolProperty::New(), mitk::StateMachine::New(), and mitk::Tool::SupportRoiOn().

                                     : Tool("dummy"),
m_Radius(0),
m_Preview(true)
{
  this->SupportRoiOn();

  m_FeedbackNode = mitk::DataNode::New();
  m_FeedbackNode->SetColor(1.0,1.0,1.0);
  m_FeedbackNode->SetName("feedback node");
  m_FeedbackNode->SetProperty("helper object", mitk::BoolProperty::New("true"));
}
mitk::MorphologicTool::MorphologicTool ( const char *   ) [protected]
mitk::MorphologicTool::~MorphologicTool (  ) [protected, virtual]

Definition at line 22 of file mitkMorphologicTool.cpp.

{

}

Member Function Documentation

void mitk::MorphologicTool::AcceptPreview ( const std::string &  name,
const Color color 
)

Definition at line 32 of file mitkMorphologicTool.cpp.

References mitk::RenderingManager::GetInstance(), mitk::DataNode::New(), and mitk::RenderingManager::RequestUpdateAll().

{
  mitk::DataNode::Pointer resultNode = mitk::DataNode::New();

  mitk::Image::Pointer image;
  if (m_Preview)
    image = dynamic_cast<Image*>( m_FeedbackNode->GetData() );
  else
    image = ApplyFilter(dynamic_cast<Image*> (m_NodeToProceed->GetData()));

  if (image.IsNotNull())
  {
    resultNode->SetData(image);
    resultNode->SetName(name);
    resultNode->SetColor(color);

    if (mitk::DataStorage* ds = m_ToolManager->GetDataStorage())
    {
      ds->Add(resultNode);
    }
  }

  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  m_ToolManager->ActivateTool(-1);
}
void mitk::MorphologicTool::Activated (  ) [virtual]

Called when the tool gets activated (registered to mitk::GlobalInteraction).

Derived tools should call their parents implementation.

Reimplemented from mitk::Tool.

Definition at line 111 of file mitkMorphologicTool.cpp.

References OnRoiDataChanged().

{
  m_ToolManager->RoiDataChanged += mitk::MessageDelegate<mitk::MorphologicTool>(this, &mitk::MorphologicTool::OnRoiDataChanged);

  m_OriginalNode = m_ToolManager->GetReferenceData(0);
  m_NodeToProceed = m_OriginalNode;

  if( m_NodeToProceed != NULL)
    SetupPreviewNodeFor(m_NodeToProceed);
  //if no referencedata is set deactivate tool
  else
    m_ToolManager->ActivateTool(-1);
}
mitk::Image::Pointer mitk::MorphologicTool::ApplyFilter ( mitk::Image::Pointer  image ) [protected, virtual]

Reimplemented in mitk::ClosingTool, mitk::DilateTool, mitk::ErodeTool, and mitk::OpeningTool.

Definition at line 86 of file mitkMorphologicTool.cpp.

{
  return image;
}
void mitk::MorphologicTool::CancelPreviewing (  ) [virtual]

Definition at line 58 of file mitkMorphologicTool.cpp.

{
  m_ToolManager->ActivateTool(-1);
}
void mitk::MorphologicTool::Deactivated (  ) [virtual]

Called when the tool gets deactivated (unregistered from mitk::GlobalInteraction).

Derived tools should call their parents implementation.

Reimplemented from mitk::Tool.

Definition at line 125 of file mitkMorphologicTool.cpp.

References mitk::RenderingManager::GetInstance(), OnRoiDataChanged(), and mitk::RenderingManager::RequestUpdateAll().

virtual const char* mitk::MorphologicTool::GetClassName (  ) const [virtual]

Reimplemented from mitk::Tool.

Reimplemented in mitk::ClosingTool, mitk::DilateTool, mitk::ErodeTool, and mitk::OpeningTool.

const char * mitk::MorphologicTool::GetGroup (  ) const [virtual]

Name of a group.

You can group several tools by assigning a group name. Graphical tool selectors might use this information to group tools. (What other reason could there be?)

Reimplemented from mitk::Tool.

Definition at line 27 of file mitkMorphologicTool.cpp.

{
  return "morphologic";
}
virtual bool mitk::MorphologicTool::GetPreview (  ) [virtual]
virtual unsigned int mitk::MorphologicTool::GetRadius (  ) [virtual]
void mitk::MorphologicTool::OnRoiDataChanged (  ) [protected, virtual]

Definition at line 139 of file mitkMorphologicTool.cpp.

References mitk::CastToItkImage(), mitk::CastToMitkImage(), mitk::DataNode::GetData(), mitk::BoundingObjectToSegmentationFilter::New(), mitk::Image::New(), and mitk::DataNode::New().

Referenced by Activated(), and Deactivated().

{
  typedef itk::Image<int, 3> ItkImageType;
  typedef itk::Image<unsigned char, 3> ItkMaskType;
  typedef itk::MaskImageFilter<ItkImageType, ItkMaskType, ItkImageType> MaskFilterType;
  mitk::DataNode* node = m_ToolManager->GetRoiData(0);
  if (node == NULL)
  {
    this->SetupPreviewNodeFor(m_OriginalNode);
    m_NodeToProceed = m_OriginalNode;
    return;
  }

  mitk::DataNode::Pointer new_node = mitk::DataNode::New();
  mitk::Image* image = dynamic_cast<mitk::Image*> (m_OriginalNode->GetData());
  mitk::Image::Pointer new_image = mitk::Image::New();

  mitk::Image::Pointer roi;
  mitk::BoundingObject* boundingObject = dynamic_cast<mitk::BoundingObject*> (node->GetData());

  if (boundingObject)
  {
    mitk::BoundingObjectToSegmentationFilter::Pointer filter = mitk::BoundingObjectToSegmentationFilter::New();
    filter->SetBoundingObject( boundingObject);
    filter->SetInput(image);
    filter->Update();
    roi = filter->GetOutput();
  }
  else
    roi =  dynamic_cast<mitk::Image*> (node->GetData());

  if (roi)
  {
    MaskFilterType::Pointer filter = MaskFilterType::New();
    ItkMaskType::Pointer itkRoi = ItkMaskType::New();
    ItkImageType::Pointer itkImage = ItkImageType::New();
    mitk::CastToItkImage(image, itkImage);
    mitk::CastToItkImage(roi, itkRoi);
    filter->SetInput1(itkImage);
    filter->SetInput2(itkRoi);
    filter->SetOutsideValue(0);
    filter->Update();
    mitk::CastToMitkImage(filter->GetOutput(),new_image);
  }
  new_node->SetData(new_image);

  this->SetupPreviewNodeFor(new_node);
  m_NodeToProceed = new_node;

  UpdatePreview();
}
virtual void mitk::MorphologicTool::PreviewOff (  ) [virtual]
virtual void mitk::MorphologicTool::PreviewOn (  ) [virtual]
virtual void mitk::MorphologicTool::SetPreview ( bool  _arg ) [virtual]
void mitk::MorphologicTool::SetRadius ( unsigned int  value )

Definition at line 63 of file mitkMorphologicTool.cpp.

{
  m_Radius = value;
  this->UpdatePreview();
}
void mitk::MorphologicTool::SetupPreviewNodeFor ( mitk::DataNode nodeToProceed ) [protected, virtual]

Definition at line 91 of file mitkMorphologicTool.cpp.

References mitk::DataNode::GetData().

{
  if (nodeToProceed)
  {
    mitk::Image::Pointer image = dynamic_cast<Image*>( nodeToProceed->GetData() );
    if (image.IsNotNull())
    {
      // initialize and a new node with the same image as our reference image
      m_FeedbackNode->SetData( image );

      if (mitk::DataStorage* ds = m_ToolManager->GetDataStorage())
      {
        if (ds->Exists(m_FeedbackNode))
          ds->Remove(m_FeedbackNode);
        ds->Add( m_FeedbackNode, nodeToProceed );
      }
    }
  }
}
void mitk::MorphologicTool::UpdatePreview (  ) [protected, virtual]

Definition at line 69 of file mitkMorphologicTool.cpp.

References mitk::RenderingManager::GetInstance(), and mitk::RenderingManager::RequestUpdateAll().

{

  mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( m_NodeToProceed->GetData() );

  if (image && m_Preview)
  {
    if (m_Radius == 0)
      m_FeedbackNode->SetData(image);
    else
    {
      m_FeedbackNode->SetData(ApplyFilter(image));
    }
  }
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}

Member Data Documentation

Definition at line 41 of file mitkMorphologicTool.h.

Referenced by MorphologicTool().

Definition at line 42 of file mitkMorphologicTool.h.

Definition at line 43 of file mitkMorphologicTool.h.

Definition at line 39 of file mitkMorphologicTool.h.

unsigned int mitk::MorphologicTool::m_Radius [protected]

Definition at line 38 of file mitkMorphologicTool.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines