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

virtual void Impala::Core::ImageSet::InterestPointProc::HandleNewFile ( ImageSet is,
int  fileId,
Array::Array2dVec3UInt8 im 
) [inline, virtual]

Arrived at given DB_FILE in a "normal" walk.

Reimplemented from Impala::Core::ImageSet::Listener.

Definition at line 137 of file InterestPointProc.h.

References Impala::Core::Feature::InterestPointFeature::FindInterestPoints(), Impala::Core::Feature::InterestPointFeature::GetFeatureName(), Impala::CmdOptions::GetString(), Impala::GetTmpPath(), ILOG_DEBUG, ILOG_ERROR, ILOG_INFO, Impala::Core::Feature::InterestPointFeature::mClusterInputImage, mFeatureTables, mInterestPointFeature, Impala::Core::Feature::InterestPointFeature::mLastCodebookVectors, mNoZIP, mOptions, mSkipThisFolder, mTempFilenames, and Impala::PathJoin().

00138     {
00139         if(mSkipThisFolder)
00140             return;
00141         int dirId = is->GetDirIdOfFile(fileId);
00142         // silent failures - we might be reading from ImageArchives
00143         String fileName = is->GetAsPath(fileId);
00144         // create temporary output filename
00145         String outputFilename =
00146             PathJoin(GetTmpPath(), is->GetFileBase(fileId) + "." +
00147                      mInterestPointFeature.GetFeatureName());
00148         ILOG_DEBUG(" outputFilename=" << outputFilename  << "; fileId=" << fileId
00149                    << "; dirId=" << dirId);
00150         if (im == 0)
00151         {
00152             ILOG_ERROR("No image " << fileName);
00153             return;
00154         }
00155         
00156         String detectorCacheFilename = "";
00157         if(mOptions.GetString("useDetectorCache") != "")
00158         {
00159             detectorCacheFilename = is->GetFilePathId
00160                 ("FeatureData", mOptions.GetString("useDetectorCache"), fileId,
00161                  false, false, is->GetFileBase(fileId) + "." +
00162                  mOptions.GetString("useDetectorCache"), false);
00163             ILOG_INFO("detectorCacheFilename = " << detectorCacheFilename);
00164         }
00165         if(mNoZIP) {
00166             outputFilename = "";
00167         }
00168         mInterestPointFeature.mClusterInputImage =
00169             QuidObj(is->GetQuidImage(fileId)).ToString();
00170 
00171         if(!mInterestPointFeature.FindInterestPoints(mOptions, im, 
00172                                                      is->GetQuidImage(fileId),
00173                                                      outputFilename,
00174                                                      true, detectorCacheFilename))
00175         {
00176             ILOG_ERROR("Extracting interest points/descriptors failed: "<<fileName);
00177         }
00178 
00179         if(mInterestPointFeature.mLastCodebookVectors.size() != 0)
00180         {
00181             // we have a projected feature vector
00182             std::vector<Vector::VectorTem<Real64>*>& featureVectors =
00183                 mInterestPointFeature.mLastCodebookVectors;
00184             if(mFeatureTables.size() < featureVectors.size())
00185             {
00186                 // first valid vector: allocate the table
00187                 for(int i = mFeatureTables.size(); i < featureVectors.size(); i++)
00188                 {
00189                     String name = mInterestPointFeature.GetFeatureName();
00190                     Feature::FeatureTable* t = new Feature::FeatureTable(name, 500,
00191                                                   featureVectors[i]->Size());
00192                     mFeatureTables.push_back(t);
00193                 }
00194             }
00195             for(int i = 0; i < featureVectors.size(); i++)
00196             {
00197                 Quid quid = is->GetQuidImage(fileId);
00198                 mFeatureTables[i]->Add(quid, *featureVectors[i]);
00199             }
00200         }
00201         
00202         // post-processing functionality
00203         if(mOptions.GetString("interestPointPostProcess") != "")
00204         {
00205             String cmd = mOptions.GetString("interestPointPostProcess")
00206                 + " " + outputFilename;
00207             ILOG_DEBUG("Post-processing = " << cmd);
00208             system(cmd.c_str());
00209         }
00210         if(!mNoZIP)
00211         {
00212             mTempFilenames.push_back(outputFilename);
00213         }
00214     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:14:48 2010 for ImpalaSrc by  doxygen 1.5.1