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

virtual void Impala::Core::VideoSet::BlackFrameDetect::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 86 of file BlackFrameDetect.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(), mFeatureDim, mStripBorder, mTable, Impala::Core::Array::PixSum(), Impala::Core::Array::RGB2Intensity(), and Impala::Application::DemoCamera2d::sigma.

00087     {
00088         /* get frame */
00089         Array::Array2dVec3UInt8* im = Array::ArrayCreate<Array::Array2dVec3UInt8>
00090             (src->FrameWidth(), src->FrameHeight(), 0, 0, src->DataPtr(), true);
00091 
00092         /* verify image is not null */
00093         if (!im) {
00094             ILOG_ERROR("No image: fileId=" << fileId);
00095             return;
00096         }
00097         
00098         Quid quid = vs->GetQuidFrame(fileId, src->FrameNr());
00099 
00100         // remove the border, if requested
00101         Geometry::Rectangle rect(mStripBorder, mStripBorder, im->CW() - mStripBorder - 1, im->CH() - mStripBorder - 1, true);
00102         Array::Array2dVec3UInt8* imNoBorder = MakeRoi(im, rect);
00103         delete im;
00104 
00105         Array2dScalarReal64* imIntensity = 0;
00106         Array::RGB2Intensity(imIntensity, imNoBorder);
00107         delete imNoBorder;
00108         
00109         Real64 sigma = 2.0;
00110         Array2dScalarReal64* magnitude = 0;
00111         //Array2dScalarReal64* direction = 0;
00112         ComputeGradient(magnitude, imIntensity, sigma);
00113         //delete direction;
00114         
00115         int n = (imIntensity->CW() * imIntensity->CH());
00116         Real64 avgMagnitude = Array::PixSum(magnitude) / n;
00117         Real64 avgIntensity = Array::PixSum(imIntensity) / n;
00118         
00119         Vector::VectorTem<Real64> codebookVector =
00120             Vector::VectorTem<Real64>(mFeatureDim);
00121         codebookVector.Elem(0) = avgIntensity;
00122         codebookVector.Elem(1) = avgMagnitude;
00123 
00124         // added by Jun Wu
00125                 // bin 0 for color historgram from gray image
00126         codebookVector.Elem(2) = (Real64)0.001;
00127         mTable->Add(quid, codebookVector);
00128 
00129         delete magnitude;
00130         delete imIntensity;
00131 
00132         //ILOG_INFO("DoneFrame: " << fileId << src);
00133     }

Here is the call graph for this function:


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