本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:单目相机标定是计算机视觉的基础,它校正图像失真并获取相机参数。OpenCV提供了便捷工具集,实现相机内参、外参计算和图像校正。该流程包括准备标定板、图像采集、角点检测、标定矩阵计算、图像校正、以及验证和应用标定结果。压缩包提供了一个完整的标定流程案例,通过实际代码和结果,学习者可以掌握单目相机标定的应用。
单目摄相机标定:OpenCV实现,标定图像,标定结果.zip

1. 单目相机标定概念和目的

1.1 单目相机标定的定义

在计算机视觉领域,单目相机标定是一个至关重要的步骤,它涉及确定相机的内部参数(内参矩阵)和外部参数(相机相对于世界坐标系的位置和方向),以及相机镜头的畸变系数。通过标定,可以获得相机的精确模型,这对于后续的图像处理和三维重建等任务至关重要。

1.2 单目相机标定的目的

标定的目的是为了减少或消除由于相机镜头和成像过程中的畸变对图像造成的影响,以及提供一种从二维图像中准确估计出三维世界中物体位置和大小的方法。经过正确标定的相机,可以极大地提高图像测量的精度和可靠性。

1.3 单目相机标定的必要性

对于任何需要准确测量或视觉处理的应用,如机器视觉、机器人导航、增强现实等,都必须进行相机标定。一个未标定的相机无法提供准确的几何关系,导致误差积累,最终影响整个系统的性能。因此,进行单目相机标定是保证系统精度和稳定性的基础。

2. OpenCV标定工具和方法

2.1 OpenCV标定工具概述

2.1.1 OpenCV提供的标定接口简介

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了丰富的图像处理、视觉分析等功能。在单目相机标定方面,OpenCV提供了几个关键的接口函数,如 findChessboardCorners() , calibrateCamera() , 和 undistort() 等,这些函数构成了标定相机的基础工具集。

这些函数能够帮助开发者完成以下任务:
- findChessboardCorners() : 自动检测标定板上角点的位置。
- calibrateCamera() : 根据检测到的角点位置计算相机的内参和畸变系数。
- undistort() : 应用标定得到的参数校正图像,消除畸变。

2.1.2 标定工具的选择与适用场景

在选择合适的标定工具时,需要根据实际的标定需求和目标精度来决定。例如,对于标定精度要求较高的场合,可能需要采集更多的标定图像以增加数据的鲁棒性。在不同的场景中,标定工具的选择也需要考虑标定板的类型(如棋盘格、圆点格等)、光照条件、相机的分辨率和拍摄距离等因素。

  • 对于快速原型开发,可以选择带有高级设置的标定函数来加速开发进程。
  • 在精度要求非常高的场合,可能需要进行多次标定并验证标定结果,从而调整参数以获得最佳结果。

2.2 单目相机标定的基本流程

2.2.1 标定的理论基础

单目相机标定的理论基础是射影几何学和针孔相机模型。在这种模型中,现实世界的三维点经过相机的透镜被映射到二维成像平面上。标定的目的是为了找到映射关系中的参数,这些参数包括焦距、主点坐标、畸变系数等。

标定的基本步骤可以分为:
1. 准备标定板和采集标定图像。
2. 使用角点检测算法检测标定板上的特征点。
3. 根据检测到的特征点计算相机的内参和畸变系数。
4. 应用这些参数校正相机图像,进行图像质量评估。

2.2.2 实际操作流程概述

实际操作流程概述可以分为以下几个关键步骤:

  1. 准备标定板和采集标定图像
    - 需要准备一个标定板,常见的有棋盘格和圆形格等。
    - 使用相机从不同角度和位置拍摄标定板的多张图片。

  2. 角点检测
    - 应用 findChessboardCorners() 函数或其他角点检测算法在采集的图像中检测特征点。

  3. 相机标定
    - 利用检测到的特征点坐标作为输入,调用 calibrateCamera() 函数计算相机内参和畸变系数。

  4. 图像校正
    - 使用 undistort() 函数校正图像,将畸变图像转换为校正后的图像。

  5. 结果验证与分析
    - 对比校正前后图像,验证标定精度,并分析可能存在的误差来源。

