Commit 8c69266c authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

Merge pull request #3786 from jviney:fix_background_subtractor_knn_width_step

parents 4e87deae 4f24dc09
...@@ -458,10 +458,8 @@ CV_INLINE void ...@@ -458,10 +458,8 @@ CV_INLINE void
uchar nShadowDetection uchar nShadowDetection
) )
{ {
int size=_src.rows*_src.cols;
int nchannels = CV_MAT_CN(_src.type()); int nchannels = CV_MAT_CN(_src.type());
const uchar* pDataCurrent=_src.ptr(0);
uchar* pDataOutput=_dst.ptr(0);
//model //model
uchar* m_aModel=_bgmodel.ptr(0); uchar* m_aModel=_bgmodel.ptr(0);
uchar* m_nNextLongUpdate=_nNextLongUpdate.ptr(0); uchar* m_nNextLongUpdate=_nNextLongUpdate.ptr(0);
...@@ -509,48 +507,51 @@ CV_INLINE void ...@@ -509,48 +507,51 @@ CV_INLINE void
if (_nLongCounter >= m_nLongUpdate) _nLongCounter = 0; if (_nLongCounter >= m_nLongUpdate) _nLongCounter = 0;
//go through the image //go through the image
for (long i=0;i<size;i++) long i = 0;
for (long y = 0; y < _src.rows; y++)
{ {
const uchar* data=pDataCurrent; for (long x = 0; x < _src.cols; x++)
pDataCurrent=pDataCurrent+nchannels;
//update model+ background subtract
uchar include=0;
int result= _cvCheckPixelBackgroundNP(i, data, nchannels,
m_nN, m_aModel, m_fTb,m_nkNN, m_fTau,m_bShadowDetection,include);
_cvUpdatePixelBackgroundNP(i,data,nchannels,
m_nN, m_aModel,
m_nNextLongUpdate,
m_nNextMidUpdate,
m_nNextShortUpdate,
m_aModelIndexLong,
m_aModelIndexMid,
m_aModelIndexShort,
m_nLongCounter,
m_nMidCounter,
m_nShortCounter,
m_nLongUpdate,
m_nMidUpdate,
m_nShortUpdate,
include
);
switch (result)
{ {
case 0: const uchar* data = _src.ptr(y, x);
//foreground
(* pDataOutput)=255; //update model+ background subtract
break; uchar include=0;
case 1: int result= _cvCheckPixelBackgroundNP(i, data, nchannels,
//background m_nN, m_aModel, m_fTb,m_nkNN, m_fTau,m_bShadowDetection,include);
(* pDataOutput)=0;
break; _cvUpdatePixelBackgroundNP(i,data,nchannels,
case 2: m_nN, m_aModel,
//shadow m_nNextLongUpdate,
(* pDataOutput)=nShadowDetection; m_nNextMidUpdate,
break; m_nNextShortUpdate,
m_aModelIndexLong,
m_aModelIndexMid,
m_aModelIndexShort,
m_nLongCounter,
m_nMidCounter,
m_nShortCounter,
m_nLongUpdate,
m_nMidUpdate,
m_nShortUpdate,
include
);
switch (result)
{
case 0:
//foreground
*_dst.ptr(y, x) = 255;
break;
case 1:
//background
*_dst.ptr(y, x) = 0;
break;
case 2:
//shadow
*_dst.ptr(y, x) = nShadowDetection;
break;
}
i++;
} }
pDataOutput++;
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment