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:
|