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

QmitkVtkHistogramWidget Class Reference

Widget for displaying image histograms based on the vtkQtChart framework. More...

#include <QmitkVtkHistogramWidget.h>

Collaboration diagram for QmitkVtkHistogramWidget:
Collaboration graph
[legend]

List of all members.

Public Types

enum  {
  HISTOGRAM_MODE_DIRECT = 0, HISTOGRAM_MODE_ENTIREIMAGE, HISTOGRAM_MODE_MASKEDIMAGE, HISTOGRAM_MODE_IMAGEREGION,
  HISTOGRAM_MODE_PLANARFIGUREREGION
}
typedef mitk::Image::HistogramType HistogramType
typedef
mitk::Image::HistogramType::ConstIterator 
HistogramConstIteratorType
typedef itk::ImageRegion< 3 > RegionType

Public Member Functions

 QmitkVtkHistogramWidget (QWidget *)
virtual ~QmitkVtkHistogramWidget ()
void SetHistogram (const HistogramType *histogram)
 Set histogram to be displayed directly.
void SetImage (const mitk::Image *image)
 Set image from which to calculate the histogram.
void SetImageMask (const mitk::Image *imageMask)
 Set binary image mask determining the voxels to include in histogram calculation.
void SetImageRegion (const RegionType imageRegion)
 Set 3D image region for which to calculate the histogram.
void SetPlanarFigure (const mitk::PlanarFigure *planarFigure)
 Set planar figure describing the region for which to calculate the histogram.
void SetHistogramMode (unsigned int histogramMode)
 Set/Get operation mode for Histogram.
unsigned int GetHistogramMode ()
 Set/Get operation mode for Histogram.
void SetHistogramModeToDirectHistogram ()
 Set/Get operation mode for Histogram.
void SetHistogramModeToEntireImage ()
 Set/Get operation mode for Histogram.
void SetHistogramModeToMaskedImage ()
 Set/Get operation mode for Histogram.
void SetHistogramModeToImageRegion ()
 Set/Get operation mode for Histogram.
void SetHistogramModeToPlanarFigureRegion ()
 Set/Get operation mode for Histogram.
void UpdateItemModelFromHistogram ()
void ClearItemModel ()
 Clear the histogram (nothing is displayed).

Protected Member Functions

void ComputeHistogram ()

Protected Attributes

vtkQtChartWidgetm_ChartWidget
vtkQtBarChartm_BarChart
QStandardItemModel * m_ItemModel
mitk::Image::ConstPointer m_Image
mitk::Image::ConstPointer m_ImageMask
RegionType m_ImageRegion
mitk::PlanarFigure::ConstPointer m_PlanarFigure
unsigned int m_HistogramMode
HistogramType::ConstPointer m_Histogram
HistogramType::ConstPointer m_DerivedHistogram

Detailed Description

Widget for displaying image histograms based on the vtkQtChart framework.

Definition at line 44 of file QmitkVtkHistogramWidget.h.


Member Typedef Documentation

typedef mitk::Image::HistogramType::ConstIterator QmitkVtkHistogramWidget::HistogramConstIteratorType

Definition at line 53 of file QmitkVtkHistogramWidget.h.

Definition at line 52 of file QmitkVtkHistogramWidget.h.

typedef itk::ImageRegion< 3 > QmitkVtkHistogramWidget::RegionType

Definition at line 55 of file QmitkVtkHistogramWidget.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
HISTOGRAM_MODE_DIRECT 
HISTOGRAM_MODE_ENTIREIMAGE 
HISTOGRAM_MODE_MASKEDIMAGE 
HISTOGRAM_MODE_IMAGEREGION 
HISTOGRAM_MODE_PLANARFIGUREREGION 

Definition at line 57 of file QmitkVtkHistogramWidget.h.


Constructor & Destructor Documentation

QmitkVtkHistogramWidget::QmitkVtkHistogramWidget ( QWidget *   )

Definition at line 43 of file QmitkVtkHistogramWidget.cpp.

