直接线性转换DLT

直接线性转换DLT

概念

直接线性变换(DLT)是建立图像点坐标和相应物点物方空间坐标之间直接的线性关系的算法。

功能

已知一组3D空间点坐标信息和其在图像中的投影坐标信息,计算图像相对的位姿变换信息。如果把3D点的空间坐标信息转换为另一个相机坐标下即可求解的来个相机坐标之间的位姿变换信息。

步骤

已知相机2坐标系下的一组3D点坐标为 P c 2 = ( x c 2 , y c 2 , z c 2 ) P_{c2}=(x_{c2},y_{c2},z_{c2}) Pc2=(xc2,yc2,zc2),该点在相机1的投影坐标为 ( u c 1 , v c 1 ) (u_{c1},v_{c1}) (uc1,vc1),相机1对应的内参矩阵为 K K K,根据上述信息有 ( u c 1 v c 1 1 ) = K ( R 12 ( x c 2 y c 2 z c 2 ) + t 12 )    ⟹    ( x c 1 y c 1 z c 1 ) = [ R 12 ∣ t 12 ] ( x c 2 y c 2 z c 2 1 )    ⟹    s ( u c 1 v c 1 1 ) = [ t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 t 11 t 12 ] ( x c 2 y c 2 z c 2 1 ) \begin{pmatrix} u_{c1} \\ v_{c1}\\ 1 \end{pmatrix}=K(R_{12}\begin{pmatrix} x_{c2} \\ y_{c2}\\ z_{c2} \end{pmatrix}+t_{12})\\ \implies\begin{pmatrix} x_{c1} \\ y_{c1}\\ z_{c1} \end{pmatrix}=[R_{12}|t_{12}]\begin{pmatrix} x_{c2} \\ y_{c2}\\ z_{c2}\\ 1 \end{pmatrix}\\\implies s\begin{pmatrix} u_{c1} \\ v_{c1}\\ 1 \end{pmatrix}=\begin{bmatrix}t_1&t_2&t_3&t_4\\t_5&t_6&t_7&t_8\\t_9&t_{10}&t_{11}&t_{12}\\\end{bmatrix}\begin{pmatrix} x_{c2} \\ y_{c2}\\ z_{c2}\\ 1 \end{pmatrix} uc1vc11=K(R12xc2yc2zc2+t12)xc1yc1zc1=[R12t12]xc2yc2zc21suc1vc11=t1t5t9t2t6t10t3t7t11t4t8t12xc2yc2zc21上述矩阵方程可以写成来个线性方程的形式 u c 1 = t 1 x c 2 + t 2 y c 2 + t 3 z c 2 + t 4 t 9 x c 2 + t 10 y c 2 + t 11 z c 2 + t 12 v c 1 = t 5 x c 2 + t 6 y c 2 + t 7 z c 2 + t 8 t 9 x c 2 + t 10 y c 2 + t 11 z c 2 + t 12 u_{c1}=\frac{t_1x_{c2}+t_2y_{c2}+t_3z_{c2}+t_4}{t_9x_{c2}+t_{10}y_{c2}+t_{11}z_{c2}+t_{12}}\\v_{c1}=\frac{t_5x_{c2}+t_6y_{c2}+t_7z_{c2}+t_8}{t_9x_{c2}+t_{10}y_{c2}+t_{11}z_{c2}+t_{12}} uc1=t9xc2+t10yc2+t11zc2+t12t1xc2+t2yc2+t3zc2+t4vc1=t9xc2+t10yc2+t11zc2+t12t5xc2+t6yc2+t7zc2+t8我们的目的就是求解 t 1 ⋯ t 12 t_1\cdots t_{12} t1t12,通过多组匹配的2D-3D点可以构建线性方程组
( x c 2 1 y c 2 1 z c 2 1 1 0 0 0 0 − u 1 x c 2 1 − u 1 y c 2 1 − u 1 z c 2 1 1 0 0 0 0 x c 2 1 y c 2 1 z c 2 1 1 − v 1 x c 2 1 − v 1 y c 2 1 − v 1 z c 2 1 1 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ x c 2 n y c 2 n z c 2 n 1 0 0 0 0 − u n x c 2 n − u n y c 2 n − u n z c 2 n 1 0 0 0 0 x c 2 n y c 2 n z c 2 n 1 − v n x c 2 n − v n y c 2 n − v n z c 2 n 1 ) ( t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 t 11 t 12 ) = 0 \begin{pmatrix} x^1_{c2}&y^1_{c2}&z^1_{c2}&1&0&0&0&0&-u_1x^1_{c2}&-u_1y^1_{c2}&-u_1z^1_{c2}&1\\ 0&0&0&0&x^1_{c2}&y^1_{c2}&z^1_{c2}&1&-v_1x^1_{c2}&-v_1y^1_{c2}&-v_1z^1_{c2}&1\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots\\ x^n_{c2}&y^n_{c2}&z^n_{c2}&1&0&0&0&0&-u_nx^n_{c2}&-u_ny^n_{c2}&-u_nz^n_{c2}&1\\ 0&0&0&0&x^n_{c2}&y^n_{c2}&z^n_{c2}&1&-v_nx^n_{c2}&-v_ny^n_{c2}&-v_nz^n_{c2}&1\\ \end{pmatrix} \begin{pmatrix}t_1\\t_2\\t_3\\t_4\\t_5\\t_6\\t_7\\t_8\\t_9\\t_{10}\\t_{11}\\t_{12}\end{pmatrix}=0 xc210xc2n0yc210yc2n0zc210zc2n010100xc210xc2n0yc210yc2n0zc210zc2n0101u1xc21v1xc21unxc2nvnxc2nu1yc21v1yc21unyc2nvnyc2nu1zc21v1zc21unzc2nvnzc2n1111t1t2t3t4t5t6t7t8t9t10t11t12=0如果一共有6对匹配的2D-3D点我们可以通过线性求解的形式获得 t 1 ⋯ t 12 t_1\cdots t_{12} t1t12,如果大于6对点我们可以通过SVD分解求最小二乘解获得 t 1 ⋯ t 12 t_1\cdots t_{12} t1t12。其中 R = [ t 1 t 2 t 3 t 5 t 6 t 7 t 9 t 10 t 11 ] t = [ t 4 t 8 t 12 ] R=\begin{bmatrix}t_1&t_2&t_3\\t_5&t_6&t_7\\t_9&t_{10}&t_{11}\\\end{bmatrix}\\t=\begin{bmatrix}t_4\\t_8\\t_{12}\end{bmatrix} R=t1t5t9t2t6t10t3t7t11t=t4t8t12由于在整个求解的过程中没有考虑到旋转矩阵的单位正交性,可以将上述求的旋转矩阵进行 Q R QR QR分解求得或者 R = ( R R T ) − 1 2 R R=(RR^T)^{-\frac1 2 }R R=(RRT)21R

链接

[PnP问题之DLT解法](https://zhuanlan.z hihu.com/p/58648937)

补充

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值