2.3 标定中的关键参数理解

2.3.1 内参矩阵和畸变系数

内参矩阵(Intrinsic Matrix)包含了相机的内参数,主要影响相机成像的几何关系,如焦距、主点坐标等。它是一个3x3的矩阵,通常表示为:

[ K = \begin{bmatrix}
f_x & 0 & c_x \
0 & f_y & c_y \
0 & 0 & 1
\end{bmatrix} ]

其中( f_x, f_y )是焦距,( c_x, c_y )是主点坐标。

畸变系数(Distortion Coefficients)描述了镜头畸变的类型和程度。畸变通常分为径向畸变和切向畸变,它们的系数通常表示为一组向量( (k_1, k_2, k_3, \dots, p_1, p_2) )。

2.3.2 标定过程中的优化策略

为了获得更好的标定效果,通常需要在标定过程中采用一些优化策略,主要包括:

  • 选择合适的标定板和标定图像 :标定板的选择对最终的标定精度有直接影响,需要确保图像中的角点清晰可辨。
  • 合理布置拍摄角度和距离 :通过多角度、多距离的拍摄,可以获得更全面的相机视角信息,有助于提高标定精度。
  • 优化算法参数设置 :比如 calibrateCamera() 函数的参数设置,可以通过调整初始值、设置不同的优化方法等来改善标定结果。

代码块1 展示了一个简单的例子,用以说明如何使用OpenCV进行相机标定:

import numpy as np
import cv2
import glob

# 准备对象点,如 (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6*7,3), np.float32)
objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2)

# 用于存储所有图像的对象点和图像点的数组
objpoints = [] # 真实世界中的3D点
imgpoints = [] # 图像中的2D点

# 读取图像
images = glob.glob('calibration_images/*.jpg')

for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 找到棋盘格角点
    ret, corners = cv2.findChessboardCorners(gray, (7,6), None)

    # 如果找到足够点对,将其存储起来
    if ret == True:
        objpoints.append(objp)
        imgpoints.append(corners)

        # 绘制并显示角点
        img = cv2.drawChessboardCorners(img, (7,6), corners, ret)
        cv2.imshow('img', img)
        cv2.waitKey(500)

cv2.destroyAllWindows()

# 标定相机
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)

# 输出结果
print("相机内参矩阵:\n", mtx)
print("畸变系数:\n", dist)

代码块1 中,我们首先创建了棋盘格的三维点对象 objp ,然后读取标定图像,对每张图像使用 cv2.findChessboardCorners() 来寻找棋盘格的角点,并将它们存储到 objpoints imgpoints 中。之后,使用 cv2.calibrateCamera() 函数来计算内参矩阵 mtx 和畸变系数 dist

3. 标定板准备和图像采集步骤

3.1 标定板的选择与制作

3.1.1 标定板的类型及其特点

标定板作为相机标定的重要工具,其类型和质量直接影响标定的精度。常用的标定板包括棋盘格、圆点格、环形格等,其中棋盘格因其角点易于检测,被广泛应用于标定过程中。

  • 棋盘格标定板: 通常由黑白相间的方格构成,易于角点检测和计算,标定精度较高,适用于大多数相机标定场景。
  • 圆点格标定板: 由规则排列的圆点组成,适用于特定光学系统或需要区分内外角点的场景。
  • 环形格标定板: 由环形图案组成,适用于高精度的镜头校正。

选择标定板时,应考虑到相机的分辨率、镜头的畸变类型以及标定环境等因素,以确保标定板能在标定过程中提供足够的信息和精度。

3.1.2 自制标定板的注意事项

在某些特定情况下,为了满足精确度或是其他特殊需求,可能需要自制标定板。在自制过程中需要注意以下几点:

  • 材料选择: 标定板的材料应该足够平滑且反光均匀,以减少光线的不规则反射对角点检测的影响。
  • 图案设计: 图案的尺寸应根据相机的分辨率进行设计,角点的尺寸和间距需要足够精确。
  • 打印精度: 打印标定板的精度直接影响标定结果,应使用高质量的打印设备,并避免任何可能导致图案失真的因素。
  • 保存条件: 自制标定板在使用后应妥善保存,避免受到污染或是变形,保证每次标定过程中的标定板一致性。