References vtkQtChartMouseSelection::addHandler(), vtkQtChartAxis::Bottom, vtkQtChartInteractorSetup::createDefault(), vtkQtChartAxisLayer::getAxis(), vtkQtChartArea::getAxisLayer(), vtkQtChartArea::getAxisLayerIndex(), vtkQtChartWidget::getChartArea(), vtkQtChartAxis::getOptions(), vtkQtChartArea::insertLayer(), vtkQtChartAxis::Left, m_BarChart, m_ChartWidget, m_ItemModel, vtkQtChartAxisOptions::setGridVisible(), vtkQtChartSeriesSelectionHandler::setLayer(), vtkQtChartSeriesSelectionHandler::setModeNames(), vtkQtChartSeriesSelectionHandler::setMousePressModifiers(), vtkQtChartAxisOptions::setNotation(), vtkQtChartAxisOptions::setPrecision(), vtkQtChartMouseSelection::setSelectionMode(), and vtkQtChartAxisOptions::Standard.

: m_HistogramMode( HISTOGRAM_MODE_ENTIREIMAGE )
{
  //QGroupBox *hgroupbox = new QGroupBox( "", this );
  //hgroupbox->setMinimumSize( 150, 150 );

  m_ChartWidget = new vtkQtChartWidget( this );

  QBoxLayout *layout = new QVBoxLayout( this );
  layout->addWidget( m_ChartWidget );
  layout->setSpacing( 10 );

  vtkQtChartArea *area = m_ChartWidget->getChartArea();

  // Set up the bar chart.
  m_BarChart = new vtkQtBarChart();
  area->insertLayer( area->getAxisLayerIndex(), m_BarChart );

  // Set up the default interactor.
  vtkQtChartMouseSelection *selector =
    vtkQtChartInteractorSetup::createDefault( area );
  vtkQtChartSeriesSelectionHandler *handler =
    new vtkQtChartSeriesSelectionHandler( selector );
  handler->setModeNames( "Bar Chart - Series", "Bar Chart - Bars" );
  handler->setMousePressModifiers( Qt::ControlModifier, Qt::ControlModifier );
  handler->setLayer( m_BarChart );
  selector->addHandler( handler );
  selector->setSelectionMode("Bar Chart - Bars");

  // Hide the x-axis grid.
  vtkQtChartAxisLayer *axisLayer = area->getAxisLayer();
  vtkQtChartAxis *xAxis = axisLayer->getAxis(vtkQtChartAxis::Bottom);
  xAxis->getOptions()->setGridVisible(false);
  xAxis->getOptions()->setPrecision( 0 );
  xAxis->getOptions()->setNotation( vtkQtChartAxisOptions::Standard );
  
  vtkQtChartAxis *yAxis = axisLayer->getAxis(vtkQtChartAxis::Left);
  yAxis->getOptions()->setPrecision( 0 );
  yAxis->getOptions()->setNotation( vtkQtChartAxisOptions::Standard );

  // Set up the model for the bar chart.
  m_ItemModel = new QStandardItemModel( m_BarChart );
  m_ItemModel->setItemPrototype( new QStandardItem() );
}
QmitkVtkHistogramWidget::~QmitkVtkHistogramWidget (  ) [virtual]

Definition at line 90 of file QmitkVtkHistogramWidget.cpp.

{
}

Member Function Documentation

void QmitkVtkHistogramWidget::ClearItemModel (  )

Clear the histogram (nothing is displayed).

Definition at line 203 of file QmitkVtkHistogramWidget.cpp.

References m_ItemModel.

Referenced by QmitkImageStatistics::OnSelectionChanged(), UpdateItemModelFromHistogram(), and QmitkImageStatistics::UpdateStatistics().

{
  m_ItemModel->clear();
}
void QmitkVtkHistogramWidget::ComputeHistogram (  ) [protected]

Definition at line 209 of file QmitkVtkHistogramWidget.cpp.

