diff --git a/Modules/ImageStatisticsUI/files.cmake b/Modules/ImageStatisticsUI/files.cmake
index 9b02be1e28..da98be9964 100644
--- a/Modules/ImageStatisticsUI/files.cmake
+++ b/Modules/ImageStatisticsUI/files.cmake
@@ -1,26 +1,26 @@
 set(CPP_FILES
   Qmitk/QmitkHistogramVisualizationWidget.cpp
   Qmitk/QmitkIntensityProfileVisualizationWidget.cpp
   Qmitk/QmitkImageStatisticsTableModel.cpp
   Qmitk/QmitkImageStatisticsCalculationJob.cpp
-  Qmitk/QmitkTableModelToQString.cpp
+  Qmitk/QmitkTableModelToStringConverter.cpp
 )
 
 set(H_FILES
-  Qmitk/QmitkTableModelToQString.h
+  Qmitk/QmitkTableModelToStringConverter.h
 )
 
 set(TPP_FILES
 )
 
 set(UI_FILES
   Qmitk/QmitkHistogramVisualizationWidget.ui
   Qmitk/QmitkIntensityProfileVisualizationWidget.ui
 )
 
 set(MOC_H_FILES
   Qmitk/QmitkHistogramVisualizationWidget.h
   Qmitk/QmitkIntensityProfileVisualizationWidget.h
   Qmitk/QmitkImageStatisticsTableModel.h
   Qmitk/QmitkImageStatisticsCalculationJob.h
 )
diff --git a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp
index 9848cb78c0..6dcfcffe35 100644
--- a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp
+++ b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.cpp
@@ -1,223 +1,277 @@
 /*===================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center,
 Division of Medical and Biological Informatics.
 All rights reserved.
 
 This software is distributed WITHOUT ANY WARRANTY; without
 even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.
 
 See LICENSE.txt or http://www.mitk.org for details.
 
 ===================================================================*/
 
 #include "QmitkImageStatisticsReloadedView.h"
 
 // berry includes
 #include <berryWorkbenchPlugin.h>
 #include <berryIQtStyleManager.h>
 
 #include <QmitkChartWidget.h>
 #include <mitkNodePredicateAnd.h>
+#include <mitkNodePredicateOr.h>
 #include <mitkNodePredicateDataType.h>
 #include <mitkNodePredicateProperty.h>
 #include <mitkNodePredicateNot.h>
 #include <mitkStatusBar.h>
 
