int cAppliMMTestOrient::Exec() { if (mMMV) return EXIT_SUCCESS; int aRes = system_call(mCom.c_str()); BanniereMM3D(); return aRes; }
int Tawny_main(int argc,char ** argv) { // MemoArg(argc,argv); MMD_InitArgcArgv(argc,argv); std::string aDir; int mDeq = 1; Pt2di mDeqXY(-1,-1); bool mAddCste = false; int mDegRap = 0; Pt2di mDegRapXY(-1,-1); bool mRapGlobPhys = true; double mDynGlob=1.0; std::string mImPrio0 = ".*"; int mSzV = 1; double mCorrThresh = 0.8; double mNbPerIm = 1e4; bool DoL1Filter=false; double aSatThresh = 1e9; string aNameOut="Ortho-Eg-Test-Redr.tif"; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aDir,"Data directory", eSAM_IsDir), LArgMain() << EAM(mDeq,"DEq",true,"Degree of equalization (Def=1)") << EAM(mDeqXY,"DEqXY",true,"Degree of equalization, if diff in X and Y") << EAM(mAddCste,"AddCste",true,"Add unknown constant for equalization (Def=false)", eSAM_IsBool) << EAM(mDegRap,"DegRap",true,"Degree of rappel to initial values, Def = 0") << EAM(mDegRapXY,"DegRapXY",true,"Degree of rappel to initial values, Def = 0") << EAM(mRapGlobPhys,"RGP",true,"Rappel glob on physically equalized, Def = true") << EAM(mDynGlob,"DynG",true,"Global Dynamic (to correct saturation problems)") << EAM(mImPrio0,"ImPrio",true,"Pattern of image with high prio, def=.*", eSAM_IsPatFile) << EAM(mSzV,"SzV",true,"Sz of Window for equalization (Def=1, means 3x3)") << EAM(mCorrThresh,"CorThr",true,"Threshold of correlation to validate homologous (Def 0.7)") << EAM(mNbPerIm,"NbPerIm",true,"Average number of point per image (Def = 1e4)") << EAM(DoL1Filter,"L1F",true,"Do L1 Filter on couple, def=true (change when process is blocked)", eSAM_IsBool) << EAM(aSatThresh,"SatThresh",true,"Threshold determining saturation value (pixel >SatThresh will be ignored)") << EAM(aNameOut,"Out",true,"Name of output file (in the folder)", eSAM_IsOutputFile) ); if (!MMVisualMode) { #if (ELISE_windows) replace( aDir.begin(), aDir.end(), '\\', '/' ); #endif if ( (!aDir.empty()) && (*aDir.rbegin() != '/') ) aDir.append("/"); if (! EAMIsInit(&mDeqXY)) mDeqXY = Pt2di(mDeq,mDeq); if (! EAMIsInit(&mDegRapXY)) mDegRapXY = Pt2di(mDegRap,mDegRap); Pt2di aDegCste = mAddCste ? Pt2di(0,0) : Pt2di(-1,-1); MMD_InitArgcArgv(argc,argv); std::string aCom = MM3dBinFile( "Porto" ) + MMDir() +std::string("include/XML_MicMac/Param-Tawny.xml ") + std::string(" %WD=") + aDir + std::string(" +DR1X=") + ToString(mDeqXY.x) + std::string(" +DR1Y=") + ToString(mDeqXY.y) + std::string(" +DR0X=") + ToString(aDegCste.x) + std::string(" +DR0Y=") + ToString(aDegCste.y) + std::string(" +DegRapX=") + ToString(mDegRapXY.x) + std::string(" +DegRapY=") + ToString(mDegRapXY.y) + std::string(" +RapGlobPhys=") + ToString(mRapGlobPhys) + std::string(" +DynGlob=") + ToString(mDynGlob) + std::string(" +NameOrtho=") + aNameOut ; if (mImPrio0!="") aCom = aCom+ " +ImPrio="+QUOTE(mImPrio0); if (EAMIsInit(&mSzV)) aCom = aCom + " +SzV=" + ToString(mSzV); if (EAMIsInit(&mNbPerIm)) aCom = aCom + " +NbPerIm=" + ToString(mNbPerIm); if (EAMIsInit(&mCorrThresh)) aCom = aCom + " +CorrThresh=" + ToString(mCorrThresh); if (!DoL1Filter) aCom = aCom +" +DoL1Filter=false "; std::cout << aCom << "\n"; int aRes = system_call(aCom.c_str()); BanniereMM3D(); return aRes; } else return EXIT_SUCCESS; }
int Campari_main(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); std::string aFullDir= ""; std::string AeroIn= ""; std::string AeroOut=""; bool CPI1 = false; bool CPI2 = false; bool FocFree = false; bool PPFree = false; bool AffineFree = false; bool AllFree = false; bool PoseFigee = false; double aSigmaTieP = 1; double aFactResElimTieP = 5; std::vector<std::string> GCP; std::vector<std::string> EmGPS; bool DetailAppuis = false; double Viscos = 1.0; bool ExpTxt = false; std::vector<std::string> aImMinMax; Pt3dr aGpsLA; int aDegAdd = 0; int aDegFree = 0; int aDrMax = 0; ElInitArgMain ( argc,argv, LArgMain() << EAMC(aFullDir,"Full Directory (Dir+Pattern)", eSAM_IsPatFile) << EAMC(AeroIn,"Input Orientation", eSAM_IsExistDirOri) << EAMC(AeroOut,"Output Orientation", eSAM_IsOutputDirOri), LArgMain() << EAM(GCP,"GCP",true,"[GrMes.xml,GrUncertainty,ImMes.xml,ImUnc]", eSAM_NoInit) << EAM(EmGPS,"EmGPS",true,"Embedded GPS [Gps-Dir,GpsUnc, ?GpsAlti?], GpsAlti if != Plani", eSAM_NoInit) << EAM(aGpsLA,"GpsLa",true,"Gps Lever Arm, in combination with EmGPS", eSAM_NoInit) << EAM(aSigmaTieP,"SigmaTieP", true, "Sigma use for TieP weighting (Def=1)") << EAM(aFactResElimTieP,"FactElimTieP", true, "Fact elimination of tie point (prop to SigmaTieP, Def=5)") << EAM(CPI1,"CPI1",true,"Calib Per Im, Firt time", eSAM_IsBool) << EAM(CPI2,"CPI2",true,"Calib Per Im, After first time, reUsing Calib Per Im As input", eSAM_IsBool) << EAM(FocFree,"FocFree",true,"Foc Free (Def=false)", eSAM_IsBool) << EAM(PPFree,"PPFree",true,"Principal Point Free (Def=false)", eSAM_IsBool) << EAM(AffineFree,"AffineFree",true,"Affine Parameter (Def=false)", eSAM_IsBool) << EAM(AllFree,"AllFree",true,"Affine Parameter (Def=false)", eSAM_IsBool) << EAM(DetailAppuis,"DetGCP",true,"Detail on GCP (Def=false)", eSAM_IsBool) << EAM(Viscos,"Visc",true,"Viscosity in Levenberg-Marquardt like resolution (Def=1.0)") << EAM(ExpTxt,"ExpTxt",true, "Export in text format (Def=false)",eSAM_IsBool) << EAM(aImMinMax,"ImMinMax",true, "Im max and min to avoid tricky pat") << EAM(aDegAdd,"DegAdd",true, "When specified, degree of additionnal parameter") << EAM(aDegFree,"DegFree",true, "When specified degree of freedom of parameters generiqs") << EAM(aDrMax,"DRMax",true, "When specified degree of freedom of radial parameters") << EAM(PoseFigee,"PoseFigee",true,"Does the external orientation of the cameras are frozen or free (Def=false, i.e. camera poses are free)", eSAM_IsBool) ); if (!MMVisualMode) { std::string aDir,aPat; #if (ELISE_windows) replace( aFullDir.begin(), aFullDir.end(), '\\', '/' ); #endif SplitDirAndFile(aDir,aPat,aFullDir); StdCorrecNameOrient(AeroIn,aDir); Pt2dr Focales(0,100000); std::string aParamPatFocSetIm = "@" + aPat + "@" + ToString(Focales.x) + "@" + ToString(Focales.y) ; std::string aSetIm = "NKS-Set-OfPatternAndFoc" + aParamPatFocSetIm; if (EAMIsInit(&aImMinMax)) { ELISE_ASSERT(aImMinMax.size()==2,"Bad size in vect"); aSetIm = "NKS-Set-OfPatternAndFocAndInterv" + aParamPatFocSetIm + "@" + aImMinMax[0] + "@" + aImMinMax[1]; } std::string aCom = MM3dBinFile_quotes( "Apero" ) + ToStrBlkCorr( Basic_XML_MM_File("Apero-Compense.xml") ) + std::string(" DirectoryChantier=") + aDir + " " + std::string(" +SetIm=") + QUOTE(aSetIm) + " " + std::string(" +AeroIn=-") + AeroIn + " " + std::string(" +AeroOut=-") + AeroOut + " " ; if (CPI1 || CPI2) aCom += " +CPI=true "; if (CPI2) aCom += " +CPIInput=true "; if (FocFree) aCom += " +FocFree=true "; if (PPFree) aCom += " +PPFree=true "; if (AffineFree) aCom += " +AffineFree=true "; if (AllFree) aCom += " +AllFree=true "; if (ExpTxt) aCom += std::string(" +Ext=") + (ExpTxt?"txt ":"dat ") ; if (PoseFigee) aCom += " +PoseFigee=true "; if (EAMIsInit(&aFactResElimTieP)) aCom = aCom+ " +FactMaxRes=" + ToString(aFactResElimTieP); if (EAMIsInit(&Viscos)) aCom += " +Viscos=" + ToString(Viscos) + " "; if (EAMIsInit(&DetailAppuis)) aCom += " +DetailAppuis=" + ToString(DetailAppuis) + " "; if (EAMIsInit(&GCP)) { ELISE_ASSERT(GCP.size()==4,"Mandatory part of GCP requires 4 arguments"); double aGcpGrU = RequireFromString<double>(GCP[1],"GCP-Ground uncertainty"); double aGcpImU = RequireFromString<double>(GCP[3],"GCP-Image uncertainty"); std::cout << "THAT IS ::: " << aGcpGrU << " === " << aGcpImU << "\n"; aCom = aCom + std::string("+WithGCP=true ") + std::string("+FileGCP-Gr=") + GCP[0] + " " + std::string("+FileGCP-Im=") + GCP[2] + " " + std::string("+GrIncGr=") + ToString(aGcpGrU) + " " + std::string("+GrIncIm=") + ToString(aGcpImU) + " "; } if (aDegAdd>0) aCom = aCom + " +HasModeleAdd=true +ModeleAdditionnel=eModelePolyDeg" + ToString(aDegAdd); if (aDegFree>0) aCom = aCom + " +DegGen=" + ToString(aDegFree); if (aDrMax>0) aCom = aCom + " +DRMax=" + ToString(aDrMax); if (EAMIsInit(&EmGPS)) { ELISE_ASSERT((EmGPS.size()>=2) && (EmGPS.size()<=3) ,"Mandatory part of EmGPS requires 2 arguments"); StdCorrecNameOrient(EmGPS[0],aDir); double aGpsU = RequireFromString<double>(EmGPS[1],"GCP-Ground uncertainty"); double aGpsAlti = aGpsU; if (EmGPS.size()>=3) aGpsAlti = RequireFromString<double>(EmGPS[2],"GCP-Ground Alti uncertainty"); aCom = aCom + " +BDDC=" + EmGPS[0] + " +SigmGPS=" + ToString(aGpsU) + " +SigmGPSAlti=" + ToString(aGpsAlti) + " +WithCenter=true"; if (EAMIsInit(&aGpsLA)) { aCom = aCom + " +WithLA=true +LaX=" + ToString(aGpsLA.x) + " +LaY=" + ToString(aGpsLA.y) + " +LaZ=" + ToString(aGpsLA.z) + " "; } } if (EAMIsInit(&aSigmaTieP)) aCom = aCom + " +SigmaTieP=" + ToString(aSigmaTieP); std::cout << aCom << "\n"; int aRes = System(aCom.c_str()); Campari_Banniere(); BanniereMM3D(); return aRes; } else return EXIT_SUCCESS; }