Widget for displaying image histograms based on the vtkQtChart framework. More...
#include <QmitkVtkHistogramWidget.h>
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 | |
vtkQtChartWidget * | m_ChartWidget |
vtkQtBarChart * | m_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 |
Widget for displaying image histograms based on the vtkQtChart framework.
Definition at line 44 of file QmitkVtkHistogramWidget.h.
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.
anonymous enum |
HISTOGRAM_MODE_DIRECT | |
HISTOGRAM_MODE_ENTIREIMAGE | |
HISTOGRAM_MODE_MASKEDIMAGE | |
HISTOGRAM_MODE_IMAGEREGION | |
HISTOGRAM_MODE_PLANARFIGUREREGION |
Definition at line 57 of file QmitkVtkHistogramWidget.h.
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.
{ }
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 | ( | ) |
Set/Get operation mode for Histogram.
Definition at line 95 of file QmitkVtkHistogramWidget.cpp.
References HISTOGRAM_MODE_DIRECT, and m_HistogramMode.
Referenced by QmitkImageStatistics::ComputeIntensityProfile(), and QmitkImageStatistics::UpdateStatistics().
{ if ( m_HistogramMode != HISTOGRAM_MODE_DIRECT ) { m_HistogramMode = HISTOGRAM_MODE_DIRECT; } }
void QmitkVtkHistogramWidget::SetHistogramModeToEntireImage | ( | ) |
Set/Get operation mode for Histogram.
Definition at line 104 of file QmitkVtkHistogramWidget.cpp.
References HISTOGRAM_MODE_ENTIREIMAGE, and m_HistogramMode.
{ if ( m_HistogramMode != HISTOGRAM_MODE_ENTIREIMAGE ) { m_HistogramMode = HISTOGRAM_MODE_ENTIREIMAGE; } }
void QmitkVtkHistogramWidget::SetHistogramModeToImageRegion | ( | ) |
Set/Get operation mode for Histogram.
Definition at line 122 of file QmitkVtkHistogramWidget.cpp.
References HISTOGRAM_MODE_IMAGEREGION, and m_HistogramMode.
{ if ( m_HistogramMode != HISTOGRAM_MODE_IMAGEREGION ) { m_HistogramMode = HISTOGRAM_MODE_IMAGEREGION; } }
void QmitkVtkHistogramWidget::SetHistogramModeToMaskedImage | ( | ) |
Set/Get operation mode for Histogram.
Definition at line 113 of file QmitkVtkHistogramWidget.cpp.
References HISTOGRAM_MODE_MASKEDIMAGE, and m_HistogramMode.
{ if ( m_HistogramMode != HISTOGRAM_MODE_MASKEDIMAGE ) { m_HistogramMode = HISTOGRAM_MODE_MASKEDIMAGE; } }
void QmitkVtkHistogramWidget::SetHistogramModeToPlanarFigureRegion | ( | ) |
Set/Get operation mode for Histogram.
Definition at line 130 of file QmitkVtkHistogramWidget.cpp.
References HISTOGRAM_MODE_PLANARFIGUREREGION, and m_HistogramMode.
{ if ( m_HistogramMode != HISTOGRAM_MODE_PLANARFIGUREREGION ) { m_HistogramMode = HISTOGRAM_MODE_PLANARFIGUREREGION; } }
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(); }
vtkQtBarChart* QmitkVtkHistogramWidget::m_BarChart [protected] |
Definition at line 121 of file QmitkVtkHistogramWidget.h.
Referenced by QmitkVtkHistogramWidget(), and UpdateItemModelFromHistogram().
vtkQtChartWidget* QmitkVtkHistogramWidget::m_ChartWidget [protected] |
Definition at line 120 of file QmitkVtkHistogramWidget.h.
Referenced by QmitkVtkHistogramWidget(), and UpdateItemModelFromHistogram().
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 133 of file QmitkVtkHistogramWidget.h.
Referenced by ComputeHistogram(), GetHistogramMode(), SetHistogramMode(), SetHistogramModeToDirectHistogram(), SetHistogramModeToEntireImage(), SetHistogramModeToImageRegion(), SetHistogramModeToMaskedImage(), and SetHistogramModeToPlanarFigureRegion().
Definition at line 125 of file QmitkVtkHistogramWidget.h.
Referenced by ComputeHistogram(), and SetImage().
Definition at line 127 of file QmitkVtkHistogramWidget.h.
Referenced by SetImageMask().
RegionType QmitkVtkHistogramWidget::m_ImageRegion [protected] |
Definition at line 129 of file QmitkVtkHistogramWidget.h.
Referenced by SetImageRegion().
QStandardItemModel* QmitkVtkHistogramWidget::m_ItemModel [protected] |
Definition at line 123 of file QmitkVtkHistogramWidget.h.
Referenced by ClearItemModel(), QmitkVtkHistogramWidget(), and UpdateItemModelFromHistogram().
Definition at line 131 of file QmitkVtkHistogramWidget.h.
Referenced by SetPlanarFigure().