用Matlab对单目相机参数的标定步骤(保姆级教程)

   前言   

    在图像测量及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。
  在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。相机参数的标定是非常关键的环节,其标定结果的精度将直接影响相机工作产生结果的准确性。本文详细介绍了利用Matlab中的单目相机标定工具来对单目相机的标定过程。

第一步:准备棋盘格并打印在A4纸上

      在相机标定之前,需要进行图像采集,采集对象是棋盘格,要打印在一张A4纸上。我采用了边长为25mm大小的棋盘格。

3d38dc08a4834837acc4c6a6b9c74d4b.png

第二步:用相机采集棋盘格照片

      首先将打印好的棋盘格照片贴在平整的白墙上,再将相机连接到电脑,打开相机,点击切换相机按钮,调出外接相机,对准棋盘格采集照片(50张左右),并保存到文件夹中。

942371ca06c84c55b7ea0280bcf53c47.jpeg

92bd4a1767d04f53a89af06fce18b84f.png

第三步:打开Matlab中的单目相机标定工具

      双击打开Matlab,再点击左上角的“APP”。

43dd63b875ca4b16b3f65f0074ee0066.png

      再点开下拉箭头找到“Camera Calibrator”并打开。

6c57f403f8774812bfa984192b6d9a57.png

ae69fdbb384f4340afcbbad678328964.png

第四步:导入拍摄的所有照片

3900aedfaf1046a68fef31fc3ea6504e.png

      选择存放照片的文件夹,全选导入。

47b63d36b61243f3832ce65dceab7852.png

      选择棋盘格小格宽度(根据你实际打印的来,我的是25mm)。

bf9ad01abc77471ca0cdaf2e8219b358.png

5468f2e39efe4b30898fd3c8be680a12.png

第五步:开始标定

      点击“Calibrate”,开始标定。

7d14858c44fb4b9899fe52c253bf5635.png

第六步:剔除误差比较大的照片

      我这里就删除重投影误差值在0.5以上的几张图片。

重投影误差树状图解析:(Reprojection Error)

纵轴(Mean Error in Pixels):
表示重投影误差的平均值,单位为像素。
误差越小,说明标定结果越精确。
横轴(Images)
表示用于标定的每一张图像编号。
蓝色柱状条:
每个柱状条表示一张标定图像的重投影误差(均值)。
重投影误差是指图像上实际检测到的角点位置与根据标定参数重新投影得到的角点位置之间的差距。
数值越小,说明该图像对于标定的误差越小,标定的精度越高。
虚线(Overall Mean Error):
图中的虚线表示总体平均重投影误差,标记为 0.39 pixels。虚线的位置表示所有图像的重投影误差的平均值。这是一个评估标定总体精度的重要指标。
图中关键点分析
大多数图像的误差集中在 0.2 到 0.5 像素范围内:这说明标定过程中,大多数图像的重投影误差较小,标定效果较为理想。
误差大可能产生的原因:角点检测受干扰、图像拍摄角度问题、光照条件变化,或棋盘格在该图像中存在畸变等。

第七步:导出数据

      点击绿色对号“Export Camera Parameters”进行导出。

      然后选择默认,点击确定。

第八步:返回工作区查看数据

      双击“Camera Params”,查看数据。

      具体参数如下图所示:

    以上就是在Matlab中标定单目相机的步骤,后续还会补充完善,若有错误的地方,请在评论区留言斧正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/907039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【后端高阶面经:架构篇】46、分布式架构:如何应对高并发的用户请求

一、架构设计原则:构建可扩展的系统基石 在分布式系统中,高并发场景对架构设计提出了极高要求。 分层解耦与模块化是应对复杂业务的核心策略,通过将系统划分为客户端、CDN/边缘节点、API网关、微服务集群、缓存层和数据库层等多个层次,实现各模块的独立演进与维护。 1.1 …

SQL每日一题(5)

前言:五更!五更琉璃!不对!是,五更佩可! 原始数据: new_hires reasonother_column1other_column2校园招聘信息 11社会招聘信息 22内部推荐信息 33猎头推荐信息 44校园招聘信息 55社会招聘信息…

Kafka Kraft模式集群 + ssl

文章目录 启用集群资源规划准备证书创建相关文件夹配置文件启动各Kafka节点 故障转移测试spring boot集成 启用集群 配置集群时关键就是提前梳理好需要的网络资源,完成对应server.properties文件的配置。在执行前先把这些梳理好,可以方便后面的配置&…

watchEffect

在处理复杂异步逻辑时,Vue 3 的 watchEffect 相比传统的 watch 具有以下优势: 1. 自动追踪依赖 watchEffect 会自动收集其回调中使用的所有响应式依赖,无需手动指定监听源: import { ref, watchEffect } from vue;const count …

Linux系统平均负载与top、uptime命令详解

介绍 在Linux系统运维中,系统平均负载是一个重要的性能指标。通过 top和 uptime命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决系统性能问题。本文将详细介绍Linux系统平均负载的概念及其计算方法,并深入解析 top和…

前端配置nginx代理

