int AperoProg_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    std::string aFullDir= "";
    std::string AeroIn= "";
    std::string AeroOut="";


    /*double aSigmaTieP = 1;
    double aFactResElimTieP = 5;
    double Viscos = 1.0;
    bool ExpTxt = false;*/

    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()
    );
    if (!MMVisualMode)
    {
        std::string aDir,aPat;
    #if (ELISE_windows)
         replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
    #endif
        SplitDirAndFile(aDir,aPat,aFullDir);
        StdCorrecNameOrient(AeroIn,aDir);
    }

    return EXIT_SUCCESS;
}
int SaisiePts_main2(int argc,char ** argv)
{
   MMD_InitArgcArgv(argc,argv);
  // cAppliApero * anAppli = cAppliMICMAC::Alloc(argc,argv,eAllocAM_STD);

  //if (0) delete anAppli;

   ELISE_ASSERT(argc>=2,"Not enough arg");

   cElXMLTree aTree(argv[1]);


   cResultSubstAndStdGetFile<cParamSaisiePts> aP2
                                          (
                                               argc-2,argv+2,
                                              //0,0,
                                      argv[1],
                                   StdGetFileXMLSpec("ParamSaisiePts.xml"),
                                  "ParamSaisiePts",
                                  "ParamSaisiePts",
                                              "DirectoryChantier",
                                              "FileChantierNameDescripteur"
                                          );

   //cAppli_SaisiePts   anAppli (aP2);
   //((cX11_Interface*)anAppli.Interface())->BoucleInput();

   //SaisiePts_Banniere();
   return 0;
}
示例#3
0
int TestMTD_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv,1);

    std::string  aNameIm;

    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aNameIm,"Image name", eSAM_IsPatFile),
    LArgMain()
    );

    if (MMVisualMode) return EXIT_SUCCESS;

    std::string aDir,aPat;
    SplitDirAndFile(aDir,aPat,aNameIm);
    cInterfChantierNameManipulateur::BasicAlloc(aDir);


    cMetaDataPhoto aMTD =  cMetaDataPhoto::CreateExiv2(aNameIm);

    std::cout << "FocMm " << aMTD.FocMm(true) << "\n";
    std::cout << "Foc35 " << aMTD.Foc35(true) << "\n";
    std::cout << "Cam   [" << aMTD.Cam(true) << "]\n";


    return 1;
}
示例#4
0
int XeresMergeTieP_Main(int argc,char** argv)
{
   MMD_InitArgcArgv(argc,argv);

   std::vector<std::string> aVSeq;
   std::string aDir="./";
   std::string aPostMerge;

   ElInitArgMain
   (
         argc,argv,
         LArgMain()  << EAMC(aVSeq, "Sequence"),
         LArgMain()  << EAM(aDir,"Dir",true,"Folder of data, Def=./")
                     << EAM(aPostMerge,"Postfix of merged folder")
   );

   if (! EAMIsInit(&aPostMerge))
   {
        aPostMerge = "Merge-" + aVSeq[0];
   }

   std::vector<cAppliXeres *> aVAp;
   for (int aK=0 ; aK<int(aVSeq.size()) ; aK++)
   {
        aVAp.push_back(new cAppliXeres (aDir,aVSeq[aK]));
   }

   cAppliXeres::FusionneHom(aVAp,aPostMerge);

   return EXIT_SUCCESS;
}
示例#5
0
int  genmail_main(int argc,char ** argv)
{
   MMD_InitArgcArgv(argc,argv);

   cGenerateMail anAppli(argc,argv);

   return 1;
}
示例#6
0
int Compens_main(int argc,char ** argv)
{
   MMD_InitArgcArgv(argc,argv);

   cEtalonnage::DoCompensation(argc,argv);

   return 0;
}
示例#7
0
int GCPCtrl_main(int argc,char ** argv)
{
    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;


    std::string AeroIn;
    std::string DicoPts;
    std::string MesureIm;
    bool        CPI = false;
    bool ShowUnused = true;


    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile)
                    << EAMC(AeroIn,"Orientation in", eSAM_IsExistDirOri)
                    << EAMC(DicoPts,"Ground Control Points File", eSAM_IsExistFile)
                    << EAMC(MesureIm,"Image Measurements File", eSAM_IsExistFile),
        LArgMain()
                    <<  EAM(CPI,"CPI",true,"when Calib Per Image has to be used", eSAM_IsBool)
                    <<  EAM(ShowUnused,"ShowU",true,"Show unused point (def=true)", eSAM_IsBool)
    );

    if (!MMVisualMode)
    {
    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
    #endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    StdCorrecNameOrient(AeroIn,aDir);



    std::string aCom =   MM3dBinFile_quotes( "Apero" )
                       + ToStrBlkCorr( MMDir()+"include/XML_MicMac/Apero-GCP-Control.xml" )+" "
                       + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                       + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                       + std::string(" +AeroIn=") + AeroIn
                       + std::string(" +DicoApp=") +  DicoPts
                       + std::string(" +SaisieIm=") +  MesureIm
                    ;

    if (EAMIsInit(&ShowUnused)) aCom = aCom + " +ShowUnused=" + ToString(ShowUnused);
    if (CPI) aCom += " +CPI=true ";


    std::cout << "Com = " << aCom << "\n";
    int aRes = System(aCom.c_str(),false,true,true);


    return aRes;

    }
    else return EXIT_SUCCESS;
}
int CPP_Gene_Martini_main(int argc,char ** argv,bool Quick)
{
   MMD_InitArgcArgv(argc,argv);
   cAppli_Martini anAppli(argc,argv,Quick);
   if (MMVisualMode) return EXIT_SUCCESS;
   anAppli.DoAll();
   anAppli.Banniere(Quick);
   return EXIT_SUCCESS;
}
示例#9
0
int MPI2Mnt_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    cAppli_MPI2Mnt anAppli(argc,argv);
    if (!MMVisualMode) anAppli.DoAll();


    return EXIT_SUCCESS;
}
示例#10
0
int MakeGrid_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    NoInit = "XXXXXXXXXX";

    MemoArg(argc,argv);
    std::string  aDir,aPat,aFullDir;

    std::string AeroIn;
    std::string AeroOut;
    //std::vector<std::string> ImPl;

    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir, "Full Directory (Dir+Pattern)", eSAM_IsPatFile)
                    << EAMC(AeroIn, "Input Orientation", eSAM_IsExistDirOri),
    LArgMain()
                    << EAM(AeroOut,"Out",true)
    );

    if (!MMVisualMode)
    {
        if (AeroOut=="")
           AeroOut = "Grid-"+AeroIn;

        #if (ELISE_windows)
            replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
        #endif
        SplitDirAndFile(aDir,aPat,aFullDir);


    #if (ELISE_windows)
        std::string aCom =     MMDir() + std::string("bin\\Apero ")
    #else
        std::string aCom =     MMDir() + std::string("bin/Apero ")
    #endif
                           +  MMDir() + std::string("include/XML_MicMac/AperoGrid.xml ")
                           + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                           + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                           + std::string(" +AeroOut=-") + AeroOut
                           + std::string(" +AeroIn=-") + AeroIn
                        ;

       std::cout << "Com = " << aCom << "\n";
       int aRes = system_call(aCom.c_str());


       return aRes;
    }
    else
        return EXIT_SUCCESS;
}
示例#11
0
int Drunk_main(int argc,char ** argv)
{

    //Testing the existence of argument (if not, print help file)
    if(!MMVisualMode && argc==1)
    {
        argv[1]=(char*)"";//Compulsory to call MMD_InitArgcArgv
        MMD_InitArgcArgv(argc,argv);
        string cmdhelp;
        cmdhelp=MMDir()+"bin/Drunk -help";
        system_call(cmdhelp.c_str());
    }
    else
    {
        MMD_InitArgcArgv(argc,argv);

        string aFullPattern,aOri;
        string DirOut="DRUNK/";
        bool Talk=true;

        //Reading the arguments
        ElInitArgMain
        (
            argc,argv,
            LArgMain()  << EAMC(aFullPattern,"Images Pattern", eSAM_IsPatFile)
                        << EAMC(aOri,"Orientation name", eSAM_IsExistDirOri),
            LArgMain()  << EAM(DirOut,"Out",true,"Output folder (end with /) and/or prefix (end with another char)")
                        << EAM(Talk,"Talk",true,"Turn on-off commentaries")
                    );

        //Processing the files
		string aPattern, aDir;
		SplitDirAndFile(aDir, aPattern, aFullPattern);
		StdCorrecNameOrient(aOri, aDir);
        Drunk(aPattern,aOri,DirOut,Talk);
    }

    return EXIT_SUCCESS;
}
示例#12
0
int ChgSysCo_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    std::string aFullDir= "";
    std::string AeroIn= "";
    std::string aStrChSys="";
    std::string AeroOut="";
    bool        ForceRot = false;


    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full Directory (Dir+Pattern)", eSAM_IsPatFile)
                    << EAMC(AeroIn,"Input Orientation", eSAM_IsExistDirOri)
                    << EAMC(aStrChSys,"Change coordinate file", eSAM_IsExistFile)
                    << EAMC(AeroOut,"Output Orientation", eSAM_IsOutputDirOri),
        LArgMain()  << EAM(ForceRot,"FR",true,"Force orientation matrix to be pure rotation (Def = true)", eSAM_IsBool)
    );

    if (!MMVisualMode)
    {
        std::string aDir,aPat;
    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
    #endif
        SplitDirAndFile(aDir,aPat,aFullDir);
        StdCorrecNameOrient(AeroIn,aDir);

        std::cout << "DPPPP= " << aDir << " " << aPat << "\n";



        std::string aCom =       MM3dBinFile( "Apero" )
                              +  XML_MM_File("Apero-ChCo.xml")
                              +  std::string(" DirectoryChantier=") + aDir + " "
                              +  std::string(" +SetIm=") + aPat + " "
                              +  std::string(" +AeroIn=-") + AeroIn + " "
                              +  std::string(" +AeroOut=-") + AeroOut + " "
                              +  std::string(" +ChC=") + aStrChSys + " "
                              +  std::string(" +ChCFR=") + ToString(ForceRot)
                           ;


       std::cout << "COM = " << aCom << "\n";
       int aRes = system_call(aCom.c_str());
       return aRes;
    }
    else return EXIT_SUCCESS;
}
示例#13
0
int MMAllAuto_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    std::string  aDir,aPat,aFullDir;
    std::string  AeroIn;
    int          aZoomF = 2;


    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir,"Dir + Pattern", eSAM_IsPatFile)
                    << EAMC(AeroIn,"Orientation", eSAM_IsExistDirOri),
    LArgMain()
                    << EAM(aZoomF,"ZoomF",true,"Zoom Final, def=2",eSAM_IsPowerOf2)
    );

