Definition at line 193 of file ShotSegmenter.h. References BlurImage(), Impala::Core::Stream::RgbDataSrc::DataPtr(), Impala::Core::Stream::RgbDataSrc::FrameHeight(), Impala::Core::Stream::RgbDataSrc::FrameWidth(), Impala::Core::Histogram::MakeHistogram1d(), mBlurSigma, mHistograms, mHistPerFrame, mPyramid, mWindowSize, Impala::Core::Histogram::Histogram1dTem< ElemT >::Normalize(), Impala::Core::Geometry::RectanglePyramid::NrLevels(), Impala::Core::Geometry::RectanglePyramid::NrRects(), Impala::Core::Array::ProjectRange(), and Impala::Core::Geometry::RectanglePyramid::Rect(). Referenced by HandleNewFrame(). 00194 { 00195 typedef Array::Array2dVec3Real64 Array2dVec3Real64; 00196 typedef Array::Array2dVec3UInt8 Array2dVec3UInt8; 00197 00198 HistType** tmpHist; 00199 tmpHist = new HistType*[mHistPerFrame]; 00200 // Back up the first frame's histogram pointers 00201 for (int i=0; i<mHistPerFrame ;i++) 00202 tmpHist[i] = mHistograms[i]; 00203 // Shift the rest of the histograms 00204 for (int i=0 ; i<(mWindowSize-1)*mHistPerFrame ; i++) 00205 mHistograms[i] = mHistograms[i+mHistPerFrame]; 00206 00207 for (int i=(mWindowSize-1)*mHistPerFrame ; i<mWindowSize*mHistPerFrame ; 00208 i++) 00209 { 00210 mHistograms[i] = tmpHist[i - (mWindowSize - 1) * mHistPerFrame]; 00211 } 00212 delete [] tmpHist; 00213 00214 Array2dVec3Real64* srcWrap = 00215 Array::ArrayCreate<Array2dVec3Real64>(src->FrameWidth(), 00216 src->FrameHeight(), 0, 0); 00217 00218 Array::MakeFromData2<Array2dVec3Real64,Array2dVec3UInt8>(srcWrap, 00219 src->DataPtr()); 00220 00221 Array::Array2dScalarReal64* srcO1 = 0; 00222 Array::Array2dScalarReal64* srcO2 = 0; 00223 Array::Array2dScalarReal64* srcO3 = 0; 00224 00225 Array::ProjectRange(srcO1, srcWrap, 1); 00226 Array::ProjectRange(srcO2, srcWrap, 2); 00227 Array::ProjectRange(srcO3, srcWrap, 3); 00228 00229 BlurImage(srcO1, mBlurSigma); 00230 BlurImage(srcO2, mBlurSigma); 00231 BlurImage(srcO3, mBlurSigma); 00232 00233 int k = (mWindowSize - 1) * mHistPerFrame - 1; 00234 for (int i=0 ; i<mPyramid.NrLevels() ; i++) 00235 { 00236 for (int j=0 ; j<mPyramid.NrRects(i) ; j++) 00237 { 00238 MakeHistogram1d(mHistograms[++k], srcO1, mPyramid.Rect(i, j)); 00239 mHistograms[k]->Normalize(); 00240 00241 MakeHistogram1d(mHistograms[++k], srcO2, mPyramid.Rect(i, j)); 00242 mHistograms[k]->Normalize(); 00243 00244 MakeHistogram1d(mHistograms[++k], srcO3, mPyramid.Rect(i, j)); 00245 mHistograms[k]->Normalize(); 00246 } 00247 } 00248 00249 delete srcWrap; 00250 delete srcO1; 00251 delete srcO2; 00252 delete srcO3; 00253 }
Here is the call graph for this function:
|