播放连续帧运动序列,点击像素后只追踪当前像素的前后帧差分、阈值判定和运动掩膜结果。
当我们看一段视频,想知道哪些区域在动、哪些背景保持不动时,需要比较连续两帧的像素差异。问题是差异多大才算运动,以及如何减少噪声和拖影的干扰。
常用办法是先算当前帧与前一帧对应位置的灰度绝对差,再用阈值把差值分成“静止”和“运动”两类;更稳的做法是三帧差法,比较当前帧与前后帧的两次差异,取交集来抑制噪声和空洞。
切换播放或拖动到不同帧,对比当前帧、前一帧、差分图和运动掩膜:阈值调低会连噪声一起标成运动,目标移动越快、帧间距越大,运动区域越宽。
当前查看 (48, 42),两帧灰度为 96 / 219。
前向差分 123,当前阈值 T = 52。
帧差法只要求前向差分超过阈值。当前结果:运动候选像素。
点击任意图像都会更新同一个像素坐标,下面公式直接使用当前像素的真实灰度值。
优点:只需要相邻帧作差,计算量小,能快速找出画面变化区域。
限制:对噪声和光照闪动敏感,运动目标内部可能出现空洞,因此常接形态学处理。



输入第一帧、第二帧和第三帧。



分别计算第一帧与第二帧、第三帧与第二帧的绝对差。


对差分图做阈值化,得到候选运动区域。

填充内部空洞,清除小噪声,平滑物体边缘。

教材中常将清理后的掩膜叠加或轮廓化作为示意;本页动态实现只到形态学闭运算,不再做连通区域提取。
