三维测量与建模笔记 - 3.3 张正友标定法

news2024/11/9 2:12:51

        上图中,提到了世界坐标系在张正友标定法中的设计,可以理解为将世界坐标系的原点放到了棋盘格左上角点的位置,并且棋盘格平面上所有点的Z为0,将Z规定为0的话,可以简化掉一个维度(列向量r3)。去掉列向量r3的影响后,实际可以得到如下红框关系:

        从这两个红框可以看出,去掉了Z这个维度影响后,整个运算相当于是从一个2D平面到另一个2D平面的变换,因此我们可以联想到先找到一个单应矩阵H。通过这个单应矩阵H建立和相机内外参的关联,当采集到足够多的点后,就能得到对应标定参数了。

        上图中,将H矩阵写成列向量形式后,可以看到h_1 = \lambda Kr_1, h_2 = \lambda Kr_2, 对这两个等式,左右两边分别乘上\frac{1}{\lambda}K^{-1}, 可以得到r1, r2的表达式:

        r1和r2是正交的,因此可以得到两个约束条件:

        将r1,r2用K,h1, h2表示出来就是:

        替换后的这两个等式,只包含单应矩阵的列向量和K(相机内参),h1, h2可以通过已知的世界坐标系的点和相机观测到的像素点得到单应矩阵后拿到,因此求解出K就能得到相机内参。

        矩阵B定义出来相当于是一个中间变量,用来指代两个等式中重复的元素K^{-T}K^{-1},它是一个对称矩阵,矩阵大小是3x3,因此只需要用一个6维向量b就能表示出来。

        对于单应矩阵H,列向量h1,h2表示为

        这里的h_{i1},h_{i2},h_{i3}对应列向量的三个元素值。通过计算h_i^{T}B h_j,可以得到如下等式

         有了这个等式,就可以回到之前所说的两个约束条件得到的等式中去了。用B替换K^{-T}K^{-1}(严格意义上B=\lambda K^{-T} K^{-1}),可以得到h_1^T Bh_2 = 0, 以及h_1^T Bh_1 = h_2^T Bh_2, 用上面的等式,将h_i^{T}B h_j替换成V_{ij}b的形式,整理后可得:

         上面的等式其实是一个2x6的矩阵(V)和一个6x1的向量(b)组成的线性方程组。每采集一副影像,就能得到两个方程。因此有n幅图像就有2n个等式。

        b向量里的值是我们要求解的,总共有6个元素(6个未知数),因此理想情况下,3张图像就能得到6个方程,就能求解出内参矩阵了。对于Vb=0的求解,有两种方式:

        得到内参后,外参计算可以按照下面的等式:

        r_1 = \lambda K^{-1}h_1

        r_2 = \lambda K^{-1}h_2

        r_3 = r_1 \times r_2

        t = \lambda K^{-1}h3

        重投影误差的示意图如下:

         重投影误差可以理解为,我们找到了投影矩阵M,也有实际观测到的世界坐标系下的X点,以及在相平面上实际观测到的x点。通过将X点使用M进行变换,可以得到一个计算点\widehat{x},算出它和观测点x之间的差异,这个差异就是重投影误差。重投影误差是有实际物理意义的,我们如果找到了使得重投影误差最小的内外参数,就能保证我们得到的标定结果是最优的。

        实际案例:

        如上图,在拍摄到的图像中找到棋盘格的角点,然后将检测到的角点的世界坐标都算出来,记录拍摄图像上的角点的实际位置,然后将相关信息传给校准的API,得到校准结果,校准结果示例如下:

关于张正友标定法原理详细推导,可以参考如下链接:

