10 · 时序异常:抖动与冻结
单帧算法无法区分「画面内容静止」与「信号卡住」。时序分析利用相邻帧关系,检测 抖动(Shake) 与 冻结(Freeze) 两类典型异常。
1. 预处理共性
为降低算力,常将帧宽缩放到 (保持宽高比),在灰度图上运算。
维护帧缓存: 或长度 的滑动窗口 。
2. 抖动检测:Farneback 光流
2.1 现象
支架松动、风吹导致整幅画面沿近似一致方向周期性平移,区别于局部运动目标。
2.2 Farneback 稠密光流
Farnebäck 用多项式展开近似邻域,估计像素位移场 。
光流幅值:
2.3 分块统计
分块,每块平均幅值 。全局运动均值:
幅值方差(运动是否一致):
方向一致性:设块主方向角 ,方向偏差:
2.4 抖动判定
单帧满足(启发式):
滑动窗口内满足条件的帧比例:

示意图标题为英文标注;抖动 / 冻结需多帧对比,暂无单帧 fixture。
3. 冻结检测:帧差法
3.1 现象
当前帧与上一帧几乎完全相同——播放器停帧、编码器重复帧、链路卡住。
3.2 帧差
二值化(阈值 ):
变化像素比例:
静止像素比例(冻结分数):
表示几乎全帧静止。
3.3 多帧确认
典型 ,。
误报:监控对准静态场景(空仓库、墙面)也会 。应对:仅对「应有运动」的通道启用,或结合场景运动基线。
4. 对比
| 抖动 | 冻结 | |
|---|---|---|
| 帧间关系 | 全局有位移 | 无变化 |
| 核心算子 | 光流 | 帧差 |
| 典型误报 | 大车经过整体晃动 | 静态场景 |
| 采样建议 | 隔帧(如每 5 帧 1 次) | 连续帧 |
5. 流程总览
6. OpenCV 接口
cpp
// 光流
calcOpticalFlowFarneback(prevGray, currGray, flow, ...);
// 帧差
absdiff(prevGray, currGray, diff);
threshold(diff, binary, tau_f, 255, THRESH_BINARY);7. 参考文献
- Farnebäck G. Two-frame motion estimation based on polynomial expansion. SCIA, 2003.
- Barron J L, Fleet D J, Beauchemin S S, Burkitt T A. Performance of optical flow techniques. IJCV, 1994, 12(1): 43–77.
- Piccardi M. Background subtraction techniques: a review. IEEE SMC, 2004. — 帧差与背景建模。
- Horn B K P, Schunck B G. Determining optical flow. Artificial Intelligence, 1981, 17(1-3): 185–203.




