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