00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date: 2007-12-11 15:15:45 +0100 (Di, 11 Dez 2007) $ 00006 Version: $Revision: 13136 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #if !defined(QmitkDiffusionTensorEstimation_H__INCLUDED) 00019 #define QmitkDiffusionTensorEstimation_H__INCLUDED 00020 00021 #include "QmitkFunctionality.h" 00022 #include "mitkDiffusionVolumes.h" 00023 00024 class QmitkStdMultiWidget; 00025 class QmitkDiffusionTensorEstimationControls; 00026 00027 typedef short DiffusionPixelType; 00028 00029 00039 class QmitkDiffusionTensorEstimation : public QmitkFunctionality 00040 { 00041 Q_OBJECT 00042 00043 public: 00047 QmitkDiffusionTensorEstimation(QObject *parent=0, const char *name=0, QmitkStdMultiWidget *mitkStdMultiWidget = NULL, mitk::DataTreeIteratorBase* dataIt = NULL); 00048 00052 virtual ~QmitkDiffusionTensorEstimation(); 00053 00057 virtual QWidget * CreateControlWidget(QWidget *parent); 00058 00062 virtual QWidget * CreateMainWidget(QWidget * parent); 00063 00067 virtual void CreateConnections(); 00068 00072 virtual QAction * CreateAction(QActionGroup *parent); 00073 00074 virtual void Activated(); 00075 00076 protected slots: 00077 void TreeChanged(); 00078 00079 void TensorVolumesSaveButton(); 00080 00081 void TensorVolumesLoadButton(); 00082 00083 void TensorVolumesRemoveButton(); 00084 00085 void QBallVolumesSaveButton(); 00086 00087 void QBallVolumesLoadButton(); 00088 00089 void QBallVolumesRemoveButton(); 00090 00091 void DirectionVolumesSaveButton(); 00092 00093 void DirectionVolumesLoadButton(); 00094 00095 void DirectionVolumesRemoveButton(); 00096 00097 void DirectionVolumesAngularErrorButton(); 00098 00099 void TensorEstimationTeemEstimateButton(); 00100 00101 void QBallReconstructionButton(); 00102 00103 void QBallReconstructionAnalyticalButton(); 00104 00105 void TensorEstimationButton(); 00106 00107 void StandardAlgorithmsFAButton(); 00108 00109 void StandardAlgorithmsRAButton(); 00110 00111 void StandardAlgorithmsDirectionButton(); 00112 00113 void QBallStandardAlgorithmsDirectionButton(); 00114 00115 void QBallStandardAlgorithmsDeconvolutionButton(); 00116 00117 void QBallStandardAlgorithmsGFAButton(); 00118 00119 void QBallVolumesVisualizeSelectedButton(); 00120 00121 void DiffusionVolumeSaveButton(); 00122 00123 void DiffusionVolumesLoadButton(); 00124 00125 void DiffusionVolumesRemoveButton(); 00126 00127 void DiffusionVolumesSelectAll(); 00128 00129 //void DwiStandardAlgorithmsGFAButton(); 00130 00131 void SetDefaultNodeProperties(mitk::DataNode::Pointer node, std::string name); 00132 00133 protected: 00138 QmitkStdMultiWidget * m_MultiWidget; 00139 00143 QmitkDiffusionTensorEstimationControls * m_Controls; 00144 00145 mitk::DataTreeFilter::Pointer m_DiffusionVolumesDataTreeFilter; 00146 00147 mitk::DataTreeFilter::Pointer m_TensorVolumesDataTreeFilter; 00148 00149 mitk::DataTreeFilter::Pointer m_QballVolumesDataTreeFilter; 00150 00151 mitk::DataTreeFilter::Pointer m_DirectionVolumesDataTreeFilter; 00152 00153 bool m_FilterInitialized; 00154 00155 static const int odfsize; 00156 00157 static const int nrconvkernels; 00158 00159 template<int L> 00160 void ReconstructAnalytically(mitk::DiffusionVolumes<DiffusionPixelType>* vols, 00161 float lambda, std::string nodename, std::vector<mitk::DataNode::Pointer>* nodes); 00162 00163 }; 00164 #endif // !defined(QmitkDiffusionTensorEstimation_H__INCLUDED)