demo

用了OpenCv里面的模板匹配用于确定座位的位置,

  1. 平方差匹配 method=CV_TM_SQDIFF

这类方法利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大.

R(x,y)= sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2

  1. 标准平方差匹配 method=CV_TM_SQDIFF_NORMED

    R(x,y)= frac{sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{sqrt{sum_{x',y'}T(x',y')^2 cdot sum_{x',y'} I(x+x',y+y')^2}}

  2. 相关匹配 method=CV_TM_CCORR

这类方法采用模板和图像间的乘法操作,所以较大的数表示匹配程度较高,0标识最坏的匹配效果.

R(x,y)= sum _{x',y'} (T(x',y')  cdot I(x+x',y+y'))

  1. 标准相关匹配 method=CV_TM_CCORR_NORMED

    R(x,y)= frac{sum_{x',y'} (T(x',y') cdot I'(x+x',y+y'))}{sqrt{sum_{x',y'}T(x',y')^2 cdot sum_{x',y'} I(x+x',y+y')^2}}

  2. 相关匹配 method=CV_TM_CCOEFF

这类方法将模版对其均值的相对值与图像对其均值的相关值进行匹配,1表示完美匹配,-1表示糟糕的匹配,0表示没有任何相关性(随机序列).

R(x,y)= sum _{x',y'} (T'(x',y')  cdot I(x+x',y+y'))

在这里

egin{array}{l} T'(x',y')=T(x',y') - 1/(w  cdot h)  cdot sum _{x'',y''} T(x'',y'') \ I'(x+x',y+y')=I(x+x',y+y') - 1/(w  cdot h)  cdot sum _{x'',y''} I(x+x'',y+y'') end{array}

  1. 标准相关匹配 method=CV_TM_CCOEFF_NORMED

    R(x,y)= frac{ sum_{x',y'} (T'(x',y') cdot I'(x+x',y+y')) }{ sqrt{sum_{x',y'}T'(x',y')^2 cdot sum_{x',y'} I'(x+x',y+y')^2} }

通常,随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(同时也意味着越来越大的计算代价). 最好的办法是对所有这些设置多做一些测试实验,以便为自己的应用选择同时兼顾速度和精度的最佳方案.

有这6中算法可以提供不同的环境的不同需求,用于适应各种环境,得到正确的作为位置,用了一段时间之后,当反应匹配有误差的时候,在检测场所物业12点的时候自动打开灯光进行校准,得到正确的位置参数,

保存午夜12点的检测场所截图,进行腐蚀和膨胀操作提高稳定性。

在工作的时候通过通过帧间差分法,得到每个有人和无人的差别,该方法对光线变化不敏感,可以适用于各种场景,稳定性比较高,程序性能好。

原文地址:https://www.cnblogs.com/A-FM/p/6687193.html