-
- return vvToolWidgetBase::reject();
-}
-//------------------------------------------------------------------------------
-
-//------------------------------------------------------------------------------
-void vvToolRigidReg::GetArgsInfoFromGUI()
-{
- QString str;
- str.append("Configs Loaded for AutoRegister...Apply Filter...");
- tab2textedit->setText(str);
- /* cmdline_parser_clitkAffineRegistration_configfile("/home/bharath/bin/AffineReg.txt",&mArgsInfo,1,1,0);
- mArgsInfo.reference_arg=new char;
- mArgsInfo.target_arg=new char;
- mArgsInfo.output_arg=new char;
- mArgsInfo.referenceMask_arg=new char;
- mArgsInfo.targetMask_arg=new char;
- mArgsInfo.initMatrix_arg=new char;
- mArgsInfo.matrix_arg=new char;*/
- mArgsInfo.referenceMask_given=0;
- mArgsInfo.reference_given=0;
- mArgsInfo.reference_arg=new char;
- mArgsInfo.target_given=0;
- mArgsInfo.target_arg=new char;
- mArgsInfo.output_given=0;
- mArgsInfo.output_arg=new char;
- mArgsInfo.checker_after_given=0;
- mArgsInfo.checker_before_given=0;
- mArgsInfo.after_given=0;
- mArgsInfo.before_given=0;
- // std::string strouput= "/home/bharath/bin/Lung3Doutput.mhd";
- //mArgsInfo.output_arg=const_cast<char*>(strouput.c_str());
- mArgsInfo.threads_given=1;
- mArgsInfo.threads_arg=3;
- mArgsInfo.normalize_flag=0;
- DD("GetArgsInfoFromGUI_2");
- mArgsInfo.blur_arg=0.0;
- mArgsInfo.referenceMask_arg=new char;
- mArgsInfo.targetMask_arg=new char;
- mArgsInfo.targetMask_given=0;
- mArgsInfo.levels_given=1;
- mArgsInfo.levels_arg=2;
- mArgsInfo.moment_flag=1;
- mArgsInfo.intThreshold_given=0;
- mArgsInfo.intThreshold_arg=0.0;
- mArgsInfo.transX_arg=0.0;
- mArgsInfo.transY_arg=0.0;
- mArgsInfo.transZ_arg=0.0;
- mArgsInfo.transform_arg=2;
- mArgsInfo.gradient_flag=1;
- mArgsInfo.interp_given=1;
- mArgsInfo.interp_arg=1;
- mArgsInfo.interpOrder_given=1;
- mArgsInfo.interpOrder_arg=3;
- mArgsInfo.interpSF_given=1;
- mArgsInfo.interpSF_arg=20;//default
- mArgsInfo.metric_given=1;
- mArgsInfo.metric_arg=0;
- mArgsInfo.samples_arg=1;//default
- mArgsInfo.stdDev_arg=0.4;
- mArgsInfo.step_arg=2.0;
- mArgsInfo.relax_arg=0.7;
- mArgsInfo.valueTol_arg=0.01;
- mArgsInfo.stepTol_arg=0.1;
- mArgsInfo.gradTol_arg=1e-5;
- mArgsInfo.lineAcc_arg=0.9;
- mArgsInfo.convFactor_arg=1e+12;
- mArgsInfo.maxIt_arg=500;
- mArgsInfo.maxLineIt_arg=50;
- mArgsInfo.maxEval_arg=500;
- mArgsInfo.maxCorr_arg=5;
- mArgsInfo.selectBound_arg=0;
- mArgsInfo.inc_arg=1.2;
- mArgsInfo.dec_arg=4;
- mArgsInfo.optimizer_arg=1;
- mArgsInfo.initMatrix_given=0;
- mArgsInfo.initMatrix_arg=new char;
- mArgsInfo.tWeight_given=1;
- mArgsInfo.tWeight_arg=1.0;
- mArgsInfo.rWeight_given=1.0;
- mArgsInfo.rWeight_arg=50.0;
- // std::string str="/home/bharath/bin/matrix.txt";
- // mArgsInfo.initMatrix_arg=const_cast<char*>(str.c_str());
- mArgsInfo.matrix_given=0;
-}
-//------------------------------------------------------------------------------
-
-//------------------------------------------------------------------------------
-void vvToolRigidReg::InputIsSelected(std::vector<vvSlicerManager *> & l)
-{
- //inputs
- mInput1 = l[0];
- mInput2 = l[1];
-
- UpdateTextEditor(mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix(),textEdit_2);
-
- for(int i =0;i<4;i++)
- for(int j=0;j<4;j++)
- mInitialMatrix[i*4+j]=mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix()->GetElement(i,j);
-
- if(mInput1->GetFileName()==mInput2->GetFileName())
- {
- QMessageBox::information(this, "Warning","Your Reference and Target Images are the same");
- }
- mTwoInputs = true;
- SetOverlay();
- mImageSize=mInput1->GetImage()->GetSize();
- SetRotationCenter();
- SetSliderRanges();
-
- //connect all sigs to slots
- connect(resetbutton, SIGNAL(pressed()), this, SLOT(ResetTransform()));
- connect(tab2loadbutton, SIGNAL(pressed()), this, SLOT(GetArgsInfoFromGUI()));
- connect(tab2applybutton, SIGNAL(pressed()), this, SLOT(AutoRegister()));
-
-
- connect(Xval, SIGNAL(editingFinished()), this, SLOT(SetXvalue()));
- connect(Yval, SIGNAL(editingFinished()), this, SLOT(SetYvalue()));
- connect(Zval, SIGNAL(editingFinished()), this, SLOT(SetZvalue()));
-
- connect(xtrans_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
- connect(ytrans_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
- connect(ztrans_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
-
-
- connect(xrot_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
- connect(yrot_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
- connect(zrot_slider, SIGNAL(valueChanged(int)), this, SLOT(UpdateTransform_sliders()));
-
- connect(xtrans_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
- connect(ytrans_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
- connect(ztrans_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
- connect(xrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
- connect(yrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
- connect(zrot_sb, SIGNAL(valueChanged(double)), this, SLOT(UpdateTransform_sb()));
-
- connect(loadbutton, SIGNAL(pressed()), this, SLOT(ReadFile()));
- connect(savebutton, SIGNAL(pressed()), this, SLOT(SaveFile()));
-
+ mInput = input;
+ HideInputSelector();
+ QTabWidget * tab = dynamic_cast<vvMainWindow*>(mMainWindow)->GetTab();
+ move(tab->mapToGlobal(tab->pos()));
+ resize(tab->width(), 0);
+
+ //default image rotation center is the center of the image
+ QString xcord,ycord,zcord;
+ std::vector<double> imageorigin;
+ imageorigin=mInput->GetImage()->GetOrigin();
+ std::vector<int> imageSize = mInput->GetImage()->GetSize();
+ std::vector<double> imageSpacing = mInput->GetImage()->GetSpacing();
+ xcord=xcord.setNum(imageorigin[0]+imageSize[0]*imageSpacing[0]/2, 'g', 3);
+ ycord=ycord.setNum(imageorigin[1]+imageSize[1]*imageSpacing[1]/2, 'g', 3);
+ zcord=zcord.setNum(imageorigin[2]+imageSize[2]*imageSpacing[2]/2, 'g', 3);
+ Xval->setText(xcord);
+ Yval->setText(ycord);
+ Zval->setText(zcord);
+
+ //backup original matrix
+ for(int j=0; j<4; j++)
+ for(int i=0; i<4; i++)
+ mInitialMatrix->SetElement(i,j, mCurrentSlicerManager->GetImage()->GetTransform()->GetMatrix()->GetElement(i,j));
+ QString origTransformString = dynamic_cast<vvMainWindow*>(mMainWindow)->Get4x4MatrixDoubleAsString(mInitialMatrix);
+ transformationLabel->setText(origTransformString);
+ SetTransform(mInitialMatrix);
+
+ //connect all sigs to slots
+ connect(resetbutton, SIGNAL(pressed()), this, SLOT(ResetTransform()));
+ connect(loadbutton, SIGNAL(pressed()), this, SLOT(LoadFile()));
+ connect(savebutton, SIGNAL(pressed()), this, SLOT(SaveFile()));
+
+ connect(xtrans_slider, SIGNAL(valueChanged(int)), this, SLOT(SliderChange(int)));
+ connect(ytrans_slider, SIGNAL(valueChanged(int)), this, SLOT(SliderChange(int)));
+ connect(ztrans_slider, SIGNAL(valueChanged(int)), this, SLOT(SliderChange(int)));
+ connect(xrot_slider, SIGNAL(valueChanged(int)), this, SLOT(SliderChange(int)));
+ connect(yrot_slider, SIGNAL(valueChanged(int)), this, SLOT(SliderChange(int)));
+ connect(zrot_slider, SIGNAL(valueChanged(int)), this, SLOT(SliderChange(int)));
+ connect(xtrans_sb, SIGNAL(valueChanged(double)), this, SLOT(SpinBoxChange(double)));
+ connect(ytrans_sb, SIGNAL(valueChanged(double)), this, SLOT(SpinBoxChange(double)));
+ connect(ztrans_sb, SIGNAL(valueChanged(double)), this, SLOT(SpinBoxChange(double)));
+ connect(xrot_sb, SIGNAL(valueChanged(double)), this, SLOT(SpinBoxChange(double)));
+ connect(yrot_sb, SIGNAL(valueChanged(double)), this, SLOT(SpinBoxChange(double)));
+ connect(zrot_sb, SIGNAL(valueChanged(double)), this, SLOT(SpinBoxChange(double)));
+
+ connect(stepTransSpinBox, SIGNAL(valueChanged(double)), this, SLOT(SetTranslationStep(double)));
+ connect(stepRotSpinBox, SIGNAL(valueChanged(double)), this, SLOT(SetRotationStep(double)));
+
+ connect(checkBoxDegrees, SIGNAL(stateChanged(int)), this, SLOT(ToggleSpinBoxAnglesUnit()));
+
+ connect(Xval, SIGNAL(editingFinished()), this, SLOT(ChangeOfRotationCenter()));
+ connect(Yval, SIGNAL(editingFinished()), this, SLOT(ChangeOfRotationCenter()));
+ connect(Zval, SIGNAL(editingFinished()), this, SLOT(ChangeOfRotationCenter()));
+
+ // Init step modifiers
+ stepTransSpinBox->setValue(1.);
+ stepRotSpinBox->setValue(1.);