直接线性变换法是建立像点坐标和相应物点物方空间坐标之间直接的线性关系的算法。特点:不需要内外方位元素;适合于非量测相机;满足中、低精度的测量任务;可以标定单个相机。

各坐标系之间的关系推导直接线性变换解法

1.1 像素坐标系与像平面坐标系

图 1 像素坐标系与像平面坐标系间的关系

两坐标系的关系式如下:

像素坐标系即CCD坐标系,是以左上角为原点,水平向右为$u$方向,竖直向下为$v$方向;像平面坐标系是影像平面内的直角坐标系,用以表示像点在像平面上的位置,其以像主点$o$为原点,$x$方向与$u$方向平行,$y$方向与$v$方向平行。其二者的关系如右图所示,

$u= \frac{x}{dx}+u_{0}\\v=\frac{y}{dy}+v_{0}$

式中,$dx$为在$x$方向上每个像素的宽度;$dy$为在$y$方向上每个像素的高度。

将上式化为齐次坐标矩阵形式为

$\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx} & 0 & u_{0}\\ 0 & \frac{1}{dy} & v_{0}\\ 0 & 0 & 1\end{bmatrix}\begin{bmatrix}x\\ y\\ 1\end{bmatrix}$

1.2 像平面坐标系与像空间坐标系

像空间坐标系是以摄站点$S$为坐标原点,摄影机的主光轴$SO$坐标系的$Z_{C}$轴,像空间坐标系的$X_{C}$、$Y_{C}$轴分别与像平面坐标系的$x$、$y$轴平行。

图 2 像平面坐标系与像空间坐标系的关系

两坐标系的关系如下式

$\left\{\begin{matrix}\frac{x}{f}=\frac{X_{C}}{Z_{C}}\\ \frac{y}{f}=\frac{Y_{C}}{Z_{C}}\end{matrix}\right.\Rightarrow \left\{\begin{matrix}Z_{C}\cdot x=f\cdot X_{C}\\ Z_{C}\cdot y=f\cdot Y_{C}\end{matrix}\right.$

将上式化为矩阵形式为

$Z_{C}\begin{bmatrix}x\\ y\\ 1\end{bmatrix}=\begin{bmatrix}f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0\end{bmatrix}\begin{bmatrix}X_{C}\\ Y_{C}\\ Z_{C}\\ 1\end{bmatrix}$

1.3 像空间坐标系与笛卡尔空间坐标系

笛卡尔空间坐标系即为所摄物体所在的空间直角坐标系。两坐标系间的关系公式如下

$\begin{bmatrix}X_{C}\\ Y_{C}\\ Z_{C}\end{bmatrix}=R\begin{bmatrix}X\\ Y\\ Z\end{bmatrix}+\begin{bmatrix}X_{S}\\ Y_{S}\\ Z_{S}\end{bmatrix}$

化成齐次坐标矩阵形式为

$\begin{bmatrix}X_{C}\\ Y_{C}\\ Z_{C}\\1\end{bmatrix}=\begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix}\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}=T\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}$

其中R,t

$R=\begin{bmatrix}r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33}\end{bmatrix},t=\begin{bmatrix}t_{1}\\ t_{2}\\ t_{3}\end{bmatrix}$

1.4 四种坐标系的合成

由上述四个坐标系间的转换可得像素坐标系和笛卡尔空间坐标系的转换关系,见下式

$Z_{C}\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx} & 0 & u_{0}\\ 0 & \frac{1}{dy} & v_{0}\\ 0 & 0 & 1\end{bmatrix}\begin{bmatrix}f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0\end{bmatrix}\begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix}\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}=\begin{bmatrix}l_{1} & l_{2} & l_{3} & l_{4}\\ l_{5} & l_{6} & l_{7} & l_{8}\\ l_{9} & l_{10} &  l_{11}& l_{12}\end{bmatrix}\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}$

由上式可得