+#include <mitkPlanarFigureInteractor.h>
+
 const std::string QmitkImageStatisticsReloadedView::VIEW_ID = "org.mitk.views.imagestatisticsReloaded";
 
 QmitkImageStatisticsReloadedView::QmitkImageStatisticsReloadedView(QObject* /*parent*/, const char* /*name*/)
 {
   this->m_CalculationThread = new QmitkImageStatisticsCalculationJob();
 }
 
 QmitkImageStatisticsReloadedView::~QmitkImageStatisticsReloadedView()
 {
+  if (m_selectedPlanarFigure)
+    m_selectedPlanarFigure->RemoveObserver(m_PlanarFigureObserverTag);
 }
 
 void QmitkImageStatisticsReloadedView::CreateQtPartControl(QWidget *parent)
 {
   m_Controls.setupUi(parent);
   m_Controls.widget_histogram->SetTheme(this->GetColorTheme());
   PrepareDataStorageComboBoxes();
   CreateConnections();
 }
 
 void QmitkImageStatisticsReloadedView::CreateConnections()
 {
   connect(this->m_CalculationThread, &QmitkImageStatisticsCalculationJob::finished, this, &QmitkImageStatisticsReloadedView::OnStatisticsCalculationEnds, Qt::QueuedConnection);
 }
 
 void QmitkImageStatisticsReloadedView::PartClosed(const berry::IWorkbenchPartReference::Pointer& )
 {
 }
 
 void QmitkImageStatisticsReloadedView::FillStatisticsWidget(const std::vector<mitk::StatisticsContainer::ConstPointer>& statistics)
 {
   m_Controls.widget_statistics->Reset();
   m_Controls.widget_statistics->SetStatistics(statistics);
   m_Controls.widget_statistics->SetImageNodes({ m_selectedImageNode });
   if (m_selectedMaskNode) {
     m_Controls.widget_statistics->SetMaskNodes({ m_selectedMaskNode });
   }
   m_Controls.widget_statistics->setEnabled(true);
 }
 
 void QmitkImageStatisticsReloadedView::FillHistogramWidget(const std::vector<HistogramType::ConstPointer>& histogram, const std::vector<std::string>& dataLabels)
 {
   m_Controls.widget_histogram->SetTheme(this->GetColorTheme());
   m_Controls.widget_histogram->Reset();
   m_Controls.widget_histogram->SetHistogram(histogram.front(), dataLabels.front());
   connect(m_Controls.widget_histogram, &QmitkHistogramVisualizationWidget::RequestHistogramUpdate, this, &QmitkImageStatisticsReloadedView::OnRequestHistogramUpdate);
 
 }
 
 QmitkChartWidget::ChartStyle QmitkImageStatisticsReloadedView::GetColorTheme() const
 {
   ctkPluginContext* context = berry::WorkbenchPlugin::GetDefault()->GetPluginContext();
   ctkServiceReference styleManagerRef = context->getServiceReference<berry::IQtStyleManager>();
   if (styleManagerRef)
   {
     auto styleManager = context->getService<berry::IQtStyleManager>(styleManagerRef);
     if (styleManager->GetStyle().name == "Dark") {
       return QmitkChartWidget::ChartStyle::darkstyle;
     }
     else {
       return QmitkChartWidget::ChartStyle::lightstyle;
     }
   }
   return QmitkChartWidget::ChartStyle::darkstyle;
 }
 
 void QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged()
 {
+  if (this->m_selectedPlanarFigure)
+  {
+    this->m_selectedPlanarFigure->RemoveObserver(this->m_PlanarFigureObserverTag);
+    this->m_selectedPlanarFigure = nullptr;
+  }
+
   m_selectedImageNode = m_Controls.imageSelector->GetSelectedNode();
   m_selectedMaskNode = m_Controls.maskImageSelector->GetSelectedNode();
 
   if (m_selectedImageNode != nullptr) {
     auto image = dynamic_cast<mitk::Image*>(m_selectedImageNode->GetData());
     mitk::Image::Pointer mask = nullptr;
+    mitk::PlanarFigure::Pointer maskPlanarFigure = nullptr;
     if (m_selectedMaskNode != nullptr) {
       mask = dynamic_cast<mitk::Image*>(m_selectedMaskNode->GetData());
+      if (mask == nullptr) {
+        maskPlanarFigure = dynamic_cast<mitk::PlanarFigure*>(m_selectedMaskNode->GetData());
+      }
+    }
+    if (mask) {
+      CalculateStatistics(image, mask);
+    }
+    else if (maskPlanarFigure) {
+      m_selectedPlanarFigure = maskPlanarFigure;
+      ITKCommandType::Pointer changeListener = ITKCommandType::New();
+      changeListener->SetCallbackFunction(this, &QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged);
+      this->m_PlanarFigureObserverTag =
+        m_selectedPlanarFigure->AddObserver(mitk::EndInteractionPlanarFigureEvent(), changeListener);
+      CalculateStatistics(image, maskPlanarFigure);
+    }
+    else {
+      CalculateStatistics(image);
     }
-
-    CalculateStatistics(image, mask);
   }
   else {
     ResetGUI();
   }
 }
 
 void QmitkImageStatisticsReloadedView::ResetGUI()
 {
   m_Controls.widget_statistics->Reset();
   m_Controls.widget_statistics->setEnabled(false);
   m_Controls.widget_histogram->Reset();
   m_Controls.widget_histogram->setEnabled(false);
 }
 
 void QmitkImageStatisticsReloadedView::OnStatisticsCalculationEnds()
 {
   mitk::StatusBar::GetInstance()->Clear();
 
   if (this->m_CalculationThread->GetStatisticsUpdateSuccessFlag()) {
     this->FillStatisticsWidget(m_CalculationThread->GetStatisticsData());
     this->FillHistogramWidget({ m_CalculationThread->GetTimeStepHistogram() }, {m_selectedImageNode->GetName()});
   }
   else {
     mitk::StatusBar::GetInstance()->DisplayErrorText(m_CalculationThread->GetLastErrorMessage().c_str());
     m_Controls.widget_histogram->setEnabled(false);
     m_Controls.widget_statistics->setEnabled(false);
   }
 }
 
 void QmitkImageStatisticsReloadedView::OnRequestHistogramUpdate(unsigned int nBins)
 {
   m_CalculationThread->SetHistogramNBins(nBins);
   m_CalculationThread->start();
 }
 
 void QmitkImageStatisticsReloadedView::CalculateStatistics(mitk::Image::Pointer image, mitk::Image::Pointer mask)