3.2 图像采集的环境设置

3.2.1 光照和背景条件的控制

在采集标定图像时,光照和背景条件是影响标定精度的重要因素:

  • 光照强度: 过强或过弱的光照均可能影响角点检测的准确性。应使用均匀的漫射光照射标定板,避免产生镜面反射或阴影。
  • 背景选择: 背景应尽量简洁、颜色均匀,避免与标定板图案产生对比度较低的区域,这有助于角点检测算法准确识别角点位置。

3.2.2 摄像机的布局和角度调整

摄像机的布局和角度对采集图像的质量至关重要:

  • 摄像机距离: 摄像机应尽量与标定板保持适当的距离,既不过远导致角点细节模糊,也不过近导致透视变形过大。
  • 角度选择: 应从多个角度拍摄标定板,以确保能够捕获足够的角点信息,提高标定的全面性和准确性。

3.3 图像采集过程中的操作技巧

3.3.1 角度多样化的图像采集

采集图像时,要尽量保证标定板在不同的角度下都有足够的图片覆盖:

  • 位置变换: 改变摄像机与标定板的相对位置,通过旋转标定板或者移动摄像机来实现角度变化。
  • 多角度覆盖: 尽量使得采集到的图像能够覆盖标定板的所有区域,包括边缘和角落,以捕获更全面的角点信息。

3.3.2 避免系统误差的采集方法

为了减少系统误差,采集图像时还需要注意以下几点:

  • 系统校准: 在采集图像之前,需要确保摄像机已经过系统校准,包括镜头畸变的校正等。
  • 图像一致性: 同一角度下采集的图像应具有一定的数量,以提高标定的稳健性。同时,应尽量保证每次拍摄条件的一致性,比如光照、角度等。
  • 重复性检验: 多次重复采集同一角度的图像,以便通过对比检验图像采集的准确性和可靠性。

通过细致地控制图像采集过程中的各种因素,我们可以获得高质量的标定图像,为进一步的标定工作奠定坚实基础。接下来,我们将探讨如何使用角点检测技术以及OpenCV中的 findChessboardCorners() 函数来检测标定板上的角点。

4. 角点检测技术和 findChessboardCorners() 函数

4.1 角点检测技术原理

4.1.1 角点检测在标定中的作用

角点检测是计算机视觉领域中一项基础而至关重要的技术。在单目相机标定过程中,角点检测主要应用于标定板图像的处理,用以提取标定板上的特征点,即角点。这些角点是标定过程的关键参考点,因为它们是确定和计算相机内参矩阵和畸变系数的基础。高精度的角点定位直接影响到标定结果的质量。另外,角点检测在目标跟踪、图像配准等任务中也非常重要。

4.1.2 角点检测算法的种类和原理

角点检测算法从最初的直接检测法到后来的基于图像强度的检测法,以及基于特征描述子的方法,经历了众多演进。较为知名的算法包括:

  • Harris角点检测算法:通过检测图像局部区域的自相关函数变化来找到角点。
  • Shi-Tomasi算法:在Harris算法基础上增加了一个限制条件,提高了检测的稳定性。
  • FAST角点检测:快速地评估圆形邻域中的像素,来确定是否为角点。

所有这些算法都依赖于图像的局部强度变化模式来检测角点,但是具体实现方法、性能和适用场景有所不同。

4.2 findChessboardCorners() 函数详解

4.2.1 函数的使用方法和参数设置

findChessboardCorners() 是OpenCV库中用于检测棋盘格角点的函数。其基本用法如下:

bool findChessboardCorners(const Mat& image, Size patternSize,
                           vector<Point2f>& corners, int flags);

参数解释:

  • image :输入图像,必须是灰度图。
  • patternSize :标定板格子的尺寸,如8x8棋盘格则为Size(8,8)。
  • corners :检测到的角点数组,会在检测成功后填充。
  • flags :角点检测的可选标志。

