Public Member Functions | Static Public Attributes | Protected Slots | Protected Member Functions | Protected Attributes | Friends

QmitkTbssView Class Reference

QmitkTensorReconstructionView. More...

#include <QmitkTbssView.h>

Inheritance diagram for QmitkTbssView:
Inheritance graph
[legend]
Collaboration diagram for QmitkTbssView:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkTbssView ()
virtual ~QmitkTbssView ()
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.tbss"
static const int nrconvkernels

Protected Slots

void OutputValues ()
void OutputUnconnectedPointValues ()

Protected Member Functions

void SetDefaultNodeProperties (mitk::DataNode::Pointer node, std::string name)
void SkeletonSelected (mitk::DataNode::Pointer skeletonNode)
void RoiSelected (mitk::DataNode::Pointer roiNode)
std::vector
< RoiImageType::IndexType > 
SortPoints (RoiImageType::Pointer roi)
bool PointVisited (std::vector< RoiImageType::IndexType > points, RoiImageType::IndexType point)
RoiImageType::IndexType FindNextPoint (std::vector< RoiImageType::IndexType > pointsVisited, RoiImageType::IndexType currentPoint, RoiImageType::Pointer roi, bool &ready)

Protected Attributes

Ui::QmitkTbssViewControls * m_Controls
QmitkStdMultiWidgetm_MultiWidget
berry::ISelectionListener::Pointer m_SelListener
berry::IStructuredSelection::ConstPointer m_CurrentSelection
bool m_IsInitialized
mitk::DataNode::Pointer m_SkeletonNode
mitk::DataNode::Pointer m_RoiNode

Friends

struct TbSelListener

Detailed Description

QmitkTensorReconstructionView.

Document your class here.

See also:
QmitkFunctionality

Definition at line 52 of file QmitkTbssView.h.


Constructor & Destructor Documentation

QmitkTbssView::QmitkTbssView (  )

Definition at line 183 of file QmitkTbssView.cpp.

QmitkTbssView::~QmitkTbssView (  ) [virtual]

Definition at line 190 of file QmitkTbssView.cpp.

References berry::WorkbenchPart::GetSite(), and m_SelListener.

{
  this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->RemovePostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener);
}

Member Function Documentation

void QmitkTbssView::Activated (  ) [virtual]

Called when the functionality is activated.

Reimplemented from QmitkFunctionality.

Definition at line 238 of file QmitkTbssView.cpp.

void QmitkTbssView::CreateConnections (  ) [virtual]

Creation of the connections of main and control widget.

Definition at line 229 of file QmitkTbssView.cpp.

References m_Controls, OutputUnconnectedPointValues(), and OutputValues().

Referenced by CreateQtPartControl().

{
  if ( m_Controls )
  {
    connect( (QObject*)(m_Controls->m_OutputValues), SIGNAL(clicked()), this, SLOT(OutputValues()) );
    connect( (QObject*)(m_Controls->m_OutputPoints), SIGNAL(clicked()), this, SLOT(OutputUnconnectedPointValues()) );
  }
}
void QmitkTbssView::CreateQtPartControl ( QWidget *  parent ) [virtual]

Implements berry::QtViewPart.

Definition at line 195 of file QmitkTbssView.cpp.

References berry::SmartPointer< TObjectType >::Cast(), CreateConnections(), berry::WorkbenchPart::GetSite(), m_Controls, m_CurrentSelection, m_IsInitialized, m_SelListener, and TbSelListener.