(超详细)张正友标定法原理及公式推导_(超详细)张正友标定法原理及公式推导-CSDN博客文章浏览阅读2.3w次,点赞138次,收藏489次。(超详细)张氏标定法原理及公式推导文章目录(超详细)张氏标定法原理及公式推导0. 前言1. 带着问题阅读2. 基本公式与符号定义2.1 符号表示2.2 模型平面(棋盘格)及其图像之间得单应性矩阵3. 单应性矩阵估计3.1 简单介绍3.2 性质3.3 求解3.4 实际优化估计3.4.1 求解优化初值3.4.2 极大似然估计4. 相机内参估计4.1 相机内参的约束条件4.2 相机内参的封闭解4.2.1 B=A−TA−1B=A^{-T}A^{-1}B=A−TA−1的具体表达式4.2.2 向量bbb的求解4.2_(超详细)张正友标定法原理及公式推导https://blog.csdn.net/qq_40918859/article/details/123858949

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

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

相关文章

【解决办法】无法使用右键“通过VSCode打开文件夹”

个人博客:苏三有春的博客 前言 作者的编程环境为VScode,工作时常使用VScode打开整个工程文件夹。如果先打开VScode再从VScode中选择文件夹打开效率太慢,作者一般使用的方式是右键文件夹,直接选择"通过code打开文件夹"…

推荐一款ETCD桌面客户端——Etcd Workbench

Etcd Workbench 我相信很多人在开始管理ETCD的时候都去搜了Etcd客户端工具,然后找到了官方的Etcd Manager,但用完之后发现它并不好用,还不支持多连接和代码格式化,并且已经好几年不更新了,于是市面上就有了好多其他客…

Docker配置及简单应用

谈论/理解 Docker 的常用核心部分,以下皆在 Ubuntu 操作系统下进行 1 国内源安装 Docker-ce 1.1 配置 Linux 内核流量转发 因为docker和宿主机的端口映射,本质是内核的流量转发功能,所以要对其进行配置 1.1.1 未配置流量转发 如果没有配置流…

(十二)JavaWeb后端开发——MySQL数据库

目录 1.数据库概述 2.MyQSL 3.数据库设计 DDL 4.MySQL常见数据类型 5.DML 1.数据库概述 数据库:DataBase(DB),是存储和管理数据的仓库 数据库管理系统:DataBase ManagementSystem(DBMS),操纵和管理数据库的大型软件 SQL&a…

fastadmin后台列表根据所选中的行统计指定字段|fastadmin点击checkbox或反选统计某个字段的值

当选中对应行时,统计选中行的用户注册数和用户点击数。 此项功能需要有 点击全选触发事件、点击反选触发事件、勾选某一行触发事件、反选某一行触发事件,用到fastadmin自带的表格事件功能,参考:https://doc.fastadmin.net/doc/19…

stm32使用串口DMA实现数据的收发

前言 DMA的作用就是帮助CPU来传输数据,从而使CPU去完成更重要的任务,不浪费CPU的时间。 一、配置stm32cubeMX 这两个全添加上。参数配置一般默认即可 代码部分 只需要把上期文章里的HAL_UART_Transmit_IT(&huart2,DATE,2); 全都改为HAL_UART_Tra…

轨迹规划中优化预测:学习多个初始解的优化器

Abstract 在许多应用中,如机器人控制、自动驾驶和投资组合管理,需要在严格的运行时间限制下连续地解决相似的优化问题。在这种情况下,局部优化方法的性能对初始解的质量非常敏感:不良的初始化可能会导致收敛缓慢或得到次优解。为…

05 SQL炼金术:深入探索与实战优化

文章目录 SQL炼金术:深入探索与实战优化一、SQL解析与执行计划1.1 获取执行计划1.2 解读执行计划 二、统计信息与执行上下文2.1 收集统计信息2.2 执行上下文 三、SQL优化工具与实战3.1 SQL Profile3.2 Hint3.3 Plan Baselines3.4 实战优化示例 SQL炼金术&#xff1a…

JS封装随机生成一个颜色值工具函数

本文给大家带来的是封装的一个随机生成一个颜色值的工具函数。案例中提供了4个不同的调用函数,但实现的功能本质上都是一样的,开箱即用,随调随用。 //方法一 function getRandomColor() { //随机颜色return #${Math.floor(Math.random() * …

CESS 正式加入政府区块链协会 (GBA) ,出席 Blockchain Infrastructure 大会

