张正友棋盘格相机标定方法

我发现认识的大佬都有写博客的习惯,今天我建立了这个文集,从现在开始我也开始对机器视觉及相关领域的学习过程做一些笔记和整理,同时记下自己的心得体会,作为记录,同时也分享给大家。

本文按照张正友的原文顺序,进行一些解读或笔记记录。

第一部分:相机标定的动机

相机标定在3D视觉中是非常重要的一个步骤,因为我们要从一些2D图像中获取待测物的3D信息。目前的相机标定方法大致可以分为两大类:

① 摄影测量标定:此类方法一般需要通过观察三维尺寸已知且精度非常高的待测物来实现,一般情况下该方法的待测物包含了两个或三个相互正交的平面,有时候平面还需要进行精度较高的变换。这类方法标定效率高,但成本也高。

② 相机自检校标定法:这类方法不需要任何标定物,只需要调整相机,从不同角度取拍摄某静态画面,此画面一般能提供2个相机内参解析的约束条件。如果相机内参不变,那么三幅画面就可以让我们同时解得相机内参和用于3D重构的外参。这类方法非常灵活,但是不够成熟。

第二部分:基本方程

2.1 相机针孔模型回顾

在另一篇文章中我会对针孔模型进行详细的讲解,这里只作简要回顾。针孔模型链接:

根据相机针孔原理,可以推导出空间3D点M的坐标和它的像素坐标之间的关系如下所示

                                                    s\tilde{m}=A[R\vert t] \tilde{M}                                                        (1)

式中:\tilde{m} =[u,v,1]^T ,表示像素坐标系下的坐标;\tilde{M} =[X,Y,Z,1]^T ,表示世界坐标系下的坐标;s为尺度因子;R为世界坐标系与图像坐标系的旋转矩阵,t为世界坐标系与图像坐标系的平移向量,R和t中的参数均被称为相机的外部参数,简称外参;矩阵A被称为内参矩阵,如下所示:

矩阵A中,(u_{0} ,v_{0})为光轴与像平面焦点在像素坐标系下的坐标,将它成为主点;α和β是图像u轴和v轴上的尺度因子,γ为像素两轴非正交项。

2.2 模型平面和像面之间的单应性矩阵 Homography 

OK,单应性什么意思呢?这里对单应性做一丢丢的解释:Homography其实就是一个变换(3*3矩阵),目的是将一张图中的点映射到另一张图中对应的点,单应性变换是对齐次坐标下点的线性变换,单应性矩阵约束强,是点到点的一一对应

假设待测平面是在世界坐标系Z=0处,那么通过(1)式可以得到:

因此可以得到,世界坐标系(Z=0)平面下的点M及其在像平面中的像坐标关系可以用如下的单应性矩阵H联系起来:

                                              s\tilde{m}=H\tilde{M}    其中,H=A[r_{1}, r_{2},t]                                (2)

2.3 相机内参约束条件

若给定模型平面(即世界坐标系下Z=0的平面)下的一幅图像,那么对应的单应性矩阵就可以被写出来,将该单应性矩阵设为H=[h_{1}, h_{2},h_{3}],从(2)式可以得到:

                                                  [h_{1}, h_{2},h_{3}]=\lambda A[r_{1}, r_{2},t]

其中λ为任意实数。(为什么这里λ可以为任意实数?主要是因为齐次坐标有规模不变性。这就要从齐次坐标讲起了,后面我会写一篇专门说说其次坐标和欧氏空间的关系)

由于旋转矩阵的三个向量具有空间正交特性,且任意一行或一列对应的向量模都为1,因此可以得到:r_{1}^T r_{2}=0r_{1}^T r_{1}=r_{2}^T r_{2}=1,而[h_{1}, h_{2}]=\lambda A[r_{1}, r_{2}](此处令λ=1),因此可以得到下式:

上述两个式子即为给定一个单应性矩阵,针对相机内参的两个约束条件。由于一个单应性矩阵包含了8个变量(由于齐次坐标的规模不变性,可以任意设置(2)中尺度参数s=h_{33} ,那么矩阵H中的参数可以由9个变为8个),并且待求的外部参数一共有6个(3个旋转和三个平移),因此我们只能得到2个内参的约束条件。

2.4 几何解释

先请移步看一下这一小节的基础:绝对圆锥曲线~~

模型平面在相机坐标系下可以写为(这里还没明白,请各路大神明白了帮忙补充~):

当w=0时,表示无穷远处的点;w=1时与之相反。此平面与无穷远处的平面相交为一条线。由于r_{1} /r_{2} /r_{3} 相互正交,因此r_{31} r_{11} +r_{32} r_{12} +r_{33} r_{13} =0r_{31} r_{21} +r_{32} r_{22} +r_{33} r_{23} =0,又因为无穷远处w=0,因此可以很容易看出点[r_{11},r_{12},r_{13},0 ]^T [r_{21},r_{22},r_{23},0 ]^T 都在这条无穷远处的相交线上。并且任意一个在该线上的点都可以用这两个点的线性组合来表示,如下:

接下来计算绝对圆锥曲线和该交线的交点,根据定义,无穷远处绝对圆锥曲线上的点x_{∞} 满足:x_{∞} ^T x_{∞}=0,即a^2 +b^2=0,则b=±ai,那么交线与绝对圆锥曲线的交点为:

这两个点的像点为:

由于无穷远交线是在相机坐标系下表示的,个人理解该交线是以相机主点为圆心的弧线,因此无穷远处的点在像平面上的投影只与相机内参(含尺度因子,只不过由于齐次坐标,尺度因子的值不影响结果)有关,旋转矩阵为单位矩阵,即不发生旋转,r_{1} =[1,0,0]r_{2} =[0,1,0],而平面在世界坐标系Z=0处,根据(2)式,[r_{1}, r_{2},t]没有对世界坐标起作用,因此可以省略,那么(2)可以写为:

并且已经知道\tilde{m} _{∞} ^TA^{-T}A^{-1}\tilde{m} _{∞} =0,因此:

展开后为:

(h_1^TA^{-T}A^{-1}h_1\mp  h_2^TA^{-T}A^{-1}h_2)\pm i(h_2^TA^{-T}A^{-1}h_1\pm h_1^TA^{-T}A^{-1}h_2)=0

这个式子中的实部和虚部都必须为0,因此可以得到(3)和(4)式。(why只有一组,不应该还有一组么....有谁明白的帮忙解释一下......)

3 解决相机标定问题

这一小节主要详细讲解如何实现对相机的标定。

3.1 闭合解

令:

矩阵B是对称矩阵,其中有6个参数:

                                          b=[B_{11},B_{12},B_{22},B_{13},B_{23},B_{33}]^T

假设H的第i列为:h_i=[h_{i1},h_{i2},h_{i3}]^T,那么可以得到:

                                                              {h_i}^Tbh_j={v_{ij}}^Tb

其中:

【这个过程可以用maple去验证~】

再把前文的2个约束条件拿出来看一下:

那么这两个式子可以简洁地写为:

若我们有n幅图像,那么一共就有2n个方程。

如果n=1,就只能得到2个方程,此时只能假设主点坐标已知,且γ=0,来求解α和β;如果n=2,那么就能得到4个方程,但是相机内参A中有5个参数,此时可以令γ=0,从而求解其他四个主要参数;如果n≥3,我们就可以解得b中的所有参数。

一旦b确定下来,就能够解得矩阵A中的所有相机内参。

A已知后,每幅图像的外参也就能同时确定下来。

其中:

3.2 最大似然估计

假设我们获取了n幅标定板图像,每个图像上有m个点,那么可以获取下式的极小值得到最大似然估计:

                                          \sum_{i=1}^n \sum_{j=1}^m\vert \vert m_{ij} -\hat{m} (A,R_i,t_i,M_j)\vert \vert^2

其中,\hat{m} (A,R_i,t_i,M_j)为点M_j在第i幅图像的投影点。

首先要获得A的估计值,然后利用上面的描述的求解方法,获得R_i,t_i,然后利用LM迭代优化方法,使得上式最小化。

3.3 径向畸变

假设理想状态下,像素坐标为(u,v),对应的实际坐标为(\check{u} ,\check{v} ),理想状态下的坐标为相机针孔模型得到的坐标。其对应的图像坐标为(x,y)和(\check{x} ,\check{y} )。那么根据畸变:

\check{x} =x+x[k_1(x^2+y^2)+k_2(x^2+y^2)^2]

\check{y} =y+y[k_1(x^2+y^2)+k_2(x^2+y^2)^2]

\check{u} =u_0+\alpha \check{x}+\gamma \check{y}(令γ=0)和\check{v} =v_0+\beta \check{y}带入可以得到:

\check{u} =u+(u-u_0)[k_1(x^2+y^2)+k_2(x^2+y^2)^2]

\check{v} =v+(v-v_0)[k_1(x^2+y^2)+k_2(x^2+y^2)^2]

对于每个图像上的每个点,可以写为:

在已经估计出A中的参数后,我们可以获得理性情况下的坐标(u,v),然后我们就可以用上式来估计畸变参数k1和k2。

如果有n幅图像,每幅图像上有m个点,那么总共能获得2mn个方程:

                                                                    Dk=d

其中D为2mn*2的矩阵。k=[k_1,k_2]^T。其最小二乘解为:

                                                          k=(D^TD)^{-1}D^Td

当畸变参数估计完成后,我们就可以将非线性优化调整为:

                                \sum_{i=1}^n \sum_{j=1}^m\vert \vert m_{ij} -\hat{m} (A,k_1,k_2,R_i,t_i,M_j)\vert \vert^2

标定流程:

1 打印出一张标定图并贴到一个平面上; 2 通过移动相机或者标定平面采集不同位置、不同方向的标定板图像;3 特征点检测;4 估算内参,然后得到外参;5 估算畸变系数;6 优化所有参数。

Matlab有自带的CameraCalibration标定工具箱,可以直接用,很方便。

本文有很多内容都是基于本人的理解,若理解有误,欢迎指正!

原文出处:A flexible new technique for camera calibration - IEEE Journals & Magazine

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容