Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

int Impala::Application::mainShotSegmentation ( int  argc,
char *  argv[] 
)

Definition at line 27 of file mainShotSegmentation.cpp.

References Impala::Core::ImageSet::Walker::AddListener(), Impala::CmdOptions::AddOption(), Impala::Core::Stream::RgbDataSrcFactory::Construct(), Impala::Core::ImageSet::Walker::DoWalk(), Impala::CmdOptions::GetArg(), Impala::CmdOptions::GetBool(), Impala::CmdOptions::GetInstance(), Impala::CmdOptions::GetInt(), Impala::CmdOptions::GetString(), ILOG_ERROR, ILOG_INFO, ILOG_VAR, Impala::CmdOptions::Initialise(), Impala::Core::VideoSet::WalkerConfig::InitOptions(), Impala::Core::Stream::RgbDataSrcFactory::Instance(), MakeVideoSet(), Impala::Core::Database::RawDataSet::NrFiles(), Impala::Application::DemoCamera2d::oglWnd, Impala::CmdOptions::ParseArgs(), Impala::Core::VideoSet::WalkerConfig::RetrieveOptions(), OglGui::OglWindow::Valid(), and Impala::Core::Stream::RgbDataSrc::Valid().

Referenced by main().

00028 {
00029 #ifdef MPI_USED
00030     int numProcs;
00031     int myId;
00032     MPI_Init(&argc, &argv);
00033     MPI_Comm_rank(MPI_COMM_WORLD, &myId);
00034     MPI_Comm_size(MPI_COMM_WORLD, &numProcs);
00035 #else
00036     OglInit(&argc, &argv[0]);
00037 #endif
00038     ILOG_VAR(Impala.Application);
00039     ILOG_INFO("LOGGER STARTED!");
00040 
00041     CmdOptions& options = CmdOptions::GetInstance();
00042     options.Initialise(true, false, true);
00043     options.AddOption(0, "report", "perNr", "0");
00044     options.AddOption(0, "startFile", "idx", "0");
00045     options.AddOption(0, "numberFiles", "nr", "-1");
00046 
00047     //GPM Parameters///////////////////////////////////////
00048     options.AddOption(0, "SSVerbose", "Verbosity", "0");
00049     options.AddOption(0, "SSThreshold", "Threshold for scores", "3.4");
00050     options.AddOption(0, "SSRadius","Radius of frames to consider", "6");
00051     options.AddOption(0, "SSSigma", "Decay coefficient for computation window", "18");
00052     options.AddOption(0, "SSBinCount", "Histogram bin count", "32");
00053     options.AddOption(0, "SSHistEq", "Histogram equalization before similarity", "0");
00054     options.AddOption(0, "SSHistNorm", "Histogram normalization before similarity", "1");
00055     options.AddOption(0, "SSNormW", "Normalize Weight Matrix", "0");
00056     options.AddOption(0, "SSCentered", "Center the frame of decision", "0");
00057     options.AddOption(0, "SSBlurSigma", "Sigma for Gaussian Blurring", "1.");
00058     options.AddOption(0, "SSBlur", "Blur the image before processing?", "1");
00059     options.AddOption(0, "SSBlurDer", "Nth derivative when blurring", "0");
00060     options.AddOption(0, "SSHistSim", "Histogram similarity method : Intersection or Kullback", "Intersection");
00061     options.AddOption(0, "SSSimType", "Similarity Method:[Hist|CM]","Hist");
00062     options.AddOption(0, "SSSim", "Similarity or Dissimilarity[+|-]","+");
00063     options.AddOption(0, "SSSymmetry", "Type of symmetry for prediction [None|Avg|And|Or] ","None");
00064     options.AddOption(0, "SSCMSim", "CM similarity method [Euc|Int|Sqrd]","Euc");
00065     options.AddOption(0, "SSPyrL", "Min level in the pyramid", "1");
00066     options.AddOption(0, "SSPyrU", "Max level in the pyramid", "2");
00067     options.AddOption(0, "SSProbThresh", "Threshold for prediction probabilities", "0.5");
00068     options.AddOption(0, "SSShortGrad", "Short Grads with N frames considered as CUT", "3");
00069     options.AddOption(0, "SSServer", "The server address to get fileIds from", "xurban.xs4all.nl");
00070     options.AddOption(0, "SSPort", "Port to connect", "9410");
00071     options.AddOption(0, "SSIsServer", "Current Node is in the server mode", "0");
00072     options.AddOption(0, "SSIsClient", "Current Node is in the client mode", "0");
00073 
00074     //RunModes/////////////////////////////////////////////
00075     options.AddOption(0, "SSMode", "Mode for vidseg - Run, Train, Test, EvalTrain, EvalTest", "Run");
00076     options.AddOption(0, "SSGUI", "Display GUI", "yes");
00077     options.AddOption(0, "SSThresholdOnly", "Scores Exist, threshold the scores", "0");
00078     options.AddOption(0, "SSRunName", "Name of the Run", "NoRunName");
00079     options.AddOption(0, "SSRefDir", 
00080         "Directory to retrieve the ground truth","");
00081     options.AddOption(0, "SSModelFile", 
00082         "Svm Model file to use for prediction","");
00083     options.AddOption(0, "SSRefPrefix", "Prefix for Ground Truth XML files", "/ref_");
00084     WalkerConfig walkerConfig;
00085     walkerConfig.InitOptions(options);
00086 
00087     std::string UsageStr =  "[--ini IniFile | VideoFile ]";
00088     if (! options.ParseArgs(argc, argv,UsageStr, 0))
00089     {
00090         
00091 #ifdef MPI_USED
00092         MPI_Finalize();
00093 #endif
00094         return 1;
00095     }
00096 
00097 
00098 #ifndef MPI_USED
00099     bool SSGUI = options.GetBool("SSGUI",true);
00100     if(SSGUI){
00101         std::string srcName = options.GetArg(0);
00102         RgbDataSrcFactory& factory = RgbDataSrcFactory::Instance();
00103         RgbDataSrc* src = factory.Construct(srcName, options.GetString("src"));
00104         if(!src->Valid()){
00105             options.ParseArgs(0, argv,UsageStr, 1);
00106             ILOG_ERROR("RgbDataSrc failed, you should supply a video file!");
00107             return 0;
00108         }
00109         ILOG_INFO("Creating GUI..");
00110         ShotSegmenterGUI* oglWnd = new ShotSegmenterGUI(0, 0, true, true, true, src);
00111         if (! oglWnd->Valid())
00112         {
00113             ILOG_ERROR("WindowVidseg failed");
00114             return 0;
00115         }
00116         ILOG_INFO("Destroying oglWnd");
00117         delete oglWnd;
00118     }else{
00119 #endif
00120 
00121         std::string fileName = options.GetString("SSMode")+".txt";
00122         VideoSet* videoSet = MakeVideoSet(fileName);
00123         bool SSIsServer=options.GetBool("SSIsServer",false);
00124         walkerConfig.RetrieveOptions(options);
00125         Walker walker(videoSet, walkerConfig);
00126         Reporter* reporter = new Reporter(0);
00127         walker.AddListener(reporter);
00128         walker.AddListener(new ShotSegmenter(reporter, options));
00129         walker.AddListener(new Reporter(reporter));
00130         int startFile = options.GetInt("startFile");
00131         int numberFiles = options.GetInt("numberFiles");
00132 #ifdef MPI_USED
00133         if (numberFiles == -1)
00134             numberFiles = videoSet->NrFiles();
00135         if (startFile + numberFiles >= videoSet->NrFiles())
00136             numberFiles = videoSet->NrFiles() - startFile;
00137         int lastFile = startFile + numberFiles;
00138         int taskSize = numberFiles / numProcs;
00139         if (numberFiles % numProcs != 0)
00140             taskSize++;
00141         startFile = startFile + myId * taskSize;
00142         numberFiles = taskSize;
00143         if (myId == numProcs - 1)
00144             numberFiles = lastFile - startFile;
00145         std::cout << "Process " << myId << " of " << numProcs
00146                   << " is doing dirs " << startFile << " till "
00147                   << startFile + numberFiles << std::endl;
00148 #endif
00149         walker.DoWalk(startFile, numberFiles);
00150         reporter->FinalReport();
00151 
00152 #ifdef MPI_USED
00153         MPI_Finalize();
00154 #else
00155         }
00156     
00157 #endif
00158 
00159     return 0;
00160 }

Here is the call graph for this function:


Generated on Fri Mar 19 10:36:41 2010 for ImpalaSrc by  doxygen 1.5.1