内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解

  有国才有家,支持国产,生活中点滴做起,买手机就买华为,这是我们国家IT界的脊梁!!! 

1、 相机参数是三种不同的参数。

 相机的内参数是六个分别为:1/dx、1/dy、r、u0、v0、f。

opencv1里的说内参数是4个其为fx、fy、u0、v0。实际其fx=F*Sx,其中的F就是焦距上面的f,Sx是像素/没毫米即上面的dx,其是最后面图里的后两个矩阵进行先相乘,得出的,则把它看成整体,就相当于4个内参。其是把r等于零,实际上也是六个。

dx和dy表示:x方向和y方向的一个像素分别占多少长度单位,即一个像素代表的实际物理值的大小,其是实现图像物理坐标系与像素坐标系转换的关键。u0,v0表示图像的中心像素坐标和图像原点像素坐标之间相差的横向和纵向像素数

相机的外参数是6个:三个轴的旋转参数分别为(ω、δ、 θ),然后把每个轴的3*3旋转矩阵进行组合(即先矩阵之间相乘),得到集合三个轴旋转信息的R,其大小还是3*3;T的三个轴的平移参数(Tx、Ty、Tz)。R、T组合成成的3*4的矩阵,其是转换到标定纸坐标的关键。其中绕X轴旋转θ,则其如图:

   注意:在每个视场无论我们能提取多少个角点,我们只能得到四个有用的角点信息,这四个点可以产生8个方程,6个用于求外参,这样每个视场就还赚两个方程来求内参,则其在多一个视场即可求出4个内参。因为六个外参,这就是为什么要消耗三个点用于求外参。

 

畸变参数是:k1,k2,k3径向畸变系数,p1,p2是切向畸变系数。径向畸变发生在相机坐标系转图像物理坐标系的过程中。而切向畸变是发生在相机制作过程,其是由于感光元平面跟透镜不平行。其如下:

 

1.径向畸变:产生原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲径向畸变主要包含桶形畸变和枕形畸变两种。下面两幅图是这两种畸变的示意:

 

          它们在真实照片中是这样的:

 

           2.切向畸变:产生的原因透镜不完全平行于图像平面,这种现象发生于成像仪被粘贴在摄像机的时候。下面图片来自于《学习opencv》p413。

 

其中畸变的形象示意图是如下:

 

 

其总的转换关系:

下面是普通摄像头标定后的输出值,其如下:

其中的fx、fy是f/dx、f/dy得出来的值。其中的cx、cy一般不是正好是图像分辨率的一半,其是有偏差的,一般越好的摄像头则其越接近于分辨率的一半。上面例子使用的摄像头是一个普通的1280x720分辨率的摄像头,其偏差还是蛮大的。下面的数据是比较好的摄像头罗技720p的,其分辨率也是1280x720的分辨率。可以看出其更接近分辨率的一半。

 

2、相机的标定方法与意义:

(一)什么是摄像机标定

 

    在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定。

 

(一)相机标定的意义

 

    无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。因此,做好摄像机标定是做好后续工作的前提,是提高标定精度是科研工作的重点所在。其标定的目的就是为了相机内参、外参、畸变参数。

  其标定方法大概有三种如下:

1.线性标定方法的大概数学公式是:

其求解过程如下:

注意:这种标定是没有考虑到相机畸变的非线性问题,意思是这种标定是

在不考虑相机畸变的情况下使用。

 

2.非线性标定方法:

当镜头畸变明显时必须引入畸变模型,将线性标定模型转化为非线性标定模型,

通过非线性优化的方法求解相机参数:

3.两步标定法:

 

   1.Tsai的经典两步法

       概念Tsai基于 RAC 约束(RadialAlignment Constrain)提出的两步法,在求解过程中将CCD(电耦合器件)阵列感光元的横向间距和纵向间距当作已知参数,求解的摄像机内部参数:有效焦距f;镜头径向畸变系数k1,k2;非确定性尺度因子xs ;图像中心或主点u0,v0。外部参数:世界坐标系与摄像机坐标系之间的旋转矩阵R与平移向量t。

 

     求解:首先利用最小二乘法求解超定线性方程组,求得模型外部参数;然后求解内部参数,如果摄像机无透镜畸变,可通过一个超定线性方程组解出,如果存在一个以二次多项式近似的径向畸变,则利用一个包含三个变量的目标函数进行优化搜索求解

 

  

 

1.相机坐标系:

相机坐标系是连接图像物理坐标系世界坐标系的桥梁,其中相机坐标的系的坐标原点是:镜头的光心---其也是相机坐标系里的投影中心。

 

 

 

参考文献:

像素坐标转换到标定纸坐标的过程

要在MATLAB中进行相机标定并获取畸变参数,可以按照以下步骤进行操作: 1. 收集相机标定图像:使用不同的位置和姿态拍摄一组标定图像。保证图像中包含有足够的特征点,例如棋盘格。 2. 导入图像:将图像导入MATLAB环境中。 3. 提取角点:使用`detectCheckerboardPoints`函数来检测图像中的角点。该函数会返回角点的像素坐标。 4. 生成世界坐标系点:根据棋盘格的尺寸和布局,在世界坐标系中生成对应的角点坐标。 5. 进行标定:使用`estimateCameraParameters`函数来进行相机标定。将图像中的角点和对应的世界坐标传递给该函数。 6. 获取畸变参数:通过访问标定结果的`IntrinsicMatrix`和`RadialDistortion`属性,可以获得相机内参矩阵和径向畸变参数。 下面是一个示例代码,演示了如何进行相机标定并获取畸变参数: ```matlab % 步骤1:收集相机标定图像 % 步骤2:导入图像 imageFileNames = {'image1.jpg', 'image2.jpg', 'image3.jpg'}; % 标定图像文件名 images = imageDatastore(imageFileNames); % 步骤3:提取角点 [imagePoints, boardSize] = detectCheckerboardPoints(images.Files); % 步骤4:生成世界坐标系点 squareSize = 30; % 棋盘格方块的尺寸(毫米) worldPoints = generateCheckerboardPoints(boardSize, squareSize); % 步骤5:进行标定 params = estimateCameraParameters(imagePoints, worldPoints); % 步骤6:获取畸变参数 intrinsicMatrix = params.IntrinsicMatrix; radialDistortion = params.RadialDistortion; ``` 请注意,这只是一个简单的示例,实际应用中可能需要更多的步骤和参数调整。你可以根据自己的需求对代码进行修改和优化。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值