4、matlab双目相机标定实验
1、双目相机标定原理及流程
双目相机标定是将双目相机系统的内外参数计算出来,从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等),以便将双目相机捕获的图像转换为三维空间坐标。
双目相机标定的流程如下:
-
准备标定板:使用一个已知的平面标定板,其中包含一些已知的特征点,如网格点或棋盘格,用于计算相机的内部参数。
-
拍摄图像:在不同的位置和角度下,使用双目相机对标定板进行拍摄,同时确保标定板的特征点能够被双目相机同时看到。
-
提取特征点:在拍摄的图像中,使用特定的图像处理算法(如角点检测算法)提取出标定板上的特征点。
-
标定内部参数:通过对标定板上的特征点进行分析,计算出相机的内部参数(如焦距、主点、畸变等)。
-
标定外部参数:利用双目相机拍摄的多幅图像,通过特定的三维重建算法计算相机的外部参数(如相机位置、朝向等)。
-
优化参数:通过优化算法,对计算出的内外参数进行调整,以提高标定的精度和稳定性。
最终的标定结果包括每个摄像头的内部参数和外部参数,这些参数可以用于双目视觉中的立体匹配和三维重建。
2、实验准备
1)棋盘格
棋盘格简介:
棋盘格是一种特定设计的方格图案,通常由黑色和白色交替的正方形组成,这些正方形按照固定的规律排列。棋盘格通常用于机器视觉和计算机视觉中的图像标定和姿态估计。在图像处理中,棋盘格的特定结构和规则排列使其成为一种常用的标定工具。
在双目相机标定中,棋盘格用作标定板,摄像机拍摄棋盘格图案时能够从图像中获取到棋盘格上的特征点,这些特征点可以用于计算相机的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等)。
棋盘格简单、易识别,其规则的排列和特征点的明显性使其成为图像处理和计算机视觉中常用的标定工具。
棋盘格规格:20mm*20mm棋盘格,角点7*11
A4纸打印棋盘格(链接PDF文件)

2)双目相机采集棋盘格图像
双目相机简介
双目相机是一种由两个摄像头组成的相机系统,它们通常被放置在一定的距离之间,模拟人类双眼的视觉系统。通过同时拍摄同一场景的两幅图像,双目相机可以实现立体成像,从而让计算机能够进行深度感知、立体视觉和三维重建。
双目相机的工作原理是利用每个摄像头捕捉到的图像之间的视差(即同一点在两个图像中的像素位置差异),根据视差信息计算目标物体的深度信息。在双目成像中,两个摄像头之间的距离(基线长度)越大,捕捉到的视差范围也会增大,从而可以获得更精确的深度信息。
双目相机在机器视觉、智能驾驶、机器人技术、医疗影像等领域有着广泛的应用。它可以提供更加准确的环境信息,帮助计算机进行空间感知、障碍物检测、跟踪和导航等任务。另外,双目相机也被广泛用于计算机视觉中的立体匹配、景深测量、虚拟现实和增强现实等领域。
双目相机采集图像展示:
左侧为彩色相机采集图像/右侧为红外相机采集图像


3、实验过程
实验简介
在MATLAB中进行双目相机标定通常会使用相机标定工具箱(Camera Calibration Toolbox),可以方便的进行内外参数的标定。下面是在MATLAB中使用相机标定工具箱进行双目相机标定的原理和流程:
-
安装标定工具箱:首先需要安装MATLAB相机标定工具箱,你可以从MathWorks官网下载安装。
-
数据采集:准备一组双目相机的图像数据,包括对准的标定板(如棋盘格)的多幅图像。确保拍摄时两个摄像头能够同时看到标定板。
-
特征点提取:使用相机标定工具箱中的函数,提取出标定板上的特征点。
-
标定内部参数:利用提取出的特征点数据,使用标定工具箱的函数计算出双目相机的内部参数,例如焦距、主点坐标、畸变系数等。
-
标定外部参数:通过提供的图像数据和已知的标定板参数,计算双目相机的外部参数,例如相机位置、朝向等。
-
结果优化:对计算出的内外参数进行优化,以提高标定的精度和稳定性。
-
输出结果:最后输出标定结果,内部参数和外部参数将被保存在MATLAB中供后续使用。
总之,使用MATLAB中的相机标定工具箱可以比较方便地进行双目相机的标定工作,得到双目相机的内部参数和外部参数,为后续的双目视觉应用提供基础支持。
1)APP
点击app

点击下拉

点击双目相机标定模块

2)数据导入
点击添加图片

