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

void Impala::Core::VideoSet::ShotSegmenter::UpdateHistograms ( unsigned char *  data  )  [inline, private]

Definition at line 832 of file ShotSegmenter.h.

References BlurImage(), EqualizeHist(), Impala::Core::Stream::RgbDataSrc::FrameHeight(), Impala::Core::Stream::RgbDataSrc::FrameWidth(), Impala::Core::Histogram::MakeHistogram1d(), mBlur, mBlurSigma, mHistEq, mHistNorm, mHistograms, mHistPerFrame, mPyramid, mSrc, 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().

00833     {
00834         HistType** tmpHist;
00835         tmpHist = new HistType*[mHistPerFrame];
00836         //Back up the first frame's histogram pointers
00837         for(int i=0; i<mHistPerFrame ;i++)
00838             tmpHist[i] = mHistograms[i];
00839         //Shift the rest of the histograms
00840         for(int i=0 ; i<(mWindowSize-1)*mHistPerFrame ; i++)
00841             mHistograms[i] = mHistograms[i+mHistPerFrame];
00842 
00843         for(int i=(mWindowSize-1)*mHistPerFrame; i<mWindowSize*mHistPerFrame ;i++)
00844             mHistograms[i]=tmpHist[i-(mWindowSize-1)*mHistPerFrame];
00845         delete [] tmpHist;
00846 
00847         Array::Array2dVec3Real64* srcWrap =
00848             Array::ArrayCreate<Array::Array2dVec3Real64>(mSrc->FrameWidth(),
00849                                                          mSrc->FrameHeight(),
00850                                                          0, 0);
00851 
00852         Array::MakeFromData2<Array::Array2dVec3Real64,Array::Array2dVec3UInt8>(srcWrap,data);
00853         
00855         //OOO
00856         //Array2dVec3Real64* srcOOO=0;
00857         //ColorSpace(srcOOO,srcWrap,Element::RGB,Element::OOO);
00858 
00859         Array::Array2dScalarReal64* srcO1 = 0;
00860         Array::Array2dScalarReal64* srcO2 = 0;
00861         Array::Array2dScalarReal64* srcO3 = 0;
00862 
00863         Array::ProjectRange(srcO1,srcWrap,1);
00864         Array::ProjectRange(srcO2,srcWrap,2);
00865         Array::ProjectRange(srcO3,srcWrap,3);
00866     
00867         if (mBlur)
00868         {
00869             BlurImage(srcO1,mBlurSigma);
00870             BlurImage(srcO2,mBlurSigma);
00871             BlurImage(srcO3,mBlurSigma);
00872         }
00873 
00874         int k = (mWindowSize-1)*mHistPerFrame-1;
00875 
00876         for(int i=0;i<mPyramid.NrLevels();i++){
00877             for (int j=0;j<mPyramid.NrRects(i);j++){
00878 
00879                 MakeHistogram1d(mHistograms[++k],srcO1,mPyramid.Rect(i,j));
00880                 if(mHistEq)
00881                     EqualizeHist(mHistograms[k]);
00882                 if(mHistNorm)
00883                     mHistograms[k]->Normalize();
00884                 
00885                 MakeHistogram1d(mHistograms[++k],srcO2,mPyramid.Rect(i,j));
00886                 if(mHistEq)
00887                     EqualizeHist(mHistograms[k]);
00888                 if(mHistNorm)
00889                     mHistograms[k]->Normalize();
00890 
00891                 MakeHistogram1d(mHistograms[++k],srcO3,mPyramid.Rect(i,j));
00892                 if(mHistEq)
00893                     EqualizeHist(mHistograms[k]);
00894                 if(mHistNorm)
00895                     mHistograms[k]->Normalize();
00896             }
00897         }
00898 
00899         delete srcWrap;
00900         //delete srcOOO;
00901 
00902         delete srcO1;
00903         delete srcO2;
00904         delete srcO3;
00905     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:32:21 2010 for ImpalaSrc by  doxygen 1.5.1