]> Creatis software - clitk.git/blobdiff - vv/vvToolRigidReg.cxx
changes in license header
[clitk.git] / vv / vvToolRigidReg.cxx
index ae1236e012736a9a44fc3add1033748ea70186e1..e99d8674b628fe06f0e9da5ca6d325b68aa74cd6 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 
 // vv
 #include "vvToolRigidReg.h"
@@ -56,7 +56,6 @@ vvToolRigidReg::vvToolRigidReg(vvMainWindowBase * parent, Qt::WindowFlags f):
 //    qsize.setWidth(850);
 //    mToolWidget->setFixedSize(qsize);
   // Set how many inputs are needed for this tool
-  mFilter = new clitk::AffineRegistrationGenericFilter;
   cb_transform->hide();
   cb_interpolator->hide();
   cb_optimizer->hide();
@@ -70,9 +69,10 @@ vvToolRigidReg::vvToolRigidReg(vvMainWindowBase * parent, Qt::WindowFlags f):
   interpollabel->hide();
   presetlabel->hide();
   
+  
   // Set how many inputs are needed for this tool
AddInputSelector("Select moving image",mFilter);
AddInputSelector("Select fixed image",mFilter);
 AddInputSelector("Select moving image");
 AddInputSelector("Select fixed image");
 }
 //------------------------------------------------------------------------------
 
@@ -113,29 +113,16 @@ void vvToolRigidReg::GetArgsInfoFromGUI()
                     mMainWindow->GetInputPathName(),
                     "Text (*.conf *.txt *.rtf *.doc)");
   
-  DD(file.toStdString());                  
   if (file.isEmpty())
   return;
   
   QFile Qfile1(file);
   mConfigFile= file.toStdString();
   CmdlineParser(1, 1);//1,1 - override, initialize
-  cb_transform->show();
-  cb_metric->show();
-  cb_interpolator->show();
-  cb_optimizer->show();
-  cb_selectoutput->show();
-  translabel->show();
-  metriclabel->show();
-  outputlabel->show();
-  optimlabel->show();
-  interpollabel->show();
   cb_transform->setCurrentIndex(mArgsInfo.transform_arg);
   cb_interpolator->setCurrentIndex(mArgsInfo.interp_arg);
   cb_optimizer->setCurrentIndex(mArgsInfo.optimizer_arg);
   cb_metric->setCurrentIndex(mArgsInfo.metric_arg);
-  DD(cb_transform->currentIndex());
-  DD(mArgsInfo.transform_arg);
 }
 //------------------------------------------------------------------------------
 