References HISTOGRAM_MODE_DIRECT, HISTOGRAM_MODE_ENTIREIMAGE, HISTOGRAM_MODE_IMAGEREGION, HISTOGRAM_MODE_MASKEDIMAGE, HISTOGRAM_MODE_PLANARFIGUREREGION, m_DerivedHistogram, m_Histogram, m_HistogramMode, m_Image, and mitk::HistogramGenerator::New().

Referenced by UpdateItemModelFromHistogram().

{
  switch ( m_HistogramMode )
  {
  case HISTOGRAM_MODE_DIRECT:
    {
      m_DerivedHistogram = m_Histogram;
      break;
    }

  case HISTOGRAM_MODE_ENTIREIMAGE:
    {
      mitk::HistogramGenerator::Pointer histogramGenerator = mitk::HistogramGenerator::New();
      histogramGenerator->SetImage( m_Image );
      histogramGenerator->ComputeHistogram();
      m_DerivedHistogram = histogramGenerator->GetHistogram();
      break;
    }

  case HISTOGRAM_MODE_MASKEDIMAGE:
    {
      break;
    }

  case HISTOGRAM_MODE_IMAGEREGION:
    {
      break;
    }

  case HISTOGRAM_MODE_PLANARFIGUREREGION:
    {
      break;
    }
  }
}
unsigned int QmitkVtkHistogramWidget::GetHistogramMode (  )

Set/Get operation mode for Histogram.

Definition at line 275 of file QmitkVtkHistogramWidget.cpp.

References m_HistogramMode.

{
  return m_HistogramMode;
}
void QmitkVtkHistogramWidget::SetHistogram ( const HistogramType histogram )

Set histogram to be displayed directly.

Definition at line 245 of file QmitkVtkHistogramWidget.cpp.

References m_Histogram.

Referenced by QmitkImageStatistics::ComputeIntensityProfile(), and QmitkImageStatistics::UpdateStatistics().

{
  m_Histogram = histogram;
}
void QmitkVtkHistogramWidget::SetHistogramMode ( unsigned int  histogramMode )

Set/Get operation mode for Histogram.

Definition at line 270 of file QmitkVtkHistogramWidget.cpp.

References m_HistogramMode.

{
  m_HistogramMode = histogramMode;
}
void QmitkVtkHistogramWidget::SetHistogramModeToDirectHistogram (  )
void QmitkVtkHistogramWidget::SetHistogramModeToEntireImage (  )

Set/Get operation mode for Histogram.

Definition at line 104 of file QmitkVtkHistogramWidget.cpp.

References HISTOGRAM_MODE_ENTIREIMAGE, and m_HistogramMode.

void QmitkVtkHistogramWidget::SetHistogramModeToImageRegion (  )

Set/Get operation mode for Histogram.

Definition at line 122 of file QmitkVtkHistogramWidget.cpp.

References HISTOGRAM_MODE_IMAGEREGION, and m_HistogramMode.

void QmitkVtkHistogramWidget::SetHistogramModeToMaskedImage (  )

Set/Get operation mode for Histogram.

Definition at line 113 of file QmitkVtkHistogramWidget.cpp.

References HISTOGRAM_MODE_MASKEDIMAGE, and m_HistogramMode.

void QmitkVtkHistogramWidget::SetHistogramModeToPlanarFigureRegion (  )
void QmitkVtkHistogramWidget::SetImage ( const mitk::Image image )

Set image from which to calculate the histogram.

Definition at line 250 of file QmitkVtkHistogramWidget.cpp.

References m_Image.

{
  m_Image = image;
}
void QmitkVtkHistogramWidget::SetImageMask ( const mitk::Image imageMask )

Set binary image mask determining the voxels to include in histogram calculation.

Definition at line 255 of file QmitkVtkHistogramWidget.cpp.

References m_ImageMask.

{
  m_ImageMask = imageMask;
}
void QmitkVtkHistogramWidget::SetImageRegion ( const RegionType  imageRegion )

Set 3D image region for which to calculate the histogram.

Definition at line 260 of file QmitkVtkHistogramWidget.cpp.

References m_ImageRegion.

