news 2026/7/8 10:03:16

<span class=“js_title_inner“>一文详解相机内参标定,如何规避三大典型误区?</span>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<span class=“js_title_inner“>一文详解相机内参标定,如何规避三大典型误区?</span>

大家好!最近在使用HandBot-S1采集的数据进行相机内参标定的过程中,踩过坑也收获不少。总结以了几个方面的内容,希望能帮你少走弯路,高效搞定标定!

一. 相机内参是什么?

内参(Intrinsics):就是相机自己的视力参数——它决定了三维世界中的点,在拍成照片时会落在图像的哪个位置。

如图所示一个空间三维点(X,Y,Z),投影到那一个像素坐标(U,V)上,就是由相机的内参所决定。

二. 常见的相机模型与畸变模型

相机类型

投影模型(Projection)

畸变模型(Distortion)

单目 / 双目(普通镜头)

pinhole(针孔)
omni(全向,较少用)
radtan(径向+切向)
equidistant(等距,适用于广角)

鱼眼相机

pinhole

+equidistant
或直接使用fisheye模型(需注意Kalibr实际仍用pinhole + equidistant表示鱼眼)

推荐equidistant(更适合大视场角)

:Kalibr没有独立的fisheye投影模型,而是通过 pinhole 投影 + equidistant 畸变来建模鱼眼相机。这是其与OpenCV的fisheye模型的主要区别。

三. 如何进行内参标定?

3.1 准备标定板

这里我们使用Apriltag标定板,参数文件详解如下。

target_type: 'aprilgrid' #标定板类型:使用AprilTag阵列(AprilGrid)
tagCols: 4 # 列有4个AprilTag
tagRows: 6 # 行有6个AprilTag
tagSize: 0.07 # 单个AprilTag的边长tagSpacing: 0.3 # 白色间隔与tagSize的比值
codeOffset: 0 # 第一个AprilTag的ID起始编号

3.2 采集数据

这里我们用HandBot-S1录制采集数据,需要注意:标定板的位姿尽量丰富一些,使其出现在相机画面的各个位置;保持标定板清晰、无运动模糊。

3.3 运行标定命令

单目相机标定

kalibr_calibrate_cameras --bag data1.bag --topics /image_right --models pinhole-equidistant --target april_4x6.yaml

双目相机标定

kalibr_calibrate_cameras --bag data2.bag --topics /image_right /image_left --models pinhole-equidistant pinhole-equidistant --target april_4x6.yaml

注:输出包含两个相机各自的内参,以及它们之间的相外参。

鱼眼相机标定(单目或双目)

kalibr_calibrate_cameras --bag fisheye_data.bag --topics /image_raw --models pinhole-equidistant --target april_4x6.yaml

关键:必须使用equidistant畸变模型,否则标定结果会很差。

3.4 输出结果说明

程序会输出三个文件:

.pdf:PDF版本的结果报告,包含重投影误差和标定姿态分布。
.txt:以文本文件储存的标定结果。
.yaml:以YAML格式储存的标定结果。

3.5 标定质量分析

  • 看重投影误差:单目时重投影误差在1pix以内。

  • 看标定板位姿是否丰富:尽量充满图像的所有区域。

:重投影误差 > 1pixel时重新采集数据,避免模糊、遮挡、低纹理区域。

三. 新手如何避开常犯的三大典型误区?

平面不足——只有二维,没有三维:仅对一个静止平面进行多次拍摄,若该平面本身未发生空间姿态变化(即仅有平移、无旋转,尤其缺乏Z方向的高度变化),那么所有图像在几何上提供的信息本质上是冗余的——看似拍了20张,实则只相当于一张图像的约束。

解决方案至少从3~5个不同的空间位置进行拍摄;其中应包含 至少2~3次明显的高度变化(Z方向位移);平面不能仅做平移,必须引入旋转或倾斜。这样才能确保多视角图像提供真正独立的三维信息,支撑可靠的重建或标定。

姿态单一(没有旋转,就没有几何信息):如果标定过程中相机或标定板的姿态缺乏有效旋转——例如仅轻微倾斜、仅沿单一方向移动,或所有姿态几乎共面——那么各图像之间的几何差异极小。算法难以从中提取足够的三维约束,导致标定结果不稳定或精度低下。

解决方案: 覆盖X、Y、Z三个旋转轴,避免仅绕单一轴转动; 每个轴上的旋转角度建议不小于 10°–20°,以产生显著的视角变化; 姿态分布应尽量均匀,避免全部集中在同一空间象限(如只在左上前方),以提升标定的鲁棒性和参数可观测性。只有这样,才能为标定算法提供丰富且独立的几何信息。

角度过小:当旋转角度过小时,从数学和几何的角度来看,这些微小的变化几乎等同于没有旋转。这意味着算法无法有效捕捉到足够的空间变换信息,导致标定或重建的精度严重下降。

解决方案: 平面倾角应不小于15°,以保证有足够的几何变换; 图像中的角点需展示出明显的透视变化,这是评估平面是否正确旋转的重要指标之一,透视变化越大,提供的三维信息越丰富。

采购HandBot-S1

采购方式如下:

扫码查看手持扫描仪HandBot-S1产品详情
扫码添加客服微信, 或者联系:13451707958 咨询更多
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 14:42:05

3 款宝藏小软件,工作效率直接起飞!

打工人的日常,不是在跟繁琐的文件打交道,就是在处理各种复杂任务的路上。今天给大家带来几款超实用电脑小软件,巧妙运用,操作电脑的效率直接火箭式飙升,让工作轻松不费力! Quicklook 快速预览神器 Quick…

作者头像 李华
网站建设 2026/7/1 14:41:54

Android开发工程师职位深度解析与面试指南

神通科技集团股份有限公司 安卓开发工程师(消费电子) 职位信息 1. 主导和参与项目开发的软件需求分析、架构评估设计、详细设计、代码开发和性能优化,以及技术文档的编写等工作,保证软件开发进度和质量满足项目要求; 2. 完成软件模块的需求整理和软件设计,验证及修正测试…

作者头像 李华
网站建设 2026/7/5 11:45:25

fastapi异步处理模板

from fastapi import FastAPIfrom pydantic import BaseModel# 1. 初始化 FastAPI 应用实例app FastAPI(title"字符串处理接口", # 接口文档标题description"接收单个字符串,返回处理后的字符串", # 接口文档描述version"1.0.0" …

作者头像 李华
网站建设 2026/7/1 14:41:59

上海肺结节就医指南:如何为肺结节手术寻找精准方案

温馨提示:本文内容基于公开医疗信息整理,不作为具体诊疗建议。具体的随访方案或手术安排请咨询专业医生。面对体检报告上的“结节”字样,许多人第一反应是担忧。其实,肺结节并不等于肺癌,科学的评估与个性化的手术选择…

作者头像 李华
网站建设 2026/7/6 18:07:01

<span class=“js_title_inner“>rk3568移植WebRTC AudioProcessing</span>

前言:大家好,我是飞一样的成长,今天这篇文章主要想分享音频3A的内容。在之前有网友找我怎么移植原生的webrtc到rk3568/rk3588上,当时我自己也没有移植过,后面折腾了一个礼拜才搞定,当时遇到的最大问题&…

作者头像 李华