8. 基于消影点进行相机内参(主点)的标定

目录

  • 1. ocam模型
  • 2. 消影点
  • 3. 基于消影点进行相机主点标定
    • 3.1 基于ocam模型的主点标定
  • 感谢大家的阅读。

1. ocam模型

可以参考我的另一篇博客ocam模型。
这里简单提一下ocam模型:
这个模型将中心折反射相机和鱼眼相机统一在一个通用模型下,也称为泰勒模型。它由Scaramuzza等人在2006年开发,其优点是折反射相机和屈光相机都可以用同一个模型来描述,即一个泰勒多项式。
ocam模型投影过程
公式:
反投影公式
在这里插入图片描述
在这里插入图片描述
从上面一系列的公式可以看出,在相机标定成功的情况下,如果我们知道了图像平面上一点的像素,我们可以反投影出一个相机光心指向世界点的方向向量。至于那个 λ \lambda λ,我们反投影后做一个归一化即可。
源码:

function M=cam2world(m, ocam_model)n_points = size(m,2);
ss = ocam_model.ss; % 多项式系数
xc = ocam_model.xc; % 主点
yc = ocam_model.yc; % 主点
width = ocam_model.width;
height = ocam_model.height;
c = ocam_model.c;
d = ocam_model.d;
e = ocam_model.e;A = [c,d;e,1];
T = [xc;yc]*ones(1,n_points);m = A^-1*(m-T); % 图像平面到归一化平面
M = getpoint(ss,m); % 反投影过程
M = normc(M); % normalizes coordinates so that they have unit length (projection onto the unit sphere)function w=getpoint(ss,m)% Given an image point it returns the 3D coordinates of its correspondent optical
% rayw = [m(1,:) ; m(2,:) ; polyval(ss(end:-1:1),sqrt(m(1,:).^2+m(2,:).^2)) ];

2. 消影点

消影点:几何上一条世界直线的消影点由平行于该直线并过相机光心,然后与成像平面的交点。消影点只依赖世界直线的方向,与其位置无关,如果这条直线与成像平面平行,则其消影点位于图像的无穷远处。
在这里插入图片描述
如何求解一条直线的消影点?一组平行线即可确定。如下图:
在这里插入图片描述
真实世界中的两条平行线在图像中会交于一点,那就是消失点,也就是说我们通过两条平行线就可以确定消失点。

3. 基于消影点进行相机主点标定

在这里插入图片描述
在这里插入图片描述
上面第一幅图是棋盘格在相机图像平面上的成像。可见由于棋盘格天然由好几组平行线,比如横向和纵向两组,就可以确定两个消失点。又根据第二幅图,过相机光心和消失点的直线是与世界直线平行的,所以我们可以通过棋盘格得到两条过相机光心和两个消失点的方向向量,这两个向量垂直。利用这个关系可以进行相机内参(主点)的标定。

3.1 基于ocam模型的主点标定

原理如前面所述,通过棋盘格中天然存在的几组垂直关系的平行线可以确定多组互相垂直的(相机光心到消失点)的方向向量,然后构建误差方程(垂直关系的方向向量点积为0)。
在这里插入图片描述
在这里插入图片描述
误差函数中因为包含了反投影过程,所以包含了优化变量相机主点。(这里我已经知道了ocam相机除主点外其他的参数。)

感谢大家的阅读。

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

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

相关文章

Thread.sleep(0)的作用是什么?

Thread.sleep(0) 的作用是让当前线程放弃剩余的时间片,允许其他具有相同优先级的线程运行。这种操作有时被称为“主动让出CPU时间片”或“线程主动让步”。 通常情况下,当一个线程执行到一段代码时,它会占用CPU的时间片,直到时间…

如何解决版本不兼容Jar包冲突问题

如何解决版本不兼容Jar包冲突问题 引言 “老婆”和“妈妈”同时掉进水里,先救谁? 常言道:编码五分钟,解冲突两小时。作为Java开发来说,第一眼见到ClassNotFoundException、 NoSuchMethodException这些异常来说&…

multi-gneration lru系列 - 怎么决定回收anon还是file

概述 MGLRU作为全新的LRU算法尤其独特之处,但是传统LRU算法中涉及的很多问题,MGLRU算法依然也要面对,比如本文即将讨论的在回收内存的时候,到底应该是回收anon 还是 file page,前面我们有一篇文章专门介绍了传统lru算法的策略和实现方式,可以作为参考和对比,看看两种回…

【线性代数】齐次与非齐次线性方程组有解的条件

齐次线性方程组 AX 0 的解 A \bm{A} A 是 m n m \times n mn 矩阵,对其按列分块为 A [ a 1 , a 2 , . . . , a n ] A [\bm{a}_1, \bm{a}_2, ..., \bm{a}_n] A[a1​,a2​,...,an​],则齐次线性方程组 A X 0 \bm{AX} \bm{0} AX0 的向量表达式为&a…

详细解析 replaceAll()方法

replaceAll方法: - 语法: replaceAll(String regex, String replacement) - 功能:使用指定的替换字符串或正则表达式替换字符串中匹配的所有字符序列 - 参数: - regex:要替换的字符序列的正则表达式模式。 - replaceme…

MATLAB算法实战应用案例精讲-【优化算法】狐猴优化器(LO)(附MATLAB代码实现)

代码实现 MATLAB LO.m %======================================================================= % Lemurs Optimizer: A New Metaheuristic Algorithm % for Global Optimization (LO)% This work is published in Journal of "Applied …

VUE3照本宣科——应用实例API与setup

