zoukankan      html  css  js  c++  java
  • 双目成像的简单推导

    双目成像简单分析

    1. 双目视差推导(对14讲上内容的一些深入解释)

    对于十四讲中的推导有些疑惑,给出了结果,但是推导部分感觉不太严谨,所以简单推了一下。

    设空间3D点(P):

    • 在左右相机上对应的像素坐标为(u_L,u_R)(图像坐标系,原点在左上角)单位: pixel

      同时假设(u_L)在左相机中心点右侧,(u_R)在右相机中心点左侧(仅仅便于推导,实际情况结果都一样)

    • 深度为(d),单位: mm

    • 双目基线长度(b),单位: mm

    • 相机传感器像素与mm转换系数(s),单位: mm/pixel

    • 相机焦距(f_x),单位: pixel

    • 图像中心点横坐标为(w)

      这里取的是像素焦距,为什么是(f_x),请看第2节分析

    利用相似三角形关系(图见十四讲P91),可以得到:

    [frac{z-f_xs}{z} = frac{b-(u_L-w+w-u_R)s}{b} \ Rightarrow bz-bf_xs =bz-zs(u_L-u_R) \ Rightarrow z=frac{bf_x}{u_L-u_R} \ Rightarrow z = frac{bf_x}{d} \ ext{其中}:d=u_L-u_R ]

    称为视差,单位为像素,最小值为一个像素,所以深度的最大值为:(bf_x)

    2. 使用(f_x)的原因以及双目成像完整推导

    相机成像模型如下:

    • (u_L,v_L,u_R,v_R): 单位像素
    • (alpha,eta): 传感器单位长度上像素个数(pixel/mm)
    • (f):物理焦距,单位mm

    对于同一个3D空间点(P=(X,Y,Z)^T),其在两个相机上的成像模型为:

    左目:

    [segin{pmatrix} u_L\ v_L \ 1 end{pmatrix} = egin{pmatrix} alpha & 0 &c_x \ 0& eta & c_y \ 0 & 0 & 1 end{pmatrix} egin{pmatrix} f & 0&0&0 \ 0 &f &0 &0 \ 0 & 0 & 1 & 0 end{pmatrix} egin{pmatrix} X\Y\Z\1 end{pmatrix} ]

    右目:

    [segin{pmatrix} u_R\ v_R\ 1 end{pmatrix} = egin{pmatrix} alpha & 0 &c_x \ 0& eta & c_y \ 0 & 0 & 1 end{pmatrix} egin{pmatrix} f & 0&0&0 \ 0 &f &0 &0 \ 0 & 0 & 1 & 0 end{pmatrix} egin{pmatrix} X-b\Y\Z\1 end{pmatrix} ]

    这里假设两个相机的内参相同,并且已经进行过双目校正,如果完整考虑整个模型,只需替换相关参数继续推导即可

    由于进行过双目校正,所以只需要考虑(u_L,u_R)关系即可:

    [ u_L = alpha f frac{X}{Z}+c_x \ u_R= alpha ffrac{X-b}{Z}+c_x \ alpha f Rightarrow f_x ]

    两式相减可以得到:

    [Z = frac{bf_x}{u_L-u_R} ]

    与前面利用几何关系推导结果相同,并且在实际代码中使用(f_x)的原因也清楚了。

  • 相关阅读:
    贪婪匹配
    洛谷P1219 [USACO1.5]八皇后 Checker Challenge【搜索回溯】
    【数据结构笔记】栈
    数据结构课堂笔记
    DAY1
    小记2020.1.10
    c++复习
    c++用流控制成员函数输出数据
    c++用控制符控制输出格式
    "中国东信杯"广西大学第二届程序设计竞赛E Antinomy与红玉海(二分)
  • 原文地址:https://www.cnblogs.com/jymg/p/11708582.html
Copyright © 2011-2022 走看看