惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Scott Helme
Scott Helme
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
S
Securelist
Help Net Security
Help Net Security
T
Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
D
Docker
Simon Willison's Weblog
Simon Willison's Weblog
Microsoft Azure Blog
Microsoft Azure Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
V
Vulnerabilities – Threatpost
I
Intezer
Spread Privacy
Spread Privacy
WordPress大学
WordPress大学
C
Cisco Blogs
有赞技术团队
有赞技术团队
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
S
Schneier on Security
Know Your Adversary
Know Your Adversary
C
CERT Recently Published Vulnerability Notes
Y
Y Combinator Blog
S
SegmentFault 最新的问题
G
GRAHAM CLULEY
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LINUX DO - 热门话题
K
Kaspersky official blog
P
Proofpoint News Feed
P
Palo Alto Networks Blog
Cyberwarzone
Cyberwarzone
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
GbyAI
GbyAI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tor Project blog
NISL@THU
NISL@THU
L
LangChain Blog
B
Blog
aimingoo的专栏
aimingoo的专栏
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
雷峰网
雷峰网
The Cloudflare Blog
宝玉的分享
宝玉的分享
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - 流逝的轻风

3D点云到2D点云投影图像具体方法 nmcli修改ip地址 nginx 交叉编译报错问题解决(转) 图片转视频并推流源码,已通过测试 Hadoop的安装,图文并茂的安装过程 线程占用等待释放解决方案 ffmpeg重新编码示例 编译ffmpeg以支持rtmp, librtmp not found问题 瑞芯微rk3399实现硬编硬解编译rkmpp到ffmpeg Openc4.8QT中编译异常处理 yolov8模型转onnx MIPS编译opencv-自用 docker启动ubuntu,并映射端口 mips交叉编译相关库文件,主要做以后参考 OPENSSL1.1交叉编译编译异常处理 mips交叉编译ffmpeg 关于/proc/id/status中内容的描述 Linux GPIO控制方法 A7-NXP-6G2C修改分驱大小
单目相机 MATLAB 参数标定详解
流逝的轻风 · 2025-10-31 · via 博客园 - 流逝的轻风

     在计算机视觉、机器人导航、三维重建等应用中,相机标定是获取精确图像信息的关键第一步。通过标定,我们可以获得相机的内参矩阵(如焦距、主点坐标)和畸变系数(如径向畸变、切向畸变),从而对图像进行校正,并实现从像素坐标到真实世界坐标的准确映射。

     本文将详细介绍如何使用 MATLAB 2025b 中自带的 Camera Calibrator App 对单目相机进行参数标定,涵盖从准备标定图像到导出标定结果的完整流程。

一、准备工作

1. 标定板选择

推荐使用标准的 棋盘格标定板(Checkerboard),因其角点特征清晰、易于自动检测。需提前测量并记录:

  • 棋盘格横向格数(如 9)
  • 纵向格数(如 6)
  • 每个方格的实际物理尺寸(如 25 mm)

⚠️ 注意:格子数量指的是“内角点”数量,而非方格总数。例如,一个 10×7 的棋盘有 9×6 个内角点。

2. 图像采集要求

  • 采集 15~30 张不同角度、不同距离的标定板图像;
  • 确保标定板在图像中覆盖大部分区域,且尽量出现在图像边缘;
  • 避免模糊、反光或遮挡;
  • 建议在固定光照条件下拍摄,以减少噪声干扰。

二、MATLAB 标定步骤

步骤 1:启动 Camera Calibrator 工具

打开 MATLAB 2025b,依次点击顶部菜单栏:

image

App → Image Processing and Computer Vision → Camera Calibrator

即可进入相机标定界面。

image

 2. 进入 Camera Calibrator

image

步骤 2:导入标定图像

点击 “Add Images” 按钮,选择已准备好的标定图像文件夹。
系统会弹出对话框,要求输入棋盘格参数:

  • Number of squares (width):横向内角点数(如 9)
  • Number of squares (height):纵向内角点数(如 6)
  • Square size:方格边长(单位:毫米或米,需统一)

✅ 建议单位使用 米(m),便于后续与雷达、IMU 等传感器单位对齐。

若部分图像无法检测到完整棋盘格,MATLAB 会自动跳过并提示,可手动剔除低质量图像。

image

步骤 3:配置标定选项(可选但重要)

参数根据你的真实的标定板修改为正确的参数

image

image

image

点击 “Calibration Options -> Radial Distortion(径向畸变)”,可调整以下参数:

这是镜头最常见的畸变类型,主要由透镜曲率引起,表现为图像中心与边缘之间的非线性拉伸或压缩。

  • 2 Coefficients:推荐用于普通相机,适用于大多数镜头;
  • 3 Coefficients:仅推荐用于大视场角镜头(如鱼眼镜头)
  • Skew:通常勾选 (现代相机传感器像素正交), 描述图像坐标系中 X 轴与 Y 轴是否垂直
  • Tangential Distortion:绝大多数情况建议勾选,因为即使是高质量相机也可能存在微小装配误差

image

步骤 4:执行标定

点击 “Calibrate” 按钮,MATLAB 将自动计算相机内参和畸变参数,并显示重投影误差(Reprojection Errors)。
理想情况下,平均误差应小于 0.5 像素。若误差过大,需检查图像质量或补充更多视角。

image

步骤 5:可视化与验证

  • 查看 “Reprojection Errors” 图表,识别异常图像;
  • 使用 “Show Undistorted” 功能预览去畸变后的图像效果;
  • 可导出标定报告(PDF)用于存档。

image

步骤 6:导出标定参数

点击 “Export Camera Parameters”,将结果保存为 cameraParams 对象(cameraParameters 类型)。
该对象包含以下关键属性:

image

image

image

7.读取参数

cameraParams.IntrinsicMatrix;

image

cameraParams.RadialDistortion;

image

cameraParams.TangentialDistortion;

image

三、常见问题与建议

问题原因解决方案
无法检测棋盘格 光照不足、模糊、角度过大 重新拍摄,确保清晰且正面
重投影误差高 图像数量少、分布不均 增加多角度图像,覆盖图像四角
标定结果不稳定 标定板尺寸输入错误 仔细核对方格物理尺寸
去畸变后图像裁剪严重 畸变过大或视场角广 考虑使用鱼眼模型(需用 fisheyeCalibrator

结语

相机标定虽为基础步骤,却是精度保障的基石。借助 MATLAB 强大的工具箱,我们能高效、可靠地完成这一过程。建议将标定参数妥善保存,并定期对同一相机重新标定(尤其在环境温度变化大或镜头被触碰后)。