VUE3照本宣科——应用实例API与setup 前言一、应用实例API1.createApp()2.app.use()3.app.mount() 二、setup 前言 👨‍💻👨‍🌾📝记录学习成果,以便温故而知新 “VUE3照本宣科”是指照着中文官网和菜鸟教…

Multiple CORS header ‘Access-Control-Allow-Origin‘ not allowed

今天在修改天天生鲜超市项目的时候,因为使用了前后端分离模式,前端通过网关统一转发请求到后端服务,但是第一次使用就遇到了问题,比如跨域问题: 但是,其实网关里是有配置跨域的,只是忘了把前端项…

JavaSE | 初识Java(七) | 数组 (下)

Java 中提供了 java.util.Arrays 包 , 其中包含了一些操作数组的常用方法 代码实例: import java.util.Arrays int[] arr {1,2,3,4,5,6}; String newArr Arrays.toString(arr); System.out.println(newArr); // 执行结果 [1, 2, 3, 4, 5, 6] 数组拷贝 代码实例…

青云1000

青云1000帮助文档 注意事项!!!! type-c只用于数据传输不能供电DC供电和锂电池不能同时供电,会烧掉风扇正负级不要插反 账户密码 HwHiAiUser 密码Mind123 TypeC USB IP 192.168.2.2(由原来192.168.1.2改…

mongodb、mysql、redis 区别

MongoDB、MySQL 和 Redis 是三种不同的数据库管理系统,它们在数据存储、访问模型和使用场景方面有一些显著的区别。 1. 数据存储模型: MongoDB:MongoDB 是一种文档数据库,它使用 BSON(Binary JSON)格式来存储数据。数据以文档的形式组织,每个文档可以有不同的字段,文档…

VRRP配置案例(路由走向分析,端口切换)

以下配置图为例 PC1的配置 acsw下行为access口&#xff0c;上行为trunk口&#xff0c; 将g0/0/3划分到vlan100中 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname acsw [acsw] Sep 11 2023 18:15:48-08:00 acsw DS/4/DATASYNC_CFGCHANGE:O…

Python 无废话-基础知识元组Tuple详讲

“元组 Tuple”是一个有序、不可变的序列集合&#xff0c;元组的元素可以包含任意类型的数据&#xff0c;如整数、浮点数、字符串等&#xff0c;用()表示&#xff0c;如下示例&#xff1a; 元组特征 1) 元组中的各个元素&#xff0c;可以具有不相同的数据类型&#xff0c;如 T…

python使用mitmproxy和mitmdump抓包在手机上抓包(三)

现在手机的使用率远超过电脑&#xff0c;所以这篇记录用mitmproxy抓手机包&#xff0c;实现手机流量监控。 环境&#xff1a;win10 64位&#xff0c;Python 3.10.4&#xff0c;雷电模拟器4.0.78&#xff0c;android版本7.1.2&#xff08;设置-拉至最底部-关于平板电脑&#xf…

Grander因果检验(格兰杰)原理+操作+解释

笔记来源&#xff1a; 1.【传送门】 2.【传送门】 前沿原理介绍 Grander因果检验是一种分析时间序列数据因果关系的方法。 基本思想在于&#xff0c;在控制Y的滞后项 (过去值) 的情况下&#xff0c;如果X的滞后项仍然有助于解释Y的当期值的变动&#xff0c;则认为 X对 Y产生…

IDEA2023 常用配置(JDK/系统设置等常用配置)

目录 一、JDK及编译目录设置 1 项目的JDK设置 2 out目录和编译版本 二、相关详细设置 1 打开详细配置界面 1、显示工具栏 2、默认启动项目配置 3、取消自动更新 2 设置整体主题 1、选择主题 2、设置菜单和窗口字体和大小 3、设置IDEA背景图 3 设置编辑器主题样式…

Office 2021 小型企业版商用办公软件评测:提升工作效率与协作能力的专业利器

作为一名软件评测人员&#xff0c;我将为您带来一篇关于 Office 2021 小型企业版商用办公软件的评测文章。在这篇评测中&#xff0c;我将从实用性、使用场景、优点和缺点等多个方面对该软件进行客观分析&#xff0c;在专业角度为您揭示它的真正实力和潜力。 一、实用性&#xf…

家用无线路由器如何用网线桥接解决有些房间无线信号覆盖不好的问题(低成本)

环境 光猫ZXHN F6600U 水星MW325R 无线百兆路由器 100M宽带&#xff0c;2.4G无线网络 苹果手机 安卓平板电脑 三室一厅94平 问题描述 家用无线路由器如何用网线桥接解决有些房间无线信号不好问题低成本解决&#xff0c;无线覆盖和漫游 主路由器用的运营商的光猫自带无…

MATLAB算法实战应用案例精讲-【优化算法】抗冠状病毒优化算法(ACVO)(附MATLAB代码实现)

前言 (ACVO)算法是一种多智能体策略,其中每个智能体都是一个人,通过观察控制协议试图保持健康并减缓 COVID-19 的传播。该算法由三个主要步骤组成:社交距离、隔离和隔离。在社交距离阶段,算法试图保持人与人之间的安全物理距离并限制密切接触。在隔离阶段,算法隔离疑似…

Gorsonpy的计算器

Gorsonpy的计算器 0.页面及功能展示1. PSP表格2.解题思路描述3.设计实现过程4.程序性能改进5.异常处理6.单元测试展示7.心路历程和收获 这个作业属于哪个课程https://bbs.csdn.net/forums/ssynkqtd-05这个作业要求在哪里https://bbs.csdn.net/topics/617294583这个作业的目标完…