{
  if (!m_Controls)
  {
    // create GUI widgets
    m_Controls = new Ui::QmitkTbssViewControls;
    m_Controls->setupUi(parent);
    this->CreateConnections(); 
    
  }

  m_IsInitialized = false;
  m_SelListener = berry::ISelectionListener::Pointer(new TbSelListener(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<TbSelListener>()->DoSelectionChanged(sel);
}
void QmitkTbssView::Deactivated (  ) [virtual]

Only called when IsExclusiveFunctionality() returns true.

See also:
IsExclusiveFunctionality()

Reimplemented from QmitkFunctionality.

Definition at line 243 of file QmitkTbssView.cpp.

RoiImageType::IndexType QmitkTbssView::FindNextPoint ( std::vector< RoiImageType::IndexType >  pointsVisited,
RoiImageType::IndexType  currentPoint,
RoiImageType::Pointer  roi,
bool &  ready 
) [protected]

Definition at line 485 of file QmitkTbssView.cpp.

References PointVisited().

Referenced by SortPoints().

{  

  RoiImageType::IndexValueType dx[26] = {0, 0, 1, 1, 1, 0,-1,-1,-1,0,1,1, 1, 0,-1,-1,-1, 0, 1, 1, 1, 0,-1,-1,-1, 0};
  RoiImageType::IndexValueType dy[26] = {0, 1, 1, 0,-1,-1,-1, 0, 1,1,1,0,-1,-1,-1, 0, 1, 1, 1, 0,-1,-1,-1, 0, 1, 0};
  RoiImageType::IndexValueType dz[26] = {0, 0, 0, 0, 0, 0, 0, 0, 0,1,1,1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1,-1,-1,-1, 1};

  RoiImageType::IndexType newPoint;   

  for (int step=0; step<26; step++)
  {
    newPoint[0] = currentPoint[0] + dx[step];
    newPoint[1] = currentPoint[1] + dy[step];
    newPoint[2] = currentPoint[2] + dz[step];

    // Check if point is not yet visited
    if(!PointVisited(pointsVisited, newPoint))
    {
      if(roi->GetPixel(newPoint) == 1)
        return newPoint;
    }
  }

  // No points yet to be visited found so we are done searching
  ready = true;
  return currentPoint;

}
void QmitkTbssView::OutputUnconnectedPointValues (  ) [protected, slot]

Definition at line 262 of file QmitkTbssView.cpp.

References mitk::CastToItkImage(), m_SkeletonNode, and QuadProgPP::t().

Referenced by CreateConnections().

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

  //read roi
  /*mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( m_RoiNode->GetData() ); 
  RoiImageType::Pointer roi = RoiImageType::New();
  mitk::CastToItkImage(image, roi);*/
  
   //read the 4D skeleton
  mitk::Image::Pointer image2 = dynamic_cast<mitk::Image*>( m_SkeletonNode->GetData() ); 
  AllSkeletonType::Pointer skeleton = AllSkeletonType::New();  
  mitk::CastToItkImage(image2, skeleton);

 // RoiImageType::SizeType roiSize = roi->GetLargestPossibleRegion().GetSize();
  AllSkeletonType::SizeType skeletonSize = skeleton->GetLargestPossibleRegion().GetSize();



  AllSkeletonType::IndexType indices[3];
  indices[2][0] = 98; indices[2][1] = 126; indices[2][2] = 105;
  indices[3][0] = 101; indices[3][1] = 98; indices[3][2] = 104;
  indices[4][0] = 101; indices[4][1] = 76; indices[4][2] = 92;

  // output file
  std::string filename = "G://home//vanbrugg//spie2011//CingulumHealthy.csv";
  std::ofstream f;
  f.open(filename.c_str());

  for (int s=0; s<skeletonSize[3]; s++)
  {
    
    for(int t=0; t<3; t++)
    {
      indices[t][3] = s;     
      f << skeleton->GetPixel(indices[t]) << ",";
    }

    f << std::endl;
  }
  f.close();

  //for(int x=0; x<roiSize[0]; x++)
  //{
  //  for(int y=0; y<roiSize[1]; y++)
  //  {
  //    for(int z=0; z<roiSize[2]; z++)
  //    {
  //      RoiImageType::IndexType index;
  //      index[0] = x;
  //      index[1] = y;
  //      index[2] = z;
  //      if (roi->GetPixel(index) != 0)
  //      {
  //        // Output the values of this point for all subjects
  //        AllSkeletonType::IndexType skeletonIndex;
  //        skeletonIndex[0] = index[0];
  //        skeletonIndex[1] = index[1];
  //        skeletonIndex[2] = index[2];

  //       

  //        for(int t=0; t<skeletonSize[3]; t++)
  //        {
  //          if(index[0] == 90 && index[1] == 98 && index[2] == 95)
  //          {
  //            std::cout << "the empty voxel" << std::endl;
  //          }
  //          skeletonIndex[3] = t;
  //          std::cout << skeleton->GetPixel(skeletonIndex) << std::endl;
  //        }

  //        std::cout << " ";
  //      }
  //    }
  //  }
  //}

}
void QmitkTbssView::OutputValues (  ) [protected, slot]

Definition at line 345 of file QmitkTbssView.cpp.

References mitk::CastToItkImage(), m_RoiNode, m_SkeletonNode, and SortPoints().

Referenced by CreateConnections().

{

  if(m_SkeletonNode.IsNull() || m_RoiNode.IsNull())
  {
    return;
  }


  //read roi
  mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( m_RoiNode->GetData() ); 
  RoiImageType::Pointer roi = RoiImageType::New();
  mitk::CastToItkImage(image, roi);

  //read the 4D skeleton
  mitk::Image::Pointer image2 = dynamic_cast<mitk::Image*>( m_SkeletonNode->GetData() ); 
  AllSkeletonType::Pointer skeleton = AllSkeletonType::New();  
  mitk::CastToItkImage(image2, skeleton);

  RoiImageType::SizeType roiSize = roi->GetLargestPossibleRegion().GetSize();
  AllSkeletonType::SizeType skeletonSize = skeleton->GetLargestPossibleRegion().GetSize();

  std::vector<RoiImageType::IndexType> indices = SortPoints(roi);


  //For every subject (4th axis of the 4D volume) output the tract of interest and write results to file
  std::string filename = "G://home//vanbrugg//spie2011//paraHipLeftHealthy.csv";
  std::ofstream f;
  f.open(filename.c_str());
  

  for (int s=0; s<skeletonSize[3]; s++)
  {
    std::vector<RoiImageType::IndexType>::iterator it = indices.begin();    
    while(it != indices.end())
    {
      RoiImageType::IndexType roiIndex = *it;
      AllSkeletonType::IndexType skeletonIndex;
      skeletonIndex[0] = roiIndex[0];
      skeletonIndex[1] = roiIndex[1];
      skeletonIndex[2] = roiIndex[2];
      skeletonIndex[3] = s;

      //std::cout << skeleton->GetPixel(skeletonIndex) << ",";

      f << skeleton->GetPixel(skeletonIndex) << ",";
     

      ++it;
    }
    f << std::endl;
  }

  f.close();

  //for(int x=0; x<roiSize[0]; x++)
  //{
  //  for(int y=0; y<roiSize[1]; y++)
  //  {
  //    for(int z=0; z<roiSize[2]; z++)
  //    {
  //      RoiImageType::IndexType index;
  //      index[0] = x;
  //      index[1] = y;
  //      index[2] = z;
  //      if (roi->GetPixel(index) != 0)
  //      {
  //        // Output the values of this point for all subjects
  //        AllSkeletonType::IndexType skeletonIndex;
  //        skeletonIndex[0] = index[0];
  //        skeletonIndex[1] = index[1];
  //        skeletonIndex[2] = index[2];

  //       

  //        for(int t=0; t<skeletonSize[3]; t++)
  //        {
  //          if(index[0] == 90 && index[1] == 98 && index[2] == 95)
  //          {
  //            std::cout << "the empty voxel" << std::endl;
  //          }
  //          skeletonIndex[3] = t;
  //          std::cout << skeleton->GetPixel(skeletonIndex) << std::endl;
  //        }

  //        std::cout << " ";
  //      }
  //    }
  //  }
  //}
  
   
  
}
bool QmitkTbssView::PointVisited ( std::vector< RoiImageType::IndexType >  points,
RoiImageType::IndexType  point 
) [protected]

Definition at line 468 of file QmitkTbssView.cpp.

Referenced by FindNextPoint().

{
  bool ret = false;
  std::vector<RoiImageType::IndexType>::iterator it = points.begin();
  while(it != points.end())
  {
    RoiImageType::IndexType p = *it;
    if(p[0] == point[0] && p[1] == point[1] && p[2] == point[2])
    {
      ret = true;
    }
    ++it;
  }

  return ret;
}
void QmitkTbssView::RoiSelected ( mitk::DataNode::Pointer  roiNode ) [protected]

Definition at line 255 of file QmitkTbssView.cpp.

References m_Controls, and m_RoiNode.

{
  m_RoiNode = roiNode; 
  m_RoiNode->SetVisibility(true);
  m_Controls->m_RoiNameLabel->setText(QString::fromStdString(m_RoiNode->GetName()));
}
void QmitkTbssView::SetDefaultNodeProperties ( mitk::DataNode::Pointer  node,
std::string  name 
) [protected]
void QmitkTbssView::SkeletonSelected ( mitk::DataNode::Pointer  skeletonNode ) [protected]

Definition at line 248 of file QmitkTbssView.cpp.

References m_Controls, and m_SkeletonNode.

{
  m_SkeletonNode = skeletonNode; 
  m_SkeletonNode->SetVisibility(true);
  m_Controls->m_SkeletonNameLabel->setText(QString::fromStdString(m_SkeletonNode->GetName()));  
}
std::vector< RoiImageType::IndexType > QmitkTbssView::SortPoints ( RoiImageType::Pointer  roi ) [protected]

Definition at line 440 of file QmitkTbssView.cpp.

References FindNextPoint().

Referenced by OutputValues().

{
  std::vector<RoiImageType::IndexType> indices;
  
  //set current point to be the start point. Hard coded for now, should be changed to function in general
  RoiImageType::IndexType currentPoint;
  //currentPoint[0] = 90; // For Corpus Callosum the constant index;
  //currentPoint[1] = 88;
  //currentPoint[2] = 82;

  //currentPoint[0] = 65; //standard for right parahippocampal white matter
  //currentPoint[1] = 108;
  //currentPoint[2] = 45;

  currentPoint[0] = 95; 
  currentPoint[1] = 166;
  currentPoint[2] = 78;

  bool ready = false;
  while(!ready)
  {
    indices.push_back(currentPoint);
    currentPoint = FindNextPoint(indices, currentPoint, roi, ready);
  }

  return indices;
}
void QmitkTbssView::StdMultiWidgetAvailable ( QmitkStdMultiWidget stdMultiWidget ) [virtual]

Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()

See also:
GetActiveStdMultiWidget()

Reimplemented from QmitkFunctionality.

Definition at line 215 of file QmitkTbssView.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<TbSelListener>()->DoSelectionChanged(sel);
  m_MultiWidget = &stdMultiWidget;
}
void QmitkTbssView::StdMultiWidgetNotAvailable (  ) [virtual]

