OpenCV笔记之solvePnP函数和calibrateCamera函数对比

OpenCV笔记之solvePnP函数和calibrateCamera函数对比

文章目录

1.cv::solvePnP

2.cv::solvePnP函数的用途和工作原理

3.cv::solvePnP背后的数学方程式

4.cv::SOLVEPNP_ITERATIVE、cv::SOLVEPNP_EPNP、cv::SOLVEPNP_P3P

当使用 cv::solvePnP 函数来解算相机姿态时,您可以选择不同的解算方法,这些方法用于确定物体在相机坐标系中的旋转和平移变换。下面我将详细解释三种常用的解算方法:cv::SOLVEPNP_ITERATIVEcv::SOLVEPNP_EPNPcv::SOLVEPNP_P3P

  1. cv::SOLVEPNP_ITERATIVE

    cv::SOLVEPNP_ITERATIVE 方法是一种迭代求解相机姿态的方法。它基于迭代优化算法,在每一步迭代中,它将计算物体点的投影并与图像上的对应点进行比较,然后调整相机姿态以最小化投影误差。这个方法通常对初始姿态的猜测要求不高,因此适用于各种场景,但可能需要更多的迭代步骤才能收敛到准确的解。

  2. cv::SOLVEPNP_EPNP

    cv::SOLVEPNP_EPNP 方法使用 EPnP(Efficient Perspective-n-Point)算法来求解相机姿态。EPnP 是一种快速而精确的方法,特别适用于含有较少物体点(通常为4个)的情况。它要求提供物体点在物体坐标系中的坐标,以及这些点在图像上的投影,然后通过求解非线性方程组来计算相机姿态。由于使用了更少的点,cv::SOLVEPNP_EPNP 可能比其他方法更快且更准确。

  3. cv::SOLVEPNP_P3P

    cv::SOLVEPNP_P3P 方法是一种采用 P3P(Perspective-Three-Point)算法的方法。它要求至少提供3对物体点和图像点的对应关系,然后通过求解一个三次方程组来计算相机姿态。由于仅需要3对点,因此这个方法对于标定板等具有三个已知角点的场景非常有效。但是,由于使用了较少的点,可能会导致解的不稳定性。

在选择解算方法时,需要考虑数据的质量、物体的特性以及计算速度等因素。如果您拥有更多的对应点,可能更倾向于使用 cv::SOLVEPNP_ITERATIVE 方法。如果您有少量的点且需要更快的计算速度,可以尝试 cv::SOLVEPNP_EPNP 方法。对于只有三个已知角点的场景,cv::SOLVEPNP_P3P 方法可能是一个不错的选择。

总之,选择合适的解算方法取决于您的具体应用场景和数据特点。您可以根据问题的需求和性能要求来选择最适合的方法。

5.一个固定位置的棋盘格标定板的一张图像就可以使用cv::solvePnP标定处相机的外参吗?

是的,使用一张固定位置的棋盘格标定板图像可以使用 cv::solvePnP 来估计相机的外参。这是一种相机标定的方法,其中你提供了标定板在世界坐标系中的物理坐标,以及在图像中检测到的标定板角点的像素坐标。通过这些信息,cv::solvePnP 可以计算出相机的旋转和平移向量(外参),从而确定相机的姿态和位置。

使用一张图像和固定位置的标定板,首先检测标定板的角点,然后使用 cv::solvePnP 计算相机的外参,包括旋转矩阵和平移向量。通过将旋转向量转换为旋转矩阵,并将其与平移向量组合在一起,你可以得到一个完整的外参矩阵,表示相机在世界坐标系中的姿态和位置。

这种方法适用于在已知的标定板位置和相机内参情况下估计相机的外参。然后,你可以使用估计的外参来将相机拍摄的图像映射到世界坐标系中,或者将世界坐标映射到图像坐标中,以便进行其他操作,比如增强现实、位姿估计等。

6.关于相机坐标系的XYZ方向

在计算机视觉中,通常使用的相机坐标系(Camera Coordinate System)与一般的三维坐标系有所不同。在相机坐标系中,相机本身是位于原点的,其视线方向通常与Z轴平行,而X轴和Y轴则与图像平面的水平和垂直方向相对应。这意味着:

  • X轴:指向图像的右侧,与图像平面的水平方向平行。
  • Y轴:指向图像的下方,与图像平面的垂直方向平行。
  • Z轴:指向相机的观察方向,与视线方向平行。

需要注意的是,相机坐标系通常是针对相机设备本身定义的坐标系,而不同的相机可能有不同的约定。在使用cv::solvePnP进行相机标定时,你提供的物理坐标点(标定板角点的物理坐标)与相机坐标系之间的关系将用于估计相机的外参(旋转和平移)。因此,确保在标定时使用一致的坐标系约定非常重要。

7.关于世界坐标的原点位置

对于车载传感器标定:世界坐标系一般会选择与车辆坐标系完全重合,即世界坐标系的原点为车辆坐标系的原点------车辆后轴中心

8.cv::calibrateCamera

9.cv::calibrateCamera和cv::solvePnP对比

  • 1.cv::solvePnP可以用一张棋盘格的图像进行相机外参标定
  • 2.cv::calibrateCamera可以用多张棋盘格的图像进行相机外参标定
相关推荐
魔珐科技1 分钟前
以3D数字人AI产品赋能教育培训人才发展,魔珐科技亮相AI+教育创新与人才发展大会
大数据·人工智能
weixin_443290691 分钟前
【阅读记录-章节3】Build a Large Language Model (From Scratch)
人工智能·语言模型·自然语言处理
算家云7 分钟前
快速识别模型:simple_ocr,部署教程
开发语言·人工智能·python·ocr·数字识别·检测模型·英文符号识别
澜世22 分钟前
2024小迪安全基础入门第三课
网络·笔记·安全·网络安全
Bald Baby23 分钟前
JWT的使用
java·笔记·学习·servlet
youcans_38 分钟前
【微软:多模态基础模型】(5)多模态大模型:通过LLM训练
人工智能·计算机视觉·大模型·大语言模型·多模态
飞凌嵌入式42 分钟前
飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
人工智能·嵌入式硬件·嵌入式·risc-v·飞凌嵌入式
sinovoip43 分钟前
Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计
人工智能·科技·物联网·开源·risc-v
搏博1 小时前
神经网络问题之一:梯度消失(Vanishing Gradient)
人工智能·机器学习