diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake b/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake index d73169c874..d1857f2cda 100644 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake +++ b/Plugins/org.mitk.gui.qt.multilabelsegmentation/files.cmake @@ -1,105 +1,103 @@ set(SRC_CPP_FILES QmitkMultiLabelSegmentationPreferencePage.cpp ) set(INTERNAL_CPP_FILES mitkPluginActivator.cpp QmitkMultiLabelSegmentationView.cpp QmitkThresholdAction.cpp - QmitkAutocropAction.cpp QmitkConvertSurfaceToLabelAction.cpp QmitkConvertMaskToLabelAction.cpp QmitkConvertToMultiLabelSegmentationAction.cpp QmitkCreateMultiLabelSegmentationAction.cpp QmitkLoadMultiLabelPresetAction.cpp QmitkCreateMultiLabelPresetAction.cpp Common/QmitkDataSelectionWidget.cpp SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesView.cpp SegmentationUtilities/QmitkSegmentationUtilityWidget.cpp SegmentationUtilities/BooleanOperations/QmitkBooleanOperationsWidget.cpp SegmentationUtilities/MorphologicalOperations/QmitkMorphologicalOperationsWidget.cpp SegmentationUtilities/SurfaceToImage/QmitkSurfaceToImageWidget.cpp SegmentationUtilities/ImageMasking/QmitkImageMaskingWidget.cpp SegmentationUtilities/ConvertToMl/QmitkConvertToMlWidget.cpp ) set(UI_FILES src/internal/QmitkMultiLabelSegmentationControls.ui src/internal/Common/QmitkDataSelectionWidgetControls.ui src/internal/SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesViewControls.ui src/internal/SegmentationUtilities/BooleanOperations/QmitkBooleanOperationsWidgetControls.ui src/internal/SegmentationUtilities/MorphologicalOperations/QmitkMorphologicalOperationsWidgetControls.ui src/internal/SegmentationUtilities/SurfaceToImage/QmitkSurfaceToImageWidgetControls.ui src/internal/SegmentationUtilities/ImageMasking/QmitkImageMaskingWidgetControls.ui src/internal/SegmentationUtilities/ConvertToMl/QmitkConvertToMlWidgetControls.ui ) set(MOC_H_FILES src/QmitkMultiLabelSegmentationPreferencePage.h src/internal/mitkPluginActivator.h src/internal/QmitkMultiLabelSegmentationView.h src/internal/QmitkThresholdAction.h - src/internal/QmitkAutocropAction.h src/internal/QmitkConvertSurfaceToLabelAction.h src/internal/QmitkLoadMultiLabelPresetAction.h src/internal/QmitkCreateMultiLabelPresetAction.h src/internal/QmitkConvertMaskToLabelAction.h src/internal/QmitkConvertToMultiLabelSegmentationAction.h src/internal/QmitkCreateMultiLabelSegmentationAction.h src/internal/Common/QmitkDataSelectionWidget.h src/internal/SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesView.h src/internal/SegmentationUtilities/QmitkSegmentationUtilityWidget.h src/internal/SegmentationUtilities/BooleanOperations/QmitkBooleanOperationsWidget.h src/internal/SegmentationUtilities/MorphologicalOperations/QmitkMorphologicalOperationsWidget.h src/internal/SegmentationUtilities/SurfaceToImage/QmitkSurfaceToImageWidget.h src/internal/SegmentationUtilities/ImageMasking/QmitkImageMaskingWidget.h src/internal/SegmentationUtilities/ConvertToMl/QmitkConvertToMlWidget.h ) set(CACHED_RESOURCE_FILES resources/BooleanDifference_48x48.png resources/BooleanIntersection_48x48.png resources/BooleanOperations_48x48.png resources/BooleanUnion_48x48.png resources/Closing_48x48.png resources/CTKWidgets_48x48.png resources/deformablePlane.png resources/Dilate_48x48.png resources/Erode_48x48.png resources/FillHoles_48x48.png resources/Icons.svg resources/ImageMasking_48x48.png resources/MorphologicalOperations_48x48.png resources/multilabelsegmentation.svg resources/multilabelsegmentation_utilities.svg resources/NewLabel_48x48.png resources/NewSegmentationSession_48x48.png resources/Opening_48x48.png resources/SurfaceToImage_48x48.png plugin.xml ) set(QRC_FILES resources/multilabelsegmentation.qrc resources/MultiLabelSegmentationUtilities.qrc resources/MorphologicalOperationsWidget.qrc resources/BooleanOperationsWidget.qrc ) set(CPP_FILES) foreach(file ${SRC_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/${file}) endforeach(file ${SRC_CPP_FILES}) #usFunctionEmbedResources( #CPP_FILES # LIBRARY_NAME "liborg_mitk_gui_qt_multilabelsegmentation" #ROOT_DIR resources #FILES Interactions/SegmentationInteraction.xml # Interactions/ConfigSegmentation.xml #) foreach(file ${INTERNAL_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/internal/${file}) endforeach(file ${INTERNAL_CPP_FILES}) diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkAutocropAction.cpp b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkAutocropAction.cpp deleted file mode 100644 index b04f88f974..0000000000 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkAutocropAction.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ -#include "QmitkAutocropAction.h" - -#include "mitkAutoCropImageFilter.h" -#include "mitkImageCast.h" -#include "mitkRenderingManager.h" -#include "mitkProgressBar.h" -#include - -#include - -//needed for qApp -#include - -QmitkAutocropAction::QmitkAutocropAction() -{ -} - -QmitkAutocropAction::~QmitkAutocropAction() -{ -} - -void QmitkAutocropAction::Run( const QList &selectedNodes ) -{ - foreach ( mitk::DataNode::Pointer node, selectedNodes ) - { - if (node) - { - mitk::Image::Pointer image = dynamic_cast( 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 ); - cropFilter->SetMarginFactor(1.5); - try - { - cropFilter->Update(); - - image = cropFilter->GetOutput(); - - if (image.IsNotNull()) - { - - if (image->GetDimension() == 4) - { - MITK_INFO << "4D AUTOCROP DOES NOT WORK AT THE MOMENT"; - throw "4D AUTOCROP DOES NOT WORK AT THE MOMENT"; - - unsigned int timesteps = image->GetDimension(3); - for (unsigned int i = 0; i < timesteps; i++) - { - mitk::ImageTimeSelector::Pointer imageTimeSelector = mitk::ImageTimeSelector::New(); - imageTimeSelector->SetInput(image); - imageTimeSelector->SetTimeNr(i); - imageTimeSelector->UpdateLargestPossibleRegion(); - - // We split a long nested code line into separate calls for debugging: - mitk::ImageSource::OutputImageType *_3dSlice = imageTimeSelector->GetOutput(); - mitk::Image::Pointer _cropped3dSlice = this->IncreaseCroppedImageSize(_3dSlice); - - // +++ BUG +++ BUG +++ BUG +++ BUG +++ BUG +++ BUG +++ BUG +++ - { - mitk::ImageWriteAccessor writeAccess(_cropped3dSlice); - void *_data = writeAccess.GetData(); - - // - // We write some stripes into the image - if ((i & 1) == 0) - { - int depth = _cropped3dSlice->GetDimension(2); - int height = _cropped3dSlice->GetDimension(1); - int width = _cropped3dSlice->GetDimension(0); - - for (int z = 0; z < depth; ++z) - for (int y = 0; y < height; ++y) - for (int x = 0; x < width; ++x) - reinterpret_cast(_data)[(width * height * z) + (width * y) + x] = x & 1; - } - // - - image->SetVolume(_data, i); - } - } - node->SetData( image ); // bug fix 3145 - } - else - { - node->SetData( this->IncreaseCroppedImageSize(image) ); // bug fix 3145 - } - // Reinit node - mitk::RenderingManager::GetInstance()->InitializeViews( - node->GetData()->GetTimeGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true ); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - - } - } - catch(...) - { - MITK_ERROR << "Cropping image failed..."; - } - mitk::ProgressBar::GetInstance()->Progress(8); - } - else - { - MITK_INFO << " a nullptr node selected"; - } - } -} - -mitk::Image::Pointer QmitkAutocropAction::IncreaseCroppedImageSize( mitk::Image::Pointer image ) -{ - 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(); - - itk::SizeValueType upperPad[3]; - itk::SizeValueType lowerPad[3]; - int borderLiner = 3; - - mitk::Point3D mitkOriginPoint; - double origin[3]; - origin[0]=0; - origin[1]=0; - origin[2]=0; - itkTransformImage->SetOrigin(origin); - - lowerPad[0]=borderLiner; - lowerPad[1]=borderLiner; - lowerPad[2]=borderLiner; - - upperPad[0]=borderLiner; - upperPad[1]=borderLiner; - upperPad[2]=borderLiner; - - padFilter->SetInput(itkTransformImage); - padFilter->SetConstant(0); - padFilter->SetPadUpperBound(upperPad); - padFilter->SetPadLowerBound(lowerPad); - padFilter->UpdateLargestPossibleRegion(); - - - mitk::Image::Pointer paddedImage = mitk::Image::New(); - paddedImage->InitializeByItk(padFilter->GetOutput()); - mitk::CastToMitkImage(padFilter->GetOutput(), paddedImage); - - //calculate translation according to padding to get the new origin - mitk::Point3D paddedOrigin = image->GetGeometry()->GetOrigin(); - mitk::Vector3D spacing = image->GetGeometry()->GetSpacing(); - paddedOrigin[0] -= (borderLiner)*spacing[0]; - paddedOrigin[1] -= (borderLiner)*spacing[1]; - paddedOrigin[2] -= (borderLiner)*spacing[2]; - - paddedImage->GetGeometry()->SetOrigin( paddedOrigin ); - - return paddedImage; -} - -void QmitkAutocropAction::SetSmoothed(bool /*smoothed*/) -{ - //not needed -} - -void QmitkAutocropAction::SetDecimated(bool /*decimated*/) -{ - //not needed -} - -void QmitkAutocropAction::SetDataStorage(mitk::DataStorage* /*dataStorage*/) -{ - //not needed -} - -void QmitkAutocropAction::SetFunctionality(berry::QtViewPart* /*functionality*/) -{ - //not needed -} diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkAutocropAction.h b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkAutocropAction.h deleted file mode 100644 index eb00262ea5..0000000000 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/QmitkAutocropAction.h +++ /dev/null @@ -1,50 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ -#ifndef QMITK_AUTOCROPACTION_H -#define QMITK_AUTOCROPACTION_H - -#include "mitkIContextMenuAction.h" - -#include "org_mitk_gui_qt_multilabelsegmentation_Export.h" - -#include "vector" -#include "mitkDataNode.h" -#include "mitkImage.h" - -class MITK_QT_SEGMENTATION QmitkAutocropAction : public QObject, public mitk::IContextMenuAction -{ - Q_OBJECT - Q_INTERFACES(mitk::IContextMenuAction) - -public: - - QmitkAutocropAction(); - ~QmitkAutocropAction() override; - - //interface methods - void Run( const QList& selectedNodes ) override; - void SetDataStorage(mitk::DataStorage* dataStorage) override; - void SetSmoothed(bool smoothed) override; - void SetDecimated(bool decimated) override; - void SetFunctionality(berry::QtViewPart* functionality) override; - -protected: - - mitk::Image::Pointer IncreaseCroppedImageSize( mitk::Image::Pointer image ); - -private: - - typedef QList NodeList; - -}; - -#endif // QMITK_AUTOCROPACTION_H diff --git a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp index 422afba21c..ac1102b2a0 100644 --- a/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp +++ b/Plugins/org.mitk.gui.qt.multilabelsegmentation/src/internal/mitkPluginActivator.cpp @@ -1,58 +1,56 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #include "mitkPluginActivator.h" #include "QmitkMultiLabelSegmentationView.h" #include "QmitkThresholdAction.h" -#include "QmitkAutocropAction.h" #include "QmitkConvertSurfaceToLabelAction.h" #include "QmitkConvertMaskToLabelAction.h" #include "QmitkConvertToMultiLabelSegmentationAction.h" #include "QmitkCreateMultiLabelSegmentationAction.h" #include "QmitkMultiLabelSegmentationPreferencePage.h" #include "QmitkLoadMultiLabelPresetAction.h" #include "QmitkCreateMultiLabelPresetAction.h" #include "SegmentationUtilities/QmitkMultiLabelSegmentationUtilitiesView.h" #include ctkPluginContext* mitk::PluginActivator::m_Context = nullptr; //MLI TODO US_INITIALIZE_MODULE //("MultiLabelSegmentation", "liborg_mitk_gui_qt_multilabelsegmentation") void mitk::PluginActivator::start(ctkPluginContext *context) { BERRY_REGISTER_EXTENSION_CLASS(QmitkMultiLabelSegmentationView, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkThresholdAction, context) - BERRY_REGISTER_EXTENSION_CLASS(QmitkAutocropAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkConvertSurfaceToLabelAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkConvertMaskToLabelAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkConvertToMultiLabelSegmentationAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkCreateMultiLabelSegmentationAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkCreateMultiLabelPresetAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkLoadMultiLabelPresetAction, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkMultiLabelSegmentationPreferencePage, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkMultiLabelSegmentationUtilitiesView, context) m_Context = context; } void mitk::PluginActivator::stop(ctkPluginContext*) { } ctkPluginContext* mitk::PluginActivator::getContext() { return m_Context; }