4.2.2 高级设置和返回值分析

findChessboardCorners() 还支持高级设置,比如 CALIB_CB_ADAPTIVE_THRESH 标志,该标志允许使用自适应阈值来提高角点检测的鲁棒性。另一个重要的标志是 CALIB_CB_FILTER_QUADS ,它用于过滤错误的角点对,有助于提升检测精度。

函数返回布尔值表示检测是否成功。如果成功, corners 中会填充角点的坐标。在后续的图像处理过程中,还可以使用 cornerSubPix() 函数对检测到的角点进行亚像素级别的精化。

4.3 角点检测的优化策略

4.3.1 精度和速度的平衡技巧

在标定过程中,角点检测的精度和速度需要权衡。提高精度通常意味着要处理更多的图像数据和更复杂的计算,可能会增加处理时间。优化策略包括:

  • 选择合适的角点检测算法和参数,如阈值和邻域大小。
  • 限制处理图像的分辨率,只使用必要的图像区域。
  • 对于高速应用,可以考虑使用GPU加速的角点检测算法。

4.3.2 特殊情况下的角点检测解决方案

在光照条件不均匀、标定板有反射或部分遮挡等特殊情况,角点检测的准确性会受到影响。解决这些特殊情况的策略包括:

  • 使用更鲁棒的角点检测算法,如FAST。
  • 在图像采集前进行光照条件的优化,比如使用均匀光源。
  • 如果可能,手动去除或修正遮挡部分的数据。

通过这些策略的应用,可以在保持高精度的同时提升检测的速度,确保标定过程的顺利进行。

5. 标定矩阵计算和 calibrateCamera() 函数

5.1 标定矩阵计算的数学原理

5.1.1 内参矩阵与畸变系数的计算方法

在相机标定过程中,标定矩阵的计算是核心步骤之一。内参矩阵(Internal Parameters)与畸变系数(Distortion Coefficients)的计算涉及到对图像捕捉的特征点进行数学建模,以此推算出相机镜头和成像平面的几何属性。内参矩阵包含了焦距、主点坐标等信息,而畸变系数则描述了镜头畸变的类型和程度,如径向畸变和切向畸变。

为计算内参矩阵和畸变系数,我们首先需要从标定板采集到的一系列图像中检测出特征点的准确位置。这些特征点(通常是角点)的准确检测是后续计算准确性的关键。基于这些点的位置信息,我们使用最小二乘法等优化技术,求解出内参矩阵和畸变系数。

# 示例代码:计算内参矩阵和畸变系数
import numpy as np
import cv2

# 假设我们已经有了世界坐标系中的点(objectPoints)和图像中的对应点(imagePoints)
objectPoints = np.array([...])  # 3D点的世界坐标
imagePoints = np.array([...])   # 2D点的图像坐标

# 相机内参矩阵和畸变系数的初始估计值
cameraMatrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])
distCoeffs = np.zeros((4,1))  # 假设畸变系数为0开始

# 标定过程
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera([objectPoints], [imagePoints], (width, height), None, None)

# ret表示标定是否成功,mtx和dist分别是内参矩阵和畸变系数

5.1.2 相机模型的构建和意义

相机模型的构建是理解和应用标定矩阵计算的关键。简化的针孔相机模型是其中最常被讨论的,它假设光线经过镜头后会在理想成像平面上形成一个没有畸变的清晰图像。然而实际中,镜头的物理特性会导致图像产生畸变,如径向畸变和切向畸变。

为了补偿这些畸变,我们在标定过程中会对畸变系数进行计算,并将其纳入到模型中,得到一个更符合实际的相机模型。最终得到的标定结果不仅包括内参矩阵和畸变系数,还包括一个经过优化的畸变模型,这个模型对于恢复真实场景几何结构和进行后续的计算机视觉任务至关重要。

5.2 calibrateCamera() 函数使用指南

5.2.1 函数输入输出参数详解

