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

KeyframeResultList Impala::Core::Trec::VisualQueryEngine::QueryVisual ( Thread thread,
int  keyframeID,
bool  forcerecalculate = false,
int  maxToReturn = -1 
) [inline]

Definition at line 72 of file VisualQueryEngine.h.

References Impala::Core::Trec::ThreadSet::GetKeyframes(), Impala::Core::Trec::Thread::GetLength(), Impala::Core::Trec::ThreadVisualSimilarity::GetMaxReturned(), Impala::Core::Trec::ThreadVisualSimilarity::GetShot(), Impala::Core::VideoSet::Keyframes::GetShotId(), Impala::Core::VideoSet::Keyframes::GetShotRKF(), Impala::Core::Trec::ThreadVisualSimilarity::GetSimilarity(), ILOG_WARN, mMaxResults, mThreadSet, Impala::Core::Trec::ThreadVisualSimilarity::SetMaxReturned(), and Impala::Core::Trec::Thread::SetOrigin().

00074     {
00075         ThreadVisualSimilarity* threadVisual = (ThreadVisualSimilarity*) thread;
00076         VideoSet::Keyframes* keyFrames = mThreadSet->GetKeyframes();
00077 
00078         int oldMax = threadVisual->GetMaxReturned();
00079         threadVisual->SetMaxReturned(mMaxResults);
00080 
00081         int shotID = keyFrames->GetShotId(keyframeID);
00082         //int nrOfKeyFrames = keyFrames->Size();
00083 
00084         //if (forcerecalculate)
00085             thread->SetOrigin(shotID);
00086         int resultLen = thread->GetLength();
00087         if (maxToReturn >= 0 && maxToReturn < resultLen)
00088             resultLen = maxToReturn;
00089 
00090         KeyframeResultList results;
00091         std::map<int,bool> seen;
00092         for (int i = 0; i < resultLen; i++) {
00093             Trec::KeyframeResult r;
00094             int shot = threadVisual->GetShot(i); // according to current ranking
00095             if (shot < keyFrames->GetNrShots() && shot > -1) {
00096                 r.keyframeid = keyFrames->GetShotRKF(shot);
00097                 if (r.keyframeid != -1 && seen.find(r.keyframeid)==seen.end())
00098                 {
00099                     seen[r.keyframeid] = true;
00100                     r.rank = i+1;
00101                     r.score = threadVisual->GetSimilarity(shot);
00102                     results.push_back(r);
00103                 }
00104             }
00105             else
00106             {
00107                 ILOG_WARN("Received incorrect shot from visual keyframe=" <<
00108                           keyframeID << " at position " << i);
00109                 break; // SK: fix for datasets with less than 400 keyframes
00110             }
00111         }
00112         threadVisual->SetMaxReturned(oldMax);
00113         return results;
00114     }

Here is the call graph for this function:


Generated on Thu Jan 13 09:21:35 2011 for ImpalaSrc by  doxygen 1.5.1