#if (ELISE_windows)
    replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
#endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    StdCorrecNameOrient(AeroIn,aDir);

    cInterfChantierNameManipulateur * aICNM =  cInterfChantierNameManipulateur::BasicAlloc(aDir);

    // Genere les pyramides pour que le paral ne s'ecrase pas les 1 les autres

    const cInterfChantierNameManipulateur::tSet * aSetIm = aICNM->Get(aPat);


    for (int aKIm=0 ; aKIm<int(aSetIm->size()) ; aKIm++)
    {
        std::string aCom =   MM3dBinFile("MICMAC")
                              + XML_MM_File("MM-AllAuto.xml")
                              + std::string(" WorkDir=") +aDir +  std::string(" ")
                              + std::string(" +Im1=") + QUOTE((*aSetIm)[aKIm]) + std::string(" ")
                              + std::string(" +Ori=-") + AeroIn
                              + std::string(" +ZoomF=") + ToString(aZoomF)
                    ;



        system_call(aCom.c_str());
  }

 // int aRes = system_call(aCom.c_str());


   return 0;
}
示例#14
0
int XeresCalibMain_main(int argc,char** argv)
{
   MMD_InitArgcArgv(argc,argv);

   std::string aSeq,aDir,OutCal="Calib";
   int aSz=1500;



   ElInitArgMain
   (
         argc,argv,
         LArgMain()  //  << EAMC(aSeq, "Sequence")
                     << EAMC(aDir, "Directory"),
         LArgMain()  << EAM(aSeq,"Seq",true,"Folder of data, Def=./")
                     << EAM(aSz,"Sz",true,"Sz of TieP, Def=1500")
                     << EAM(OutCal,"Out",true,"")
   );

   // std::string aCdDir = "cd " + aDir + "/";
   // System(aCdDir);
   if (!EAMIsInit(&aSeq) ) aSeq = aDir;

   cElemAppliSetFile anEASF(aDir+"/.*jpg");

   const std::vector<std::string> * aVS = anEASF.SetIm();
   int aNbIm = aVS->size();
   for (int aK=0 ; aK<aNbIm ; aK++)
   {
        const std::string & aName = (*aVS)[aK];
        ELISE_fp::MvFile(aDir+"/"+aName,aDir+"/"+aSeq+"_Calib" +ToString(aK) + ".jpg");
        std::cout << "NAME = " << aName << "\n";
   }

   std::string aStrMMD= "MicMac-LocalChantierDescripteur.xml";

   ELISE_fp::CpFile(aStrMMD,aDir+"/"+aStrMMD);


   std::string aComTiep = MM3dBinFile_quotes("Tapioca") + " All  " + aDir + "/.*jpg " + ToString(aSz);
   System(aComTiep);

   std::string aComOri =  MM3dBinFile_quotes("Tapas ") + " FraserBasic " +  aDir + "/.*jpg " + " Out=" + OutCal
                          + " RankInitPP=0 RankInitF=1 RefineAll=0";
   System(aComOri);


   return EXIT_SUCCESS;
}
示例#15
0
int XeresTest_Main(int argc,char** argv)
{
   MMD_InitArgcArgv(argc,argv);

   std::string aSeq;

   ElInitArgMain
   (
         argc,argv,
         LArgMain()  << EAMC(aSeq, "Sequence"),
         LArgMain()  // << EAM(mCalib,"OriCalib",true,"Calibration folder if any")
   );

   cAppliXeres anAppli("./",aSeq);
   anAppli.TestInteractNeigh();

   return EXIT_SUCCESS;
}
示例#16
0
int PastDevlop_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    std::string aFullName;

    int aSz1 = -1;
    int aSz2 = -1;
    bool aCoul8B = false;


    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullName, "Full Directory (Dir+Pattern)", eSAM_IsPatFile),
    LArgMain()  << EAM(aSz1,"Sz1",true)
                << EAM(aSz2,"Sz2",true)
                << EAM(aCoul8B,"Coul8B",true)
    );

    if (!MMVisualMode)
    {
        cInterfChantierNameManipulateur::BasicAlloc(DirOfFile(aFullName));

        Tiff_Im::StdConvGen(aFullName,1,true,true);
        Tiff_Im::StdConvGen(aFullName,1,false,true);

        if (aCoul8B)
        {
           Tiff_Im::StdConvGen(aFullName,3,false,true);
        }

        cTplValGesInit<std::string> aTName;
        cInterfChantierNameManipulateur::StdAlloc(argc,argv,DirOfFile(aFullName),aTName);

        DoSimplePastisSsResol(aFullName,-1);
        if (aSz1 >0)
           DoSimplePastisSsResol(aFullName,aSz1);
        if (aSz2 >0)
           DoSimplePastisSsResol(aFullName,aSz2);
    }
    return EXIT_SUCCESS;
}
示例#17
0
int TestSet_main(int argc,char ** argv)
{
   MMD_InitArgcArgv(argc,argv,2);

    std::string  aDir,aPat,aFullDir;
    int  aNbMax=10;

    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full Directory (Dir+Pattern)", eSAM_IsPatFile),
        LArgMain()  << EAM(aNbMax,"Nb",true,"Nb Max printed (def=10)")
    );

    if (MMVisualMode) return EXIT_SUCCESS;