$\left\{\begin{matrix}u=(l_{1}X+l_{2}Y+l_{3}Z+l_{4})/Z_{C}\\ v=(l_{5}X+l_{6}Y+l_{7}Z+l_{8})/Z_{C}\\ Z_{C}=l_{9}X+l_{10}Y+l_{11}Z+l_{12}\end{matrix}\right.\Rightarrow \left\{\begin{matrix}u=\frac{l_{1}X+l_{2}Y+l_{3}Z+l_{4}}{l_{9}X+l_{10}Y+l_{11}Z+1}\\ v=\frac{l_{5}X+l_{6}Y+l_{7}Z+l_{8}}{l_{9}X+l_{10}Y+l_{11}Z+1}\end{matrix}\right.$

$\left\{\begin{matrix}l_{1}=\frac{f\cdot r_{11}}{dx}+u_{0}\cdot r_{31} & l_{2}= \frac{f\cdot r_{12}}{dx}+u_{0}\cdot r_{32}& l_{3}= \frac{f\cdot r_{13}}{dx}+u_{0}\cdot r_{33}& l_{4}=\frac{f\cdot t_{1}}{dx}+u_{0}\cdot t_{3}\\ l_{5}= \frac{f\cdot r_{21}}{dx}+v_{0}\cdot r_{31}& l_{6}= \frac{f\cdot r_{22}}{dx}+v_{0}\cdot r_{32}& l_{7}= \frac{f\cdot r_{23}}{dx}+v_{0}\cdot r_{33}& l_{8}=\frac{f\cdot t_{2}}{dx}+v_{0}\cdot t_{3}\\ l_{9}= r_{31}& l_{10}= r_{32}& l_{11}= r_{33}& l_{12}=t_{3}\end{matrix}\right.$

式中,$(X、Y、Z)$为笛卡尔空间坐标系中的三维坐标,$(u,v)$为图像上对应三维点的像素坐标,$l_{1}...l_{12}$为笛卡尔空间坐标系与像素坐标系之间的关系系数,此外令$l_{12}=1$,因为$l_{12}$的取值对其他参数的值没有影响,顾上述两式是等同的,可由后续的计算过程证明。

2 相机内参数计算

2.1 DLT求解

将1.4小节中的最后一个方程组进行变换可得到下列等式

$\begin{bmatrix}X & Y & Z & 1 & 0 & 0 & 0 & 0 & -Xu & -Yu & -Zu\\ 0 & 0 & 0 & 0 & X & Y & Z & 1 & -Xv & -Yv & -Zv \end{bmatrix}\begin{bmatrix}l_{1}\\ l_{2}\\ l_{3}\\ l_{4}\\ l_{5}\\ l_{6}\\ l_{7}\\ l_{8}\\ l_{9}\\ l_{10}\\ l_{11} \end{bmatrix}-\begin{bmatrix}u\\ v\end{bmatrix}=0\Rightarrow BL=C$

上式中有11个未知数,每对点(像素与对应的三维点)可列两个等式,所以最少需要6对点才可解该方程。

未知数矩阵的解为

$L=(B^{T}B)^{-1}(B^{T}C)$

到此,即解出了$l_{1}...l_{11}$的值。

2.2 内参数计算

通过旋转矩阵的特性可求得相机的内参数

$\left\{\begin{matrix}u_{0}=l_{1}l_{9}+l_{2}l_{10}+l_{3}l_{11}\\ v_{0}=l_{5}l_{9}+l_{6}l_{10}+l_{7}l_{11}\\ f_{u}=\sqrt{l_{1}^{2}+l_{2}^{2}+l_{3}^{2}-u_{0}^{2}}\\ f_{v}=\sqrt{l_{5}^{2}+l_{6}^{2}+l_{7}^{2}-v_{0}^{2}}\end{matrix}\right.$

直接线性变换解法(DLT)用于标定相机的更多相关文章

  1. 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

    相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...

  2. OpenCV相机标定和姿态更新

    原帖地址: http://blog.csdn.net/aptx704610875/article/details/48914043 http://blog.csdn.net/aptx704610875 ...

  3. 【双目备课】《学习OpenCV第18章》相机模型与标定整编

    一.相机模型 针孔模型.在这个简单模型中,想象光线是从场景或一个很远的物体发射过来的,但只有一条光线从该场景中的任意特定点进入针孔. 我们将这个图像进行抽象,就能够得到这样的结果: 其中,f为像到针孔 ...

  4. SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解

    想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...

  5. 相机标定:PNP基于单应面解决多点透视问题

              利用二维视野内的图像,求出三维图像在场景中的位姿,这是一个三维透视投影的反向求解问题.常用方法是PNP方法,需要已知三维点集的原始模型. 本文做了大量修改,如有不适,请移步原文:  ...

  6. Camera Calibration 相机标定:Opencv应用方法

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49427383 Opencv中Camer ...

  7. 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)

    使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的 ...

  8. Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!

    项目要标定雷达和相机,这里记录下我标定过程,用的速腾 Robosense - 16 线雷达和 ZED 双目相机. 一.编译安装 Autoware-1.10.0 我没有安装最新版本的 Autoware, ...

  9. Camera Calibration 相机标定

    Camera Calibration 相机标定 一.相机标定方法 在opencv中提供了一组函数用于实现相机的标定,标定返回的值包括:相机内参矩阵(fx fy xc yc).相机外参矩阵(R t)以及 ...

随机推荐

  1. catkin

    catkin  ros https://github.com/dirkholz/pcl_online_viewer rosrun  ???

  2. 如何用Python实现常见机器学习算法-3

    三.BP神经网络 1.神经网络模型 首先介绍三层神经网络,如下图 输入层(input layer)有三个units(为补上的bias,通常设为1) 表示第j层的第i个激励,也称为单元unit 为第j层 ...

  3. mongo学习- 聚合project操作

    mongodb中聚合project操作,必须和其他的聚合一起使用,它的作用有以下几个: 1.返回我们想要显示的的字段 {"$project":{"name":1 ...

  4. 给力分享新的ORM => Dapper( 转)

    出处:http://www.cnblogs.com/sunjie9606/archive/2011/09/16/2178897.html 最近一直很痛苦,想选一个好点的ORM来做项目,实在没遇到好的. ...

  5. CSS3: box-sizing & content-box 属性---元素的border 和 padding 影响内容的 width 和 height解决方案

    /* 关键字 值 */ box-sizing: content-box; box-sizing: border-box; /* 全局 值 */ box-sizing: inherit; box-siz ...

  6. mongodb-win32-i386-3.0.6 使用

    一.下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-i386-3.0.6.zip 二.安装 1. systeminfo OS 名称: Micro ...

  7. 苹果禁用UUID了,咋办?

    By now you have probably heard that Apple is deprecating support for attaining a UDID from an iOS de ...

  8. (转)【javascript基础】原型与原型链

    原文地址:http://www.cnblogs.com/allenxing/p/3527654.html 前言 原型是什么 理解原型对象 原型对象 isPrototypeOf hasOwnProper ...

  9. [Selenium With C#基础教程] Lesson-03 超级链接

    作者:Surpassme 来源:http://www.jianshu.com/p/83809943e751 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 超级链接或链接是We ...

  10. firedac odbc sql server driver连接占线导致另一个hstmt

    firedac odbc sql server driver连接占线导致另一个hstmt 原因:FDQuery.FetchOptions.Mode=fmOnDemand.好像是为了性能问题,不设置则默 ...