zoukankan      html  css  js  c++  java
  • Bouguet极线校正进一步理解

    在双目视觉中,我们对相机进行标定和校正,最终目的是使得两个相机的光轴完全平行,这样才能够继续后续的深度计算,三维重建。这样的校正在OPencv中采用的是Bouguet的极线校正的算法。读了一些文章,现在对bouguet极线校正做一下笔记。有一些还理解不透彻的地方,欢迎大家讨论和指正。




    校正前的左右相机的光心并不是平行的,两个光心的连线就叫基线,像平面与基线的交点就是极点,像点与极点所在的直线就是极线,左右极线与基线构成的平面就是空间点对应的极平面。


    校正后,极点在无穷远处,两个相机的光轴平行。像点在左右图像上的高度一致。这也就是极线校正的目标。校正后做后续的立体匹配时,只需在同一行上搜索左右像平面的匹配点即可,能使效率大大提高。


    Bouguet的方法,是将OPencv求解出来的旋转和平移矩阵分解成左右相机各旋转一半的旋转和平移矩阵R1,T1R2,T2。分解的原则是使得,左右图像重投影造成的畸变最小,左右视图的共同面积最大。


    Bouguet的方法的主要步骤如下:


    1、将右图像平面相对于左图像平面的旋转矩阵分解成两个矩阵RlRr,叫做左右相机的合成旋转矩阵。


                 



    2、将左右相机各旋转一半,使得左右相机的光轴平行。此时左右相机的成像面达到平行,但是基线与成像平面不平行。


    3、构造变换矩阵Rrect使得基线与成像平面平行。构造的方法是通过右相机相对于左相机的偏移矩阵T完成的。


    1)构造e1。变换矩阵将左视图的极点变换到无穷远处,则使极线达到水平,可见,左右相机的投影中心之间的平移向量就是左极点方向:


                                                                                


    2e2方向与主光轴方向正交,沿图像方向,与e1垂直,则知e2方向可通过e1与主光轴方向的叉积并归一化获得。

                                                  

    3)获取了e1e2后,e3e1e2正交,e1自然就是他们两个的叉积:


                                                              

       则可将左相机的极点转换到无穷远处的矩阵Rrect如下:


                                                                                        


    4、通过合成旋转矩阵与变换矩阵相乘获得左右相机的整体旋转矩阵。左右相机坐标系乘以各自的整体旋转矩阵就可使得左右相机的主光轴平行,且像平面与基线平行。


                                                                      

    5、通过上述的两个整体旋转矩阵,就能够得到理想的平行配置的双目立体系图像。校正后根据需要对图像进行裁剪,需重新选择一个图像中心,和图像边缘从而让左、右叠加部分最大。

  • 相关阅读:
    南邮OJA题
    Executors工厂类创建线程池的底层实现
    Linux kernel 中的per_cpu宏
    [置顶] 高并发服务器的设计内存池的设计
    数据列表DataList模板之实例
    软件开发无敌心得篇
    嵌入式学习笔记之UART通信协议
    正则表达式 进阶(二)
    11687 Digits
    DELPHI接口转化为COM接口
  • 原文地址:https://www.cnblogs.com/zfluo/p/5131839.html
Copyright © 2011-2022 走看看