calibrateCamera() 函数是OpenCV库中用于相机标定的核心函数之一,其输入参数主要涉及一系列标定图像中的三维世界坐标点 objectPoints 和对应的二维图像坐标点 imagePoints 。此外,需要提供图像的尺寸以及初始的相机内参矩阵 cameraMatrix 和畸变系数 distCoeffs 作为输入。

函数的输出包括标定是否成功返回的布尔值 ret ,以及重新计算得到的最优相机内参矩阵 cameraMatrix 、畸变系数 distCoeffs 、旋转向量 rvecs 和平移向量 tvecs 。旋转向量和向量平移向量用来描述相机在世界坐标系中的位置和朝向。

# 示例代码:调用calibrateCamera()函数
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
    objectPoints=[objPoints],  # 世界坐标点集列表
    imagePoints=[imgPoints],  # 图像坐标点集列表
    imageSize=gray.shape[::-1],  # 图像尺寸
    cameraMatrix=None,  # 初始内参矩阵,None表示自动计算
    distCoeffs=None  # 初始畸变系数,None表示自动计算
)

5.2.2 高级用法和性能调优

除了标准的使用方式, calibrateCamera() 函数还支持多种高级用法,以适应不同的标定需求和场景。通过设置 flags 参数,可以启用更复杂的标定过程,比如使用RANSAC或LM优化算法对标定结果进行优化。性能调优的关键在于合理选择初始估计值、控制迭代次数以及设定合适的阈值来提高计算的准确性和效率。

例如,使用 cv2.CALIB_FIX_PRINCIPAL_POINT 标志可以固定焦距值,不对其进行优化; cv2.CALIB_FIX_ASPECT_RATIO 允许固定径向畸变的两个参数,简化优化过程。这些标志的选择取决于对特定场景的理解以及实际标定中的需求。

# 示例代码:使用高级标志进行标定
flags = (cv2.CALIB_FIX_PRINCIPAL_POINT + cv2.CALIB_FIX_ASPECT_RATIO)
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
    objectPoints=[objPoints],
    imagePoints=[imgPoints],
    imageSize=gray.shape[::-1],
    flags=flags
)

5.3 标定矩阵的评估与优化

5.3.1 标定精度的评估方法

标定精度的评估主要通过比较标定图像中特征点的实际测量位置与计算出的世界坐标位置之间的差异来进行。通常使用重投影误差(Reprojection Error)作为标定精度的评估标准。重投影误差反映了图像中的点被投影回世界坐标系中的位置与实际测量位置的差距。

通过对 calibrateCamera() 函数返回的误差 ret 进行检查,可以得到整体的均方根误差(RMS),数值越小表示标定精度越高。此外,可以单独分析每一幅标定图像的误差,找出误差较大的图像,并针对性地进行优化。

# 计算重投影误差
total_error = 0
for i in range(len(objPoints)):
    imgPoints2, _ = cv2.projectPoints(objPoints[i], rvecs[i], tvecs[i], mtx, dist)
    error = cv2.norm(imagePoints[i], imgPoints2, cv2.NORM_L2)/len(imgPoints2)
    total_error += error
mean_error = total_error/len(objPoints)

5.3.2 如何通过优化提升标定结果

优化标定结果的方法包括提高图像采集的质量、增加或减少标定点、调整初始参数等。高质量的图像采集是标定精度的基础,包括光照均匀、特征点清晰可见等。增加标定点可以提高标定的精度,但同时也会增加计算量。

调整初始参数,如内参矩阵的估计值,特别是焦距值,可以提高优化过程的稳定性和收敛速度。此外,使用更高级的优化算法(如Levenberg-Marquardt算法)和合理设置收敛条件,可以进一步提升标定结果的精度。

# 使用Levenberg-Marquardt算法进行优化
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6)
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
    objectPoints=[objPoints], 
    imagePoints=[imgPoints],
    imageSize=gray.shape[::-1], 
    cameraMatrix=initial_camera_matrix, 
    distCoeffs=initial_dist_coeffs, 
    flags=cv2.CALIB_USE_INTRINSIC_GUESS,
    criteria=criteria
)

