三维重构学习笔记(1):相机标定

三维重构学习笔记(1):相机标定

本篇主要是理解一些矩阵计算相关的问题,每个问题都用在提出时重点标识,对于相机标定的理解比较有实际意义。

1、三维重构

1.1 宏观理解

先说一说宏观上的理解:三维重构是指“通过二维图片信息获得图片中的物体的三维信息的一种手段”。能够通过二维图片得到物体的三维信息主要还是得益于“图片在获取过程中与真实的世界发生了几何上的转换关系”,结合图片中的点以及那种“几何关系”,我们可以通过反推计算得到物体在真实世界中的三维信息。

1.2 三维重构的方法(SFM: Structure From Motion 简单说明:后续会深入学习)

有很多。这里暂时将关注点放在“机器视觉方面的三维重构”,因为有些三维重构的方法涉及到“深度相机”的使用,而工业检测可能使用普通相机居多。
另外一个限制因素:包工头暂时希望我通过单目相机的不同拍摄角度获得三维信息
通过近期文献方面的阅读,我主要关注了经典的三维重构方法:SFM。该方法通过“无序图片”进行三维重建,是单目三维重构比较流行的策略。典型的SFM包括两大主要步骤:

  1. Correspondences Search(包括:特征提取、匹配、几何验证(相机标定))

  2. Incremental Reconstruction(包括:初始化3D模型、图像配准、三角测量、光束平差(Bundle Adjustment))

上述步骤会在进一步学习中详细介绍。

2. 相机标定有关的问题

2.1 前话

阅读文献时发现:

  1. 相机标定是三维重构中不可或缺的一环。因此我也拜读了最为经典的张氏标定法。
  2. 特征匹配也是不可或缺的一环。因此我尝试了最为经典的SIFT和SURF特征。

(张氏标定简单理解:通过最少两张图片就可以得到相机的内外参数,其中内参数是相机本身畸变,焦距等会影响图片的生成的参数,外参数主要是相机的坐标与世界坐标的关系,比如旋转和平移。)

2.2 关于标定后的相机参数在三维重构中怎么用

张氏标定法中,有一个令我在意的假设:假设物体在世界坐标系中 z = 0 z=0 z=0的平面上。
问题一:标定好的相机能否通过反推得到物体的三维空间情况?也就是说通过多张图片对单相机标定之后,是否能够通过单张图片反推得到物体的三维坐标。目前我认为答案为“否”。

标定中的未知数:

相机内参:畸变参数(切向(由于镜片工艺导致的图片与镜头不平行)、径向畸变(远离中心图片出现弯曲))、焦距 f f f,相机外参数:旋转矩阵,平移向量。
畸变校正中的未知数:
径向畸变: x c o r r e c t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) , y c o r r e c t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) x_{corrected}=x(1+k_1r^2+k_2r^4+k_3r^6), y_{corrected}=y(1+k_1r^2+k_2r^4+k_3r^6) xcorrected=x(1+k1r2+k2r4+k3r6),ycorrected=y(1+k1r2+k2r4+k3r6), x 、 y x、y xy是图像中的畸变后的位置坐标,通过校正得到真实坐标。r是该点距成像中心的距离。
切向畸变: x c o r r e c t e d = x + [ 2 p 1 y + p 2 ( r 2 + 2 x 2 ) , y c o r r e c t e d = y + [ 2 p 1 x + p 2 ( r 2 + 2 y 2 ) x_{corrected}=x+[2p_1y+p_2(r^2+2x^2), y_{corrected}=y+[2p_1x+p_2(r^2+2y^2) xcorrected=x+[2p1y+p2(r2+2x2),ycorrected=y+[2p1x+p2(r2+2y2), x 、 y x、y xy是图像中的畸变后的位置坐标,通过校正得到真实坐标。r是该点距成像中心的距离。

已知:相机标定时,假定标定板处在 z = 0 z=0 z=0的平面上,且最后得到像素与标定板的映射关系为:
[ u , v , 1 ] T = H [ x w , y w , 1 ] [u,v,1]^T=H[x_w,y_w,1] [u,v,1]T=H[xw,yw,1],其中 H H H是3*3的单应矩阵,归一化后,有8个未知数。通过四组对应点即可得到 H H H的唯一解,若是存在多组匹配点,可以通过最小二乘或者SVD进行求解。
问题二为什么不能通过4对匹配点直接求单应矩阵?。我觉得是:单应矩阵是相机内外参数的线性组合,得到的匹配点不一定是完全准确的,所以用4组匹配点计算单应矩阵有可能存在较大的误差。如果出现了多组匹配点,各匹配点可以相互约束,从而得到误差更小的单应矩阵。
问题三为什么要通过多张图片进行相机标定?我觉得:在以三维重构为目标的任务中,相机标定是辅助得到 [ x w , y w , z w ] [x_w,y_w,z_w] [xw,yw,zw]的重要手段。但是很明显,一张图片标定得到的单应矩阵不足以使我们得到 [ x w , y w , z w ] [x_w,y_w,z_w] [xw,yw,zw]。如果分别知道了相机的内外参数,

从这里看我在上一部分的问题:在知道图片上的点之后为什么得不到物体对应的三维点
A:很明显,该方程只能得到世界坐标中的 [ x w , y w ] [x_w,y_w] [xw,yw],无法直接得到 z w z_w zw。假设相机的内外参矩阵均已知,且相机标定时采用的是张氏标定,通过图片进行三维重建时(考虑最简单的两张图片),若为单目系统,两张图片的内参矩阵一样,外参矩阵有区别。设两张图片为左图和右图
世界坐标到两图对应的相机坐标系满足:
[ x i L , y i L , z i L ] T = R L [ x i , y i , z i ] T + T L [x_i^L,y_i^L,z_i^L]^T=R_L[x_i,y_i,z_i]^T+T_L [xiL,yiL,ziL]T=RL[xi,yi,zi]T+TL,
[ x i R , y i R , z i R ] T = R R [ x i , y i , z i ] T + T R [x_i^R,y_i^R,z_i^R]^T=R_R[x_i,y_i,z_i]^T+T_R [xiR,yiR,ziR]T=RR[xi,yi,zi]T+TR.
三维重构的目的:得到世界坐标系中的值 [ x i , y i , z i ] T [x_i,y_i,z_i]^T [xi,yi,zi]T
根据上式,得到任意 [ x i L , y i L , z i L ] T [x_i^L,y_i^L,z_i^L]^T [xiL,yiL,ziL]T或者 [ x i R , y i R , z i R ] T [x_i^R,y_i^R,z_i^R]^T [xiR,yiR,ziR]T都可以通过计算直接得到求解方程得到世界坐标 [ x i , y i , z i ] T [x_i,y_i,z_i]^T [xi,yi,zi]T
所以目标转化为求解 [ x i L , y i L , z i L ] T [x_i^L,y_i^L,z_i^L]^T [xiL,yiL,ziL]T或者 [ x i R , y i R , z i R ] T [x_i^R,y_i^R,z_i^R]^T [xiR,yiR,ziR]T
通过相机内参数可以计算得到由 z i L , z i R z_i^L, z_i^R ziL,ziR分别表示的 [ x i L , y i L ] , [ x i R , y i R ] [x_i^L,y_i^L],[x_i^R,y_i^R] [xiL,yiL],[xiR,yiR],结合相机坐标系与世界坐标系的转换可以计算得到 z i L , z i R z_i^L, z_i^R ziL,ziR。反推即可得到世界坐标系。
------------------------------------------------------------------------------------------------------------------
关于三维重构更加直观的理解请看 aipiano的博客,参考三维重构部分
将我上面讲的部分说的简单明了。
------------------------------------------------------------------------------------------------------------------

那么相机标定的目标就成了分别计算出:内参矩阵A,旋转矩阵R和平移向量T
理解步骤:通过图片与标定物体易得单应矩阵 H H H,且 H = λ A [ r 1 , r 2 , t ] H=\lambda A[r_1,r_2,t] H=λA[r1,r2,t],并且 r 1 , r 2 r_1,r_2 r1,r2是正交单位向量,所以上式满足约束条件:
h 1 T A − T A − 1 h 2 = 0 h_1^TA^{-T}A^{-1}h_2=0 h1TATA1h2=0
h 1 T A − T A − 1 h 1 = h 2 T A − T A − 1 h 2 h_1^TA^{-T}A^{-1}h_1=h_2^TA^{-T}A^{-1}h_2 h1TATA1h1=h2TATA1h2
将该约束条件可以最终转化为一个方程组:
B b = 0 Bb=0 Bb=0,其中 B B B是2 * 6的矩阵, b b b是由 A A A转化而来的1*6的向量。 A A A中的未知数共有5个,如果不算 γ \gamma γ,则A中有四个未知数。而两张图片即可提供包含四个等式的线性方程组。故而可以求出 b b b,易得 A A A,得到A之后,旋转矩阵,平移矩阵也易得。

问题四矩阵 A A A的自由度为什么是2
张正友的文章中解释: H H H的自由度为8,旋转矩阵和平移矩阵的自由度分别为3(绕轴旋转以及向那些方向平移是独立的,故 R , T R,T R,T各有3个自由度),所以只能从内参矩阵中得到两个约束。这个问题总体待定。需要讨论,知道的小伙伴请留言。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值