双目视觉系统已经被广泛应用在很多领域,但其定位精度仍难以满足工业要求。为了进一步提高它的精度,可以限制一些参数,使参数在这些范围内可以达到最佳精度。现在需要做的便是找到这些参数,并分析每一个参数和可能的误差之间的关系。
  
  本篇文章将分析影响精度的7个参数,并将其分为两大类:第一类是系统结构参数(包括基线距离B,摄像机焦距,光轴和基线间的角度);第二类是摄像机标定参数(包括相机失真,标定图像的数量,标定棋盘格的格子数量,标定板的位置)。
  
一、摄像机结构参数的分析

  • 基线距离
    基线B为两个镜头中心之间的连线(如下图所示)。在双目视觉系统中,基线距离是一个非常重要的参数,基线距离的改变会影响系统的定位精度。
    假设P点在两个相机光轴的交点处。这时,双目相机标定 python cv 双目相机标定误差分析_系统误差1=双目相机标定 python cv 双目相机标定误差分析_系统误差2=双目相机标定 python cv 双目相机标定误差分析_系统误差, w1=w2=0o,双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_041=双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_042=0o, f1=f2=f, Yw=0。这样P点的世界坐标可以表示如下:
    (令k=B/M, e1=双目相机标定 python cv 双目相机标定误差分析_基线_06 * 双目相机标定 python cv 双目相机标定误差分析_系统误差_07, e2=双目相机标定 python cv 双目相机标定误差分析_基线_06 * 双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_09)
    P点在X和Y方向的测量误差简化表达式如下所示:

双目相机标定 python cv 双目相机标定误差分析_三角函数_10


双目相机标定 python cv 双目相机标定误差分析_三角函数_11B双目相机标定 python cv 双目相机标定误差分析_系统误差_12X为X方向的误差,双目相机标定 python cv 双目相机标定误差分析_三角函数_11B双目相机标定 python cv 双目相机标定误差分析_系统误差_12Z为Z方向的误差)

总误差为:

双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_15


双目相机标定 python cv 双目相机标定误差分析_计算机视觉_16 = 双目相机标定 python cv 双目相机标定误差分析_系统误差_17)由于双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_18双目相机标定 python cv 双目相机标定误差分析_计算机视觉_19使用三角函数比较复杂,在这里用三角函数将其进行泰勒展开(用k取代双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_20),得到双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_18=双目相机标定 python cv 双目相机标定误差分析_系统误差_22 + 双目相机标定 python cv 双目相机标定误差分析_计算机视觉_23, 双目相机标定 python cv 双目相机标定误差分析_计算机视觉_19=双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_25 + 双目相机标定 python cv 双目相机标定误差分析_计算机视觉_26。根据以上公式,最终可以得到基线距离B(因为B=k/M,M为固定参数,所以这里用k代替B效果是一样的)与系统误差之间的关系:

双目相机标定 python cv 双目相机标定误差分析_三角函数_27


结论:随着k的增大,总系统误差(双目相机标定 python cv 双目相机标定误差分析_计算机视觉_16对应的黑色曲线)先是减小后又增大,在k=1.41时,系统误差达到最小值。将k代回B中,可以得到当M <= B <= 2M时,会获得比较小的系统误差,而当0.5M < B < 0.7M时,定位误差会很大。基线最佳距离是B = 1.41M。

  • 相机焦距
    相机焦距是指相机镜头中心到相机形成图像处(图像传感器)间的距离。如果其它参数不变,只改变焦距,随着焦距的增大,相机的视野将会变窄,图示如下:

    由f1和f2引起的误差的关系式如下:
    不同焦距引起的系统误差分布曲线如下图所示:
    结论:随着相机焦距的增大,双目相机的视野变窄,但其系统误差会变窄,定位精度变高。
  • 光轴和基线间的角度双目相机标定 python cv 双目相机标定误差分析_系统误差
    双目相机标定 python cv 双目相机标定误差分析_系统误差的位置见图一。根据几何原理,可推导出双目相机标定 python cv 双目相机标定误差分析_系统误差和误差间的关系式如下:
    双目相机标定 python cv 双目相机标定误差分析_系统误差引起的系统误差分布曲线如下图所示:
    结论:从上图中我们可以看出当双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_33=双目相机标定 python cv 双目相机标定误差分析_系统误差_34时,系统误差最小。为了获得较好的定位精度,双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_33的范围应该在双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_36~双目相机标定 python cv 双目相机标定误差分析_基线_37
  • 综合分析
    为了获得较高的定位精度,应考虑摄像机结构参数。基线距离应选择在1.41M附近;相机焦距越大,定位精度越高,但相机视野会变窄,应折中选择焦距;基线与光轴夹角范围应在双目相机标定 python cv 双目相机标定误差分析_基线_38~双目相机标定 python cv 双目相机标定误差分析_基线_39,最佳选择是双目相机标定 python cv 双目相机标定误差分析_三角函数_40

