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

virtual void Impala::Core::VideoSet::ClusterFeatures::HandleNewFrame ( VideoSet vs,
int  fileId,
Stream::RgbDataSrc src 
) [inline, virtual]

Arrived at a new frame in a "normal" walk.

Reimplemented from Impala::Core::VideoSet::Listener.

Definition at line 70 of file ClusterFeatures.h.

References Impala::Core::Feature::Computor::ComputeRegionFeatures(), Impala::Core::Stream::RgbDataSrc::DataPtr(), Impala::Core::VideoSet::Reporter::DoPrint(), Impala::Core::Stream::RgbDataSrc::FrameHeight(), Impala::Core::Stream::RgbDataSrc::FrameNr(), Impala::Core::Stream::RgbDataSrc::FrameWidth(), Impala::Core::Feature::Computor::GetNrPixelFeatureSets(), Impala::Core::Feature::Computor::GetNrRegionFeatureSets(), Impala::Core::Feature::Computor::GetRegionFeatureTable(), Impala::Core::Feature::Computor::GetRegionFeatureTableSet(), HandleDoneWalk(), ILOG_INFO, mClusterors, mComputor, and mReporter.

00071     {
00072         Quid quid = vs->GetQuidFrame(fileId, src->FrameNr());
00073         Array::Array2dVec3UInt8* im = Array::ArrayCreate<Array::Array2dVec3UInt8>
00074             (src->FrameWidth(), src->FrameHeight(), 0, 0, src->DataPtr(), true);
00075 
00076         mComputor->ComputeRegionFeatures(im, quid);
00077 
00078         for (int p=0 ; p<mComputor->GetNrPixelFeatureSets() ; p++)
00079         {
00080             for (int r=0 ; r<mComputor->GetNrRegionFeatureSets() ; r++)
00081             {
00082                 FeatureTable* tab = mComputor->GetRegionFeatureTable(p, r);
00083                 for (int clustID=0 ; clustID<mClusterors.size() ; clustID++)
00084                 {
00085                     if (mClusterors[clustID]->GetPixelFeatureSet() == p
00086                         && mClusterors[clustID]->GetRegionFeatureSet() == r)
00087                     {
00088                         mClusterors[clustID]->Cluster(tab);
00089                     }
00090                 }
00091             }
00092         }
00093 
00094         mComputor->GetRegionFeatureTableSet()->SetEmpty();
00095         delete im;
00096 
00097         // experimental
00098         bool allDone = true;
00099         for (int i=0 ; i<mClusterors.size() ; i++)
00100         {
00101             if (mReporter->DoPrint())
00102                 mClusterors[i]->PrintStatus();
00103             allDone = allDone && mClusterors[i]->HadEnough();
00104         }
00105         if (allDone)
00106         {
00107             ILOG_INFO("all clusterors had enough");
00108             HandleDoneWalk(vs);
00109             ILOG_INFO("had enough, bye");
00110             exit(0);
00111         }
00112     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:28:33 2010 for ImpalaSrc by  doxygen 1.5.1