{
  m_ImageRegion = imageRegion;
}
void QmitkVtkHistogramWidget::SetPlanarFigure ( const mitk::PlanarFigure planarFigure )

Set planar figure describing the region for which to calculate the histogram.

Definition at line 265 of file QmitkVtkHistogramWidget.cpp.

References m_PlanarFigure.

{
  m_PlanarFigure = planarFigure;
}
void QmitkVtkHistogramWidget::UpdateItemModelFromHistogram (  )

Fill the graphical widget with currently specified histogram.

Definition at line 139 of file QmitkVtkHistogramWidget.cpp.

References ClearItemModel(), ComputeHistogram(), m_BarChart, m_ChartWidget, m_DerivedHistogram, m_ItemModel, and vtkQtBarChart::setModel().

Referenced by QmitkImageStatistics::ComputeIntensityProfile(), and QmitkImageStatistics::UpdateStatistics().

{
  this->ComputeHistogram();

  if ( m_DerivedHistogram.IsNull() )
  {
    return;
  }

  // Determine non-zero range of histogram
  unsigned int startIndex = 0, endIndex = 0, i = 0;
  HistogramConstIteratorType startIt = m_DerivedHistogram->End();
  HistogramConstIteratorType endIt = m_DerivedHistogram->End();
  HistogramConstIteratorType it;
  bool firstNonEmptyBinFound = false;
  for ( it = m_DerivedHistogram->Begin(); it != m_DerivedHistogram->End(); ++it, ++i )
  {
    if ( it.GetFrequency() > 0.0 )
    {
      endIt = it;
      endIndex = i;
      if ( !firstNonEmptyBinFound )
      {
        firstNonEmptyBinFound = true;
        startIt = it;
        startIndex = i;
      }
    }
  }
  ++endIt;

  // For empty image / mask: clear histogram
  if ( startIt == m_DerivedHistogram->End() )
  {
    this->ClearItemModel();
    return;
  }

  // Allocate data in item model
  m_ItemModel->setRowCount( endIndex + 1 - startIndex );
  m_ItemModel->setColumnCount( 1 );

  // Fill item model with histogram data
  for ( it = startIt, i = 0; it != endIt; ++it, ++i )
  {
    const double &frequency = it.GetFrequency();
    const double &measurement = it.GetMeasurementVector()[0];
    
    m_ItemModel->setVerticalHeaderItem( i, new QStandardItem() );
    m_ItemModel->verticalHeaderItem( i )->setData(
      QVariant( measurement ), Qt::DisplayRole );

    m_ItemModel->setItem( i, 0, new QStandardItem() );
    m_ItemModel->item( i, 0 )->setData( QVariant( frequency ), Qt::DisplayRole );
  }

  vtkQtChartTableSeriesModel *table =
    new vtkQtChartTableSeriesModel( m_ItemModel, m_BarChart );
  m_BarChart->setModel( table );

  m_ChartWidget->show();
}

Member Data Documentation

HistogramType::ConstPointer QmitkVtkHistogramWidget::m_DerivedHistogram [protected]

Definition at line 140 of file QmitkVtkHistogramWidget.h.

Referenced by ComputeHistogram(), and UpdateItemModelFromHistogram().

HistogramType::ConstPointer QmitkVtkHistogramWidget::m_Histogram [protected]

Definition at line 137 of file QmitkVtkHistogramWidget.h.

Referenced by ComputeHistogram(), and SetHistogram().

unsigned int QmitkVtkHistogramWidget::m_HistogramMode [protected]

Definition at line 125 of file QmitkVtkHistogramWidget.h.

Referenced by ComputeHistogram(), and SetImage().

Definition at line 127 of file QmitkVtkHistogramWidget.h.

Referenced by SetImageMask().

Definition at line 129 of file QmitkVtkHistogramWidget.h.

Referenced by SetImageRegion().

QStandardItemModel* QmitkVtkHistogramWidget::m_ItemModel [protected]

Definition at line 131 of file QmitkVtkHistogramWidget.h.

Referenced by SetPlanarFigure().


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