+ mConfigFile="Presets";
+ std::string matrixfilename;
+if(cb_presets->currentIndex()==0)
+{
+ mArgsInfo.reference_arg=new char;
+ mArgsInfo.reference_given=0;
+ mArgsInfo.target_arg=new char;
+ mArgsInfo.target_given=0;
+ 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;
+ mArgsInfo.threads_given=1;
+ mArgsInfo.threads_arg=3;
+ mArgsInfo.normalize_flag=0;
+ 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;
+ mArgsInfo.matrix_given=1;
+ 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 {
+ QMessageBox::information(this,"Sorry", "Other Presets are not available for the moment!");
+ return;
+ }
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::UpdateTextEditor2()
+{
+
+ QString str1,str2,str3;
+ QColor color;
+ tab2textedit->clear();
+ tab2textedit->setAcceptRichText(true);
+ str2=tab2textedit->toPlainText();
+ tab2textedit->setTextColor(QColor(255,0,0));
+ str2.append(str3.append("threads="+str1.setNum(mArgsInfo.threads_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("reference="+str1.append(mArgsInfo.reference_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("target="+str1.append(mArgsInfo.target_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("matrix="+str1.append(mArgsInfo.matrix_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("interp="+str1.setNum(mArgsInfo.interp_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("transform="+str1.setNum(mArgsInfo.transform_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("transX="+str1.setNum(mArgsInfo.transX_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("transY="+str1.setNum(mArgsInfo.transY_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("transZ="+str1.setNum(mArgsInfo.transZ_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("metric="+str1.setNum(mArgsInfo.metric_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("samples="+str1.setNum(mArgsInfo.samples_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("intThreshold="+str1.setNum(mArgsInfo.intThreshold_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("stdDev="+str1.setNum(mArgsInfo.stdDev_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("blur="+str1.setNum(mArgsInfo.blur_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("optimizer="+str1.setNum(mArgsInfo.optimizer_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("step="+str1.setNum(mArgsInfo.step_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("relax="+str1.setNum(mArgsInfo.relax_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("valueTol="+str1.setNum(mArgsInfo.valueTol_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("stepTol="+str1.setNum(mArgsInfo.stepTol_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("gradTol="+str1.setNum(mArgsInfo.gradTol_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("lineAcc="+str1.setNum(mArgsInfo.lineAcc_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("convFactor="+str1.setNum(mArgsInfo.convFactor_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("maxIt="+str1.setNum(mArgsInfo.maxIt_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("maxLineIt="+str1.setNum(mArgsInfo.maxLineIt_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("maxEval="+str1.setNum(mArgsInfo.maxEval_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("maxCorr="+str1.setNum(mArgsInfo.maxCorr_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("selectBound="+str1.setNum(mArgsInfo.selectBound_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("rWeight="+str1.setNum(mArgsInfo.rWeight_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("tWeight="+str1.setNum(mArgsInfo.tWeight_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("levels="+str1.setNum(mArgsInfo.levels_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("inc="+str1.setNum(mArgsInfo.inc_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+
+ str2=tab2textedit->toPlainText();
+ str2.append(str3.append("dec="+str1.setNum(mArgsInfo.dec_arg)));
+ tab2textedit->setText(str2);
+ str3.clear();
+ str1.clear();
+
+ str2=tab2textedit->toPlainText();
+ str2.append("\n");
+ tab2textedit->setText(str2);
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::TransformSelect()
+{
+ if(!mConfigFile.empty()){
+ mArgsInfo.transform_arg=cb_transform->currentIndex();
+ UpdateTextEditor2();
+ }
+ else{
+ QMessageBox::information(this,"Warning","Load the Config File First!..");
+ }
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::CmdlineParser(int override, int initialize)
+{
+ //0 opened, 1 not opened fine
+ int opened=cmdline_parser_clitkAffineRegistration_configfile(const_cast<char*>(mConfigFile.c_str()),&mArgsInfo,override,initialize,1);
+ DD(opened);
+ mArgsInfo.gradient_flag=1;
+ QString str;
+ //Read the transformation parameters from the path in the config file(mArgsInfo.matrix_arg) and display it on the TextBox 2
+ ifstream readfile;
+ std::vector<QString> Qstr;
+
+ if(!opened){
+ readfile.open(mConfigFile.c_str());
+ }
+ else{
+ QMessageBox::information(this,"Warning","Load the Config File First..");
+ }
+ if (readfile.is_open())
+ {
+ while (!readfile.eof())
+ {
+ readfile >> mConfigFile;
+ Qstr.push_back(QString(mConfigFile.c_str()));
+ }
+ readfile.close();
+ }
+ else {
+ QMessageBox::information(this,"Warning","Cannot Open File!");
+ return;
+ }
+ for(unsigned int i=0;i<Qstr.size()-1;i++)
+ {
+ str=tab2textedit->toPlainText();
+ str.append(Qstr.at(i));
+ tab2textedit->setText(str);
+ str.append("\n");
+ tab2textedit->setText(str);
+ }
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::OptimizerSelect()
+{
+ if(!mConfigFile.empty()){
+ mArgsInfo.optimizer_arg=cb_optimizer->currentIndex();
+ UpdateTextEditor2();
+ }
+ else{
+ QMessageBox::information(this,"Warning","Load the Config File First!..");
+ }
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::InterpolatorSelect()
+{
+ 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!..");
+ }
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvToolRigidReg::SaveTextEdit()
+{
+ DD(mArgsInfo.transform_arg);
+ QString f1 = QFileDialog::getSaveFileName(this, tr("Save Config File"),
+ mMainWindow->GetInputPathName(),
+ tr("Text (*.mat *.txt *.doc *.rtf)"));
+ QFile file(f1);
+ if(file.open(QFile::WriteOnly | QFile::Truncate) & !mConfigFile.empty() ){
+ QTextStream stream( &file );
+ stream << tab2textedit->toPlainText();
+ }
+ else
+ {
+ QMessageBox::information(this,"Warning","Nothing to Save!");
+ return;
+ }
+ tab2textedit->clear();
+ DD(mArgsInfo.transform_arg);