Called when no StdMultiWidget is available anymore. Should not be used anymore, see GetActiveStdMultiWidget()

See also:
GetActiveStdMultiWidget()

Reimplemented from QmitkFunctionality.

Definition at line 224 of file QmitkTbssView.cpp.

References m_MultiWidget.

{
  m_MultiWidget = NULL;
}

Friends And Related Function Documentation

friend struct TbSelListener [friend]

Definition at line 57 of file QmitkTbssView.h.

Referenced by CreateQtPartControl().


Member Data Documentation

Ui::QmitkTbssViewControls* QmitkTbssView::m_Controls [protected]

Definition at line 105 of file QmitkTbssView.h.

Referenced by CreateQtPartControl().

Definition at line 97 of file QmitkTbssView.h.

Referenced by StdMultiWidgetAvailable(), and StdMultiWidgetNotAvailable().

Definition at line 111 of file QmitkTbssView.h.

Referenced by OutputValues(), and RoiSelected().

Definition at line 102 of file QmitkTbssView.h.

Referenced by CreateQtPartControl(), StdMultiWidgetAvailable(), and ~QmitkTbssView().

Definition at line 110 of file QmitkTbssView.h.

Referenced by OutputUnconnectedPointValues(), OutputValues(), and SkeletonSelected().

const int QmitkTbssView::nrconvkernels [static]

Definition at line 82 of file QmitkTbssView.h.

const std::string QmitkTbssView::VIEW_ID = "org.mitk.views.tbss" [static]

Definition at line 64 of file QmitkTbssView.h.


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