通过上述方法的综合运用和优化,可以在很大程度上提升相机标定的精度和可靠性,为进一步的视觉处理和分析任务提供坚实的基础。

6. 图像校正与 undistort() 函数的使用

6.1 图像畸变校正的基本概念

6.1.1 畸变产生的原因和分类

在相机拍摄过程中,由于镜头的设计与制造缺陷,以及光线在镜头内的传播方式,图像往往会受到几何畸变的影响。畸变分为两大类:径向畸变和切向畸变。

径向畸变是指由于镜头同心度不够导致的图像失真,通常表现为图像边缘的直线出现弯曲。而切向畸变则通常是由于镜头与成像平面不垂直引起的,它会使图像出现枕形或桶形失真。

6.1.2 校正畸变的重要性

未经校正的畸变图像会影响后续的图像处理工作,如特征提取、目标识别等。因此,准确校正畸变对于提高图像质量、保证测量精度具有重要意义。校正后可以得到畸变最小化的、更接近现实世界的图像。

6.2 undistort() 函数的实践应用

6.2.1 函数使用方法及参数说明

undistort() 函数是 OpenCV 中用于图像校正的关键函数。该函数的原型如下:

dst = cv2.undistort(src, cameraMatrix, distCoeffs[, dst[, newCameraMatrix]])

其中, src 是输入图像, cameraMatrix distCoeffs 分别是之前通过标定过程获得的内参矩阵和畸变系数。 dst 是校正后的输出图像, newCameraMatrix 是可选参数,用于指定输出图像的内参矩阵。

6.2.2 校正效果的视觉检查

为了检查校正效果,可以对比校正前后的图像。理想情况下,校正后的图像中的直线应该保持笔直,角度和形状应该和现实中的物体相匹配。可以使用以下代码片段对图像进行校正并显示效果:

import cv2
import numpy as np

# 读取含有畸变的图像
img = cv2.imread('distorted_image.jpg')

# 获取内参矩阵和畸变系数(假设之前已通过标定过程获得)
camera_matrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])
dist_coeffs = np.array([k1, k2, p1, p2, k3])  # 假设畸变系数已知

# 对图像进行校正
h, w = img.shape[:2]
new_camera_matrix, roi = cv2.getOptimalNewCameraMatrix(camera_matrix, dist_coeffs, (w, h), 1, (w, h))

# 校正图像
undistorted_img = cv2.undistort(img, camera_matrix, dist_coeffs, None, new_camera_matrix)

# 裁剪图像
x, y, w, h = roi
undistorted_img = undistorted_img[y:y+h, x:x+w]

# 显示校正前后对比
cv2.imshow('Distorted Image', img)
cv2.imshow('Undistorted Image', undistorted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

6.3 校正后图像质量的评估

6.3.1 校正质量的评价标准

图像校正后质量的评估通常涉及以下几个方面:

  • 畸变程度的减小:直线是否已经变得笔直。
  • 对比度保持:图像的清晰度和颜色对比度是否保持一致。
  • 缺失像素处理:校正过程中是否有像素丢失,特别是在图像边缘。
  • 细节保留:校正过程中是否保留了图像的细节特征。

6.3.2 如何处理校正后的图像问题

若校正后的图像边缘出现黑色边框,可以通过调整 ROI 剪裁参数来解决。若图像存在明显的模糊或细节损失,可能需要重新进行标定,以获取更精确的相机内参和畸变系数。

另外,如果在校正过程中出现无法校正的局部畸变,可以考虑使用局部校正技术或者针对特定区域进行额外的处理。

对于处理后的图像,可以运用一些图像质量评估工具(如 PSNR, SSIM 等)进行数值化评估,并与未校正图像进行对比分析,以确保校正达到了预期的效果。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:单目相机标定是计算机视觉的基础,它校正图像失真并获取相机参数。OpenCV提供了便捷工具集,实现相机内参、外参计算和图像校正。该流程包括准备标定板、图像采集、角点检测、标定矩阵计算、图像校正、以及验证和应用标定结果。压缩包提供了一个完整的标定流程案例,通过实际代码和结果,学习者可以掌握单目相机标定的应用。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