摘 要:针对实时视频图像的清晰度检测问题,提出了一种背景提取和Sobel算子清晰度检测相结合的方法。采用多帧图像叠加平均的方法获取背景图片,然后将边缘检测中经典的Sobel算子应用于视频图像清晰度检测。为提高评价值的精确度,计算模板由2个增加到4个。实验结果表明,此方法具有良好的检测效果,计算速率可以满足系统实时性的要求。
关键词:实时视频图像;背景提取;Sobel算子;清晰度检测
实时视频图像的质量分析已成为众多应用领域性能好坏的关键因素之一,因此实时视频图像的清晰度检测变得尤为重要。目前针对实时视频图像清晰度检测的研究较少,图像清晰度检测算法的研究对象主要针对静止的图像。现有的图像清晰度检测算法大致分为空域和频域两类。在空域中多采用基于梯度的算法,如拉普拉斯(Laplace)算法、差分平方和(SPSMD)算法、Sobel算子等。此类算法计算简洁、快速、抗噪性能好、可靠性较高。在频域中多采用图像的FFT变换(或其他变换),如功率谱(Power-spectra)算法等[1-2]。此类算法的检测效果好,但计算复杂度高、计算时间长,不适合应用在基于软件实现的实时检测系统中。
当前对实时视频图像的一种重要应用是对运动目标的检测,常用的目标检测方法有帧差法、背景减法、光流法及运动能量法[3],其中最简单而又快捷的方法是背景差法。其基本思想是通过对输入图像与背景图像进行比较来分割运动目标,关键环节是背景图像的提取。目前常用的背景提取方法有多帧图像平均法、灰度统计法、中值滤波法、基于帧差的选择方法、单高斯建模等。参考文献[4]中对以上算法做了充分的研究。
本文是针对实时视频图像的清晰度检测,基于实时视频图像背景基本保持不变的环境。通过比较上述算法,针对实时视频图像的特点,提出一种基于背景提取与Sobel算子相结合的实时视频图像的清晰度检测算法。
1 实时视频图像的清晰度检测算法原理
当视频播放画面超过24帧/s时,根据视觉暂留原理,人眼无法辨别每幅单独的静态画面,看上去是平滑连续的视觉效果。视频中的事物通常分为静止和运动两类,连续多帧画面中保持静止的物体可视为静止的背景,连续多帧画面中位置变化的物体可视为运动的前景。因此,实时视频图像中的每帧图像都可以划分为静止的背景和运动的前景两类区域。由于视频序列图像中运动的前景区域随机变化,引起图像像素点梯度值的随机改变,使得实时视频图像的清晰度检测较难实现。因此,本文的算法是利用实时视频图像中静止的背景区域检测视频序列图像的清晰度,即由背景提取和清晰度检测两部分组成。
1.1 实时视频图像的背景提取
由参考文献[5]可知,视频序列中帧图像的静止背景区域由灰度值变化较小的像素点构成,每个像素点都有一个对应的像素值,这个值在一段时间内保持不变;运动的前景区域由灰度值变化较大的像素点构成,各像素点在不同的帧图像中的位置改变,形成运动轨迹。背景提取的目标就是根据实时视频图像中像素值的上述特点,找出图像中背景像素点的值。采用多帧图像累加平均的方法来获取图像的背景,从统计学角度,运动物体可视为随机噪声,而均值可以降噪,采用多帧图像累加取均值可消除运动物体,获得静止的背景图片。背景图像的计算公式为:
式中,f(x,y)为图像灰度,gx和gy可以用卷积模板来实现,如图1所示。
传统的边缘检测中,Sobel算子利用如图1的水平和垂直两个方向的模板,但实际情况中的梯度方向是未知的,因此利用两个方向计算出来的结果存在一定的误差。为了提高梯度计算精度,将模板的数量增加到4个,如图2所示,即0°、45°、90°、135° 4个方向。虽然继续增加模板的数量可以进一步提高计算精度,但考虑到计算效率,模板数量不宜过多。
2 算法描述
本算法大致分为三步:
(1)截取一段实时视频图像,获取初始背景图像。
(2)利用当前实时视频图像更新初始背景,获得待检测的背景图像。
(3)根据Sobel算子计算背景图像的边缘梯度值之和,根据阈值判断背景图像的清晰度,得到实时视频图像的清晰度评价值。
算法描述如下:
从实时视频图像中截取一段时长为1 min的视频图像,每5 s进行1次采样,共得到12帧图像。为减少计算量,将采样得到的12帧图像由RGB空间转换到灰度空间。对图像中每个像素点的灰度值f(x,y)累加求平均,得到实时视频图像的初始背景图像。计算公式为:
式中,n为边缘点的个数。将value与清晰的实时视频图像背景的清晰度检测范围值(经大量的实时视频图像实验得到)比较,若value∈T(α1,α2),则实时视频图像是清晰的;若valueT(α1,α2),则实时视频图像是模糊的。
3 实验结果与分析
目前,大部分的摄像系统都是基于RGB颜色空间,每个像素点在RGB空间中是一个三维矢量。为了减少计算量,使用灰度图像序列,即将彩色视频序列转换成灰度视频序列,基于灰度视频图像完成提取背景及实时视频图像的清晰度检测。
实验程序在PC机上运行,编程软件是Matlab R2007b,采用的是24位RGB视频序列,30帧/s,每帧图片的分辨率是320×240。从实时视频图像中提取背景图像后,本文分别采用Sobel算子、平方梯度法和快速检测法三种算法对图像的清晰度进行检测。
实验拍摄的视频图如图3所示。视频中杯子为移动的物体,杯子由视野的右侧移动到视野的左侧,背景物体基本保持不变。图3中的图片1和图片2分别是从实验视频中截取的图片,杯子的位置不断改变,图片3为清晰的实时视频图像的背景图像,其像素梯度值作为判断视频序列图像清晰度的参考阈值,如表1所示。图3中的图征4~9分别是从6段不同的实时视频图像中提取的背景图片。6段视频序列图像的清晰度逐渐减弱,其背景图像也越来越模糊。基于上述背景图,本文采用了三种算法:Sobel算子清晰度检测、平方梯度算法和快速检测法。其中Sobel算子清晰度检测如文中所述,平方梯度算法将微分值平方,计算公式为:
式中,图像大小为M×N,f(x,y)表示(x,y)处的灰度值[6]。快速检测法是先求图像的灰度均值,分别计算灰度值大于和小于图像灰度均值的像素点的均值H和L,然后利用评价因子F=(H-L)/(H+L)来检测实时视频图像的清晰度。
三种算法对实时视频图像的清晰度检测结果如表1所示。清晰度评价值经过归一化处理,便于算法准确度性能的比较。由表1可知,Sobel算子清晰度检测和平方梯度算法的清晰度评价值的变化趋势与幅度和肉眼观测到的事实基本相符,视频序列图像越模糊,清晰度评价值越小,即实时视频图像1、2、3的清晰度评价值在评价范围内,实时视频图像是清晰的,实时视频图像4、5、6的清晰度评价值在评价范围之外,实时视频图像是模糊的。快速检测算法对清晰度的敏感度低,视频很模糊时,评价值仍然较大,不能很好地衡量清晰度的变化幅度。表2比较了三种算法的时间性能,可知Sobel算子清晰度检测算法与快速算法计算时间较为接近,平方梯度算法计算时间最长。综上所述,平方梯度算法评价效果较好,但实时性较差;快速算子计算速率高,但对模糊的灵敏度低;Sobel算子的评价效果好,实时性也符合系统的要求。
为了对实时视频图像的清晰度进行实时检测,针对实时视频图像的特点,本文提出了采用背景提取和Sobel算子相结合的清晰度检测算法,该算法在帧图像清晰度检测时计算效率高,能够自动实时地完成实时视频图像的清晰度检测。但目前此算法仅适用于实时视频图像中背景基本不变或微小变化的场景。如果背景图像变化幅度较大,需要调整判断视频清晰度的评价范围作为新的评价标准,这也是后续工作的研究重点,以使该算法在更多的场景中应用。
参考文献
[1] MENG Bo, ZHU Ming, CAI Chang Jin. Design of video auto focusing based on image processing[J]. Optical Information Processing, 2006,6027(2):501-509.
[2] LI Feng, JIN Hong. A fast auto-focusing method for digital still camera[C]. Proceeding of the Fourth International Conference on Machine Learning and Cybernetics. Guangzhou: Proceeding of the 2005 IEEE, 2005:5001-5005.
[3] 袁伟才,徐向民.一种有效的动态背景提取及更新方法[J].计算机工程与应用,2010,46(4):191-192.
[4] 孟苑.复杂背景下运动目标的检测[D].陕西:西安电子科技大学,2009.
[5] 邢军.基于Sobel算子数字图像的边缘检测[J].微机发展,2005,15(9):48-52.
[6] 李奇.数字自动对焦技术的理论及实现方法研究[D].浙江:浙江大学,2004.