变更检测和背景建模
动态视觉 (Dynamic Vision - DV)
动态视觉提供了持续地或在一定时间间隔内监视场景的方法。比如 机器人视觉(自动化系统),视频监控,卫星图像,移动图片。
动态视觉捕获并分析一个图片序列 (a sequence of images)
四种不同的分类:
- SCSO(Stationary Camera, Stationary Object): 固定摄像机,固定物体。
- SCMO(Stationary Camera, Moving Object): 固定摄像机,移动物体。
- MCSO(Moving Camera, Stationary Object): 移动摄像机,固定物体。
- MCMO(Moving Camera, Moving Object): 移动摄像机,移动物体。
动态视觉关键问题:
- 变更检测 (大多数时间SCMO,比如视频监控)
- 移动物体检测或定位 (SCMO, MCSO, MCMO,如机器人系统,自动驾驶车辆,城市交通分析,目标追踪和定位 - 军事)
- 3D物体/场景还原 (MCSO, MCMO, 3D重构,SLAM)
变更检测 (Change Detetcion)
目标
检测并定位在一系列图片中"有意义meaningful” 的改变。改变能在多个等级中被监测到:像素级别,边缘级别,区域级别和对象级别。
方法
帧差异 (Frame Difference)
最简单的方法是直接计算两个连续帧 (consecutive frame) 之间的区别。
当帧与帧之间相同位置像素点的差的绝对值大于某个阈值,则这两个像素点是有改变的。
阈值的选择
后期处理(post-processing): 二值化差分帧可能会有非常多噪声,因此我们需要使用后期处理来去除噪声。方法有,多数投票 (majority vote),形态学操作 (Morphological Operations),大小/形状过滤 (过滤掉不属于最小尺寸或特定形状的连接簇 connected cluster 的像素,也可以用 连接组件分析 connected component analysis)
问题
帧差异方法对噪声,明度变化,无意义变化 nonsense changes(如树叶的移动),照相机移动是敏感的。并且难以检测缓慢变化 (slow changes)。
更加稳键的方法
可以使用以下任意一种方法比较两帧中同一位置的区域或像素组的强度/颜色特性:
- 统计方法。
- 基于强度分布局部近似 (local approximation of intensity distribution) 的方法。
代价是计算量变大了。
基于可能性比的变更检测 (Likelihood Ratio based CV)
给定来自帧 ft 的区域 R1 以及 相邻帧 f t+1 相对应的区域 R2,提出假设
H0: R1 和 R2 是来自同一个对象。(R1和R2是独立地取样于同一个正态分布)
H1: R1 和 R2 是来自不同对象。(R1和R2是独立取样于两个正态分布)
R1 和 R2 来自不同对象的可能性:
R1和R2来自同一个对象的可能性:
可能性比 (Likelihood Ratio) 检验:
基于可能性比检验的变更检测(LRT):
当LRT结合了尺寸过滤器(size filter),其在真实场景中表现不错。
同样的,其仍会在慢动作 (slow motion) 中失败。
因此我们可以分析一系列帧的变化,也就是累计帧差 (Accmulative Frame Difference)。
帧差异有一个问题,便是会导致幻影 (Ghost in frame-difference)
背景建模&减除 (Background Modelling & Subtraction)
目的
给定一个固定照相机的帧序列,检测所有的前景物体(foreground objects)。(SCMO)
方法
思路:将前景对象检测为当前帧与场景静态背景图像(scene’s static background)之间的差异(difference)。
于是,我们要解决如何自动从图片中获得场景静态背景。
问题
我们需要得出一个能够适应背景图像的:明度变化(逐渐或者忽然的,如云层遮罩),动作变化 (相机震荡 camera oscillation, 高频背景对象,如树枝,海浪等),背景的几何变化(background geometry) (如停泊的汽车)。
基本原理
每个像素位置的背景模型 (background model) 均基于该像素的最近历史记录。在许多工作中,这样的历史记录是: 仅限n帧,并且最近帧具有较高的加权平均值 (weighted average)。
本质上,背景模型是根据像素的历史记录按时间顺序计算的平均值 (chronological average)。在不同(相邻)的像素位置之间不使用空间相关性 (spatial correlation)。
平均数和中位数 (Average/Median)
背景是前n帧的平均数或者中位数。(快速,但是非常的耗内存,为了计算平均值,需要暂存 n 张图片)
背景作为运行平均值 (Running Average - RA)。(不需要很高的内存需求)
α 是学习率(learning rate),通常是0.05。
选择性 (selectivity)
在每个新帧处,每个像素被分类为前景或背景 (foreground or background)。
从分类 (classification) 到背景模型有什么反馈?如果像素被分类为前景,则在背景模型中将其忽略。这样我们可以防止背景模型被逻辑上不属于背景场景的像素所污染(polluted)。
选择性运行时平均:
限制
- 它们没有提供明确的方法来选择阈值。
- 主要问题:基于单个值(只有一个值来代表背景),他们无法应对多种模式背景分布 (modal background distribution)。(比如同一组图中会有天空背景和树木背景)
运行高斯平均 (Running Gaussian Average)
与其使用单个值来代表背景,不如直接使用一个分布来代表背景。
在直方图上拟合一个高斯分布,这给出了背景的PDF。
但其无法处理多模式背景(multimodal bacjgrounds)。因为我们只是用了一个高斯分布拟合了一个背景。
混合高斯 (Mixture Gaussians)
1D例子,紫色的是多个高斯分布,黄色的是它们的混合高斯。
2D例子
观测当前像素值的概率为:
高斯概率密度函数:
根据现有的K高斯分布检查每个新的像素值 Xt。匹配(A match)定义为在高斯的2.5个标准偏差 (standard deviation) 内的像素值。
与新观测值匹配的分布参数更新如下
需要确定哪些高斯属于背景,哪些高斯属于物体。考虑支持证据 (supporting evidence) 的积累和背景分布(background distribution)的相对较低方差(low variance)。
新对象遮挡了背景对象 -> 增加了现有分布的方差。
首先,高斯函数按 ω/σ 值排序(降序)。
然后,选择第一个B分布作为背景模型。
T是背景应考虑的数据最小部分 (minimum portion) 的度量:T小,则是单模式的 (unimodal)。T大,则是多模式的 (multi-modal)。
- 假设每一个像素点有五个高斯函数,分别是
𝜔i 𝜂(X, μi, 𝜎i), i = 1,2,3,4,5 - 在某个时间t,像素值是Xt,并且它匹配第三个高斯函数,如 |Xt - μ3| <2.5𝜎3。
- 更新第三个高斯函数的参数𝜔3,μ3,𝜎3。
- 按 𝜔 / 𝜎 的降序对5个高斯进行排序,也就是说,排序的高斯如下:
𝜔2 𝜂(μ2, 𝜎2),𝜔1 𝜂(μ1, 𝜎1),𝜔3 𝜂(μ3, 𝜎3),𝜔5 𝜂(μ5, 𝜎5),𝜔4 𝜂(μ4, 𝜎4) - 若 𝜔2 + 𝜔1 + 𝜔3 > T,则前三个在序列中的高斯函数代表了背景,而后两个高斯函数代表了前景,而由于像素值Xt落在了第三个高斯函数中,因此该像素点被认为是“背景”。
- 若 𝜔2 + 𝜔1 > T,则前两个在序列中的高斯函数代表了背景,而后三个高斯函数代表了前景,而由于像素值Xt落在了第三个高斯函数中,因此该像素点被认为是“前景”。