X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolRigidReg.cxx;h=e99d8674b628fe06f0e9da5ca6d325b68aa74cd6;hb=a6957c4825e83c61b977ec316dd841878617ffbd;hp=ae1236e012736a9a44fc3add1033748ea70186e1;hpb=71e5a41c04015e6fc1df20d68b01d6f10588a717;p=clitk.git diff --git a/vv/vvToolRigidReg.cxx b/vv/vvToolRigidReg.cxx index ae1236e..e99d867 100644 --- a/vv/vvToolRigidReg.cxx +++ b/vv/vvToolRigidReg.cxx @@ -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(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 & 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 & 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; iNumberOfSlicers(); i++) { + for (int i =0; iGetNumberOfSlicers(); 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;iNumberOfSlicers();i++) - { - mInput1->RemoveActor("overlay",0); - mInput1->SetColorMap(0); - mInput1->Render(); - hide(); - } + for(int i=0;iGetNumberOfSlicers();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; iNumberOfSlicers(); i++) { + for (int i=0; iGetNumberOfSlicers(); 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); }