直接线性转换DLT

 2023-09-05 阅读 88 评论 0

摘要:直接线性转换DLT概念功能步骤链接补充 概念 直接线性变换(DLT)是建立图像点坐标和相应物点物方空间坐标之间直接的线性关系的算法。 功能 已知一组3D空间点坐标信息和其在图像中的投影坐标信息,计算图像相对的位姿变换信息。如果把3D点的空间坐标信息转

直接线性转换DLT

    • 概念
    • 功能
    • 步骤
    • 链接
    • 补充

概念

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

功能

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

步骤

已知相机2坐标系下的一组3D点坐标为Pc2=(xc2,yc2,zc2)P_{c2}=(x_{c2},y_{c2},z_{c2})Pc2=(xc2,yc2,zc2),该点在相机1的投影坐标为(uc1,vc1)(u_{c1},v_{c1})(uc1,vc1),相机1对应的内参矩阵为KKK,根据上述信息有(uc1vc11)=K(R12(xc2yc2zc2)+t12)⟹(xc1yc1zc1)=[R12∣t12](xc2yc2zc21)⟹s(uc1vc11)=[t1t2t3t4t5t6t7t8t9t10t11t12](xc2yc2zc21)\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上述矩阵方程可以写成来个线性方程的形式uc1=t1xc2+t2yc2+t3zc2+t4t9xc2+t10yc2+t11zc2+t12vc1=t5xc2+t6yc2+t7zc2+t8t9xc2+t10yc2+t11zc2+t12u_{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我们的目的就是求解 t1⋯t12t_1\cdots t_{12}t1t12,通过多组匹配的2D-3D点可以构建线性方程组
(xc21yc21zc2110000−u1xc21−u1yc21−u1zc2110000xc21yc21zc211−v1xc21−v1yc21−v1zc211⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮xc2nyc2nzc2n10000−unxc2n−unyc2n−unzc2n10000xc2nyc2nzc2n1−vnxc2n−vnyc2n−vnzc2n1)(t1t2t3t4t5t6t7t8t9t10t11t12)=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}=0xc210xc2n0yc210yc2n0zc210zc2n010100xc210xc2n0yc210yc2n0zc210zc2n0101u1xc21v1xc21unxc2nvnxc2nu1yc21v1yc21unyc2nvnyc2nu1zc21v1zc21unzc2nvnzc2n1111t1t2t3t4t5t6t7t8t9t10t11t12=0如果一共有6对匹配的2D-3D点我们可以通过线性求解的形式获得t1⋯t12t_1\cdots t_{12}t1t12,如果大于6对点我们可以通过SVD分解求最小二乘解获得t1⋯t12t_1\cdots t_{12}t1t12。其中R=[t1t2t3t5t6t7t9t10t11]t=[t4t8t12]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由于在整个求解的过程中没有考虑到旋转矩阵的单位正交性,可以将上述求的旋转矩阵进行QRQRQR分解求得或者R=(RRT)−12RR=(RR^T)^{-\frac1 2 }RR=(RRT)21R

链接

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

补充

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/701.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息