北京时间 11 月 6 日,特朗普赢得 2024 年美国总统大选。与此同时,我们很高兴地宣布,CESS 已正式加入政府区块链协会 (GBA)。GBA 是一个全球性协会,致力于将区块链专业人士汇聚在一起,共同推动区块链技术在政府、金融和…

ARXML汽车可扩展标记性语言规范讲解

ARXML: Automotive Extensible Markup Language (汽车可扩展标记语言) xmlns: Xml name space (xml 命名空间) xsd: Xml Schema Definition (xml 架构定义) 1、XML与HTML的区别,可扩展。 可扩展,主要是…

数据结构_哈夫曼树及其应用

构造算法的例子 构造算法的实现 初始化&#xff0c;置权值 int i, m, s1, s2;m 2 * n - 1;for (i 1; i < m; i){HT[i].lch 0;HT[i].rch 0;HT[i].parent 0;}for (i 1; i < n; i){cin >> HT[i].weight;}合并结点 // 创建哈夫曼树for (i n 1; i < m; i){s1…

基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发

在中医针灸的传统治疗中&#xff0c;穴位取穴的精确度对于治疗效果至关重要。然而&#xff0c;传统的定位方法&#xff0c;如体表标志法、骨度折量法和指寸法&#xff0c;由于观察角度、个体差异&#xff08;如人体姿态和皮肤纹理&#xff09;以及环境因素的干扰&#xff0c;往…

esp32学习:利用虫洞ESP32开发板,快速实现无线图传

我们的虫洞开发板&#xff0c;能够完美运行esp who AI代码&#xff0c;所以实现无线图传那是非常容易的&#xff0c;我们先看看examples目录&#xff1a; 里面有比较多的web例程&#xff0c;在这些例程下&#xff0c;稍作修改&#xff0c;就可以快速实现我的图传无线功能&#…

力扣排序455题(分发饼干)

假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。 但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i],这是能 让孩子们满足胃口的饼干的最小尺寸;并且每块饼 干j&#xff0c;都有一个尺寸 s[j]。如果 s[j]> g[i]&…

【论文复现】基于深度学习的手势识别算法

本文所涉及所有资源均在这里可获取。 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐、摄影的一位博主。 &#x1f4d7;本文收录于论文复现系列&#xff0c;大家有兴趣的可以看一看…

ChatGPT键盘快捷键(按ctrl + /呼出)

文章目录 ChatGPT键盘快捷键- 打开新聊天: Ctrl Shift O- 聚焦聊天输入: Shift Esc- 复制最后一个代码块: Ctrl Shift ;- 复制最后一个回复: Ctrl Shift C- 设置自定义指令: Ctrl Shift I- 切换边栏: Ctrl Shift S- 删除聊天: Ctrl Shift ⌫- 显示快捷方式: Ctrl …

超详细:Vue入门

Vue(发音为 /vjuː/&#xff0c;类似 view)是近些年比较流行的前端框架之一&#xff0c;和 React、Angular 并称为前端三大框架。其中 Vue 简单易学的特点成为国内主流&#xff0c;很多公司已经把它列为一 个前端开发人员必须要掌握的技术点了。 Vue 简介 Vue2.x官网 Vue3.x …

鸿蒙next打包流程

目录 下载团结引擎 添加开源鸿蒙打包支持 打包报错 路径问题 安装DevEcoStudio 可以在DevEcoStudio进行打包hap和app 包结构 没法直接用previewer运行 真机运行和测试需要配置签名,DevEcoStudio可以自动配置, 模拟器安装hap提示报错 安装成功,但无法打开 团结1.3版本新增工具…

你是我的映射,我是你的值:C++ map 中的心灵共鸣

文章目录 map的概念一、map的使用1. 插入删除相关1&#xff09;插入(1) 插入语法(1) 插入语法 2&#xff09;删除 二. map的遍历三、map重载operator[]四、小试&#x1f402;&#x1f52a;1. 前K个高频单词2. 单词识别 总结 map的概念 map是key_value的模型&#xff1a; 一棵树…