摘要:灰度投影算法是车载视频稳定当中应用较多的运动估计算法,然而投影法对图像的对比度有较高要求,而且在恶劣天气情况下,针对直方图均衡化进行对比度增强效果不好,为此提出采用小波边缘增强的方法对图像进行预处理。实验表明,该方法有效地提高了灰度投影算法在低对比度图像上的运动矢量估计精度。
0 引言
车载成像技术是一种将成像设备置于车载平台的远距离、非接触获取目标图像的技术和方法,是未来汽车智能化的关键。但是由于摄像机随车体晃动导致输出的图像序列不稳定,图像序列晃动量较大,易使观察者产生疲劳,也会严重影响后续处理的精度,因此,必须对车载图像序列进行稳定。
目前,车载稳像技术使用较多的算法为特征点法和灰度投影法。特征点法能对任意形式的图像运动进行运动矢量估计,但在处理一些画质较差,特征贫乏的图像时,精度往往很低,很难适应车载视频稳像的各种环境变化;灰度投影法只能处理只含平移运动和较小旋转运动的情况,且要求图像有一定的对比度。而车载视频往往拍摄时路况环境比较复杂,如雨雾天气,这就给算法处理的精度带来很大影响。本文针对这种情况,采用小波的方法对图像进行预处理,提高灰度投影法在车载稳像应用中的抗干扰能力。
1 车载稳像系统框图
电子稳像是利用电子设备和数字图像处理技术相结合的方法,通过计算选定的参考帧图像和被比较的当前帧图像的运动矢量,再根据获得的运动矢量按照某种准则对当前图像进行补偿,从而消除或减轻图像序列帧间的随机抖动,获得稳定的图像序列。
电子稳像作为车载稳像系统中的核心部分,其系统结构如图1所示。
图1 系统框图
其中,全局运动矢量估计是整个稳像系统的关键,它决定了稳像精度和耗时性。
1.1 运动矢量估计算法
通过对高速路抖动特点的分析,并且对目前在电子稳像中常用的运动估计算法进行各自优缺点的比较,本系统决定采用灰度投影算法进行全局运动矢量估计。
灰度投影算法:投影法是利用图像总体灰度变化规律来确定图像运动矢量的一种方法,它不必对图像上的每一点做相关运算,而是利用图像的灰度投影曲线做一次相关运算,因此它的运算量小,运动估计速度快,容易满足实时性要求,同时抑制噪声的能力较强,并且在精度上也能较好地满足要求。
该算法首先通过投影公式将每一帧二维图像映射成两个一维波形,其行列灰度值累加表示为:
式中:Ik(i)代表第k帧图像第i行的灰度值,Ik(i)代表第k帧图像第j列的灰度值,Gk(i,j)为第k帧图像上(i,j)处的像素灰度值。
为了避免因图像抖动导致图像边缘信息发生变化,而影响互相关计算出的互相关曲线峰值,在进行互相关计算前,对图像进行余弦滤波,去除图像边界信息波形而完整保留中心区域波形,减小边界信息对互相关计算的影响,提高计算精度。投影滤波后,对参考帧和当前帧各分量的两条曲线进行相关计算,找到两条曲线的惟一谷值,即可确定出当前帧相对于参考帧的行列运动偏移量。相关运算的公式为:
式中:colc(n)和colr(n)分别为第i帧和参考帧的在一个方向上的灰度投影值,J为两曲线中进行相关运算的单位长度,m为位移矢量相对于参考帧在一侧的搜索宽度,即允许的最大正负抖动范围,m在1至2m+1间取值。当C(k)为最小值时,此时k=Kmin,则第i帧图像相对于参考帧图像在一个方向上的位移矢量为:
以水平方向为例,vi为正时,表明当前帧相对参考帧向右移了|vi|个像素;为负时,表明向左移了|vi|个像素。同样的方法,可以得到垂直方向的位移矢量。
1.2 针对雨雾天气的图像预处理
通过对灰度投影法原理的分析,可知灰度投影算法要求图像有一定的对比度,当图像灰度值单一并且对比度差时,利用灰度投影算法对图像匹配会造成投影曲线很平,相关运算后波谷段平缓不易找到,难以找到正确的运动矢量。而雨雾天气是车辆外出常常碰到的情况,恶劣天气也给投影算法带来很大影响。因此,需要对图像进行预处理。传统的预处理方法是通过直方图均衡化进行,但这种方法存在丢失细节和过分增强的缺点,在增强图像对比度的同时也增强了图像的噪声,给后续算法在运动矢量估计的精度上产生很大影响。因此,本文采用小波的方法,即图像经过小波变换分解为低频部分和高频部分,然后单独对高频部分图像的边缘进行加强。具体实现方法如下:
(1)选择Haar小波对图像进行分解,得到图像的低频子图和高频子图;
(2)利用公式(σ为噪声标准方差,N为信号的长度)确定阀值λ;
(3)对高频子图按上述阀值进行边沿检测并标记;
(4)对标记的边缘进行加强,对不是边缘的置零。
采用上述方法进行实验,结果如图2所示:
图2 图像增强效果对比
通过以上结果可以看出,直方图均衡化在整体增强图像的同时,也对图像噪声进行了增强,图像边缘清晰度较差,图像偏暗;而采用小波边缘增强法处理的图像,没有很明显的噪声影响,同时图像细节也很好地保留下来而且图像对比度也得到了增强。
2 雨雾天气下车载视频稳像的实验
2.1 实验方法
选取一段手动添加抖动的公路路段视频进行试验,以OpenCV结合VC++6.0作为软件开发平台编写车载稳像算法,对视频进行处理,最后将视频输出到显示器上显示。
2.2 运动矢量的估计
选用经过预处理后的相邻两帧图像根据公式(1)(2)进行投影变换,然后采用公式(3)计算两帧图像的行、列相关曲线。仿真结果如图3所示:
图3 两种情况下的运动矢量估计
实验中手动加入的水平和垂直方向的抖动量分别为-9和12;而实验结果显示,对未经预处理的雾天图像,由于对比度很差,采用灰度投影直接对其进行运动矢量检测时,检测到的水平和垂直方向的运动矢量分别为-3和5,误差较大;而图3(b)是经过均衡化处理后,检测到的水平和垂直方向运动矢量为-6和8,精度有所提高;最后图3(c)是采用小波边缘增强法对图像进行对比度提高,检测的水平和垂直方向的运动偏移量分别为-7和10,虽然还不能完全准确地检测出实际偏移的运动矢量,但精度要高于直方图均衡化处理后的检测结果。
2.3 运动补偿
本文采用两两相邻帧进行运动矢量估计,得到的是相对位移矢量,而每一帧的绝对运动参数是前N-1个相对位移矢量之和。得到每一帧的绝对运动参数后,在采用kal-man滤波器进行运动曲线平滑处理,将处理后的参数按相反方向对当前帧进行平移,即可得到稳定后的图像。实验结果如图4所示:
图4 稳定效果
3 实验结果分析
算法在主频Core(TM)2 Duo CPU 2.00GHz,内存2.00GB的PC机上,使用OpenCV结合VISUAL C++编程。实验结果显示,在实时性方面,稳定320*240的图像序列平均时间为0.02518s,大于25帧/s的图像实时性处理要求。稳像精度上,这里使用PSNR(Peak Signal To Noise Ratio)作为稳像效果的一种评价标准。其计算公式如下:
其中均方误差MSE表示两帧图像间每个像素的偏差值。当两幅图像内容变化越小,PSNR值就越大,两幅图像完全一样时,达到最大值。其中相邻5帧图像稳像前后PSNR值比较如下:
由表1中数据可以看出,经过本系统处理后的视频帧间重合度有了明显地改善。
通过对50帧视频图像序列进行的实验表明,经过该方法处理后视频的晃动幅度明显得到了改善,基本达到了稳像的要求。
4 结论
由于恶劣天气造成图像对比度降低,而直方图均衡化处理效果不佳,造成灰度投影在车载视频稳定中对运动矢量估计精度的降低甚至失效。针对这一情况,本文采用小波边缘增强的方法对图像进行预处理,实验表明,该方法有效提高了灰度投影算法的估计精度,并且算法也满足实时性要求。