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

        上图中,提到了世界坐标系在张正友标定法中的设计,可以理解为将世界坐标系的原点放到了棋盘格左上角点的位置,并且棋盘格平面上所有点的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.xdnf.cn/news/6834.html

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

相关文章

【课程总结】day34:多模态大模型之ViT模型、CLIP模型论文阅读理解

前言 在【课程总结】day31:多模态大模型初步了解一文中,我们对多模态大模型的基本原理有了初步了解,本章内容将通过论文阅读理解,更进一步理解多模态大模型中所涉及的 Vit 架构、Transformer在视觉应用的理念以及 Clip图像与文本…

国药准字生发产品有哪些?这几款不错

头秃不知道怎么选的朋友们看这,基本上市面上火的育发精华我都用了个遍了,陆陆续续也花了有大几w了,都是真金白银总结出来的,所以必须要给掉发人分享一些真正好用的育发产品,大家可以根据自己实际情况来选择。 1. 露卡菲…

golang分布式缓存项目 Day 1

注:该项目原作者:https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO(First In, First Out)先进先出 原理&…

Android View事件分发

目录 1.什么是View事件分发? 2.事件的类型 3.事件的发生 4.事件分发的方法 4.1 dispatchTouchEvent() 4.2 onTouchEvent() 4.3 onInterceptTouchEvent() 5.滑动冲突 5.1 外部拦截法 5.2内部拦截法 6.onTouch的执行高于onClick 7. onTouch()和onTouchEve…

Elasticsearch常用接口_添加数据

插入es数据:_index/_type/ POST { "tabTitle": "森图表_test", "chtTabTitle": "森图表_test", "status": 0 } 注意:Elasticsearch 6.0.0及更高版本中,索引只能包含一个映射类型

springboot养老院信息管理系统-计算机设计毕业源码30958

目 录 摘要 1绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据新增流程 2.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…

OkHttp网络请求框架

添加依赖 在 build.gradle 文件中添加 OkHttp 依赖: dependencies {implementation("com.squareup.okhttp3:okhttp:4.10.0") }使用OkHttp发起GET请求 同步请求 public class MainActivity extends AppCompatActivity {// Used to load the okhttptes…

基于sealos部署的集群部署dashboard

1、下载yaml文件进行部署 rootmaster-1:~# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml2、修改service的访问模式 rootmaster-1:~# vim recommended.yaml kind: Service apiVersion: v1 metadata:labels:k8s-app: kube…

手机贴膜气泡识别组件定位图像分割系统:快速图像识别

手机贴膜气泡识别组件定位图像分割系统源码&数据集分享 [yolov8-seg-C2f-Parc&yolov8-seg-KernelWarehouse等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge …

C语言 | Leetcode C语言题解之第538题把二叉搜索树转换为累加树

题目: 题解: struct TreeNode* getSuccessor(struct TreeNode* node) {struct TreeNode* succ node->right;while (succ->left ! NULL && succ->left ! node) {succ succ->left;}return succ; }struct TreeNode* convertBST(stru…

SQL--查询连续三天登录数据详解

问题: 现有用户登录记录表,请查询出用户连续三天登录的所有数据记录 id dt1 2024-04-25 1 2024-04-26 1 2024-04-27 1 2024-04-28 1 2024-04-30 1 2024-05-01 1 2024-05-02 1 2024-05-04 1 2024-05-05 2 20…

数据结构和算法-01背包问题01-认识01背包

0-1背包 什么是0-1背包问题? [0-1背包问题Knapsack Problem] 假设有一个背包,可承载的最大重量是W(kg), 现在有n个物品,每个物品的重量不等, 并且不可分割。我们期待选择几件物品放入背包中,在不超过背包最…

go-carbon 和 gorm 优雅处理数据库日期时间

一、简介 (一) carbon carbon 是一个简单、语义化、开发人员友好的 golang 时间包。carbon 提供了丰富的日期和时间处理功能,使得日期和时间操作更加简单和直观。 (二) gorm gorm 是一个用于 Go 语言的 ORM(对象关系映射)框架。它提供了简…

Java 抽象类 详解

文章目录 一、概述1.1、什么是抽象类1.2、定义抽象类1.3、什么是抽象方法1.4、定义抽象方法 二、特点2.1、抽象类的特点2.1.1、抽象类不可以实例化对象2.1.2、抽象类必须要被继承2.1.3、抽象类的子类2.1.4、抽象类的成员 2.2、抽象方法的特点2.2.1、只能有方法声明,…

A20红色革命文物征集管理系统

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

SpringBoot Java教学工具:创新教育体验

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

VisionPro —— CogIPOneImgeTool工具详解

CogIPOneImageTool工具主要用来对单张图像进行算法处理操作 CogIPOneImgeTool简介 CogIPOneImageTool 工具可完成高斯平滑、高通滤波和图像量化等基本图像处理操作。Image Processing One Image 工具编辑控件为此工具提供图形用户界面。 Image Processing Operations (图像处…

WPF+MVVM案例实战与特效(二十四)- 粒子字体效果实现

文章目录 1、案例效果2、案例实现1、文件创建2.代码实现3、界面与功能代码3、总结1、案例效果 提示:这里可以添加本文要记录的大概内容: 2、案例实现 1、文件创建 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 ParticleWindow.xaml,在 Models 文件夹下创建粒子…

推荐一款功能强大的FTP和云应用程序:FTPie Pro

FTPie Pro是一款集多种云存储和 FTP 客户端功能于一体的先进文件管理工具。通过支持Google Drive、Dropbox和OneDrive等主流云存储服务,用户可以在一个平台上高效管理文件。同时,它兼容 FTP、FTPS 和 SFTP 等多种文件传输协议,确保文件传输的…

playwright学习记录1

playwright 简介:Playwright 是由微软推出的一款用于 Web 应用自动化测试的开源框架,它支持多浏览器、多平台,具有强大的 API 和现代化的自动化功能,适用于跨浏览器的 UI 测试。Playwright 支持所有现代渲染引擎,包括…