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

virtual void Impala::Core::VideoSet::BlackFrameProc::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 78 of file BlackFrameProc.h.

References Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Add(), Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CH(), ComputeGradient(), Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CW(), Impala::Core::Stream::RgbDataSrc::DataPtr(), Impala::Core::Vector::VectorTem< ElemT >::Elem(), Impala::Core::Stream::RgbDataSrc::FrameHeight(), Impala::Core::Stream::RgbDataSrc::FrameNr(), Impala::Core::Stream::RgbDataSrc::FrameWidth(), ILOG_ERROR, Impala::Core::Array::MakeRoi(), mStripBorder, mTable, Impala::Core::Array::PixSum(), Impala::Core::Array::RGB2Intensity(), and Impala::Application::DemoCamera2d::sigma.

00079     {
00080         /* get frame */
00081         Array::Array2dVec3UInt8* im = Array::ArrayCreate<Array::Array2dVec3UInt8>
00082             (src->FrameWidth(), src->FrameHeight(), 0, 0, src->DataPtr(), true);
00083 
00084         /* verify image is not null */
00085         if (!im) {
00086             ILOG_ERROR("No image: fileId=" << fileId);
00087             return;
00088         }
00089         
00090         Quid quid = vs->GetQuidFrame(fileId, src->FrameNr());
00091 
00092         // remove the border, if requested
00093         Geometry::Rectangle rect(mStripBorder, mStripBorder, im->CW() - mStripBorder - 1, im->CH() - mStripBorder - 1, true);
00094         Array::Array2dVec3UInt8* imNoBorder = MakeRoi(im, rect);
00095         delete im;
00096 
00097         Array2dScalarReal64* imIntensity = 0;
00098         RGB2Intensity(imIntensity, imNoBorder);
00099         delete imNoBorder;
00100         
00101         Real64 sigma = 2.0;
00102         Array2dScalarReal64* magnitude = 0;
00103         //Array2dScalarReal64* direction = 0;
00104         ComputeGradient(magnitude, imIntensity, sigma);
00105         //delete direction;
00106         
00107         int n = (imIntensity->CW() * imIntensity->CH());
00108         Real64 avgMagnitude = PixSum(magnitude) / n;
00109         Real64 avgIntensity = PixSum(imIntensity) / n;
00110         
00111         Vector::VectorTem<Real64> codebookVector = Vector::VectorTem<Real64>(2);
00112         codebookVector.Elem(0) = avgIntensity;
00113         codebookVector.Elem(1) = avgMagnitude;
00114         mTable->Add(quid, codebookVector);
00115 
00116         delete magnitude;
00117         delete imIntensity;
00118     }

Here is the call graph for this function:


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