二、摄像机标定参数的分析

  • 相机畸变系数
    在实际的应用中,由于制造和装配过程中不可能完美,相机镜头存在误差,这将导致小程度的图像失真。如果要考虑到镜头引起的失真,将不能再用线性相机模型,而是采用非线性相机模型,它会补偿由于镜头失真带来的小偏差。失真现象可以用下图来描述:
    ( (x’,y’)是P点实际的投影坐标,(x,y)是P点按线性模型计算的投影点坐标,双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_41x双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_41y是在x和y方向产生的补偿。)
    根据上图得到表达式:
    x’ = x + 双目相机标定 python cv 双目相机标定误差分析_基线_43x(x,y)
    y’ = y + 双目相机标定 python cv 双目相机标定误差分析_基线_43y(x,y)
    相机的失真又分为径向失真以及切向的失真,所以可以将双目相机标定 python cv 双目相机标定误差分析_基线_43x进一步分为双目相机标定 python cv 双目相机标定误差分析_基线_43xr双目相机标定 python cv 双目相机标定误差分析_基线_43xt,将双目相机标定 python cv 双目相机标定误差分析_基线_43y分为双目相机标定 python cv 双目相机标定误差分析_基线_43yr双目相机标定 python cv 双目相机标定误差分析_基线_43yt。x和y方向径向和切向的偏差表达式如下:
    整理简化如下:
    通过相机标定,可以得到左右相机的畸变系数双目相机标定 python cv 双目相机标定误差分析_三角函数_51双目相机标定 python cv 双目相机标定误差分析_系统误差_52双目相机标定 python cv 双目相机标定误差分析_双目相机标定 python cv_53双目相机标定 python cv 双目相机标定误差分析_计算机视觉_54,进而可以得到其补偿系数双目相机标定 python cv 双目相机标定误差分析_基线_43x双目相机标定 python cv 双目相机标定误差分析_基线_43y,从而获得更加准确的图像坐标。
  • 标定图像的数量
    通过不断改变标定图像的数量,测量其系统产生的误差结果如下图所示:
    结论:通过上图可以看出随着标定图片的数量增加,系统误差越来越小,当标定图像在13左右时,系统误差趋于平缓。
  • 标定棋盘格格子的数量
    标定棋盘格的格子数量同样不能忽略,它也会影响到定位的精度。下面时所选用的不同格子数量的棋盘格以及在不同格子下的定位误差表格:

双目相机标定 python cv 双目相机标定误差分析_系统误差_57


结论:从上表可以看出,随着格子数量的增多,系统误差将会减少。

  • 标定板的位置
    首先标定板的位置应该在双目相机的视野范围内。作为一个有效的图像,棋盘格图像应至少占整幅图像的30%。将标定板置于以下5个位置,得到的误差如下表所示:
    结论:从上表可以看出,标定板随机放置在双目的视野中时,系统误差最小。而每次只放在一个固定的区域时,系统误差较大。

-综合分析
为了获得较高的定位精度,也应将相机标定参数考虑在内。考虑镜头失真,应采用非线性相机模型;标定图像的数量应在13个以上;标定棋盘格的数量不能过少;标定板的位置应平均分布在双目相机的视野内。