摄像机内外参计算过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摄像机内外参计算过程

罗海风2011-2-28

1.对内参的初始化:

涉及函数:init_intrinsic_param_fisheye.m

输入:x_1,x_2,x_3,…--角点的图像坐标,X_1,X_2,X_3,…--角点的世界坐标;

输出:所有内参,包括摄像机焦距fc,摄像机坐标系原点在图像上的坐标cc,几何畸变系数kc,斜交系数alpha_c,摄像机矩阵KK(包含以上系数)。

焦距的初始值:fc=

max(,)

_

max(,)

nx ny

f init

nx ny

π

π

⎡⎤

⎢⎥

=⎢⎥

⎢⎥

⎢⎥

⎣⎦

原点坐标的初始值设为图像中心处,即cc=

0.50.5 _

0.50.5

nx

c init

ny

-

⎡⎤

=⎢⎥

-

⎣⎦

计算内参时不考虑畸变,畸变系数初始值为零,即kc=

0 _

0 k init

⎡⎤

⎢⎥

⎢⎥

=

⎢⎥

⎢⎥

⎣⎦

不考虑摄像机坐标轴夹角非正交情况,即alpha_c=_0

alpha init=

内参数矩阵初始值

max(,)

00.50.5

max(,)

00.50.5

001

nx ny

nx

nx ny

KK ny

π

π

⎡⎤

-

⎢⎥

⎢⎥

⎢⎥

=-

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎣⎦

-------------------(1)

2.对外参的初始化:

涉及函数:comp_ext_calib_fisheye.m

功能:主要是调用compute_extrinsic_init_fisheye.m 和compute_extrinsic_refine_fisheye.m

compute_extrinsic_init_fisheye.m

输入:像点的世界坐标和图像坐标x_kk 和X_kk,以及所有内参fc,cc,kc,alpha_c; 输出:所有外参初始值,包括平移矩阵Tckk ,旋转矩阵Rckk 和旋转向量omckk

compute_extrinsic_refine_fisheye.m

输入:像点的世界坐标和图像坐标x_kk 和X_kk,最大迭代次数MaxIter 以及所有内参fc,cc,kc,alpha_c; 输出:所有外参初始值,包括平移矩阵Tckk ,旋转矩阵Rckk 和旋转向量omckk

对像点世界坐标和图像坐标进行整理(整理过程考虑到坐标变换和畸变模型,涉及normalize_pixel_fisheye .m 输入:像点图像坐标x_kk,所有内参fc,cc,kc,alpha_c;输出:标准化无畸变图像坐标xn )。 坐标变换首先按照原点坐标进行线性映射,转换成以焦距为单位:

111

222___x kk cc fc x distort x kk cc fc -⎡⎤⎢⎥⎢

⎥=-⎢⎥⎢⎥⎣⎦

然后校正相机平面和图像平面不平行带来的误差:

122_____x distrot alpha c x distrot x distort x distrot -⨯⎡⎤

=⎢⎥⎣⎦

最后进行畸变补偿:(调用函数comp_fisheye_distortion.m 输入:畸变的像点图像坐标xd ,畸变系数k ;

输出:

无畸变的像点图像坐标x )

xd 是畸变后的像素坐标,令__theta d theta theta d ==

进入循环20次的补偿迭代,每次循环中有

12

24682468

1121314112223242__11theta d theta d theta k theta k theta k theta k theta k theta k theta k theta k theta ⎡⎤=⎢⎥++++++++⎣⎦

,其中k 为畸变系数。本程序中,只考虑径向畸变不考虑切向畸变,k 虽然是5x1矢量,但是

最后一位即切向畸变系数没有使用。 然后有1212tan()tan()__theta theta scaling theta d theta d ⎡⎤

=⎢

⎥⎣⎦

111

1221211

2222Np Np Np Np xd scaling xd scaling xd scaling xn xd scaling xd scaling xd scaling ⎡⎤

=⎢

⎥⎣⎦

畸变补偿结束。 得到标准化无畸变的世界坐标X_new 和图像坐标xn 。

由这两组坐标计算得到透视投影矩阵H(计算过程见摄像机定标程序中透视投影矩阵H 的计算过程.doc ),并对H 进行整理得到

((:,1))()((:,2))H H

H norm H sc

mean norm H =

=⎡⎤⎢⎥

⎣⎦

由H 计算中间变量,有

[](:,1)1((:,1))

(:,2)(1,(:,2))1

2((:,2)(1,(:,2))1)3(1,2)123()

H u norm H H dot u H u u norm H dot u H u u cross u u RRR u u u omckk rodrigues RRR =

-=

-=== 然后得到外参矩阵中旋转矩阵()Rckk rodrigues omckk =和平移矩阵(:,3)Tckk H =。其中函数rodrigues 作用是旋转矩阵和旋转向量的相互转换。

由于计算中所用的坐标是进行过映射调整的,所以最终得到的外参矩阵也需要调整,得: 平移矩阵_Tckk Tckk Rckk T transform =+⨯ --------------------------------(2)

_Rckk Rckk R transform =⨯

旋转向量()omckk rodrigues Rckk =

旋转矩阵()Rckk rodrigues omckk = --------------------------------(3)

其中,_(_)[,,]()

__(_)_T T

T

T

Y X kk mean X kk YY Y Y U S V svd YY R transform V T transform R transform X mean

=-=⨯===-⨯

以上得到了内参和外参的初始值。接下来由这些参数用牛顿法进行迭代计算得到更佳的外参。 令omckk param Tckk ⎡⎤

=⎢

⎥⎣⎦

由像点世界坐标、内外参初值和投影模型计算得到:投影坐标x ,投影坐标对旋转向量的导

数dxdom ,投影坐标对平移矩阵的导数dxdT (计算过程详见project_points_fisheye.m 输入:多个点的世界坐标X,内外参数om,T,f,c,k,alpha;输出:像点图像坐标计算值xp,对各参数的导数dxpdom,dxpdT,dxpdf,dxpdc,dxpdk ) 像点坐标和计算坐标差值ex=x_kk-x

[]JJ dxdom dxdT =

2T JJ JJ JJ =

参数变动1

_2T

param innov JJ JJ ex -=

相关文档
最新文档