+{
+  CalculateStatisticsInternal(image, mask);
+
+}
+
+void QmitkImageStatisticsReloadedView::CalculateStatistics(mitk::Image::Pointer image, mitk::PlanarFigure::Pointer mask) {
+  CalculateStatisticsInternal(image, nullptr, mask);
+}
+
+void QmitkImageStatisticsReloadedView::CalculateStatisticsInternal(mitk::Image::Pointer image, mitk::Image::Pointer mask, mitk::PlanarFigure::Pointer maskPlanarFigure)
 {
   this->m_StatisticsUpdatePending = true;
-  this->m_CalculationThread->Initialize(image, mask, nullptr);
+  this->m_CalculationThread->Initialize(image, mask, maskPlanarFigure);
   this->m_CalculationThread->SetTimeStep(0);
 
   try
   {
     // Compute statistics
     this->m_CalculationThread->start();
   }
   catch (const mitk::Exception& e)
   {
     mitk::StatusBar::GetInstance()->DisplayErrorText(e.GetDescription());
     this->m_StatisticsUpdatePending = false;
   }
   catch (const std::runtime_error &e)
   {
     mitk::StatusBar::GetInstance()->DisplayErrorText(e.what());
     this->m_StatisticsUpdatePending = false;
   }
   catch (const std::exception &e)
   {
     mitk::StatusBar::GetInstance()->DisplayErrorText(e.what());
     this->m_StatisticsUpdatePending = false;
   }
 }
 
 void QmitkImageStatisticsReloadedView::OnSelectionChanged( berry::IWorkbenchPart::Pointer /*part*/,
     const QList<mitk::DataNode::Pointer> &nodes )
 {
   
 }
 
 void QmitkImageStatisticsReloadedView::PrepareDataStorageComboBoxes()
 {
-
   auto isImage = mitk::NodePredicateDataType::New("Image");
   auto isBinary = mitk::NodePredicateProperty::New("binary", mitk::BoolProperty::New(true));
   auto isNoBinary = mitk::NodePredicateNot::New(isBinary);
   auto isBinaryImage = mitk::NodePredicateAnd::New(isImage, isBinary);
   auto isNoBinaryImage = mitk::NodePredicateAnd::New(isImage, isNoBinary);
+  auto isPlanarFigure = GetPlanarFigurePredicate();
+  auto isBinaryImageOrPlanarFigure = mitk::NodePredicateOr::New(isBinaryImage, isPlanarFigure);
 
   m_Controls.imageSelector->SetDataStorage(GetDataStorage());
   m_Controls.imageSelector->SetPredicate(isNoBinaryImage);
 
   m_Controls.maskImageSelector->SetDataStorage(GetDataStorage());
-  m_Controls.maskImageSelector->SetPredicate(isBinaryImage);
+  m_Controls.maskImageSelector->SetPredicate(isBinaryImageOrPlanarFigure);
   m_Controls.maskImageSelector->SetZeroEntryText("<none>");
 }
 
+mitk::NodePredicateBase::Pointer QmitkImageStatisticsReloadedView::GetPlanarFigurePredicate() const
+{
+  auto isPlanarCircle = mitk::NodePredicateDataType::New("PlanarCircle");
+  auto isPlanarRectangle = mitk::NodePredicateDataType::New("PlanarRectangle");
+  auto isPlanarEllipse = mitk::NodePredicateDataType::New("PlanarEllipse");
+  auto isPlanarDoubleEllipse = mitk::NodePredicateDataType::New("PlanarDoubleEllipse");
+  auto isPlanarPolygon = mitk::NodePredicateDataType::New("PlanarPolygon");
+  auto isPlanarSubdivisionPolygon = mitk::NodePredicateDataType::New("PlanarSubdivisionPolygon");
+  auto isPlanarFigure = mitk::NodePredicateOr::New(isPlanarCircle, isPlanarEllipse);
+  isPlanarFigure = mitk::NodePredicateOr::New(isPlanarFigure, isPlanarRectangle);
+  isPlanarFigure = mitk::NodePredicateOr::New(isPlanarFigure, isPlanarDoubleEllipse);
+  isPlanarFigure = mitk::NodePredicateOr::New(isPlanarFigure, isPlanarPolygon);
+  isPlanarFigure = mitk::NodePredicateOr::New(isPlanarFigure, isPlanarSubdivisionPolygon);
+  return isPlanarFigure.GetPointer();
+}
+
 void QmitkImageStatisticsReloadedView::Activated()
 {
 }
 
 void QmitkImageStatisticsReloadedView::Deactivated()
 {
 }
 
 void QmitkImageStatisticsReloadedView::Visible()
 {
   connect(m_Controls.imageSelector, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged);
   connect(m_Controls.maskImageSelector, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &QmitkImageStatisticsReloadedView::OnImageOrMaskSelectorChanged);
   m_selectedImageNode = m_Controls.imageSelector->GetSelectedNode();
   if (m_selectedImageNode) {
     OnImageOrMaskSelectorChanged();
   }
   else {
     ResetGUI();
   }
 }
 
 void QmitkImageStatisticsReloadedView::Hidden()
 {
   m_Controls.imageSelector->disconnect();
   m_Controls.maskImageSelector->disconnect();
 }
 
 void QmitkImageStatisticsReloadedView::SetFocus()
 {
 }
