Home || Visual Search || Applications || Architecture || 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 77 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.

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

Here is the call graph for this function:


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