最近学习了视频监控方面的小例子,利用静态放置的相机检测运动物体,并且有简单背景差分法和简单帧差值法两种方法的OpenCV实现,算是作为对OpenCV的一个拓展了解把。
第一种简单背景差分法原理简单。背景差分认为图像分为前景和背景,对于一个固定的场景,先做一个背景的模板,然后对于每一帧新图像,计算当前帧与背景图像的差值,得到前景,前景就对应这移动的物体或人。但是简单的背景差分法有一个问题,它假设背景是静止不变的,如果场景中原来有一个桌子,我们把它认为是背景并添加到背景图像中,然是如果有一个人走进了场景,碰到了桌子,那么此时人固然可以被检测为前景,但是这张桌子由于跟以前的桌子位姿不一样,也会被当做背景。也就是说,背景差分中,用作背景的图像不能是绝对静止的,否则背景的变化会被认为是“闯入者”。
第二种是帧差值法,帧差值是用当前帧减去上一帧,得到的差值就是运动的图像。为了减小误差,一般是下一帧减去当前帧,当前帧减去上一帧,然后把这两个差值图像做按位与运算。该方法能适应背景的变化,每次都是动态识别当前的变化,相当于是一个相对变化量,但是不能测出当前场景与固定场景的绝对变化情况,因此两种可以说是应用场合不太一样。贴上帧差值法的代码和运行结果。
#inclu