@@ -143,6 +130,7 @@ void vvToolRigidReg::GetArgsInfoFromGUI()
 void vvToolRigidReg::Presets()
 {
   mConfigFile="Presets";
+  std::string matrixfilename;
 if(cb_presets->currentIndex()==0)
 {
     mArgsInfo.reference_arg=new char;  
@@ -214,7 +202,8 @@ if(cb_presets->currentIndex()==0)
     mArgsInfo.rWeight_given=1.0;        
     mArgsInfo.rWeight_arg=50.0;         
     mArgsInfo.matrix_given=1;
-    mArgsInfo.matrix_arg="/home/bharath/bin/writematrix.txt";
+    matrixfilename="/home/bharath/bin/writematrix.txt";//put ur path here for retreiving your matrix
+    mArgsInfo.matrix_arg=const_cast<char*>(matrixfilename.c_str()); 
     UpdateTextEditor2();
 }
 else {
@@ -227,6 +216,7 @@ else {
 //------------------------------------------------------------------------------
 void vvToolRigidReg::UpdateTextEditor2()
 {
+  
     QString str1,str2,str3;
     QColor color;
     tab2textedit->clear();
@@ -561,8 +551,13 @@ void vvToolRigidReg::UpdateTextEditor2()
 //------------------------------------------------------------------------------
 void vvToolRigidReg::TransformSelect()
 {
+  if(!mConfigFile.empty()){
    mArgsInfo.transform_arg=cb_transform->currentIndex();
    UpdateTextEditor2();
+  }
+  else{
+    QMessageBox::information(this,"Warning","Load the Config File First!..");
+  }
 }
 //------------------------------------------------------------------------------
   
@@ -611,32 +606,86 @@ void vvToolRigidReg::CmdlineParser(int override, int initialize)
 //------------------------------------------------------------------------------
 void vvToolRigidReg::OptimizerSelect()
 {
- mArgsInfo.optimizer_arg=cb_optimizer->currentIndex();
+  if(!mConfigFile.empty()){
+  mArgsInfo.optimizer_arg=cb_optimizer->currentIndex();
   UpdateTextEditor2();
+   }
+  else{
+    QMessageBox::information(this,"Warning","Load the Config File First!..");
+  }
 }
 //------------------------------------------------------------------------------
 
 //------------------------------------------------------------------------------
 void vvToolRigidReg::InterpolatorSelect()
 {
- mArgsInfo.interp_arg=cb_interpolator->currentIndex();
- UpdateTextEditor2();
+  if(!mConfigFile.empty()){
+  mArgsInfo.interp_arg=cb_interpolator->currentIndex();
+  UpdateTextEditor2();
+   }
+  else{
+    QMessageBox::information(this,"Warning","Load the Config File First!..");
+  }
 }
 //------------------------------------------------------------------------------
 
 //------------------------------------------------------------------------------
 void vvToolRigidReg::MetricSelect()
 {
+  if(!mConfigFile.empty()){
  mArgsInfo.metric_arg=cb_metric->currentIndex();
  UpdateTextEditor2();
+   }
+  else{
+    QMessageBox::information(this,"Warning","Load the Config File First!..");
+  }
 }
 //------------------------------------------------------------------------------
 
 //------------------------------------------------------------------------------
 void vvToolRigidReg::OutputSelect()
 {
+  std::ostringstream osstream;
+  if(!mConfigFile.empty()){
+    if(cb_selectoutput->currentIndex()==0){
+      mArgsInfo.output_given=0;
+      mArgsInfo.checker_after_given=0;
+      mArgsInfo.checker_before_given=0;
+      mArgsInfo.after_given=0;
+      mArgsInfo.before_given=0;
+    }//get transformed output image
+    if(cb_selectoutput->currentIndex()==1){ 
+      mArgsInfo.output_given=0;
+      mArgsInfo.checker_after_given=1;
+      mArgsInfo.checker_before_given=0;
+      mArgsInfo.after_given=0;
+      mArgsInfo.before_given=0;
+    }//get checkered image after reg
+    if(cb_selectoutput->currentIndex()==2){  
+      mArgsInfo.output_given=0;
+      mArgsInfo.checker_after_given=0;
+      mArgsInfo.checker_before_given=1;
+      mArgsInfo.after_given=0;
+      mArgsInfo.before_given=0;
+    }//get checkered  image before reg
+    if(cb_selectoutput->currentIndex()==3){
+      mArgsInfo.output_given=0;
+      mArgsInfo.checker_after_given=0;
+      mArgsInfo.checker_before_given=0;
+      mArgsInfo.after_given=1;
+      mArgsInfo.before_given=0;
+    }//get difference image after reg
+    if(cb_selectoutput->currentIndex()==4){  
+      mArgsInfo.output_given=0;
+      mArgsInfo.checker_after_given=0;
+      mArgsInfo.checker_before_given=0;
+      mArgsInfo.after_given=0;
+      mArgsInfo.before_given=1;
+    }//get difference image before reg
+  }
+  else{
+    QMessageBox::information(this,"Warning","Load the Config File First!..");
+  }
 }
 //------------------------------------------------------------------------------
 
@@ -670,7 +719,6 @@ void vvToolRigidReg::InputIsSelected(std::vector<vvSlicerManager *> & l)
   mInput2 = l[1];
   UpdateTextEditor(mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix(),textEdit_2);
 
-  DD(*mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix());
   for(int i =0;i<4;i++)
   {
     for(int j=0;j<4;j++)
@@ -718,6 +766,9 @@ void vvToolRigidReg::InputIsSelected(std::vector<vvSlicerManager *> & l)
    connect(loadbutton, SIGNAL(pressed()), this, SLOT(LoadFile()));
    connect(savebutton, SIGNAL(pressed()), this, SLOT(SaveFile()));
    
+   connect(checkBox_rigid, SIGNAL(clicked(bool)), this, SLOT(CheckRigidReg()));
+   connect(checkBox_deformable, SIGNAL(clicked(bool)), this, SLOT(CheckDeformableReg()));
+   
    connect(cb_presets, SIGNAL(activated(int)), this, SLOT(Presets()));
    connect(cb_transform, SIGNAL(activated(int)), this, SLOT(TransformSelect()));
    connect(cb_optimizer, SIGNAL(activated(int)), this, SLOT(OptimizerSelect()));
@@ -736,10 +787,49 @@ void vvToolRigidReg::apply()
 }
 //------------------------------------------------------------------------------
 
+//------------------------------------------------------------------------------
+void vvToolRigidReg::CheckRigidReg()
+{
+  checkBox_deformable->setChecked(false);
+  cb_transform->show();
+  cb_presets->show();
+  cb_metric->show();
+  cb_interpolator->show();
+  cb_optimizer->show();
+  cb_selectoutput->show();
+  translabel->show();
+  metriclabel->show();
+  outputlabel->show();
+  optimlabel->show();
+  interpollabel->show();
+  presetlabel->show();
+  
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::CheckDeformableReg()
+{
+  checkBox_rigid->setChecked(false);
+  presetlabel->hide();
+  cb_transform->show();
+  cb_metric->show();
+  cb_interpolator->show();
+  cb_optimizer->show();
+  cb_selectoutput->show();
+  cb_presets->hide();
+  translabel->show();
+  metriclabel->show();
+  outputlabel->show();
+  optimlabel->show();
+  interpollabel->show();
+}
+//------------------------------------------------------------------------------
+
 //------------------------------------------------------------------------------
 void vvToolRigidReg::SetOverlay(vvImage::Pointer Image)
 {
-    for (int i =0; i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
+    for (int i =0; i<mCurrentSlicerManager->GetNumberOfSlicers(); i++) {
    mCurrentSlicerManager->GetSlicer(i)->SetOverlay(Image);
    mCurrentSlicerManager->GetSlicer(i)->SetActorVisibility("overlay",0,true);
    mCurrentSlicerManager->SetColorMap();
@@ -751,13 +841,13 @@ void vvToolRigidReg::SetOverlay(vvImage::Pointer Image)
 //------------------------------------------------------------------------------
 void vvToolRigidReg::RemoveOverlay()
 {
-   for(int i=0;i<mCurrentSlicerManager->NumberOfSlicers();i++)
-        {
-          mInput1->RemoveActor("overlay",0);
-          mInput1->SetColorMap(0);
-          mInput1->Render();
-          hide();
-        }
+   for(int i=0;i<mCurrentSlicerManager->GetNumberOfSlicers();i++)
+  {
+     mInput1->RemoveActor("overlay",0);
+     mInput1->SetColorMap(0);
+     mInput1->Render();
+     hide();
+  }
 }
 //------------------------------------------------------------------------------
 
@@ -801,7 +891,9 @@ void vvToolRigidReg::SetTransform(double tX, double tY, double tZ, double aX, do
   }
   //Translations
   if (tX!=0||tY!=0||tZ!=0)
-    transform->Translate(tX*mInput1->GetImage()->GetSpacing()[0],tY*mInput1->GetImage()->GetSpacing()[1],tZ*mInput1->GetImage()->GetSpacing()[2]);
+    transform->Translate(tX*mInput1->GetImage()->GetSpacing()[0],
+                         tY*mInput1->GetImage()->GetSpacing()[1],
+                         tZ*mInput1->GetImage()->GetSpacing()[2]);
 }
 //------------------------------------------------------------------------------
 
@@ -827,7 +919,7 @@ void vvToolRigidReg::LoadFile()
 //------------------------------------------------------------------------------
 void vvToolRigidReg::Render()
 {
-  for (int i=0; i<mCurrentSlicerManager->NumberOfSlicers(); i++) {
+  for (int i=0; i<mCurrentSlicerManager->GetNumberOfSlicers(); i++) {
        mCurrentSlicerManager->GetSlicer(i)->ForceUpdateDisplayExtent();
        mCurrentSlicerManager->GetSlicer(i)->Render();
       }
@@ -945,13 +1037,25 @@ void vvToolRigidReg::AutoRegister()
     clitk::AffineRegistrationGenericFilter::New();
     filter->SetInputVVImages(inputs);
     filter->SetArgsInfo(mArgsInfo);
-    DD("ArgsInfo given in");
     filter->EnableReadOnDisk(false);
     filter->Update();
-    vvImage::Pointer output = filter->GetOutputVVImage();
-    //osstream << "Registered" << "_ "
-      //     << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
-    //AddImage(output,osstream.str());
+    std::ostringstream osstream;
+    vvImage::Pointer output;
+    output = filter->GetOutputVVImage();
+    SetOverlay(output);
+    
+    if(!cb_selectoutput->currentIndex()==0){
+     std::string outputstring;
+     output = filter->GetOutputVVImages()[1];
+     if(cb_selectoutput->currentIndex()==1){outputstring="Checkered_after_reg";}
+     if(cb_selectoutput->currentIndex()==2){outputstring="Checkered_before_reg";}
+     if(cb_selectoutput->currentIndex()==3){outputstring="Diff_after_reg";}
+     if(cb_selectoutput->currentIndex()==4){outputstring="Diff_before_reg";}
+    osstream << outputstring << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
+    AddImage(output,osstream.str());
+    filter->DeleteLastOutputImage();
+    }
+    DD(filter->GetOutputVVImages().capacity());
     QApplication::restoreOverrideCursor();
     ReadFile(true);
     }