我有一个平整表面的背景图像。 我的目标是跟踪在表面上定位/移动的对象。
我正在使用MOG2查找学习率为0的前景对象,因此不会更新背景(否则将在背景中合并静态对象)。
结果很好,但是我对光有一个很大的问题:如果在获取背景后照明发生变化,则会检测到各种伪像作为前摄对象。
如何提高耐光性?
更新
我正在尝试一种效果很好的解决方案,但需要一些修复程序。
我以这种方式使用MOG2:
通过这种方式,对象被掩盖在背景之外,并且背景仍在更新。这样可以保证对光变化具有良好的鲁棒性。
存在一些缺点,例如,当光线变化时,对象蒙版(“蒙版blob”)保持以前的亮度,如果差异太大,则可以检测为新对象。
在上图中,您可以看到当前帧更亮,静态对象的蒙版更暗。
我的想法是尝试根据光线变化来适应“遮罩斑点”以更改其亮度。我该如何使用OpenCV获得此信息?
解决先前的缺陷
使用inpaint功能可以简单地遮罩BGK(步骤3),我可以使“遮罩斑点”与背景亮度变化保持同步。 此修复程序也有缺点,不是很出色。
更新2
我认为这是一个有趣的话题,所以我会不断更新。 修复功能非常慢,因此我正在尝试另一种方法。 使用Hsv颜色空间可以管理亮度通道,我可以通过以下方式减少亮度的影响:
答案 0 :(得分:0)
我在实现速度估计算法时遇到类似的问题,希望我的解决方案对您有所帮助。
我尝试的一种方法是“累积差异图像”(基本上是您对MOG2所做的操作),但是当背景更新时,它无法跟踪静止的对象。当我不更新背景时,我会遇到与您相同的问题。
因此,我决定使用RGB / HSV阈值处理。我设置了道路颜色的边界(让我们说灰色),并创建了二进制图像,其中道路颜色的所有内容均为黑色(0),其他所有内容均为白色(1)。 Here是有关HSV阈值的不错的教程。选择边界时,您可以确认照明系数设置,我们说明亮照明的上限,黑暗照明的下限。但是,该方法可能会导致算法看不到颜色类似于背景的对象。另一个缺点是背景应该统一,没有任何细节。
您可以尝试的另一种方法是将输入图像和背景都转换为灰度,然后手动进行减法。这将使您有机会调整阈值水平与背景的差异。假设在黑暗条件下值为120的背景在明亮条件下将具有140,所以差异为20。对于目标像素,我们可以说值为180,背景值为120,因此差异为60。将差异阈值设置为20然后将低于20的值设置为0,将高于20的值设置为1,这应该起作用(所有值在0到255之间的范围内)。
祝你好运!