Home || Architecture || Video Search || Visual Search || Scripts || Applications || 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 87 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.

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

Here is the call graph for this function:


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