棋盘格边长参数

左右相机视图导入文件夹

3)角点识别
角点识别过程

角点识别结果

4)畸变参数设置
径向畸变和切向畸变参数设置

5)标定
点击标定按钮

6)标定结果
初始结果

粗大误差剔除(1/2/3/4为出大误差),鼠标右键删除

剔除后效果

4、实验结果
结果简介
双目相机标定的结果通常包括以下内容:
-
内部参数:
- 标定矩阵(Intrinsic Matrix):包括主点坐标、焦距等信息,描述了相机的内部几何特性。
- 畸变系数:描述了镜头畸变(径向畸变和切向畸变)的参数,用于纠正图像畸变。
- 透镜畸变纠正参数(在某些情况下):描述了透镜的畸变情况,用于在后期处理中纠正透镜畸变。
-
外部参数:
- 外部旋转矩阵:描述相机坐标系与世界坐标系之间的旋转关系。
- 外部平移向量:描述相机坐标系相对于世界坐标系的平移关系。
-
重投影误差:即标定结果在实际图像上的投影误差,通过重投影误差可以评估标定的准确性。
-
立体匹配算法参数(在某些情况下):一些双目相机标定工具箱也会提供立体匹配算法的参数,例如视差范围、最小视差等。
-
标定板的尺寸和特征点提取参数:包括标定板的尺寸或特征点的提取方法,有助于在实际使用中保持标定的准确性。
这些标定结果可以帮助后续双目视觉应用中进行立体匹配、三维重建、深度估计等任务。通过正确的标定,可以提高双目相机的测量精度和稳定性,进而提升整个双目视觉系统的性能。
1)视图效果

2)数据分析