#if (ELISE_windows)
    replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
#endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    cInterfChantierNameManipulateur * aICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir);
    const cInterfChantierNameManipulateur::tSet * mSetIm = aICNM->Get(aPat);


    int aNb = ElMin(aNbMax,int(mSetIm->size()));

    for (int aK=0 ; aK< aNb ; aK++)
    {
         std::string aName = (*mSetIm)[aK];
         printf("%3d ",aK);
         std::cout << aName ;
         std::cout  << "\n";
    }

    if (1)
    {
         // std::list<std::string>  aL = RegexListFileMatch(aDir,aPat,1,false);
          std::cout << "NB  BY RFLM " << mSetIm->size() << "\n";
    }


    return EXIT_SUCCESS;
}
int PreGenerateDuTriplet(int argc,char ** argv,const std::string & aComIm)
{
   MMD_InitArgcArgv(argc,argv);

   std::string aFullName,anOriCalib;
   bool aQuick;
   ElInitArgMain
   (
        argc,argv,
        LArgMain() << EAMC(aFullName,"Name of Image"),
        LArgMain() << EAM(anOriCalib,"OriCalib",true,"Calibration directory ")
                   << EAM(aQuick,"Quick",true,"Quick version")
   );

   cElemAppliSetFile anEASF(aFullName);
   if (!EAMIsInit(&anOriCalib))
   {
      MakeXmlXifInfo(aFullName,anEASF.mICNM);
   }

   cNewO_NameManager aNM(aQuick,anEASF.mDir,anOriCalib,"dat");
   aNM.Dir3P(true);
   const cInterfChantierNameManipulateur::tSet * aSetIm = anEASF.SetIm();

   std::list<std::string> aLCom;
   for (int aKIm=0 ; aKIm<int(aSetIm->size()) ; aKIm++)
   {
        std::string aCom =   MM3dBinFile_quotes( "TestLib ") + aComIm + " "  + anEASF.mDir+(*aSetIm)[aKIm] ;

        if (EAMIsInit(&anOriCalib))  aCom = aCom + " OriCalib=" + anOriCalib;
        aCom += " Quick=" +ToString(aQuick);
        aLCom.push_back(aCom);

        //std::cout << aCom << "\n";

   }

   cEl_GPAO::DoComInParal(aLCom);

    return EXIT_SUCCESS;
}
示例#19
0
int MICMAC_main(int argc,char ** argv)
{
  MMD_InitArgcArgv(argc,argv);

  Tiff_Im::SetDefTileFile(10000);
  MicMacRequiresBinaireAux();
  AddEntryStringifie
  (
     "include" ELISE_STR_DIR "XML_GEN" ELISE_STR_DIR "ParamMICMAC.xml",
     theNameVar_ParamMICMAC,
     true
  ); 
  cAppliMICMAC * anAppli = cAppliMICMAC::Alloc(argc,argv,eAllocAM_STD);
  if (anAppli==0) return 0;

  if ((! anAppli->CalledByProcess().Val()) && (anAppli->SectionBatch().IsInit()))
  {
     for 
     (
        std::list<std::string>::iterator itS=anAppli->NextMicMacFile2Exec().begin();
        itS != anAppli->NextMicMacFile2Exec().end();
        itS++
     )
     {
         std::string aCom = current_program_fullname() + " " + current_program_subcommand() + " " + *itS;
         for (int aK=2; aK<argc ; aK++)
             aCom =  aCom + std::string(" ") +argv[aK] ;
         std::list<std::string> aLProc;
         aLProc.push_back(aCom);
         anAppli->ExeProcessParallelisable(false,aLProc);
     }
  }

  if (0)
     delete anAppli;
    

   return 0;
}
示例#20
0
int XeresHomMatch_main(int argc,char** argv)
{
   MMD_InitArgcArgv(argc,argv);

   std::string aDir="./";
   std::string aSeq;
   std::string anOri;

   ElInitArgMain
   (
         argc,argv,
         LArgMain()  << EAMC(aSeq, "Sequence")
                     << EAMC(anOri,"Orientation"),
         LArgMain()  << EAM(aDir,"Dir",true,"Folder of data, Def=./")
   );

   cAppliXeres  anAppli(aDir,aSeq);
   StdCorrecNameOrient(anOri,aDir);
   anAppli.CalculHomMatch(anOri);

   return EXIT_SUCCESS;
}
int XifGps2Xml_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv,2);
    std::string aFullName;
    std::string  anOri;
    bool  DoRTL = true;
    std::string  aNameRTL = "RTLFromExif.xml";
    std::string  aNameSys = aNameRTL;
    double aDefZ=0;

    ElInitArgMain
    (
           argc,argv,
           LArgMain() << EAMC(aFullName,"Full Name", eSAM_IsPatFile)
                      << EAMC(anOri,"Orientation", eSAM_IsExistDirOri),
           LArgMain() << EAM(DoRTL,"DoRTL",true,"Do Local Tangent RTL (def=true)")
                      << EAM(aNameRTL,"RTL", true,"Name RTL", eSAM_IsExistFileRP)
                      << EAM(aNameSys,"SysCo",true, "System of coordinates, by default RTL created (RTLFromExif.xml)", eSAM_IsExistFileRP)
                      << EAM(aDefZ,"DefZ","Default value for altitude (def 0)")
    );

    if (MMVisualMode) return EXIT_SUCCESS;

    cAppli_XifGps2Xml anAppli(aFullName,aDefZ);

    if (DoRTL)
    {
       ELISE_ASSERT(anAppli.mNbOk!=0,"No GPS data to compute RTL reference system");
       MakeFileXML(anAppli.mSysRTL,anAppli.mDir+aNameRTL);
    }

    cSysCoord * aSysCo = cSysCoord::FromFile(anAppli.mDir + aNameSys);
    anAppli.ExportSys(aSysCo,anOri);


    return 0;
}
示例#22
0
int XeresTieP_Main(int argc,char** argv)
{
   MMD_InitArgcArgv(argc,argv);

   std::string aSeq;
   int aSz,aNbHom=2;
   std::string aDir="./";
   std::string aNameCpleSup="";

   ElInitArgMain
   (
         argc,argv,
         LArgMain()  << EAMC(aSeq, "Sequence")
                     << EAMC(aSz,"Sz Tie points"),
         LArgMain()  << EAM(aDir,"Dir",true,"Folder of data, Def=./")
                     << EAM(aNbHom,"DV",true,"Delta Vois, Def=2")
                     << EAM(aNameCpleSup,"CpleSup",true,"File for additional cple")
   );

   cAppliXeres anAppli(aDir,aSeq);
   anAppli.CalculTiePoint(aSz,aNbHom,aNameCpleSup);

   return EXIT_SUCCESS;
}
int Apero2PMVS_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);

    //Reading the arguments
    string aFullPattern,aOri;

    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullPattern,"Images' name pattern", eSAM_IsPatFile)
                    << EAMC(aOri,"Orientation name", eSAM_IsExistDirOri),
        LArgMain()
                );

    if (MMVisualMode) return EXIT_SUCCESS;

    string aPattern, aDir;
    SplitDirAndFile(aDir, aPattern, aFullPattern);
    StdCorrecNameOrient(aOri, aDir);
    Apero2PMVS(aFullPattern,aOri);

    return EXIT_SUCCESS;
}
示例#24
0
int XeresReNameInit_main(int argc,char** argv)
{
   MMD_InitArgcArgv(argc,argv);

   std::string aDir="./";
   std::string aSeq;

   ElInitArgMain
   (
         argc,argv,
         LArgMain()  << EAMC(aSeq, "Sequence"),
         LArgMain()  << EAM(aDir,"Dir",true,"Folder of data, Def=./")
   );

   std::string aCom = MM3dBinFile_quotes( "MyRename " )
                      + "\"([A-Z][0-9]{1,2})_.*\"   \"\\$1_" + aSeq + ".jpg\" Exe=1" ;

   // std::cout << aCom << "\n";
   System(aCom);



   return EXIT_SUCCESS;
}
示例#25
0
int HomFilterMasq_main(int argc,char ** argv)
{
    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;
    bool ExpTxt=false;
    std::string PostPlan="_Masq";
    std::string KeyCalcMasq;
    std::string KeyEquivNoMasq;
    std::string MasqGlob;
    double  aResol=10;
    bool AcceptNoMask;
    std::string aPostIn= "";
    std::string aPostOut= "MasqFiltered";



    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile),
    LArgMain()
                    << EAM(PostPlan,"PostPlan",true,"Post to plan, Def : toto ->toto_Masq.tif like with SaisieMasq")
                    << EAM(MasqGlob,"GlobalMasq",true,"Global Masq to add to all image")
                    << EAM(KeyCalcMasq,"KeyCalculMasq",true,"For tuning masq per image")
                    << EAM(KeyEquivNoMasq,"KeyEquivNoMasq",true,"When given if KENM(i1)==KENM(i2), don't masq")
                    << EAM(aResol,"Resol",true,"Sub Resolution for masq storing, Def=10")
                    << EAM(AcceptNoMask,"ANM",true,"Accept no mask, def = true if MasqGlob and false else")
                    << EAM(ExpTxt,"ExpTxt",true,"Ascii format for in and out, def=false")
                    << EAM(aPostIn,"PostIn",true,"Post for Input dir Hom, Def=")
                    << EAM(aPostOut,"PostOut",true,"Post for Output dir Hom, Def=MasqFiltered")

    );

    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
     #endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    if (EAMIsInit(&PostPlan))
    {
        CorrecNameMasq(aDir,aPat,PostPlan);
    }

    if (!EAMIsInit(&AcceptNoMask))
       AcceptNoMask = EAMIsInit(&MasqGlob);


    cInterfChantierNameManipulateur * anICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir);


    Im2D_Bits<1>  aImMasqGlob(1,1);
    if (EAMIsInit(&MasqGlob))
       aImMasqGlob = GetMasqSubResol(aDir+MasqGlob,aResol);


    const std::vector<std::string> *  aVN = anICNM->Get(aPat);
    std::vector<Im2D_Bits<1> >  aVMasq;

    for (int aKN = 0 ; aKN<int(aVN->size()) ; aKN++)
    {
        std::string aNameIm = (*aVN)[aKN];
        Tiff_Im aTF = Tiff_Im::StdConvGen(aNameIm,1,false);
        Pt2di aSzG = aTF.sz();
        Pt2di aSzR (round_ni(Pt2dr(aSzG)/aResol));
        Im2D_Bits<1> aImMasq(aSzR.x,aSzR.y,1);


        std::string aNameMasq = StdPrefix(aNameIm)+PostPlan + ".tif";
        if (EAMIsInit(&KeyCalcMasq))
        {
            aNameMasq = anICNM->Assoc1To1(KeyCalcMasq,aNameIm,true);
        }

        if (ELISE_fp::exist_file(aNameMasq))
        {
            Im2D_Bits<1> aImMasqLoc = GetMasqSubResol(aDir+aNameMasq,aResol);
            ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqLoc.in(0),aImMasq.out());
        }
        else
        {
             if (!AcceptNoMask)
             {
                 std::cout << "For Im " << aNameIm << " file " << aNameMasq << " does not exist\n";
                 ELISE_ASSERT(false,"Masq not found");
             }
        }

        if (EAMIsInit(&MasqGlob))
        {

            ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqGlob.in(0),aImMasq.out());
        }

        aVMasq.push_back(aImMasq);
        // Tiff_Im::CreateFromIm(aImMasq,"SousRes"+aNameMasq);
    }

    std::string anExt = ExpTxt ? "txt" : "dat";


    std::string aKHIn =   std::string("NKS-Assoc-CplIm2Hom@")
                       +  std::string(aPostIn)
                       +  std::string("@")
                       +  std::string(anExt);
    std::string aKHOut =   std::string("NKS-Assoc-CplIm2Hom@")
                        +  std::string(aPostOut)
                        +  std::string("@")
                       +  std::string(anExt);




    for (int aKN1 = 0 ; aKN1<int(aVN->size()) ; aKN1++)
    {
        for (int aKN2 = 0 ; aKN2<int(aVN->size()) ; aKN2++)
        {
             std::string aNameIm1 = (*aVN)[aKN1];
             std::string aNameIm2 = (*aVN)[aKN2];

             std::string aNameIn = aDir + anICNM->Assoc1To2(aKHIn,aNameIm1,aNameIm2,true);

             if (ELISE_fp::exist_file(aNameIn))
             {
                  bool UseMasq = true;
                  if (EAMIsInit(&KeyEquivNoMasq))
                  {
                       UseMasq =  (anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm1,true) != anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm2,true) );
                  }


                  TIm2DBits<1>  aMasq1 ( aVMasq[aKN1]);
                  TIm2DBits<1>  aMasq2 ( aVMasq[aKN2]);

                  ElPackHomologue aPackIn =  ElPackHomologue::FromFile(aNameIn);
                  ElPackHomologue aPackOut;
                  for (ElPackHomologue::const_iterator itP=aPackIn.begin(); itP!=aPackIn.end() ; itP++)
                  {
                      Pt2dr aP1 = itP->P1();
                      Pt2dr aP2 = itP->P2();
                      Pt2di aQ1 = round_ni(aP1/aResol);
                      Pt2di aQ2 = round_ni(aP2/aResol);

                      if ((aMasq1.get(aQ1,0) && aMasq2.get(aQ2,0)) || (! UseMasq))
                      {
                          ElCplePtsHomologues aCple(aP1,aP2);
                          aPackOut.Cple_Add(aCple);
                      }
                  }
                  std::string aNameOut = aDir + anICNM->Assoc1To2(aKHOut,aNameIm1,aNameIm2,true);
                  aPackOut.StdPutInFile(aNameOut);
                  std::cout << "IN " << aNameIn << " " << aNameOut  << " UseM " << UseMasq << "\n";
             }
        }
    }
    // std::vector<cImFMasq *> mVIm;



   return 0;
}
int HomFusionPDVUnik_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;
    std::string aPostIn= "";
    std::string aPostOut= "MasqFusion";
    bool ExpTxt=false;

    std::string aDir2;
    std::vector<std::string > aDirN;

    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile)
                    << EAMC(aDir2,"Dir of external point", eSAM_IsPatFile),
        LArgMain()  
                    << EAM(aPostIn,"PostIn",true,"Post for Input dir Hom, Def=")
                    << EAM(aPostOut,"PostOut",true,"Post for Output dir Hom, Def=MasqFusion")
                    << EAM(ExpTxt,"ExpTxt",true,"Ascii format for in and out, def=false")
                    << EAM(aDirN,"DirN",true,"Supplementary dirs 2 merge")
    );

    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
     #endif
    cElemAppliSetFile anEASF(aFullDir);

    cInterfChantierNameManipulateur * anICNM = anEASF.mICNM;


    const std::vector<std::string> *  aVN = anEASF.SetIm();


    std::string anExt = ExpTxt ? "txt" : "dat";
    std::string aKHIn =   std::string("NKS-Assoc-CplIm2Hom@")
                       +  std::string(aPostIn)
                       +  std::string("@")
                       +  std::string(anExt);
    std::string aKHOut =   std::string("NKS-Assoc-CplIm2Hom@")
                        +  std::string(aPostOut)
                        +  std::string("@")
                       +  std::string(anExt);


    aDirN.push_back(aDir);
    aDirN.push_back(aDir2);

    for (int aKN1 = 0 ; aKN1<int(aVN->size()) ; aKN1++)
    {
        for (int aKN2 = 0 ; aKN2<int(aVN->size()) ; aKN2++)
        {
             std::string aNameIm1 = (*aVN)[aKN1];
             std::string aNameIm2 = (*aVN)[aKN2];
             std::string aNameLocIn = aDir + anICNM->Assoc1To2(aKHIn,aNameIm1,aNameIm2,true);
             ElPackHomologue aPackOut;
             int aNbH=0;

             for (int aKP=0 ; aKP<int(aDirN.size()) ; aKP++)
             {
                 std::string aNameIn=  aDirN[aKP] + aNameLocIn;
                 if (ELISE_fp::exist_file(aNameIn))
                 {
                     ElPackHomologue aPackIn =  ElPackHomologue::FromFile(aNameIn);
                     aNbH++;
                     for (ElPackHomologue::const_iterator itP=aPackIn.begin() ; itP!=aPackIn.end() ; itP++)
                     {
                         aPackOut.Cple_Add(itP->ToCple());
                     }
                 }
             }
             if (aPackOut.size() !=0)
             {
                std::string aNameOut = aDir + anICNM->Assoc1To2(aKHOut,aNameIm1,aNameIm2,true);
                aPackOut.StdPutInFile(aNameOut);
                if (0)
                   std::cout << "aNbH " << aNbH << "\n";
             }
        }
    }

    return EXIT_SUCCESS;
}
int HomFilterMasq_main(int argc,char ** argv)
{
    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;
    bool ExpTxt=false;
    std::string PostPlan="_Masq";
    std::string KeyCalcMasq;
    std::string KeyEquivNoMasq;
    std::string MasqGlob;
    double  aResol=10;
    bool AcceptNoMask;
    std::string aPostIn= "";
    std::string aPostOut= "MasqFiltered";
    std::string aOriMasq3D,aNameMasq3D;
    cMasqBin3D * aMasq3D = 0;

    Pt2dr  aSelecTer;


    ElInitArgMain
    (
        argc,argv,
        LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile),
        LArgMain()
                    << EAM(PostPlan,"PostPlan",true,"Post to plan, Def : toto ->toto_Masq.tif like with SaisieMasq")
                    << EAM(MasqGlob,"GlobalMasq",true,"Global Masq to add to all image")
                    << EAM(KeyCalcMasq,"KeyCalculMasq",true,"For tuning masq per image")
                    << EAM(KeyEquivNoMasq,"KeyEquivNoMasq",true,"When given if KENM(i1)==KENM(i2), don't masq")
                    << EAM(aResol,"Resol",true,"Sub Resolution for masq storing, Def=10")
                    << EAM(AcceptNoMask,"ANM",true,"Accept no mask, def = true if MasqGlob and false else")
                    << EAM(ExpTxt,"ExpTxt",true,"Ascii format for in and out, def=false")
                    << EAM(aPostIn,"PostIn",true,"Post for Input dir Hom, Def=")
                    << EAM(aPostOut,"PostOut",true,"Post for Output dir Hom, Def=MasqFiltered")
                    << EAM(aOriMasq3D,"OriMasq3D",true,"Orientation for Masq 3D")
                    << EAM(aNameMasq3D,"Masq3D",true,"File of Masq3D, Def=AperiCloud_${OriMasq3D}.ply")
                    << EAM(aSelecTer,"SelecTer",true,"[Per,Prop] Period of tiling on ground selection, Prop=proporion of selected")
    );
    bool aHasOri3D =  EAMIsInit(&aOriMasq3D);
    bool HasTerSelec = EAMIsInit(&aSelecTer);


    #if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
     #endif
    SplitDirAndFile(aDir,aPat,aFullDir);
    if (EAMIsInit(&PostPlan))
    {
        CorrecNameMasq(aDir,aPat,PostPlan);
    }

    if (!EAMIsInit(&AcceptNoMask))
       AcceptNoMask = EAMIsInit(&MasqGlob) || aHasOri3D;


    cInterfChantierNameManipulateur * anICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir);

    std::string aKeyOri;
    if (aHasOri3D)
    {
        anICNM->CorrecNameOrient(aOriMasq3D);
        if (! EAMIsInit(&aNameMasq3D))
        {
              aNameMasq3D = aDir + "AperiCloud_" + aOriMasq3D + "_polyg3d.xml";
        }
        if (ELISE_fp::exist_file(aDir+aNameMasq3D))
        {
            aMasq3D = cMasqBin3D::FromSaisieMasq3d(aDir+aNameMasq3D);
        }
        else
        {
            ELISE_ASSERT(EAMIsInit(&aSelecTer),"Unused OriMasq3D");
        }
        aKeyOri = "NKS-Assoc-Im2Orient@" + aOriMasq3D;
    }

    Im2D_Bits<1>  aImMasqGlob(1,1);
    if (EAMIsInit(&MasqGlob))
       aImMasqGlob = GetMasqSubResol(aDir+MasqGlob,aResol);


    const std::vector<std::string> *  aVN = anICNM->Get(aPat);
    std::vector<Im2D_Bits<1> >  aVMasq;

     std::vector<CamStenope *> aVCam;


    double aResolMoy = 0;

    for (int aKN = 0 ; aKN<int(aVN->size()) ; aKN++)
    {
        std::string aNameIm = (*aVN)[aKN];
        Tiff_Im aTF = Tiff_Im::StdConvGen(aNameIm,1,false);
        Pt2di aSzG = aTF.sz();
        Pt2di aSzR (round_ni(Pt2dr(aSzG)/aResol));
        Im2D_Bits<1> aImMasq(aSzR.x,aSzR.y,1);


        std::string aNameMasq = StdPrefix(aNameIm)+PostPlan + ".tif";
        if (EAMIsInit(&KeyCalcMasq))
        {
            aNameMasq = anICNM->Assoc1To1(KeyCalcMasq,aNameIm,true);
        }

        if (ELISE_fp::exist_file(aNameMasq))
        {
            Im2D_Bits<1> aImMasqLoc = GetMasqSubResol(aDir+aNameMasq,aResol);
            ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqLoc.in(0),aImMasq.out());
        }
        else
        {
             if (!AcceptNoMask)
             {
                 std::cout << "For Im " << aNameIm << " file " << aNameMasq << " does not exist\n";
                 ELISE_ASSERT(false,"Masq not found");
             }
        }

        if (EAMIsInit(&MasqGlob))
        {

            ELISE_COPY(aImMasq.all_pts(),aImMasq.in() && aImMasqGlob.in(0),aImMasq.out());
        }

        aVMasq.push_back(aImMasq);
        // Tiff_Im::CreateFromIm(aImMasq,"SousRes"+aNameMasq);
        if (aHasOri3D)
        {
            aVCam.push_back(anICNM->StdCamOfNames(aNameIm,aOriMasq3D));
            aResolMoy += aVCam.back()->GlobResol();
        }
    }
    if (aHasOri3D)
       aResolMoy /= aVCam.size();

    std::string anExt = ExpTxt ? "txt" : "dat";


    std::string aKHIn =   std::string("NKS-Assoc-CplIm2Hom@")
                       +  std::string(aPostIn)
                       +  std::string("@")
                       +  std::string(anExt);
    std::string aKHOut =   std::string("NKS-Assoc-CplIm2Hom@")
                        +  std::string(aPostOut)
                        +  std::string("@")
                       +  std::string(anExt);


    double aPeriodTer=0,aSeuilDistTer=0;
    if (HasTerSelec)
    {
       aPeriodTer = aSelecTer.x * aResolMoy;
       aSeuilDistTer = aPeriodTer * sqrt(aSelecTer.y);
    }

    double aNbInTer=0;
    double aNbTestTer=0;


    for (int aKN1 = 0 ; aKN1<int(aVN->size()) ; aKN1++)
    {
        for (int aKN2 = 0 ; aKN2<int(aVN->size()) ; aKN2++)
        {
             std::string aNameIm1 = (*aVN)[aKN1];
             std::string aNameIm2 = (*aVN)[aKN2];

             std::string aNameIn = aDir + anICNM->Assoc1To2(aKHIn,aNameIm1,aNameIm2,true);

             if (ELISE_fp::exist_file(aNameIn))
             {
                  bool UseMasq = true;
                  if (EAMIsInit(&KeyEquivNoMasq))
                  {
                       UseMasq =  (anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm1,true) != anICNM->Assoc1To1(KeyEquivNoMasq,aNameIm2,true) );
                  }


                  TIm2DBits<1>  aMasq1 ( aVMasq[aKN1]);
                  TIm2DBits<1>  aMasq2 ( aVMasq[aKN2]);

                  ElPackHomologue aPackIn =  ElPackHomologue::FromFile(aNameIn);
                  ElPackHomologue aPackOut;
                  for (ElPackHomologue::const_iterator itP=aPackIn.begin(); itP!=aPackIn.end() ; itP++)
                  {
                      Pt2dr aP1 = itP->P1();
                      Pt2dr aP2 = itP->P2();
                      Pt2di aQ1 = round_ni(aP1/aResol);
                      Pt2di aQ2 = round_ni(aP2/aResol);

                      bool Ok = ((aMasq1.get(aQ1,0) && aMasq2.get(aQ2,0)) || (! UseMasq));

                      if (Ok &&  aHasOri3D)
                      {
                          Pt3dr  aPTer= aVCam[aKN1]->PseudoInter(aP1,*(aVCam[aKN2]),aP2);
                          if (aMasq3D && (! aMasq3D->IsInMasq(aPTer)))
                             Ok = false;

                          if (Ok && HasTerSelec)
                          {
                              bool OkTer =  (mod_real(aPTer.x,aPeriodTer) < aSeuilDistTer) && (mod_real(aPTer.y,aPeriodTer) < aSeuilDistTer);
                              Ok = OkTer;
                              aNbTestTer ++;
                              aNbInTer += OkTer;
                          }
                      }  

                      if (Ok)
                      {
                          ElCplePtsHomologues aCple(aP1,aP2);
                          aPackOut.Cple_Add(aCple);
                      }
                  }
                  std::string aNameOut = aDir + anICNM->Assoc1To2(aKHOut,aNameIm1,aNameIm2,true);
                  aPackOut.StdPutInFile(aNameOut);
                  std::cout << "IN " << aNameIn << " " << aNameOut  << " UseM " << UseMasq << "\n";
             }
        }
    }
    // std::vector<cImFMasq *> mVIm;

    if (HasTerSelec)
    {
        std::cout << "A Posteriori Prop=" << aNbInTer / aNbTestTer << "\n";
    }



   return EXIT_SUCCESS;
}
示例#28
0
int SEL_main(int argc,char ** argv)
{
    MMD_InitArgcArgv(argc,argv);


    Pt2di aSzW(1000,900);
/*
    if (! ELISE_fp::exist_file(MMDir() + "bin/MICMACSaisieLiaisons"))
       VoidSystem("make -f MakeMICMAC  bin/MICMACSaisieLiaisons");
*/

    std::string aDir;
    std::string aN1;
    std::string aN2;
    std::string aKeyH;

    int aRedr=0;
    std::string aFilter="";
    bool aRedrL1 = false;
    bool ModeEpip = false;

    std::string aKeyCompl="Cple2HomAp";

    std::string SH="";
    ElInitArgMain
    (
           argc,argv,
           LArgMain() << EAMC(aDir,"Directory", eSAM_IsDir)
                      << EAMC(aN1,"First image name", eSAM_IsExistFile)
                      << EAMC(aN2,"Second image name", eSAM_IsExistFile) ,
           LArgMain() << EAM(aRedr,"R",true)
                      << EAM(aRedrL1,"RL1",true,"Estimate Homography using L1 mode")
                      << EAM(aFilter,"F",true)
                      << EAM(aKeyH,"KH",true,"In P PB PBR M S NB NT MMD",eSAM_None,ListOfVal(eTS_NbVals,"eTS_"))
                      << EAM(aKeyCompl,"KCpl",true)
                      << EAM(aSzW,"SzW",true)
                      << EAM(ModeEpip,"ModeEpip",true,"If mode epip, the y displacement are forced to 0")
                      << EAM(SH,"SH",true,"Homologue extenion for NB/NT mode")
    );

    if (!MMVisualMode)
    {

        std::string aCom =   MM3dBinFile("MICMACSaisieLiaisons")
                           // + MMDir()+std::string("applis/XML-Pattron/Pattron-MicMacLiaison.xml ")
                           + MMDir()+std::string("include/XML_MicMac/Pattron-MicMacLiaison.xml ")
                           + " WorkDir=" + aDir
                           + " %Im1=" + aN1
                           + " %Im2=" + aN2
                           + " %SL_XSzW=" + ToString(aSzW.x)
                           + " %SL_YSzW=" + ToString(aSzW.y)
                           + " %SL_Epip=" + ToString(ModeEpip)
                         ;

        if (aRedr)
           aCom = aCom + " SL_NewRedrCur=true";

        if (aRedrL1)
           aCom = aCom + " SL_L2Estim=false";

       if (aFilter!="")
           aCom = aCom
                  /* + " SL_TJS_FILTER=true" */
              +  " SL_FILTER=" +aFilter;

       if (aKeyH!="")
       {
           if (aKeyH=="P")
           {
              aKeyCompl = "PastisHom";
           }
           else if (aKeyH=="PB")
           {
              aKeyCompl = "Key-Assoc-CpleIm2HomolPastisBin";
           }
           else if (aKeyH=="PBR")
           {
              aKeyCompl = "Key-Assoc-SsRes-CpleIm2HomolPastisBin";
           }
           else if (aKeyH=="M")
           {
              aKeyCompl = "MarcHom";
           }
           else if (aKeyH=="S")
           {
              // aKeyCompl = "Key-Assoc-StdHom";
              aKeyCompl = "NKS-Assoc-CplIm2Hom@-Man@xml";
           }
           else if (aKeyH=="NB")
           {
              aKeyCompl = "NKS-Assoc-CplIm2Hom@"+SH+"@dat";
           }
           else if (aKeyH=="NT")
           {
              aKeyCompl = "NKS-Assoc-CplIm2Hom@"+SH+"@txt";
           }
           else if (aKeyH=="MMD")
           {
              aKeyCompl = "NKS-Assoc-CplIm2Hom@-DenseM@dat";
           }
           else
           {
               std::cout << "For Key=[" << aKeyH << "]\n";
               ELISE_ASSERT(false,"Do Not know key");
           }
       }

       aCom = aCom + " FCND_CalcHomFromI1I2=" + aKeyCompl;


        std::cout << aCom << "\n";
        Sys(aCom);
        Banniere_SEL();

        return 0;
    }
    else
        return EXIT_SUCCESS;
}
示例#29
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;
}
int SBGlobBascule_main(int argc,char ** argv)
{
    NoInit = "NoP1P2";
    aNoPt = Pt2dr(123456,-8765432);

    // MemoArg(argc,argv);
    MMD_InitArgcArgv(argc,argv);
    std::string  aDir,aPat,aFullDir;
    bool ExpTxt=false;
    std::string AeroIn;
    std::string AeroOut;
    std::string PostPlan="_Masq";
    std::string FileMesures ;
    std::string TargetRep = "ki" ;
    bool  CPI = false;


    double DistFE = 0;
    //Pt3dr  Normal;
    //Pt3dr  SNormal;

    ElInitArgMain
    (
    argc,argv,
    LArgMain()  << EAMC(aFullDir,"Full name (Dir+Pat)", eSAM_IsPatFile )
                    << EAMC(AeroIn,"Orientation in", eSAM_IsExistDirOri)
                    << EAMC(FileMesures,"Images measures xml file", eSAM_IsExistFile)
                    << EAMC(AeroOut,"Out : orientation ", eSAM_IsOutputDirOri),
    LArgMain()
                    << EAM(ExpTxt,"ExpTxt",true)
                    << EAM(PostPlan,"PostPlan",true)
                    << EAM(DistFE,"DistFS",true,"Distance between Ech1 and Ech2 to fix scale (if not given no scaling)")
                    << EAM(TargetRep,"Rep",true,"Target coordinate system (Def = ki, ie normal is vertical)")
                    << EAM(CPI,"CPI",true,"Calibration Per Image (Def=false)")

    );

    if (!MMVisualMode)
    {
#if (ELISE_windows)
        replace( aFullDir.begin(), aFullDir.end(), '\\', '/' );
#endif
        SplitDirAndFile(aDir,aPat,aFullDir);
        if (EAMIsInit(&PostPlan))
        {
            CorrecNameMasq(aDir,aPat,PostPlan);
        }

        StdCorrecNameOrient(AeroIn,aDir);


        MMD_InitArgcArgv(argc,argv);

        std::string aCom =   MM3dBinFile( "Apero" )
                + MMDir() + std::string("include/XML_MicMac/Apero-SB-Bascule.xml ")
                + std::string(" DirectoryChantier=") +aDir +  std::string(" ")
                + std::string(" +PatternAllIm=") + QUOTE(aPat) + std::string(" ")
                + std::string(" +AeroOut=-") +  AeroOut
                + std::string(" +Ext=") + (ExpTxt?"txt":"dat")
                + std::string(" +AeroIn=-") + AeroIn
                + std::string(" +PostMasq=") + PostPlan
                + std::string(" +DistFE=") + ToString(DistFE)
                + std::string(" +RepNL=") + TargetRep
                + std::string(" +FileMesures=") + FileMesures
                + std::string(" +CPI=") + ToString(CPI)
                ;



        std::cout << "Com = " << aCom << "\n";
        int aRes = system_call(aCom.c_str());


        return aRes;
    }
    else
    {
        return EXIT_SUCCESS;
    }
}