#include <QmitkAutocropAction.h>
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) |
Definition at line 12 of file QmitkAutocropAction.h.
QmitkAutocropAction::QmitkAutocropAction | ( | ) |
Definition at line 13 of file QmitkAutocropAction.cpp.
{ }
QmitkAutocropAction::~QmitkAutocropAction | ( | ) | [virtual] |
Definition at line 17 of file QmitkAutocropAction.cpp.
{ }
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
}