我可以看到这种方法存在许多可能的问题。我是根据自己的经验来用一种非常相似的方法改进行人计数系统的,所以我并不是要气馁。相反,我想提醒您,为了构建一个准确而强大的系统,您可能必须克服这些障碍。
首先,背景减法假定感兴趣的对象将始终在移动,而您对计数不感兴趣的对象将保持完全静止。果然,在您的场景中可能就是这种情况,但这仍然是一个非常有限的假设。我还发现背景减法对照明的变化非常敏感(我同意几何)。
即使你认为你的环境得到了很好的控制,也要小心不要假设一个 blob = 一个人。与人相对应的斑点经常因为没有移动或太小而未被检测到,因此它们被侵蚀或某些阈值标准删除(相信我,你不想进入“调整阈值,直到一切正常”陷阱。它不起作用;))。一个blob也可能对应于两个人一起走,或者一个人携带某种行李。或者是一条狗。所以不要对 blob 做出聪明的假设。
幸运的是,由于您确实提到您正在使用 LBP 进行人员检测,我认为您在没有犯上述段落中的错误的正确轨道上。不过,我不能特别评论 LBP 的有效性。我还读到 HOG(梯度直方图)是人体检测中最先进的方法,请参阅Histograms of Oriented Gradients for Human Detection。
我最后的抱怨与使用Camshift有关。它基于颜色直方图,因此,它本身在跟踪易于通过颜色区分的单个对象时效果很好,只要跟踪窗口足够大并且没有遮挡或突然变化。但是,一旦您必须跟踪可能具有非常相似的颜色描述并且彼此非常接近的多个目标,您就不能没有一种算法,该算法以某种方式允许您维持多个假设。这可能是粒子过滤器或框架,例如 MCMCDA(Markov Chain Monte Carlo Data Association,见Markov Chain Monte Carlo Data Association for Multiple-Target Tracking)。我在跟踪多个对象时单独使用 Meanshift 的经验是跟踪不应该发生的一切:丢失跟踪、混淆目标、固定在后台等。阅读一些关于多个对象跟踪和数据关联问题的信息,这可能是在毕竟是计算多人的核心(我说“可能是”,因为你的目标是计数而不是跟踪,所以我不会完全放弃一些聪明的方法的可能性,即不跟踪就计数......)
我的最后一条建议是:对于给定的方法,你能做的只有这么多,而且你需要更高级的东西来获得更好的性能(所以我在这方面不同意 user36624)。这可能意味着用更强大的东西改变你的算法,或者完全改变架构。当然,您必须知道哪些花哨的东西对您真正有用。有些出版物试图以有原则的方式解决问题,而其他出版物只是为给定的数据集提出一种算法,并期望您训练一个并不真正适合手头问题的分类器,同时要求您也调整一些阈值。人数统计是正在进行的研究,所以不要指望事情会一帆风顺。一定要努力学习一些超出你能力范围的东西,然后一遍又一遍地做……
我承认我没有提供任何解决方案,而只是指出了您方法中的缺陷(所有这些都来自我自己的经验)。为了获得灵感,我建议您阅读一些最近的研究,例如实时监控视频中的稳定多目标跟踪。祝你好运!