opencv已知相机投影及内参求外参_相机标定与测距

0 概述

硬件:Realsense D435i(含imu)、AprilTag或棋盘格标定板(本文均使用棋盘格)

说明:本文非手把手教你如何教程,需要一定的ROS基础和D435i相机调试基础,当然玩过其他相机也可以。写作过程参考了部分作者成果,如有侵权,请联系删除。

标定主要包括四部分内容:

  1. 为什么要做相机标定
  2. 利用Kalibr对D435i进行相机标定、相机-imu标定
  3. 利用opencv对D435i的RGB相机进行内参标定(Opencv也可实现)
  4. 利用opencv对D435i的RGB进行外参标定(单目测距的基础)

1 为什么要做相机标定?

这里涉及四个坐标系世界坐标系、相机坐标系、图像物理坐标系、图像像素坐标系,在由世界坐标系变换到像素坐标系的过程,就涉及到这四个坐标系的变换,具体如下:

be20b535fd29af2f0b1061cdcfbf7605.png
世界坐标系与相机坐标系之间的变换

6b2fd8c6da275bc5f9d3fc886710f6a5.png
相机坐标系与图像物理坐标系之间的变换

5aff1cf145bd0ecd29ce388b72c5068f.png
图像物理坐标系与图像像素坐标系之间的变换

通过上述变换,可得物理世界坐标系与图像像素坐标系之间的变换公式如下:

64758d5b0b788ca94fca88dfaa453bd2.png
坐标变换总图

2 Kalibr相机标定

ROS 录制bag包

rosla
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenCV提供了计算相机内参的函数cv::calibrateCamera(),它可以通过多组已知内参和对应的二维图像点与三维场景点的对应关系,估计相机内参矩阵和畸变系数。通过这些已知相机内参,我们可以根据棋盘格标定板或其他已知尺寸的物体,得到它们在图像中的二维投影点。 在得到了相机内参矩阵,我们可以使用cv::solvePnP()函数计算外矩阵。这个函数可以根据一组已知的三维物体坐标和对应的二维图像点,通过解决透视投影问题估计出相机的外矩阵。这个外矩阵包含了相机相对于世界坐标系的旋转向量和平移向量。通过这些外矩阵,我们可以将三维物体与相机坐标系进行对齐,实现物体在图像中的定位和姿态估计等功能。 需要注意的是,为了获得准确的外矩阵,我们需要确保提供的三维物体坐标和对应的二维图像点是匹配正确的。同时,还需要保证使用的内参矩阵是准确的。如果内参矩阵存在误差,会对最后的外估计结果产生影响。 总之,通过已知相机内参,可以利用OpenCV提供的函数计算相机的外矩阵。这些内外矩阵的计算过程是相机标定和姿态估计等计算机视觉应用中的重要基础。 ### 回答2: 在计算机视觉中,opencv是一个非常流行的开源计算机视觉库,用于处理图像和视频数据。相机内参和外是计算机视觉领域中的一个常见问题。内参相机的内部参数,包括焦距、光心等,用于描述相机的内部特性。外相机与世界坐标系之间的变换关系,包括旋转矩阵和平移向量,用于将相机坐标系中的点映射到世界坐标系中。 在opencv中,可以通过多幅已知内参的图像来计算相机的外。首先,从场景中选取一些已知世界坐标系下的特征点,如棋盘格的角点。然后,使用opencv提供的函数,在每一幅图像中检测这些特征点的像素坐标。 接下来,使用相机模型将世界坐标系下的点投影到图像坐标系中,得到对应的像素坐标。这样,对于每一幅图像,都得到了世界坐标系下的特征点和对应的像素坐标。然后,将这些特征点和像素坐标作为输入,使用opencv中的函数来计算相机的外。 具体来说,可以使用函数cv::solvePnP()来相机的外。该函数需要输入世界坐标系中的特征点和对应的像素坐标,以及相机内参矩阵。然后,该函数会返回相机的旋转向量和平移向量,即相机的外。 总结起来,为了相机的外,可以通过使用opencv中的solvePnP函数,传入已知内参和特征点在世界坐标系中的坐标和对应的像素坐标,来计算相机的旋转矩阵和平移向量,从而得到相机的外信息。 ### 回答3: 计算相机的外部参数,也叫做相机的位姿,是根据已知相机内部参数和一些已标定的图像信息来实现的。OpenCV提供了相应的函数和方法来实现这个过程。 首先,我们需要知道相机内参,包括焦距、主点坐标和畸变参数。这些内参可以通过相机的标定获得。 其次,我们需要准备一些已知的三维空间点和对应的图像点。这些点应当在空间中呈现出一定的分布,以便于对相机的位姿进行估计。这些点的对应关系可以通过一些特征点匹配算法来获得。 接下来,我们使用solvePnP函数来计算外。solvePnP函数可以通过输入的三维空间点和对应的图像点,利用相机内参来计算相机的位姿。具体来说,solvePnP函数会返回一个旋转矩阵和一个平移向量,它们分别表示相机坐标系到世界坐标系的变换。 最后,我们可以根据旋转矩阵和平移向量来生成相机的外。通过这些外信息,我们可以知道相机在世界坐标系中的位姿,也就是相机相对于世界的位置和方向。 总之,OpenCV提供了相机的函数和方法,我们可以根据已知相机内参和一些已标定的图像信息来计算相机的位姿,从而实现对相机位姿的估计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值