相机标定与内外参

目录

1.相机标定

1.1外参

1.2内参

2.参考资料


1.相机标定

        在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。这个求解参数的过程就称之为相机标定(或摄像机标定)

        换个说法就是相机标定的意义是为了将图像中的点能够还原到真实三维空间中,真实的反应各点之间的实际相对空间关系。

         现实三维空间的某点映射到最终的像素空间和以下多个条件相关。

1.三维空间点和相机镜头的位置关系或者说运动关系

这里涉及两个坐标系的概念,1.三维空间中指定的某个世界坐标系;2.相机镜头和光轴构成的相机坐标系

2.光学成像

这里涉及 相机坐标系和图像坐标系,这个图像坐标系位于成像平面,且是以光轴与成像平面的交点为原点。

由于光学镜头并非理想 成像过程中有径向畸变和切向畸变。

3.光电转换到像素

这里涉及到图像坐标系到像素坐标系的转换。这个过程会有旋转,缩放和平移。

        以上三个过程中从世界坐标系到相机坐标系的转换过程中用的参数和相机本身无关,我们把它们叫做相机的外参。

        从相机坐标系到像素坐标系的过程用到的变换参数和镜头的畸变,焦距,CCD/COMS感光元件到像素这些相机本身的物理特性有关,我们称这些参数为内参。

1.1外参

        外参是涉及到三维空间中的点与相机之间的位置关系和运动关系。它并不是一个固定的参数,根据应用场景有不同的定义。比如:

        在双目测距场景下,一般情况下以左边的相机为相机坐标系。就需要将以右边相机为参考系的空间点转化到左边坐标系,这个转换参数可以认为是一个外参。

        在单目防抖场景下,实际空间中的点想对于相机的运动参数可以认为是相机的外参,我们用这个外参来补偿抖动。

1.2内参

内参已经说明是和相机本身物理特性相关的参数。具体可以参看以下文献。

2.参考资料

相机内参和外参https://zhuanlan.zhihu.com/p/144307108最详细、最完整的相机标定讲解https://blog.csdn.net/a083614/article/details/78579163

计算机视觉-相机内参数和外参数https://blog.csdn.net/liulina603/article/details/52953414

相机标定https://baike.baidu.com/item/%E7%9B%B8%E6%9C%BA%E6%A0%87%E5%AE%9A/6912991

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相机内外标定计算机视觉中的一个重要问题,它需要通过多组已知的图像和相应的三维空间点来计算相机的内部数和外部数。Matlab提供了一个相机标定的工具箱,可以方便地进行相机标定。下面是一个简单的相机标定的Matlab代码示例。 首先需要准备好一些数据,包括: - 图像坐标点:已知的图像上的点的坐标。 - 三维空间点:对应于图像坐标点的已知三维点的坐标。 - 相机数:包括相机的内部数(如焦距、光心等)和外部数(如旋转矩阵、平移矩阵等)。 假设已经准备好了这些数据,下面是一个相机标定的Matlab代码示例: ```matlab % 定义图像坐标点和三维空间点 imagePoints = [x1, y1; x2, y2; ...]; worldPoints = [X1, Y1, Z1; X2, Y2, Z2; ...]; % 定义相机数 focalLength = [fx, fy]; principalPoint = [cx, cy]; radialDistortion = [k1, k2, k3]; tangentialDistortion = [p1, p2]; rotationVectors = [rvec1; rvec2; ...]; translationVectors = [tvec1; tvec2; ...]; % 定义相机标定对象 cameraParams = cameraParameters('IntrinsicMatrix', [fx, 0, cx; 0, fy, cy; 0, 0, 1], ... 'RadialDistortion', [k1, k2, k3], ... 'TangentialDistortion', [p1, p2]); % 进行相机标定 [cameraParams, ~, estimationErrors] = estimateCameraParameters(imagePoints, worldPoints, ... 'CameraMatrix', cameraParams.IntrinsicMatrix, ... 'RotationVectors', rotationVectors, ... 'TranslationVectors', translationVectors, ... 'WorldPoints', worldPoints, ... 'ReprojectionErrors', estimationErrors); % 输出相机内部数和外部数 disp('相机内部数:'); disp(cameraParams.IntrinsicMatrix); disp('相机外部数:'); disp(table(cameraParams.RotationMatrices, cameraParams.TranslationVectors, ... 'VariableNames', {'旋转矩阵', '平移矩阵'})); ``` 在这个例子中,使用了`cameraParameters()`函数来定义相机数,然后使用`estimateCameraParameters()`函数来进行相机标定。最后,输出了相机的内部数和外部数。 需要注意的是,这只是一个简单的相机标定的Matlab代码示例,实际应用中可能需要根据具体情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值