资讯动态

Halcon相机标定全流程:内参外参、标定板与RMSE避坑

发布时间:2026/10/29 18:36:49 来源:尧图企业网站定制
简介这份中文标定章节手册面向计算机视觉工程师、Halcon使用者及机器视觉学习者聚焦英文版第六章Calibration的直译与无删减整理用于厘清相机内外参标定、畸变补偿与手眼/多相机设置中的概念和流程。压缩包仅含1个PDF文件约813KB便于检索与离线查阅。已有362人学习具备一定参考热度。内容围绕标定目标、校准板与标记提取、标定数据模型构建、calibrate_cameras执行及RMSE评估展开并说明区域扫描相机的内部参数、投影与反投影、校正和自标定等模块同时覆盖单目、双目、多视图与手眼标定场景。读者可理解Halcon标定算子间的调用关系、参数含义与结果检查思路也能对照校准板选择、图像采集注意事项和3D相机模型限制为视觉检测项目的精度提升与排错提供中文参考。1. 相机标定到底在干什么一台相机的眼睛为什么要先上课家里那台电子秤如果每次都多称 0.3 公斤聪明人的做法不是每次称完手动减 0.3而是先弄清楚它偏多少、往哪个方向偏、偏得是不是均匀把这笔账算清楚之后所有称重才有意义。相机标定就是给相机算这笔账用一块尺寸完全已知的板子当标准答案让相机去拍再反推它把三维世界投影成像素时到底用了什么规则、偏在哪里。Halcon 参考手册英文直译中文版第六章 Calibration 讲的就是这套东西它是计算机视觉里所有几何测量的地基——相机标定没做对后面视觉检测算法算出来的尺寸、角度、位置都只是一串好看的错数字。2. 为什么标定必须先有一块已知答案的板子标定本质上是解一道反问题。正问题是已知相机模型的全部参数把一个三维点投影到图像上算出它落在第几行第几列。反问题才是标定要做的事——已知一堆三维点和它们在图像里的像素坐标反推出那套参数。既然是反推那已知的那一半就必须真的已知而且必须足够精确否则求出来的参数只是在拟合一个错误的答案。校准对象Calibration Object就扮演这个已知的角色。它是一块表面覆盖着多个校准标记的板子每个标记在板子自身坐标系里的三维坐标由厂家随板提供写在描述文件里。标定时算法在图像中找到这些标记的像素位置与描述文件里的三维坐标一一配对每一对点都能列出方程点越多、分布越广方程越充分参数就解得越稳。这也是为什么一块板子能决定整场标定的上限。2.1 两种标准校准板六边形排列和矩形排列差在哪手册里明确提到经销商可提供两种不同排列的标准校准板它们的定位方式、可见性要求和最少拍摄张数都不一样混用会直接报错。第一种是六边形排列标记的校准板对应生成算子是 create_caltab。它的定位靠一种特殊的取景器图案finder pattern若干六边形标记组成一组其中一部分标记上带点状孔。这种设计的好处是宽容度高——图像里只要有一个取景器图案可见就能定位板子板子不必完整出现在画面里。如果同时能看到两个取景器图案算法还能判断板子是不是被镜像拍摄了一旦发现镜像HDevelop 会返回一个明确的错误而不是悄悄算出一堆废参数。它的坐标系原点位于第一个取景器图案中心标记的中心z 轴垂直于板面x 轴向右y 轴向下。第二种是矩形排列标记的校准板对应 gen_caltab。它的取景器图案由外围框架和三角形角标记构成因此整块板子必须在图像里完完整整地可见缺一个角就没法定位。它的坐标系原点位于板面正中间坐标轴方向与上面一致。这两类板子的差别不只是外观手册特别提示使用较早的 camera_calibration 算子时六边形排列的板子并不适用要走 calibrate_cameras 这条链路。拍摄张数的门槛也不同。六边形板至少需要 6 张图像其中至少 4 张是倾斜拍摄的矩形板至少需要 15 张。这个差距来自约束来源的不同——六边形板允许只拍局部单张图能提供的定位信息相对独立矩形板依赖整块框架完成定位单张图的可用约束更依赖整板完整可见这个前提所以需要更多张来凑够约束。数字是手册给死的下限实际拍摄通常要多拍几张留余量。2.2 一组合格图像要满足什么从 30 到 45 度从 20 像素到 100 灰度板子买对了只是开始图像拍砸了照样白搭。手册把要求分成三类每一类背后都有一个明确的原因。相机设置上三样东西在采集过程中不能变。光圈不能变因为标定算的是相机 镜头 采集卡这个固定组合的投影特性光圈一动进光锥角变了投影关系就变了——校正完成之后再调光圈必须重新标定没有后悔药。相机位置不能变因为外参描述的就是这套设备相对世界坐标系的站位位置一动之前算的外参全部作废。对焦不能变也就是焦距锁定图像必须清晰对焦物体之间的过渡要清楚可辨虚焦会让标记的中心提取产生系统性偏移。板子的摆放上覆盖和倾斜是两个关键词。一组图像里视场的每一个部分至少要被板子覆盖一次板子铺满整幅图像也可以。更关键的是倾斜图像集里必须包含板子以大约 30 到 45 度向不同方向倾斜的照片。原因在手册最后一节说得很直白——如果所有图像里板子彼此平行特别是全部位于同一平面那么六个外部参数加上焦距就无法同时唯一确定焦距和板子到相机的距离会互相耦合算出一组看起来能拟合、实际没有物理意义的解。如果景深有限实在做不到推荐角度那就尽量往陡了倾斜别躺平。图像属性上有几条硬红线。每个标记在校准图像中的直径至少要 20 像素手册用了至关重要这个词因为标记太小中心提取的亚像素精度撑不住。板子明暗区域之间的对比度至少要 100 灰度值按字节图像算。为了避免过曝亮部灰度值不要超过 240尤其是标记附近不能曝。为了保证照明均匀亮部灰度值的波动范围不应超过 45反光和阴影都要避开。这几条不是苛刻它们共同保证一件事标记的像素坐标提得准。而标定的全部信息就来自这些坐标。提示板子不能反着拍。玻璃材质的校准板如果从背面成像标记是镜像的这种图像进不了优化只会污染结果。2.3 为什么自己打印的板子撑不起高精度很多人第一反应是描述文件不就是一个文本吗我拿打印机打一张贴到硬板上不就行了。手册对此的态度很明确——自打印的校准对象通常不够精确不能用于高精度应用。原因不难想。打印机的定位精度、墨滴扩散会让标记的实际尺寸和名义尺寸差出几十微米纸张受潮会拱起平面度一破标记的 z 坐标就全错了贴在什么基材上、贴得平不平又是一层误差。这些误差不会显示在结果里它们会安安静静地渗进重投影残差让你以为标定做完了其实只是把板子的变形学进了相机参数。手册也留了口子可以使用任意物体做标定唯一的要求是这个物体具有能在图像中鲁棒检测到的特征点并且这些点的三维世界坐标是高精度的。反过来读这句话就很清楚——能不能用取决于三维坐标有多准而不取决于是不是官方板。对普通的面扫单目设置来说买一块带描述文件的标准板是省掉一大串扯皮的最短路径。3. 内部参数与外部参数一份相机体检报告的两半相机参数被切成两半这个划分不是人为的分类癖而是因为它们回答两个完全不同的问题。内部参数回答这台相机自己是什么样——传感器像元多大、镜头焦距多少、主点偏在哪、畸变有多严重。外部参数回答拍这张图的时候它站在哪儿、朝向哪边。前者只要设备不换、光圈不动就是一套固定值后者每换一个拍摄位置就换一套。搞混这两者后面所有的调试都会变成玄学。3.1 内部参数焦距、比例因子与主点分别在描述什么面扫相机按类型不同有 9 到 16 个内部参数手册里带星号的那些是固定的算法不会去估计它们。这个星号不是随便标的每一个都对应一处数学上解不出来的耦合。Focus焦距只对在镜头物方一侧做透视投影的镜头有意义初始值取所用镜头的标称焦距比如 0.008 米。手册还特意提了一句术语问题焦距这个词严格来说只在物距无穷远时才准确其他情况其实是像距但为了简单起见统一叫焦距。这种坦白挺难得也提醒你别拿初中的物理公式硬套。Magnification放大倍率是远心镜头的对应物等于图像尺寸除以物体尺寸初始值取标称值比如 0.2。远心镜头在物方做的是平行投影没有焦距这个概念可用所以换成了放大倍率。Sx、Sy比例因子是传感器上两个相邻像元之间的水平和垂直距离本质上描述的是像元尺寸。大多数情况下图像信号是同步采样的Sy 由传感器尺寸直接决定不需要通过标定去估计所以它带星号。这里有个坑射影相机用针孔模型描述时焦距、Sx、Sy 三者无法同时确定算法选择固定 Sy远心镜头同理放大倍率、Sx、Sy 也无法同时确定还是固定 Sy。对于像侧远心的倾斜镜头焦距、Sx、Sy 加上倾斜参数 Tilt 和 Rot 也不能同时定于是除了 Sy 之外Sx 也一并固定。注意如果图像做过次采样Sx、Sy 的数值会变大而 Cx、Cy、ImageWidth、ImageHeight 会变小。改之前先确认采样方式别拿原始分辨率的值硬套。Cx、Cy主点是图像主点也就是径向畸变的中心分别对应列坐标和行坐标初始值用图像宽度和高度的一半。ImageWidth、ImageHeight是采样后图像的宽高。这两个值看起来只是记录一下实际上它们参与了从米制坐标到像素坐标的最后一步换算填错了整幅图都会系统性偏移。线扫相机的内部参数是 12 或 16 个结构类似但有两处不同Sx 和 Sy 都带星号线扫里 Sx 与焦距或放大倍率的耦合更紧Sy 在整个标定过程中只以 pv -Sy·Cy 的形式出现所以也被固定并且多出 Vx、Vy、Vz 三个运动矢量分量。3.2 畸变系数一个 Kappa 和五个系数的分工畸变模型有两种参数数量差别很大。分割模型division model只用一个参数 Kappa 来模拟径向透镜畸变单位是 m⁻²初始值取 0.0。它的参数表长这样[area_scan_division, Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]。多项式模型polynomial model用五个参数K1、K2、K3 描述径向畸变P1、P2 描述离心畸变五个系数的初始值都取 0.0。它的参数表是[area_scan_polynomial, Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]。一个参数和五个参数直观感受是后者更强但真实取舍没那么简单。分割模型的方程可以解析地求逆从畸变坐标反算无畸变坐标是一步到位多项式模型没有解析逆必须用数值迭代去反解。投影方向世界到图像两者都快反投影方向图像到世界差距就出来了。这一点会直接影响你后面做测量时的耗时选模型时要一起考虑。3.3 外部参数与运动矢量相机站在哪线扫还要多一组数外部参数一共 6 个描述世界坐标系相对相机坐标系的位置和姿态。相机坐标系的 x 轴和 y 轴分别平行于图像的列轴和行轴z 轴垂直于图像平面。六个量分别是TransX、TransY、TransZ 沿三个轴的平移RotX、RotY、RotZ 绕三个轴的旋转。pose 元组里还多一个元素编码了姿态的表示类型也就是 OrderOfTransform、OrderOfRotation、ViewOfTransform 三个选项的组合具体含义要查 create_pose 的说明。使用标准校准板时世界坐标系就由板子的坐标系定义所以外参的物理含义是板子相对相机在哪。用 find_calib_object 可以一次性拿到所有参数的初始值如果用的是矩形排列的板子find_caltab 加 find_marks_and_pose 这对老组合效果等价。线扫相机要多一组数运动矢量 V (Vx, Vy, Vz)ᵀ单位是米/行在相机坐标系中给出。手册对运动做了三条假设——相机沿直线匀速移动、方向恒定、所有图像的运动相等。这个矢量描述的是相机在动、物体不动换个参考系等价于相机不动、物体沿 -V 方向移动。线扫的相机坐标系定义很讲究原点在投影中心针孔或畸变中心远心z 轴沿光轴y 轴垂直于传感器线且方向选得让运动矢量有正分量x 轴与 y、z 构成右手系。因为每条图像线都是从不同位置成像的每条线理论上都有自己的位姿为了简化从世界坐标到相机坐标的所有转换都只基于第一条图像线的位姿。这里有个必须记住的限制远心线扫相机里Vz 对三维点的图像位置没有影响所以它无法被确定标定过程中不会被优化会保留初始值。手册建议把 Vz 的初值直接设成 0。另外线扫的 Vx、Vy、Vz 初值质量对整个标定成败至关重要初值不够准优化可能直接跑飞。4. 从建模型到出结果标定链路里每一步在防什么错Halcon 的标定不是调一个函数就完事而是先把所有信息塞进一个校准数据模型再让优化器一次性吃下去。这个设计看起来啰嗦实际是在防一类很常见的错误数据来源分散、参数被反复覆盖、出错之后不知道是哪张图哪个参数的问题。把模型当容器每一步写进去的东西都可查、可改、可排除调试才有抓手。4.1 五步搭起标定数据模型每一步在防哪种错手册给出的步骤是五步顺序不能乱。第一步create_calib_data 创建校准数据模型指定安装的相机数量和使用的校准对象数量。这两个数字决定了模型内部预分配多少个槽位后面所有写入都按索引寻址。第二步set_calib_data_cam_param 指定相机类型和初始内部参数。这一步是很多人翻车的地方——相机类型字符串写错整个参数数组的含义就全变了。比如把area_scan_division写成area_scan_polynomialKappa 那个位置就会被当成 K1 读后面算出来的东西毫无意义。第三步set_calib_data_calib_object 指定所有校准对象的描述。描述文件来自板子供应方写明了每个标记的三维坐标是已知答案的载体。第四步find_calib_object 或 set_calib_data_observ_points 收集观测数据也就是提取出的标记图像坐标以及校准对象相对观测相机的粗位姿。粗位姿只是起点不要求准但要求在正确的吸引域里偏太远优化会收敛到错误解。第五步配置校准过程比如用 set_calib_data 把某些相机参数从优化中排除。手册给的例子很典型如果相机 0 的图像传感器单元尺寸已经被精确知道只需要标定其余参数就调用set_calib_data (CalibDataID, camera, 0, excluded_settings, [sx, sy])。排除掉这些参数等于把它们钉死在初值上减少自由度让优化更稳。// HDevelop 风格的标定主流程示意算子名与手册一致参数顺序以实际参考为准 // 1) 建模型1 台相机1 块校准板 create_calib_data (calibration_object, 1, 1, CalibDataID) // 2) 写相机类型与初始内参投影面扫 分割畸变模型 // 依次为 Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight set_calib_data_cam_param (CalibDataID, 0, area_scan_division, \ [0.008, 0.0, 3.45e-6, 3.45e-6, 640.0, 512.0, 1280, 1024]) // 3) 写校准板描述文件名随板子提供内含每个标记的三维坐标 set_calib_data_calib_object (CalibDataID, 0, caltab_30mm.descr) // 4) 逐张图找标记写入观测坐标与粗位姿 for Index : 1 to 8 by 1 read_image (Image, calib_ Index$02d) find_calib_object (Image, CalibDataID, 0, 0, Index, [], []) endfor // 5) 排除已知参数然后执行真正的标定 set_calib_data (CalibDataID, camera, 0, excluded_settings, [sx,sy]) calibrate_cameras (CalibDataID, Error) // 6) 取回结果内参、外参、标准差都在这个模型里 get_calib_data (CalibDataID, camera, 0, params, CameraParam)这段代码的关键不在语法而在两个写死的地方。第二步的初始内参不是随便填的Focus 填镜头标称焦距Kappa 填 0Sx、Sy 填传感器像元尺寸Cx、Cy 填半宽半高——这些值只是优化的起点但因为模型里有耦合项被固定起点偏差会被吸收掉一部分偏差太大则可能收敛到局部极小。第五步的排除列表同样重要它等于告诉优化器这两个数我确定你别动把有限的观测信息集中到真正未知的参数上。4.2 RMSE 与标准差怎么读这次标定靠不靠谱calibrate_cameras 跑完之后模型里不只有参数还有一组用来判断成败的数字后投影的均方根误差RMSE、各内参的标准差和协方差。RMSE 的含义手册说得很清楚它是优化后的重投影误差把校准点按算出来的模型投回图像与它们实际被提取到的图像坐标之间的平均距离单位是像素。单相机标定中0.1 像素左右的误差就说明优化与观测数据拟合得很好——这个量级基本上就是标记坐标提取本身的典型检测误差再往下压意义不大。如果误差明显偏离 0.1 像素比如到了 0.5 甚至更高那这次标定大概率有问题常见原因包括图像质量差、校准图像数量不足、校准板本身不准确。# 用重投影残差快速判断一次标定能不能用 import math # residuals每张图上每个标记的重投影残差单位像素 residuals [0.08, 0.11, 0.09, 0.13, 0.07, 0.10, 0.12, 0.09] rmse math.sqrt(sum(r * r for r in residuals) / len(residuals)) print(round(rmse, 3)) # 单目、图像质量正常时0.1 上下说明拟合良好 # 残差分布比均值更能说明问题某一张图残差明显偏大 # 通常是那张图的板子倾斜不够、曝光不匀或者标记提取偏了 print(max(residuals), min(residuals))标准差和协方差是另一层信息。RMSE 告诉你整体拟合得好不好标准差告诉你每个参数各自有多不确定。一组参数可能整体 RMSE 很漂亮但某个系数的标准差很大说明这个参数其实没被数据约束住只是优化器勉强给了一个值。这种参数拿去用换个场景就会表现得莫名其妙。多相机设置的检查方式另有讲究要参考多视图章节的对应说明。4.3 分割模型与多项式模型快、稳、准之间的取舍两种畸变模型的差别可以列成一张表看。对比项分割模型多项式模型畸变参数Kappa 一个K1、K2、K3、P1、P2 五个建模能力只建模径向畸变径向 离心畸变用高阶项逆畸变计算解析可逆快无解析逆需数值迭代慢少图或覆盖不足时结果通常更稳定容易过拟合结果飘板未覆盖区域相对可控可能模拟失真适用建议默认首选精度不够时再换手册的建议很直接通常应该用分割模型做标定。如果标定精度不够高再改用多项式模型但要注意配套条件——用于多项式模型的标定序列必须提供更好的区域覆盖尤其是后续要测量的那块区域。板子没覆盖到的地方包括图像边界和视场内的空白区畸变可能被模拟得不准确。换句话说多项式模型不是更强的模型而是要求更高的模型给它喂不够的数据它会用五个自由度去拟合噪声。5. 五个最容易踩的易混概念标定里的说法与它真正的意思标定这套东西的名词密度很高Calibration、Rectification、Projection、Pose、Parameters 挤在一章里初学者很容易把相邻的两个概念当成一件事。下面这五组是最常混的每一组都值得单独掰开。5.1 标定不等于校正求参数和掰图像是两件事易混点把 Calibration标定和 Rectification校正当成同一个动作以为跑完标定图像就自动变正了。为什么混中文里校准校正标定三个词日常几乎通用手册里这两个词又挨着出现都在 Calibration 这个大分类下面很容易滑过去。怎么区分标定是求解输出是一组参数——内参、外参、畸变系数。校正是应用输入是原图加这组参数输出是一张去畸变、拉正了的图。标定是量体温校正是吃药。两者还有一层依赖关系校正用的参数必须和拍摄时的物理状态一致所以手册才强调光圈在校准后如果改变相机必须重新标定。你拿一组旧参数去校正新光圈的图像图会变正但正得不对。5.2 分辨率不等于精度像素多不代表测得准易混点认为相机像素越高、图像越大标定精度就越高。为什么混直觉上信息越多结果越准而且高分辨率图像看起来确实更清楚。怎么区分精度取决于两件事——标记中心能被提取到多准以及模型和观测拟合得有多好。手册给的参考值是 RMSE 约 0.1 像素这个数字是像素级的相对量不是绝对尺寸。同样 0.1 像素的残差在像元 3.45 微米的相机上对应约 0.35 微米在像元 6.9 微米的相机上就翻倍。真正卡住精度的是几个工程指标标记直径至少 20 像素、对比度至少 100 灰度、亮部不超过 240、亮部灰度波动不超过 45。这些没做好堆分辨率只是把噪声也一起放大了。5.3 远心镜头和普通镜头能不能定出距离答案不一样易混点拿针孔相机的那套预期去看远心镜头以为标定完就能知道板子离相机多远。为什么混两种镜头都能拍出清晰的图像标定流程也长得几乎一样参数表里差的那几项很容易被忽略。怎么区分远心镜头在物方做的是平行投影标定板和相机之间的距离无法被确定下来所以手册明确说板子位姿的 z 分量在测量结果中被设置为 1 米——这只是一个约定值不是测量值。远心线扫还多一条Vz 无法确定会保留初始值建议初值设 0。针孔相机则有另一头的麻烦如果所有图像里的板子彼此平行尤其全部共面六个外参加焦距无法一起定出来焦距和物距会互相抵消。所以多角度倾斜拍摄对针孔是硬要求对远心同样重要但理由不完全一样。5.4 单目标定和多目、手眼标定不能拿一套思路套到底易混点做完单目标定觉得双目、多视图、手眼标定就是多来几台相机。为什么混名字上都带 Calibration前置步骤建模型、找标记、收集观测也确实一样。怎么区分单目标定要解的是一台相机自己的内参 它相对板子的外参。双目和多视图多了一层约束——相机之间的相对位姿必须由同一批观测同时解出来共用一块板子在不同视角下的观测误差会互相牵制。手眼标定则把机器人末端或基座的坐标系拉了进来要解的是相机坐标系与机器人坐标系之间的固定变换通常需要在多个机器人位姿下拍摄。检查标定是否成功的方法也不完全一样多视图设置要看对应章节的专门说明。用单目的 RMSE 经验值去判断一个手眼标定好不好容易得出错误结论。5.5 模型选错不算大错覆盖不够才是真错易混点把用多项式模型当成精度更高的默认选项觉得五个参数总比一个强。为什么混参数多听起来更精细而且手册确实写了多项式模型能更准确地模拟畸变。怎么区分分割模型的优点是反畸变快、在图像少或视场覆盖不足时结果更稳多项式模型的优点是能建模径向高阶项和离心畸变更准但代价是它会在板子没覆盖的地方乱猜。手册的建议顺序是先用分割模型精度不够再换多项式并且换过去之后必须保证测量区域被标定板充分覆盖。真正的红线不是模型选择而是覆盖范围——视场每个部分至少被板子覆盖一次倾斜角度 30 到 45 度、多方向分布标记直径不低于 20 像素。这些条件满足了分割模型也能给出能用的结果这些条件不满足换什么模型都是在给噪声建模。6. 什么时候值得标、什么时候先别急一条务实的判断线相机标定不是视觉项目的第一道工序而是第一道需要几何精度的工序。这个区别决定了你该不该现在动手。该标的情况很明确要从图像里换算真实尺寸、角度、位置要做亚像素级的定位或测量要用标定结果做去畸变再测量要做双目、多视、手眼这类需要坐标系转换的任务。这些场景里标定是前提跳过它后面的数字都没有物理意义。先别急的情况同样明确。如果任务只是判断有没有是什么——比如产品有无检测、简单分类、颜色判别几何精度根本不进入判据那么先把采集和光照打磨好比急着买一块标定板更划算。如果你手上的图像还没达到门槛——标记在画面里只有十来个像素、明暗对比不到 100 灰度、亮部过曝一片白、光照不均导致同一块板子半边亮半边暗——那么现在标定只会得到一组看着能跑、实则拟合了成像缺陷的参数。手册把 20 像素、100 灰度、240 上限、45 灰度波动这几条摆出来就是在告诉你这些是入场券不是加分项。还有一种情况值得单独说视场没覆盖全就上多项式模型。多项式模型有五个自由度板子只覆盖了画面中间一小块边缘区域的畸变它照样会给你算出一个值只是这个值没有数据支撑。测量点正好落在边缘时误差会以你意想不到的方式出现。你的处境建议动作只做有无/分类检测先不标定优先稳住采集与光照要做尺寸、角度、位置测量必须标定且先确认标记直径与对比度达标图像质量还没过门槛先修采集别用标定去补成像缺陷视场边缘也要测保证板子覆盖每个区域慎用多项式模型远心镜头接受物距不可知别指望外参 z 给出真实距离线扫先把 Vx、Vy、Vz 初值弄准Vz 对远心固定为 0刚接触这块的时候我也犯过先把函数跑通再说的毛病板子往桌上一放连拍八张张张角度差不多跑出来 RMSE 也不难看就以为成了。后来拿这套参数去量一个已知尺寸的工件误差稳定地偏出一个固定值怎么调算法都压不下去。回头翻手册才发现所有板子几乎共面的时候焦距和物距本来就分不开那组参数只是把误差摊平成了一个好看的残差。从那以后我每次标定前都强制走一遍检查板子倾斜角度够不够、每个区域覆盖到没有、亮部有没有曝、标记在图上够不够 20 像素全过了再调 calibrate_cameras。希望这些能帮你少走一遍我走过的弯路完整的手册章节和参数表就在那份资料里需要的时候翻出来对着看。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