diff --git a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.h b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.h
index 54259e940c..a86c300eeb 100644
--- a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.h
+++ b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedView.h
@@ -1,99 +1,108 @@
 /*===================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center,
 Division of Medical and Biological Informatics.
 All rights reserved.
 
 This software is distributed WITHOUT ANY WARRANTY; without
 even the implied warranty of MERCHANTABILITY or FITNESS FOR
 A PARTICULAR PURPOSE.
 
 See LICENSE.txt or http://www.mitk.org for details.
 
 ===================================================================*/
 
 #ifndef QmitkImageStatisticsReloadedView_H__INCLUDED
 #define QmitkImageStatisticsReloadedView_H__INCLUDED
 
 #include "ui_QmitkImageStatisticsReloadedViewControls.h"
 
 // Qmitk includes
 #include <QmitkAbstractView.h>
 #include <QmitkImageStatisticsCalculationJob.h>
 #include <mitkImageStatisticsContainer.h>
 
 #include <mitkILifecycleAwarePart.h>
 #include <berryIPartListener.h>
 
 /*!
 \brief QmitkImageStatisticsView is a bundle that allows statistics calculation from images. Three modes
 are supported: 1. Statistics of one image, 2. Statistics of an image and a segmentation, 3. Statistics
 of an image and a Planar Figure. The statistics calculation is realized in a separate thread to keep the
 gui accessible during calculation.
 
 \ingroup Plugins/org.mitk.gui.qt.measurementtoolbox
 */
 class QmitkImageStatisticsReloadedView : public QmitkAbstractView, public mitk::ILifecycleAwarePart, public berry::IPartListener
 {
   Q_OBJECT
 
 public:
   using HistogramType = mitk::StatisticsContainer::HistogramType;
   /*!
   \brief default constructor */
   QmitkImageStatisticsReloadedView(QObject *parent = nullptr, const char *name = nullptr);
   /*!
   \brief default destructor */
   virtual ~QmitkImageStatisticsReloadedView();
   /*!
   \brief method for creating the widget containing the application   controls, like sliders, buttons etc. */
   virtual void CreateQtPartControl(QWidget *parent) override;
   /*!
   \brief method for creating the connections of main and control widget */
   virtual void CreateConnections();
   /*!
   \brief  Is called from the selection mechanism once the data manager selection has changed*/
   void OnSelectionChanged(berry::IWorkbenchPart::Pointer part, const QList<mitk::DataNode::Pointer> &selectedNodes) override;
 
   void PrepareDataStorageComboBoxes();
 
+  mitk::NodePredicateBase::Pointer GetPlanarFigurePredicate() const;
+
   static const std::string VIEW_ID;
 
   void FillStatisticsWidget(const std::vector<mitk::StatisticsContainer::ConstPointer>& statistics);
   void FillHistogramWidget(const std::vector<HistogramType::ConstPointer>& histogram, const std::vector<std::string>& dataLabels);
   QmitkChartWidget::ChartStyle GetColorTheme() const;
 protected:
   virtual void Activated() override;
   virtual void Deactivated() override;
   virtual void Visible() override;
   virtual void Hidden() override;
 
   virtual void SetFocus() override;
 
   /** \brief Is called right before the view closes (before the destructor) */
   virtual void PartClosed(const berry::IWorkbenchPartReference::Pointer&) override;
  
   /** \brief Required for berry::IPartListener */
   virtual Events::Types GetPartEventTypes() const override { return Events::CLOSED; }
 
   void OnImageOrMaskSelectorChanged();
 
   void ResetGUI();
 
   void OnStatisticsCalculationEnds();
   void OnRequestHistogramUpdate(unsigned int nBins);
 
-  void CalculateStatistics(mitk::Image::Pointer image, mitk::Image::Pointer mask);
+  void CalculateStatistics(mitk::Image::Pointer image, mitk::Image::Pointer mask=nullptr);
+  void CalculateStatistics(mitk::Image::Pointer image, mitk::PlanarFigure::Pointer mask);
+
+  void CalculateStatisticsInternal(mitk::Image::Pointer image, mitk::Image::Pointer mask=nullptr, mitk::PlanarFigure::Pointer maskPlanarFigure=nullptr);
 
   // member variables
   Ui::QmitkImageStatisticsReloadedViewControls m_Controls;
 
 private:
+  typedef itk::SimpleMemberCommand< QmitkImageStatisticsReloadedView > ITKCommandType;
   QmitkImageStatisticsCalculationJob * m_CalculationThread;
   bool m_StatisticsUpdatePending=false;
   mitk::DataNode::ConstPointer m_selectedImageNode, m_selectedMaskNode;
+
+  mitk::PlanarFigure::Pointer m_selectedPlanarFigure=nullptr;
+  long m_PlanarFigureObserverTag;
  
 };
 #endif // QmitkImageStatisticsView_H__INCLUDED