图像处理工具翻译详解

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

旋转矩阵(Rc_ext)以及平移矢量(Tc_ext)。旋转矩阵(Rc_ext)与旋转矢量(omc_ext)的关系是Rodrigues公式,即:Rc_ext=rodrigues(omc_ext)。

一个点在栅格坐标系(grid reference frame:XX)和摄像机坐标系(camera reference frame:XXc)中坐标关系是:

XXc=Rc_ext * XX + Tc_ext

基于matlab的摄像机标定中,给出的结果有一个主点坐标cc。cc通常是指CCD与光轴的交点,也就是摄像机焦点在视平面上的投影点,但该点与图像坐标的中心并不一定一致。在图像坐标系中,我们通常选其左上角为原点,cc在该坐标下的坐标就是matlab给出的仿真值。

1.Reproject:再投影,指利用标定的摄像机参数,将网格点(物点)重新投影在各个像面

上,得到的新图像。

2.Reprojection Error:再投影误差,即上述投影结果与原像面上各栅格点的误差。Matlab

中利用不同的颜色来区分不同的图像帧。

3.Recomp.corners:重新计算特定图像的角点(用不同的窗口尺寸)。

摄像机标定问题的探讨

(2012-02-29 07:42:01)

转载▼

/demo_c441_i92176.html

1.用matlab标定出来的结果为什么焦距有两个值

采用matlab摄像机标定工具箱标出来的焦距值有两个,它对应于像素在x、y两个方向的尺寸大小不一致的情况。本来,从绝对尺寸来说,摄像机的焦距只应该有一个。但若用像素个数来表示时,问题会有所不同。假定焦距为fmm,若像素水平尺寸为dx mm,垂直尺寸为dy mm ,则焦距f在水平方向的像素个数就是f/dx,垂直方向像素个数就是f/dy,显然二者是不同的。

2.若知道像点位移,如何推知物点位移?

假设原图像大小为a(mm)*b(mm),像素数为a1*b1,则每个像素大小为:

(a/a1)*(b/b1)。 (1)

那么实际焦距值:

fcr1=fc1*(a/a1),fcr2=fc2*(b/b1)。 (2)

有了此焦距值,就可以根据对像点位移的要求来推知物点的位移。具体推法为:

像点位移Ix / fcr1 = 物点位移Ox / 物距, (3)

像点位移Iy / fcr2 = 物点位移Oy / 物距。 (4)

由于物距可以控制,故得:

物点位移Ox=物距*(像点位移Ix / fcr1), (5)

物点位移Oy=物距*(像点位移Iy / fcr2)。 (6)

注:(1)Ix,Iy为绝对像点位移尺寸,若表示成像素个数(Nx,Ny)则为:

Ix=Nx*(a/a1), Iy=Ny*(b/b1); (7)

将式(7)和(2)代入到式(5)、(6)中可得:

物点位移Ox=物距*(像点像素数Nx / X方向焦距像素数即MATLAB标定输出值fc1), (8)

物点位移Oy=物距*(像点像素数Ny / Y方向焦距像素数即MATLAB标定输出值fc2)。 (9)

(2)原图像绝对尺寸大小可通过photoshop来看。

3.若知道像点旋转量,如何推知物点旋转量

像面上弧长LI=rθ, (10)

物面上弧长LO=Rθ, (11)

又:r/R=f/OD (12)

故:LO=(R/r)LI=(OD/f)LI (13)

注:LO为物面上的弧长,LI为像面上的弧长,OD为物距,f为焦距

4.摄像机内参数(intrinsic parameters)及其定义

(1)内参数

焦距(Focal length):以像素表示,存储在2*1矢量fc中;

主点(Pricipal point):主点坐标存储在2*1矢量cc中;

倾斜系数(Skew coefficient):x与y像素轴的夹角,存储在标量alpha_c中;

畸变(Distortion):图像畸变系数(径向和切向畸变),存储在5*1矢量kc中。

(2)定义(根据camera calibration toolbox for matlab帮助翻译)

假设P是摄像机参照系坐标矢量XXc=[Xc;Yc;Zc]空间中的一个点,现在根据内参数(fc,cc,alpha_c,kc) 把该点投影在像面上。设xn为XXc归一化的针孔图像投影:xn=[Xc/Zc,Yc/Zc](colum)=[x,y](colum)。此处让r2=x2+y2。

考虑到透镜畸变以后,新的归一化点坐标xd被定义如下:

xd=[xd(1),xd(2)](column)=(1+kc(1)r^2+kc(2)r^4+kc(5)r^6)xn+dx

dx是切向畸变矢量,

dx=[2kc(3)xy+kc(4)(r^2+2x^2),kc(3)(r^2+2y^2)+2kc(4)xy](column).

此处5元素矢量kc同时包含了径向和切向畸变系数。注意到第六阶径向畸变项的系数是矢量kc的第5个分量。

值得注意的是上述畸变模型首次由Brown于1966年引入,称作“Blum Bob”模型(径向多项式+“薄棱镜”)。切向畸变来源于复合透镜的“decentering”或不完美的透镜元件中心以及其他制造缺陷。

一旦考虑了畸变,P在像面上的投影坐标x_pixel=[xp;yp]即为:

xp=fc(1)(xd(1)+alpha_c*xd(2))+cc(1)

yp=fc(2)xd(2)+cc(2)

一般的标定过程:选择图像读取方式(标准,还是一副一副的读),如果选择一次性将文件读入内存,则在后面输入文件基本名称和文件格式后,不需要再点ReadImage.一般直接选择标准方式即可。

1,进入standard vision,选择Image names,在Matlab命令窗口中,输入图像的基本名,如calL,程序自动提取文件名为calL1,calL2..的图像。再输入图像格式,按照给出的提示,输入相应的字母即可。

2,在得到所有的标定图像后,可以点击在Extract grid corners,下面需要手动标记出角点的范围,程序会在范围内精确确定角点的位置。这里需要注意的是,由于标定图像较多,往往会有手误,将范围标错,这时程序会提示,重新输入标定块个数,并可以通过对焦距或Kc(畸变参数)进行预估,来调整范围。这边对焦距和畸变参数的估计,只是用来调整角点范围,不会对标定结果存在影响。这边Kc={-1,1},可以重复几次来获得正确的范围,最终得到正确的角点坐标。

3,当所有的角点被正确提取后,点击Calibration,就可以的到相机的各个参数。

4,反投影误差:

通过上述三个步骤,就获得了标定信息。对结果的一些可视化的工作,该软件也做得很好。首先,可以通过reproject on images,得到根据当前标定结果得到的反投影误差,从点云的聚集情况和分散的最大范围可以看出反投影误差的大小。还可以对每幅图像的角点进行反向投影,可以看到反向投影点与原角点位置的偏差,根据这些可以对标定结果的误差和可信

相关文档
最新文档