本书实验中的误差估计均采用Barron使用的平均角误差(AAE)和标准角误差(STD)的误差估计方式。其中,AAE计算公式为
式中
N表示一帧图像的总像素数,
表示第i个像素的标准光流矢量,
表示使用某算法计算得到的第i个像素的光流矢量,k表示相隔的帧数,那么
表示第i个像素的角误差,AAE表示整个光流场的平均角误差。AAE反映了使用某算法计算的光流矢量场整体偏离标准光流矢量场的程度。
STD计算公式为
STD反映了计算的光流矢量场中AAE的波动情况。
本实验使用人工合成旋转材质球图像序列进行试验分析,该图像序列中的小球以一定速度进行旋转运动,图像背景简单。图 2-2(a)为小球图像序列第 1 帧原图像,图 2-2(b)为小球图像序列第 1 帧与第 2 帧之间的标准光流场,图 2-2(c)为使用Horn算法计算得到的光流场,图 2-2(d)为使用Lucas算法计算得到的光流场。
图 2-2 小球图像序列及光流场
从图 2-2(c)、(d)中可以看出Horn算法在图像中运动区域可以计算出每个点的光流,但是在图像中灰度变化较大区域及运动边缘区域计算出的光流误差较大。Lucas算法计算出的光流在球体上灰度变化大的区域效果好于Horn算法计算结果,但在运动边界处光流计算效果较差,存在“漂移”现象,这是局部约束对边缘像素点影响的结果。表 2-1 是Horn算法与Lucas算法的定量误差对比,可以看出Lucas算法在本图像序列的计算精度高于Horn算法,这与前面通过对计算所得光流场矢量图的定性分析结果相吻合。
表 2-1 旋转小球图像序列计算误差对比
本实验采用具有代表性的Yosemite图像序列进行实验,图像中下侧的山谷向图像外侧做扩张运动,图像上方的乌云向右侧做平移运动,并伴随有较剧烈的光照变化。图 2-3 为Yosemite图像序列第 5 帧和第 6 帧原图。图 2-4(a)为Yosemite图像序列第 5 帧与第 6 帧之间的标准光流场。图 2-4(b)为使用Horn算法计算的光流场。图 2-4(c)为使用Lucas算法计算出的光流场。
图 2-3 Yosemite图像序列原图像
图 2-4 Yosemite图像序列光流场
从图 2-4(b)中可以看出Horn算法在图像上方出现光照变化的区域,光流误差较大,原因是Horn算法是基于灰度守恒假设提出的算法,光照变化引起图像的灰度值发生相应的变化,所以灰度守恒假设在有光照变化的地方不成立。在边缘处也出现较大的误差,原因可能是由于噪声导致,说明Horn算法的抗噪声性能比较差。从图 2-4(c)中可以看出Lucas算法在在图像中光照变化剧烈区域计算出的光流要优于Horn算法,并且抗噪性能也优于Horn算法,这是因为Lucas算法采用局部约束的方法使得每个像素点光流速度的计算要依赖于其邻域内其他像素点的光流速度,但是在图像中灰度梯度趋近于零的区域,计算不出光流矢量,因此得到的光流场是稀疏的。
表 2-2 是Horn算法和Lucas算法计算出的光流矢量的平均角误差(AAE)与标准角误差(STD),从计算出的结果可以看出,针对Yosemite图像序列Lucas算法计算出的光流矢量精度要高于Horn算法,这是因为在Yosemite图像序列中存在剧烈的光照变化和较多的图像噪声,而Lucas算法通过使用局部约束的方法使得其对光照变化不敏感且抗噪性能好。
表 2-2 Yosemite图像序列计算误差对比
本试验使用花园真实图像序列进一步对Horn算法和Lucas算法进行对比,特别是针对运动边缘的处理能力。图 2-5 为花园图像序列的第 1 帧、第 2 帧原图像,由于摄像头的特定运动,从而形成离镜头最近的树以较大速度左移而远处的背景以很小的速度左移的图像序列。图 2-6(a)为使用Horn方法计算的光流场。图 2-6(b)为使用Lucas局部光流一致算法计算的光流场。
图 2-5 花园图像序列原图像
图 2-6 花园图像序列光流场
从图 2-6(a)可看出,使用Horn光流算法计算的误差较大,特别在树干的边缘区域计算的光流出现较大错误,树枝区域等噪声较大部分光流也没有被计算出来。而通过图 2-6(b)观察到使用Lucas局部光流一致算法计算的光流场在噪声较大的树枝部分计算效果较Horn光流算法有所改进,对于树干边缘区域光流计算效果优于Horn算法,但误差仍然较大。从图 2-7 中可以看出在树干边缘区域Horn算法与Lucas算法计算出的光流矢量,与上面分析相吻合。
图 2-7 花园图像光流场对应放大结果
本实验采用Hamburg Taxi图像序列的第 11 帧、第 12 帧图像来验证Horn算法和Lucas算法在复杂背景、多物体运动情况下光流计算的效果。图 2-8 是Hamburg Taxi图像序列第 11 帧和第 12 帧原图像,场景中有多辆不同颜色汽车存在,背景复杂,其中三辆处于运动状态,分别是图像左下方的黑色轿车、中间的白色轿车和右下方的黑色卡车,其中黑色卡车的部分区域被树枝遮挡。
图 2-8 Hamburg Taxi图像序列原图像
图 2-9(a)是Horn算法计算出的光流场,从图中可以看出只计算出了图像中部分运动物体的光流,并且误差较大,光流杂乱无章。图 2-9(b)是Lucas算法计算出的光流场,从图中可以勉强分辨出 3 个运动汽车的光流区域,计算效果略好于Horn算法,但是在图中没有运动的区域也检测到了部分光流,因此计算结果误差也较大。
图 2-9 Hamburg Taxi图像序列光流场