Public Member Functions | Protected Member Functions

QmitkAutocropAction Class Reference

#include <QmitkAutocropAction.h>

Inheritance diagram for QmitkAutocropAction:
Inheritance graph
[legend]
Collaboration diagram for QmitkAutocropAction:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkAutocropAction ()
virtual ~QmitkAutocropAction ()
void Run (const std::vector< mitk::DataNode * > &selectedNodes)
void SetDataStorage (mitk::DataStorage *dataStorage)
void SetSmoothed (bool smoothed)
void SetFunctionality (berry::QtViewPart *functionality)

Protected Member Functions

mitk::Image::Pointer IncreaseCroppedImageSize (mitk::Image::Pointer image)

Detailed Description

Definition at line 12 of file QmitkAutocropAction.h.


Constructor & Destructor Documentation

QmitkAutocropAction::QmitkAutocropAction (  )

Definition at line 13 of file QmitkAutocropAction.cpp.

{
}
QmitkAutocropAction::~QmitkAutocropAction (  ) [virtual]

Definition at line 17 of file QmitkAutocropAction.cpp.

{
}

Member Function Documentation

mitk::Image::Pointer QmitkAutocropAction::IncreaseCroppedImageSize ( mitk::Image::Pointer  image ) [protected]

Definition at line 66 of file QmitkAutocropAction.cpp.

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

Referenced by Run().

{
  typedef itk::Image< short, 3 > ImageType;
  typedef itk::Image< unsigned char, 3 > PADOutputImageType;
  ImageType::Pointer itkTransformImage = ImageType::New();
  mitk::CastToItkImage( image, itkTransformImage );

  typedef itk::ConstantPadImageFilter< ImageType, PADOutputImageType > PadFilterType;
  PadFilterType::Pointer padFilter = PadFilterType::New();

  unsigned long upperPad[3];
  unsigned long lowerPad[3];
  int borderLiner = 6;

  mitk::Point3D mitkOriginPoint;
  double origin[3];
  origin[0]=0;
  origin[1]=0;
  origin[2]=0;
  itkTransformImage->SetOrigin(origin);

  lowerPad[0]=borderLiner/2;
  lowerPad[1]=borderLiner/2;
  lowerPad[2]=borderLiner/2;

  upperPad[0]=borderLiner/2;
  upperPad[1]=borderLiner/2;
  upperPad[2]=borderLiner/2;

  padFilter->SetInput(itkTransformImage);
  padFilter->SetConstant(0);
  padFilter->SetPadUpperBound(upperPad);
  padFilter->SetPadLowerBound(lowerPad);
  padFilter->UpdateLargestPossibleRegion();


  mitk::Image::Pointer paddedImage = mitk::Image::New();
  mitk::CastToMitkImage(padFilter->GetOutput(), paddedImage);

  paddedImage->SetGeometry(image->GetGeometry());

  //calculate translation vector according to padding to get the new origin
  mitk::Vector3D transVector = image->GetGeometry()->GetSpacing();
  transVector[0] = -(borderLiner/2);
  transVector[1] = -(borderLiner/2);
  transVector[2] = -(borderLiner/2);

  mitk::Vector3D newTransVectorInmm = image->GetGeometry()->GetSpacing();

  image->GetGeometry()->IndexToWorld(mitkOriginPoint, transVector, newTransVectorInmm);
  paddedImage->GetGeometry()->Translate(newTransVectorInmm);
  //paddedImage->SetRequestedRegionToLargestPossibleRegion();

  return paddedImage;
}
void QmitkAutocropAction::Run ( const std::vector< mitk::DataNode * > &  selectedNodes )

Definition at line 21 of file QmitkAutocropAction.cpp.

References mitk::DataNode::GetData(), mitk::ProgressBar::GetInstance(), IncreaseCroppedImageSize(), MITK_ERROR, MITK_INFO, mitk::AutoCropImageFilter::New(), and mitk::DataNode::SetData().

{
   NodeList selection = selectedNodes;

  for ( NodeList::iterator iter = selection.begin(); iter != selection.end(); ++iter )
  {
    mitk::DataNode* node = *iter;

    if (node)
    {
      mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( node->GetData() );
      if (image.IsNull()) return;

      mitk::ProgressBar::GetInstance()->AddStepsToDo(10);
      mitk::ProgressBar::GetInstance()->Progress(2);

      qApp->processEvents();

      mitk::AutoCropImageFilter::Pointer cropFilter = mitk::AutoCropImageFilter::New();
      cropFilter->SetInput( image );
      cropFilter->SetBackgroundValue( 0 );
      try
      {
        cropFilter->Update();

        image = cropFilter->GetOutput();

        if (image.IsNotNull())
        {
          node->SetData( this->IncreaseCroppedImageSize(image) ); // bug fix 3145
        }
      }
      catch(...)
      {
        MITK_ERROR << "Cropping image failed...";
      }
      mitk::ProgressBar::GetInstance()->Progress(8);
    }
    else
    {
      MITK_INFO << "   a NULL node selected";
    }
  }
}
void QmitkAutocropAction::SetDataStorage ( mitk::DataStorage dataStorage )

Definition at line 127 of file QmitkAutocropAction.cpp.

{
  //not needed
}
void QmitkAutocropAction::SetFunctionality ( berry::QtViewPart functionality ) [virtual]

Implements mitk::IContextMenuAction.

Definition at line 132 of file QmitkAutocropAction.cpp.

{
  //not needed
}
void QmitkAutocropAction::SetSmoothed ( bool  smoothed ) [virtual]

Implements mitk::IContextMenuAction.

Definition at line 122 of file QmitkAutocropAction.cpp.

{
 //not needed
}

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