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.
1.7.2