Пример #1
0
int cAppliMMTestOrient::Exec()
{
   if (mMMV) return EXIT_SUCCESS;
   int aRes = system_call(mCom.c_str());

   BanniereMM3D();

   return aRes;
}
Пример #2
0
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;
}
Пример #3
0
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;
}