5、实验资源
1)棋盘格
https://download.csdn.net/download/XU157303764/89354653
2)双目相机标定图像数据
https://download.csdn.net/download/XU157303764/89354868
3)标定结果数据
https://download.csdn.net/download/XU157303764/89354866
6、总结
在MATLAB中进行双目相机标定实验的总结如下:
-
数据采集:首先需要准备一组双目相机的图像数据,确保图像中包含对准标定板(如棋盘格)的多幅图像。
-
安装标定工具箱:安装MATLAB相机标定工具箱,这样可以方便地使用其中的函数进行双目相机的内外参数标定。
-
特征点提取:使用相机标定工具箱的函数提取标定板上的特征点,常用的特征点提取方法包括角点检测、直线检测等。
-
标定内部参数:利用特征点数据计算双目相机的内部参数,如标定矩阵和畸变系数,从而纠正图像的畸变。
-
标定外部参数:根据已知的标定板参数和图像数据,计算双目相机的外部参数,包括外部旋转矩阵和外部平移向量。
-
结果分析:对标定结果进行分析和评估,如计算重投影误差,并根据误差值调整标定参数以提高标定的准确性。
-
保存结果:最后将标定得到的内外参数保存起来,以备后续使用。可以将结果保存为MATLAB格式文件,以便在其他MATLAB程序中调用。
-
实验总结:总结实验过程中遇到的问题和解决方法,比如标定板的放置方式、图像采集的参数设置等。
通过以上步骤,可以在MATLAB中完成双目相机的标定工作,并得到双目相机的内部参数和外部参数,为后续的双目视觉应用提供基础支持。标定的准确性和稳定性对于后续的立体匹配、三维重建等任务至关重要,因此在实验过程中需要尽可能确保数据的准确性和完整性。
相关文章:
4、matlab双目相机标定实验
1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来,从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等)…...
Oracle 数据库表和视图 的操作
1. 命令方式操作数据库(采用SQL*Plus) 1.1 创建表 1.1.1 基本语法格式 CREATE TABLE[<用户方案名>]<表名> (<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]<列名2> <数据类型> [DEFAULT <默认…...
美国ARC与延锋安全合作,推动汽车安全气囊技术新突破
在汽车安全领域,安全气囊作为关键被动安全配置,对于保障乘客生命安全至关重要。随着汽车工业的快速发展和科技创新的持续推进,安全气囊技术的升级与革新显得尤为重要。2022年10月25日,美国ARC公司与延锋安全携手合作,共…...
Docker:centos79-docker-compose安装记录
1.安装环境:centos7.9 x86 2.安装最新版: [rootlocalhost ~]# curl -fsSL get.docker.com -o get-docker.sh [rootlocalhost ~]# sh get-docker.sh # Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8desh -c yum in…...
相交链表(Leetcode)
题目分析: . - 力扣(LeetCode) 相交链表:首先我想到的第一个思路是:如图可知,A和B链表存在长度差,从左边一起遍历链表不好找交点,那我们就从后面开始找,但是这是单链表&…...
建造者模式(大话设计模式)C/C++版本
建造者模式 C 参考:https://www.cnblogs.com/Galesaur-wcy/p/15907863.html #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;// Product Class,产品类,由多个…...
【地质灾害监测实现有效预警,44人提前安全转移】
6月13日14时,国信华源地质灾害监测预警系统提前精准预警,安全转移10户44人。 该滑坡隐患点通过科学部署国信华源裂缝计、倾角加速度计、雨量计、预警广播等自动化、智能化监测预警设备,实现了对隐患点裂缝、位移、降雨量等关键要素的实时动态…...
Ruby 数据库访问 - DBI 教程
Ruby 数据库访问 - DBI 教程 本文将详细介绍如何使用 Ruby 的 DBI(Database Interface)库来访问和操作数据库。DBI 是 Ruby 语言中一个常用的数据库接口库,它提供了一套统一的接口来访问不同的数据库系统,如 MySQL、PostgreSQL、SQLite 等。通过本文的学习,您将掌握如何使…...
Linux环境搭建之CentOS7(包含静态IP配置)
🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:虚拟机 🌠 首发时间:2024年6月22日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 安装VMw…...
Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统
灵越16P-7630系统包: 链接:https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码:jyqq 灵越16P-7640系统包: 链接:https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码:y9qj 戴尔原装WIN11系…...
.NET C# 装箱与拆箱
.NET C# 装箱与拆箱 目录 .NET C# 装箱与拆箱1 装箱 (Boxing)1.1 过程:1.2 示例: 2 拆箱 (Unboxing)2.1 过程:2.2 示例: 3 性能影响4 性能优化4.1 使用泛型集合示例: 4.2 使用Nullable<T>示例: 4.3 避…...
springboot与flowable(9):候选人组
act_id_xxx相关表存储了所有用户和组的数据。 一、维护用户信息 Autowiredprivate IdentityService identityService;/*** 维护用户*/Testvoid createUser() {User user identityService.newUser("zhangsan");user.setEmail("zhangsanqq.com");user.setF…...
为什么要选择华为 HCIE-Security 课程?
2020 年我国网络安全市场规模达到 680 亿元,同比增长 25%。随着对网络安全的愈加重视及布局,市场规模将持续扩大。 近年来,随着“云大物工移智”等新兴技术的快速发展和普及应用,数字化已经融入社会经济生活的方方面面,…...
C++之std::queue::emplace
std::queue::emplace 是 C STL 中 std::queue 容器的成员函数,它用于在队列的末尾就地构造一个新元素。这个函数类似于 std::queue::push,但是 emplace 允许你通过传递参数来构造元素,而不需要显式地创建一个元素对象。 理解 std::queue::em…...
Vue3 - 在项目中使用vue-i18n不生效的问题
检查和配置 Vue I18n 确保你已经正确安装了Vue I18n并且配置了组合API模式。 安装 Vue I18n npm install vue-i18nnext配置 i18n.js import { createI18n } from vue-i18n; import messages from ./messages;const i18n createI18n({legacy: false, // 使用组合 API 模式l…...
Day 44 Ansible自动化运维
Ansible自动化运维 几种常用运维工具比较 Puppet —基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱ruby SaltStack —基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YAML,使得配置脚本更简单 Ansible —基于 …...
Excel/WPS《超级处理器》功能介绍与安装下载
超级处理器是基于Excel或WPS开发的一款插件,拥有近300个功能,非常简单高效的处理表格数据,安装即可使用。 点击此处:超i处理器安装下载 Excel菜单,显示如下图所示: WPS菜单显示,如下图所示&am…...
U-Net for Image Segmentation
1.Unet for Image Segmentation 笔记来源:使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割) 1.1 DoubleConv (Conv2dBatchNorm2dReLU) import torch import torch.nn as nn import torch.nn.functional as F# nn.Sequential 按照类定义的顺序去执行模型&…...
POI导入带有合并单元格的excel,demo实例,直接可以运行
直接可以运行 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.s…...
【C语言】解决C语言报错:Use-After-Free
文章目录 简介什么是Use-After-FreeUse-After-Free的常见原因如何检测和调试Use-After-Free解决Use-After-Free的最佳实践详细实例解析示例1:释放内存后未将指针置为NULL示例2:多次释放同一指针示例3:全局或静态指针被释放后继续使用示例4&am…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
