算法原理:
对视频流每隔N帧取一帧,对取到的每帧进行特征点匹配,并获得匹配矩阵,当匹配矩阵小于阀值A,则认为这两帧画面有抖动,当抖动帧数大雨阀值B时,认为画面发生抖动。
算法步骤:
- 使用OpenCV的ORB类来提取特征点和描述子
- 使用BFMatcher进行匹配。
- 对于每N帧图像,我们将其转换为灰度图像,然后使用ORB算法提取特征点和描述子。
- 接着对检测的相邻两帧进行特征点匹配,并计算匹配矩阵。
- 如果当前两帧图像的匹配矩阵小于阈值A,则认为这两帧画面有抖动。当抖动帧数大于阈值B时,认为画面发生抖动。
- 我们可以将其保存到一个文件夹中,以备后续分析。同时,我们也可以将异常情况的图像以及匹配结果通过邮件或者其他方式发送给相关的人员进行处理。
基于OpenCV 3.4.2-4版本,以下是Java语言的视频画面抖动异常检测的代码:
import org.opencv.core.Core;
import org