QmitkTensorReconstructionView. More...
#include <QmitkTensorReconstructionView.h>
Public Member Functions | |
QmitkTensorReconstructionView () | |
virtual | ~QmitkTensorReconstructionView () |
virtual void | CreateQtPartControl (QWidget *parent) |
virtual void | CreateConnections () |
Creation of the connections of main and control widget. | |
virtual void | Activated () |
Called when the functionality is activated. | |
virtual void | Deactivated () |
virtual void | StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget) |
virtual void | StdMultiWidgetNotAvailable () |
Static Public Attributes | |
static const std::string | VIEW_ID = "org.mitk.views.tensorreconstruction" |
static const int | nrconvkernels |
Protected Slots | |
void | TensorsToDWI () |
void | DoTensorsToDWI (mitk::DataStorage::SetOfObjects::Pointer inImages) |
void | TeemCheckboxClicked () |
void | Advanced1CheckboxClicked () |
void | Advanced2CheckboxClicked () |
void | ManualThresholdClicked () |
void | MethodChoosen (int method) |
void | Reconstruct (int method) |
void | TeemReconstruction () |
void | ItkReconstruction () |
void | ItkTensorReconstruction (mitk::DataStorage::SetOfObjects::Pointer inImages) |
void | TeemTensorReconstruction (mitk::DataStorage::SetOfObjects::Pointer inImages) |
Protected Member Functions | |
template<int ndirs> | |
std::vector< itk::Vector < double, 3 > > | MakeGradientList () |
template<int L> | |
void | TemplatedAnalyticalTensorReconstruction (mitk::DiffusionImage< DiffusionPixelType > *vols, float lambda, std::string nodename, std::vector< mitk::DataNode::Pointer > *nodes, int normalization) |
void | SetDefaultNodeProperties (mitk::DataNode::Pointer node, std::string name) |
Protected Attributes | |
Ui::QmitkTensorReconstructionViewControls * | m_Controls |
QmitkStdMultiWidget * | m_MultiWidget |
berry::ISelectionListener::Pointer | m_SelListener |
berry::IStructuredSelection::ConstPointer | m_CurrentSelection |
Friends | |
struct | TrSelListener |
QmitkTensorReconstructionView.
Document your class here.
Definition at line 47 of file QmitkTensorReconstructionView.h.
QmitkTensorReconstructionView::QmitkTensorReconstructionView | ( | ) |
Definition at line 136 of file QmitkTensorReconstructionView.cpp.
: QmitkFunctionality(), m_Controls(NULL), m_MultiWidget(NULL) { }
QmitkTensorReconstructionView::~QmitkTensorReconstructionView | ( | ) | [virtual] |
Definition at line 143 of file QmitkTensorReconstructionView.cpp.
References berry::WorkbenchPart::GetSite(), and m_SelListener.
{ this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->RemovePostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener); }
void QmitkTensorReconstructionView::Activated | ( | ) | [virtual] |
Called when the functionality is activated.
Reimplemented from QmitkFunctionality.
Definition at line 256 of file QmitkTensorReconstructionView.cpp.
void QmitkTensorReconstructionView::Advanced1CheckboxClicked | ( | ) | [protected, slot] |
Definition at line 234 of file QmitkTensorReconstructionView.cpp.
References Ui_QmitkTensorReconstructionViewControls::frame, and m_Controls.
Referenced by CreateConnections(), and CreateQtPartControl().
{ bool check = m_Controls-> m_Advanced1->isChecked(); m_Controls->frame->setVisible(check); }
void QmitkTensorReconstructionView::Advanced2CheckboxClicked | ( | ) | [protected, slot] |
Definition at line 242 of file QmitkTensorReconstructionView.cpp.
References Ui_QmitkTensorReconstructionViewControls::frame_2, and m_Controls.
Referenced by CreateConnections(), and CreateQtPartControl().
{ bool check = m_Controls-> m_Advanced2->isChecked(); m_Controls->frame_2->setVisible(check); }
void QmitkTensorReconstructionView::CreateConnections | ( | ) | [virtual] |
Creation of the connections of main and control widget.
Definition at line 213 of file QmitkTensorReconstructionView.cpp.
References Advanced1CheckboxClicked(), Advanced2CheckboxClicked(), ItkReconstruction(), Ui_QmitkTensorReconstructionViewControls::m_Advanced1, Ui_QmitkTensorReconstructionViewControls::m_Advanced2, m_Controls, Ui_QmitkTensorReconstructionViewControls::m_ItkReconstruction, Ui_QmitkTensorReconstructionViewControls::m_TeemReconstruction, Ui_QmitkTensorReconstructionViewControls::m_TeemToggle, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationManualThreashold, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemEstimationMethodCombo, Ui_QmitkTensorReconstructionViewControls::m_TensorsToDWIButton, ManualThresholdClicked(), MethodChoosen(), TeemCheckboxClicked(), TeemReconstruction(), and TensorsToDWI().
Referenced by CreateQtPartControl().
{ if ( m_Controls ) { connect( (QObject*)(m_Controls->m_TeemToggle), SIGNAL(clicked()), this, SLOT(TeemCheckboxClicked()) ); connect( (QObject*)(m_Controls->m_ItkReconstruction), SIGNAL(clicked()), this, SLOT(ItkReconstruction()) ); connect( (QObject*)(m_Controls->m_TeemReconstruction), SIGNAL(clicked()), this, SLOT(TeemReconstruction()) ); connect( (QObject*)(m_Controls->m_TensorEstimationTeemEstimationMethodCombo), SIGNAL(currentIndexChanged(int)), this, SLOT(MethodChoosen(int)) ); connect( (QObject*)(m_Controls->m_Advanced1), SIGNAL(clicked()), this, SLOT(Advanced1CheckboxClicked()) ); connect( (QObject*)(m_Controls->m_Advanced2), SIGNAL(clicked()), this, SLOT(Advanced2CheckboxClicked()) ); connect( (QObject*)(m_Controls->m_TensorEstimationManualThreashold), SIGNAL(clicked()), this, SLOT(ManualThresholdClicked()) ); connect( (QObject*)(m_Controls->m_TensorsToDWIButton), SIGNAL(clicked()), this, SLOT(TensorsToDWI()) ); } }
void QmitkTensorReconstructionView::CreateQtPartControl | ( | QWidget * | parent ) | [virtual] |
Implements berry::QtViewPart.
Definition at line 148 of file QmitkTensorReconstructionView.cpp.
References Advanced1CheckboxClicked(), Advanced2CheckboxClicked(), berry::SmartPointer< TObjectType >::Cast(), CreateConnections(), berry::WorkbenchPart::GetSite(), m_Controls, m_CurrentSelection, m_SelListener, Ui_QmitkTensorReconstructionViewControls::m_TeemToggle, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationManualThreashold, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemEstimationMethodCombo, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemFuzzyEdit, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemMinValEdit, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemNumItsLabel_2, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemNumItsSpin, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemSigmaEdit, Ui_QmitkTensorReconstructionViewControls::m_TensorReconstructionNumberThreadsSpinbox, Ui_QmitkTensorReconstructionViewControls::m_TensorsToDWIBValueEdit, Ui_QmitkTensorReconstructionViewControls::setupUi(), TeemCheckboxClicked(), and TrSelListener.
{ if (!m_Controls) { // create GUI widgets m_Controls = new Ui::QmitkTensorReconstructionViewControls; m_Controls->setupUi(parent); this->CreateConnections(); m_Controls->m_TensorReconstructionNumberThreadsSpinbox->setValue(8); QStringList items; items << "LLS (Linear Least Squares)" << "MLE (Maximum Likelihood)" << "NLS (Nonlinear Least Squares)" << "WLS (Weighted Least Squares)"; m_Controls->m_TensorEstimationTeemEstimationMethodCombo->addItems(items); m_Controls->m_TensorEstimationTeemEstimationMethodCombo->setCurrentIndex(0); m_Controls->m_TensorEstimationManualThreashold->setChecked(false); m_Controls->m_TensorEstimationTeemSigmaEdit->setText("NaN"); m_Controls->m_TensorEstimationTeemNumItsSpin->setValue(1); m_Controls->m_TensorEstimationTeemFuzzyEdit->setText("0.0"); m_Controls->m_TensorEstimationTeemMinValEdit->setText("1.0"); m_Controls->m_TensorEstimationTeemNumItsLabel_2->setEnabled(true); m_Controls->m_TensorEstimationTeemNumItsSpin->setEnabled(true); m_Controls->m_TensorsToDWIBValueEdit->setText("1000"); Advanced1CheckboxClicked(); Advanced2CheckboxClicked(); TeemCheckboxClicked(); #ifndef DIFFUSION_IMAGING_EXTENDED m_Controls->m_TeemToggle->setVisible(false); #endif // define data type for combobox //m_Controls->m_ImageSelector->SetDataStorage( this->GetDefaultDataStorage() ); //m_Controls->m_ImageSelector->SetPredicate( mitk::NodePredicateDataType::New("DiffusionImage") ); } m_SelListener = berry::ISelectionListener::Pointer(new TrSelListener(this)); this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener); berry::ISelection::ConstPointer sel( this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); m_CurrentSelection = sel.Cast<const IStructuredSelection>(); m_SelListener.Cast<TrSelListener>()->DoSelectionChanged(sel); }
void QmitkTensorReconstructionView::Deactivated | ( | ) | [virtual] |
Only called when IsExclusiveFunctionality() returns true.
Reimplemented from QmitkFunctionality.
Definition at line 261 of file QmitkTensorReconstructionView.cpp.
void QmitkTensorReconstructionView::DoTensorsToDWI | ( | mitk::DataStorage::SetOfObjects::Pointer | inImages ) | [protected, slot] |
Definition at line 600 of file QmitkTensorReconstructionView.cpp.
References mitk::StatusBar::GetInstance(), mitk::ProgressBar::GetInstance(), mitk::DiffusionImage< TPixelType >::InitializeFromVectorImage(), MBI_DEBUG, MBI_INFO, mitk::DataNode::New(), mitk::DiffusionImage< TPixelType >::New(), mitk::DiffusionImage< TPixelType >::SetB_Value(), mitk::DiffusionImageMapper< TPixelType >::SetDefaultProperties(), mitk::DiffusionImage< TPixelType >::SetDirections(), and mitk::DiffusionImage< TPixelType >::SetVectorImage().
Referenced by TensorsToDWI().
{ try { itk::TimeProbe clock; int nrFiles = inImages->size(); if (!nrFiles) return; QString status; mitk::ProgressBar::GetInstance()->AddStepsToDo(nrFiles); mitk::DataStorage::SetOfObjects::const_iterator itemiter( inImages->begin() ); mitk::DataStorage::SetOfObjects::const_iterator itemiterend( inImages->end() ); std::vector<mitk::DataNode::Pointer> nodes; while ( itemiter != itemiterend ) // for all items { std::string nodename; (*itemiter)->GetStringProperty("name", nodename); mitk::TensorImage* vol = static_cast<mitk::TensorImage*>((*itemiter)->GetData()); ++itemiter; typedef float TTensorPixelType; typedef itk::DiffusionTensor3D< TTensorPixelType > TensorPixelType; typedef itk::Image< TensorPixelType, 3 > TensorImageType; TensorImageType::Pointer itkvol = TensorImageType::New(); mitk::CastToItkImage<TensorImageType>(vol, itkvol); typedef itk::TensorImageToDiffusionImageFilter< TTensorPixelType, DiffusionPixelType > FilterType; FilterType::GradientListType gradientList; switch(m_Controls->m_TensorsToDWINumDirsSelect->currentIndex()) { case 0: gradientList = MakeGradientList<12>(); break; case 1: gradientList = MakeGradientList<42>(); break; case 2: gradientList = MakeGradientList<92>(); break; case 3: gradientList = MakeGradientList<162>(); break; case 4: gradientList = MakeGradientList<252>(); break; case 5: gradientList = MakeGradientList<362>(); break; case 6: gradientList = MakeGradientList<492>(); break; case 7: gradientList = MakeGradientList<642>(); break; case 8: gradientList = MakeGradientList<812>(); break; case 9: gradientList = MakeGradientList<1002>(); break; default: gradientList = MakeGradientList<92>(); } double bVal = m_Controls->m_TensorsToDWIBValueEdit->text().toDouble(); // DWI ESTIMATION clock.Start(); MBI_INFO << "DWI Estimation "; mitk::StatusBar::GetInstance()->DisplayText(status.sprintf( "DWI Estimation for %s", nodename.c_str()).toAscii()); FilterType::Pointer filter = FilterType::New(); filter->SetInput( itkvol ); filter->SetBValue(bVal); filter->SetGradientList(gradientList); filter->SetNumberOfThreads(1); filter->Update(); clock.Stop(); MBI_DEBUG << "took " << clock.GetMeanTime() << "s."; itk::Vector<double,3> v; v[0] = 0; v[1] = 0; v[2] = 0; gradientList.push_back(v); // TENSORS TO DATATREE mitk::DiffusionImage<DiffusionPixelType>::Pointer image = mitk::DiffusionImage<DiffusionPixelType>::New(); image->SetVectorImage( filter->GetOutput() ); image->SetB_Value(bVal); image->SetDirections(gradientList); image->InitializeFromVectorImage(); mitk::DataNode::Pointer node=mitk::DataNode::New(); node->SetData( image ); mitk::DiffusionImageMapper<short>::SetDefaultProperties(node); QString newname; newname = newname.append(nodename.c_str()); newname = newname.append("_dwi"); node->SetName(newname.toAscii()); nodes.push_back(node); mitk::ProgressBar::GetInstance()->Progress(); } std::vector<mitk::DataNode::Pointer>::iterator nodeIt; for(nodeIt = nodes.begin(); nodeIt != nodes.end(); ++nodeIt) GetDefaultDataStorage()->Add(*nodeIt); mitk::StatusBar::GetInstance()->DisplayText(status.sprintf("Finished Processing %d Files", nrFiles).toAscii()); m_MultiWidget->RequestUpdate(); } catch (itk::ExceptionObject &ex) { MBI_INFO << ex ; return ; } }
void QmitkTensorReconstructionView::ItkReconstruction | ( | ) | [protected, slot] |
Definition at line 272 of file QmitkTensorReconstructionView.cpp.
References Reconstruct().
Referenced by CreateConnections().
{ Reconstruct(0); }
void QmitkTensorReconstructionView::ItkTensorReconstruction | ( | mitk::DataStorage::SetOfObjects::Pointer | inImages ) | [protected, slot] |
Definition at line 319 of file QmitkTensorReconstructionView.cpp.
References mitk::DiffusionImage< TPixelType >::GetB_Value(), mitk::DiffusionImage< TPixelType >::GetDirections(), mitk::StatusBar::GetInstance(), mitk::ProgressBar::GetInstance(), mitk::DiffusionImage< TPixelType >::GetVectorImage(), MBI_DEBUG, MBI_INFO, mitk::DataNode::New(), and mitk::TensorImage::New().
Referenced by Reconstruct().
{ try { itk::TimeProbe clock; int nrFiles = inImages->size(); if (!nrFiles) return; QString status; mitk::ProgressBar::GetInstance()->AddStepsToDo(nrFiles); mitk::DataStorage::SetOfObjects::const_iterator itemiter( inImages->begin() ); mitk::DataStorage::SetOfObjects::const_iterator itemiterend( inImages->end() ); std::vector<mitk::DataNode::Pointer> nodes; while ( itemiter != itemiterend ) // for all items { mitk::DiffusionImage<DiffusionPixelType>* vols = static_cast<mitk::DiffusionImage<DiffusionPixelType>*>( (*itemiter)->GetData()); std::string nodename; (*itemiter)->GetStringProperty("name", nodename); ++itemiter; // TENSOR RECONSTRUCTION clock.Start(); MBI_INFO << "Tensor reconstruction "; mitk::StatusBar::GetInstance()->DisplayText(status.sprintf( "Tensor reconstruction for %s", nodename.c_str()).toAscii()); typedef itk::DiffusionTensor3DReconstructionImageFilter< DiffusionPixelType, DiffusionPixelType, TTensorPixelType > TensorReconstructionImageFilterType; TensorReconstructionImageFilterType::Pointer tensorReconstructionFilter = TensorReconstructionImageFilterType::New(); tensorReconstructionFilter->SetGradientImage( vols->GetDirections(), vols->GetVectorImage() ); tensorReconstructionFilter->SetNumberOfThreads( m_Controls->m_TensorReconstructionNumberThreadsSpinbox->value() ); tensorReconstructionFilter->SetBValue(vols->GetB_Value()); tensorReconstructionFilter->SetThreshold( m_Controls->m_TensorReconstructionThreasholdEdit->text().toFloat() ); tensorReconstructionFilter->Update(); clock.Stop(); MBI_DEBUG << "took " << clock.GetMeanTime() << "s."; // TENSORS TO DATATREE mitk::TensorImage::Pointer image = mitk::TensorImage::New(); image->InitializeByItk( tensorReconstructionFilter->GetOutput() ); image->SetVolume( tensorReconstructionFilter->GetOutput()->GetBufferPointer() ); mitk::DataNode::Pointer node=mitk::DataNode::New(); node->SetData( image ); QString newname; newname = newname.append(nodename.c_str()); newname = newname.append("_dti"); SetDefaultNodeProperties(node, newname.toStdString()); nodes.push_back(node); mitk::ProgressBar::GetInstance()->Progress(); } std::vector<mitk::DataNode::Pointer>::iterator nodeIt; for(nodeIt = nodes.begin(); nodeIt != nodes.end(); ++nodeIt) GetDefaultDataStorage()->Add(*nodeIt); mitk::StatusBar::GetInstance()->DisplayText(status.sprintf("Finished Processing %d Files", nrFiles).toAscii()); m_MultiWidget->RequestUpdate(); } catch (itk::ExceptionObject &ex) { MBI_INFO << ex ; return ; } }
std::vector< itk::Vector< double, 3 > > QmitkTensorReconstructionView::MakeGradientList | ( | ) | [protected] |
Definition at line 584 of file QmitkTensorReconstructionView.cpp.
{ std::vector<itk::Vector<double,3> > retval; vnl_matrix_fixed<double, 3, ndirs>* U = itk::PointShell<ndirs, vnl_matrix_fixed<double, 3, ndirs> >::DistributePointShell(); for(int i=0; i<ndirs;i++) { itk::Vector<double,3> v; v[0] = U->get(0,i); v[1] = U->get(1,i); v[2] = U->get(2,i); retval.push_back(v); } return retval; }
void QmitkTensorReconstructionView::ManualThresholdClicked | ( | ) | [protected, slot] |
Definition at line 250 of file QmitkTensorReconstructionView.cpp.
References m_Controls, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationManualThreashold, and Ui_QmitkTensorReconstructionViewControls::m_TensorReconstructionThreasholdEdit_2.
Referenced by CreateConnections().
{ m_Controls->m_TensorReconstructionThreasholdEdit_2->setEnabled( m_Controls->m_TensorEstimationManualThreashold->isChecked()); }
void QmitkTensorReconstructionView::MethodChoosen | ( | int | method ) | [protected, slot] |
Definition at line 266 of file QmitkTensorReconstructionView.cpp.
References m_Controls, Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemNumItsLabel_2, and Ui_QmitkTensorReconstructionViewControls::m_TensorEstimationTeemNumItsSpin.
Referenced by CreateConnections().
{ m_Controls->m_TensorEstimationTeemNumItsLabel_2->setEnabled(method==3); m_Controls->m_TensorEstimationTeemNumItsSpin->setEnabled(method==3); }
void QmitkTensorReconstructionView::Reconstruct | ( | int | method ) | [protected, slot] |
Definition at line 282 of file QmitkTensorReconstructionView.cpp.
References berry::SmartPointer< TObjectType >::Cast(), ItkTensorReconstruction(), m_CurrentSelection, and TeemTensorReconstruction().
Referenced by ItkReconstruction(), and TeemReconstruction().
{ if (m_CurrentSelection) { mitk::DataStorage::SetOfObjects::Pointer set = mitk::DataStorage::SetOfObjects::New(); int at = 0; for (IStructuredSelection::iterator i = m_CurrentSelection->Begin(); i != m_CurrentSelection->End(); ++i) { if (mitk::DataNodeObject::Pointer nodeObj = i->Cast<mitk::DataNodeObject>()) { mitk::DataNode::Pointer node = nodeObj->GetDataNode(); if(QString("DiffusionImage").compare(node->GetData()->GetNameOfClass())==0) { set->InsertElement(at++, node); } } } if(method == 0) { ItkTensorReconstruction(set); } if(method == 1) { TeemTensorReconstruction(set); } } }
void QmitkTensorReconstructionView::SetDefaultNodeProperties | ( | mitk::DataNode::Pointer | node, |
std::string | name | ||
) | [protected] |
Definition at line 498 of file QmitkTensorReconstructionView.cpp.
References mitk::StringProperty::New(), mitk::BoolProperty::New(), mitk::OdfScaleByProperty::New(), mitk::OdfNormalizationMethodProperty::New(), mitk::FloatProperty::New(), and mitk::IntProperty::New().
{ node->SetProperty( "ShowMaxNumber", mitk::IntProperty::New( 500 ) ); node->SetProperty( "Scaling", mitk::FloatProperty::New( 1.0 ) ); node->SetProperty( "Normalization", mitk::OdfNormalizationMethodProperty::New()); node->SetProperty( "ScaleBy", mitk::OdfScaleByProperty::New()); node->SetProperty( "IndexParam1", mitk::FloatProperty::New(2)); node->SetProperty( "IndexParam2", mitk::FloatProperty::New(1)); node->SetProperty( "visible", mitk::BoolProperty::New( true ) ); node->SetProperty( "VisibleOdfs", mitk::BoolProperty::New( false ) ); node->SetProperty ("layer", mitk::IntProperty::New(100)); node->SetProperty( "DoRefresh", mitk::BoolProperty::New( true ) ); //node->SetProperty( "opacity", mitk::FloatProperty::New(1.0f) ); node->SetProperty( "name", mitk::StringProperty::New(name) ); }
void QmitkTensorReconstructionView::StdMultiWidgetAvailable | ( | QmitkStdMultiWidget & | stdMultiWidget ) | [virtual] |
Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 199 of file QmitkTensorReconstructionView.cpp.
References berry::SmartPointer< TObjectType >::Cast(), berry::WorkbenchPart::GetSite(), m_CurrentSelection, m_MultiWidget, and m_SelListener.
{ berry::ISelection::ConstPointer sel( this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager")); m_CurrentSelection = sel.Cast<const IStructuredSelection>(); m_SelListener.Cast<TrSelListener>()->DoSelectionChanged(sel); m_MultiWidget = &stdMultiWidget; }
void QmitkTensorReconstructionView::StdMultiWidgetNotAvailable | ( | ) | [virtual] |
Called when no StdMultiWidget is available anymore. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 208 of file QmitkTensorReconstructionView.cpp.
References m_MultiWidget.
{ m_MultiWidget = NULL; }
void QmitkTensorReconstructionView::TeemCheckboxClicked | ( | ) | [protected, slot] |
Definition at line 228 of file QmitkTensorReconstructionView.cpp.
References Ui_QmitkTensorReconstructionViewControls::groupBox_3, and m_Controls.
Referenced by CreateConnections(), and CreateQtPartControl().
{ m_Controls->groupBox_3->setVisible(m_Controls-> m_TeemToggle->isChecked()); }
void QmitkTensorReconstructionView::TeemReconstruction | ( | ) | [protected, slot] |
Definition at line 277 of file QmitkTensorReconstructionView.cpp.
References Reconstruct().
Referenced by CreateConnections().
{ Reconstruct(1); }
void QmitkTensorReconstructionView::TeemTensorReconstruction | ( | mitk::DataStorage::SetOfObjects::Pointer | inImages ) | [protected, slot] |
Definition at line 399 of file QmitkTensorReconstructionView.cpp.
References mitk::StatusBar::GetInstance(), mitk::ProgressBar::GetInstance(), MBI_DEBUG, MBI_INFO, mitk::DataNode::New(), mitk::TeemTensorEstimationMethodsLLS, mitk::TeemTensorEstimationMethodsMLE, mitk::TeemTensorEstimationMethodsNLS, and mitk::TeemTensorEstimationMethodsWLS.
Referenced by Reconstruct().
{ try { itk::TimeProbe clock; int nrFiles = inImages->size(); if (!nrFiles) return; QString status; mitk::ProgressBar::GetInstance()->AddStepsToDo(nrFiles); mitk::DataStorage::SetOfObjects::const_iterator itemiter( inImages->begin() ); mitk::DataStorage::SetOfObjects::const_iterator itemiterend( inImages->end() ); std::vector<mitk::DataNode::Pointer> nodes; while ( itemiter != itemiterend ) // for all items { mitk::DiffusionImage<DiffusionPixelType>* vols = static_cast<mitk::DiffusionImage<DiffusionPixelType>*>( (*itemiter)->GetData()); std::string nodename; (*itemiter)->GetStringProperty("name", nodename); ++itemiter; // TENSOR RECONSTRUCTION clock.Start(); MBI_INFO << "Teem Tensor reconstruction "; mitk::StatusBar::GetInstance()->DisplayText(status.sprintf( "Teem Tensor reconstruction for %s", nodename.c_str()).toAscii()); typedef mitk::TeemDiffusionTensor3DReconstructionImageFilter< DiffusionPixelType, TTensorPixelType > TensorReconstructionImageFilterType; TensorReconstructionImageFilterType::Pointer tensorReconstructionFilter = TensorReconstructionImageFilterType::New(); tensorReconstructionFilter->SetInput( vols ); if(!m_Controls->m_TensorEstimationTeemSigmaEdit->text().contains(QString("NaN"))) tensorReconstructionFilter->SetSigma( m_Controls->m_TensorEstimationTeemSigmaEdit->text().toFloat() ); switch(m_Controls->m_TensorEstimationTeemEstimationMethodCombo->currentIndex()) { // items << "LLS (Linear Least Squares)" //<< "MLE (Maximum Likelihood)" //<< "NLS (Nonlinear Least Squares)" //<< "WLS (Weighted Least Squares)"; case 0: tensorReconstructionFilter->SetEstimationMethod(mitk::TeemTensorEstimationMethodsLLS); break; case 1: tensorReconstructionFilter->SetEstimationMethod(mitk::TeemTensorEstimationMethodsMLE); break; case 2: tensorReconstructionFilter->SetEstimationMethod(mitk::TeemTensorEstimationMethodsNLS); break; case 3: tensorReconstructionFilter->SetEstimationMethod(mitk::TeemTensorEstimationMethodsWLS); break; default: tensorReconstructionFilter->SetEstimationMethod(mitk::TeemTensorEstimationMethodsLLS); } tensorReconstructionFilter->SetNumIterations( m_Controls->m_TensorEstimationTeemNumItsSpin->value() ); if(m_Controls->m_TensorEstimationManualThreashold->isChecked()) tensorReconstructionFilter->SetConfidenceThreshold( m_Controls->m_TensorReconstructionThreasholdEdit_2->text().toDouble() ); tensorReconstructionFilter->SetConfidenceFuzzyness( m_Controls->m_TensorEstimationTeemFuzzyEdit->text().toFloat() ); tensorReconstructionFilter->SetMinPlausibleValue( m_Controls->m_TensorEstimationTeemMinValEdit->text().toDouble() ); tensorReconstructionFilter->Update(); clock.Stop(); MBI_DEBUG << "took " << clock.GetMeanTime() << "s." ; // TENSORS TO DATATREE mitk::DataNode::Pointer node2=mitk::DataNode::New(); node2->SetData( tensorReconstructionFilter->GetOutputItk() ); QString newname; newname = newname.append(nodename.c_str()); newname = newname.append("_dtix"); SetDefaultNodeProperties(node2, newname.toStdString()); nodes.push_back(node2); mitk::ProgressBar::GetInstance()->Progress(); } std::vector<mitk::DataNode::Pointer>::iterator nodeIt; for(nodeIt = nodes.begin(); nodeIt != nodes.end(); ++nodeIt) GetDefaultDataStorage()->Add(*nodeIt); mitk::StatusBar::GetInstance()->DisplayText(status.sprintf("Finished Processing %d Files", nrFiles).toAscii()); m_MultiWidget->RequestUpdate(); } catch (itk::ExceptionObject &ex) { MBI_INFO << ex ; return ; } }
void QmitkTensorReconstructionView::TemplatedAnalyticalTensorReconstruction | ( | mitk::DiffusionImage< DiffusionPixelType > * | vols, |
float | lambda, | ||
std::string | nodename, | ||
std::vector< mitk::DataNode::Pointer > * | nodes, | ||
int | normalization | ||
) | [protected] |
void QmitkTensorReconstructionView::TensorsToDWI | ( | ) | [protected, slot] |
Definition at line 556 of file QmitkTensorReconstructionView.cpp.
References berry::SmartPointer< TObjectType >::Cast(), DoTensorsToDWI(), and m_CurrentSelection.
Referenced by CreateConnections().
{ if (m_CurrentSelection) { mitk::DataStorage::SetOfObjects::Pointer set = mitk::DataStorage::SetOfObjects::New(); int at = 0; for (IStructuredSelection::iterator i = m_CurrentSelection->Begin(); i != m_CurrentSelection->End(); ++i) { if (mitk::DataNodeObject::Pointer nodeObj = i->Cast<mitk::DataNodeObject>()) { mitk::DataNode::Pointer node = nodeObj->GetDataNode(); if(QString("TensorImage").compare(node->GetData()->GetNameOfClass())==0) { set->InsertElement(at++, node); } } } DoTensorsToDWI(set); } }
friend struct TrSelListener [friend] |
Definition at line 50 of file QmitkTensorReconstructionView.h.
Referenced by CreateQtPartControl().
Definition at line 97 of file QmitkTensorReconstructionView.h.
Referenced by Advanced1CheckboxClicked(), Advanced2CheckboxClicked(), CreateConnections(), CreateQtPartControl(), ManualThresholdClicked(), MethodChoosen(), and TeemCheckboxClicked().
berry::IStructuredSelection::ConstPointer QmitkTensorReconstructionView::m_CurrentSelection [protected] |
Definition at line 111 of file QmitkTensorReconstructionView.h.
Referenced by CreateQtPartControl(), TrSelListener::DoSelectionChanged(), Reconstruct(), StdMultiWidgetAvailable(), and TensorsToDWI().
Definition at line 99 of file QmitkTensorReconstructionView.h.
Referenced by StdMultiWidgetAvailable(), and StdMultiWidgetNotAvailable().
Definition at line 110 of file QmitkTensorReconstructionView.h.
Referenced by CreateQtPartControl(), StdMultiWidgetAvailable(), and ~QmitkTensorReconstructionView().
const int QmitkTensorReconstructionView::nrconvkernels [static] |
Definition at line 75 of file QmitkTensorReconstructionView.h.
const std::string QmitkTensorReconstructionView::VIEW_ID = "org.mitk.views.tensorreconstruction" [static] |
Definition at line 57 of file QmitkTensorReconstructionView.h.