一、定义静态文件的路径的两种方式 1. root 指令 (1)作用 指定文件系统的 基础路径,location 的 URI 会 追加到该路径后 形成完整路径。 (2)语法 location /uri/ {root /path/to/files; } (3&#xf…

语音识别技术在人工智能中的应用

姓名:成杰 学号:21021210653 学院:电子工程学院 【嵌牛导读】 应用语音智能这项识别技术是为了使计算机可以听懂人类的语言,并执行人类的某项操作。现阶段这项技术已经成为人工智能领域的重点研究方向和实现人机语音交互的…

uniapp实现大视频文件上传-- 阿里云oss直传方式 - app、H5、微信小程序

之前的项目文件上传比较慢,使用预签名方式上传H5正常,微信小程序和app使用axios时出现了各种报错,配置完后还是不行。所以换一种oss直传方式。 找到一个 实现了的 参考:https://blog.csdn.net/qq_44860866/article/details/129670188

【Java学习笔记】抽象类

抽象类 引入关键字:abstract 应用场景:当子类中共有的部分 / 特性可以放到抽象类中 1. 通过子类的方法重写实现不同的功能 2. 编写一个方法把共有的部分放入其中,在该方法中调用抽象方法(动态绑定机制) 3. 便可以实…

EPT(Efficient Prompt Tuning)方法,旨在解决提示调优(Prompt Tuning)中效率与准确性平衡和跨任务一致性的问题

EPT(Efficient Prompt Tuning)方法,旨在解决提示调优(Prompt Tuning)中效率与准确性平衡和跨任务一致性的问题 一、核心原理:分解提示与多空间投影 1. 提示分解:用低秩矩阵压缩长提示 传统问题: 长提示(如100个token)精度高但训练慢,短提示(如20个token)速度快但…

深入剖析Java中的伪共享:原理、检测与解决方案

在高性能Java应用的开发中,尤其是多线程环境下,开发者往往会关注锁竞争、线程调度等显性问题,但有一个隐蔽的性能杀手——伪共享(False Sharing)​,却容易被忽视。本文将通过原理分析、代码案例与实战工具&…

JMeter 教程:响应断言

目录 JMeter 教程:响应断言的简单介绍【轻松上手】 ✅ 什么是响应断言? 📌 使用场景示例 🛠️ 添加响应断言步骤 1. 选中 HTTP 请求 → 右键 → Add → Assertions → Response Assertion 2. 设置断言内容: ✅ …

11.11 TypedDict与Pydantic实战:Python高效状态管理秘籍

使用 TypedDict 和 Pydantic 管理状态 关键词:LangGraph 状态管理, TypedDict 类型化字典, Pydantic 数据模型, 状态持久化, 多轮对话设计 1. 状态管理的核心挑战 在复杂 AI Agent 系统中,状态管理需要解决三个关键问题: #mermaid-svg-0sX3763L7VP2RvuX {font-family:&quo…

ThreadLocal线程本地变量在dubbo服务使用时候遇到的一个坑

我昨天遇到一个问题,就是我springboot项目里面有一个提供代办服务审核的dubbo接口,这个接口给房源项目调用,但是碰到一个问题就是,房源项目每天凌晨5点会查询满足条件过期的数据,然后调用我这边的代办审核dubbo接口&am…

[Java实战]Spring Boot整合达梦数据库连接池配置(三十四)

[Java实战]Spring Boot整合达梦数据库连接池配置(三十四) 一、HikariCP连接池配置(默认) 1. 基础配置(application.yml) spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://…

【MySQL】08.视图

视图就是一个由查询到的内容定义的虚拟表。它和真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。 1. 基本使用 mysql> select * from user; -------------------- | id | age | name …

4 通道1250MSPS‐16bit DAC 回放板

简介 4 通道1250MSPS‐16bit DAC 回放板 是一款4 路转换速率最高为1250MSPS 的DAC 回放板, DAC 位数16bit;板卡支持触发输出/触发输入;DAC 采样时钟源支持内部参考时 钟、外部参考时钟、外部采样时钟三种方式,可通过SPI 总线实现时…

C/C++---类型转换运算符

在C中,类型转换运算符(Type Conversion Operator)允许类对象在需要时自动转换为其他类型。这是一种特殊的成员函数,能够增强类的灵活性和交互性。 1. 基本语法 类型转换运算符的声明格式为: operator 目标类型() co…

大模型Agent

手撕 Agent 1、功能描述 设计一个 Agent,自动选择使用以下工具回答用户的问题: 查看目录下的文件基于给定的文档回答用户问题查看与分析 Excel 文件撰写文档调用 Email 客户端发邮件2、演示用例 实验中使用三个文档演示 Agent 的能力 ./data|__2023年8月-9月销售记录.xlsx…

超临界机组协调控制系统建模项目开发笔记

超临界机组协调控制系统建模项目开发笔记 项目概述 本项目基于两篇论文的方法,对超临界机组协调控制系统进行数据驱动建模。主要使用LSTMTransformer混合架构,实现对主蒸汽压力(Pst)、分离器蒸汽焓值(hm)和机组负荷(Ne)的预测。同时,通过消…