【AI数学】相机成像之内参数

news2024/10/2 1:23:15

计算机视觉偏底层的工作会跟摄像机打交道,最近正好有接触,所以整理总结一下。
相机参数通常分为内参数外参数,偶尔会有畸变参数等滤镜参数。
申明:本文图例均为原创,借用需附此文链接

内参数:相机内部的参数,包括焦距、像素偏移等。
外参数:相机摆放的位置、角度等。

本文主要介绍相机内参数,并且给出简单的数学推理。
必需预备知识:初中数学+初中物理(不满足条件的不用往下看了-_-)


这里用到的物理知识是“光沿直线传播”,用到的数学知识是“相似三角形”。相机成像用到的是“小孔成像原理”,相机内部有一块平面感光元件,物体光线通过光圈(小孔成像的小孔)打到平面感光元件上完成成像。
小孔成像原理

图1 相机小孔成像

相机成像无非就是把真实世界里三维坐标里的一个点投影到胶片平面上。图1里描述了空间中一个点 P ( x ˉ , y ˉ , z ) P(\bar{x},\bar{y},z) P(xˉ,yˉ,z)投影到平面(图中黄色部分)点 P ′ ( x , y ) P^{'}(x,y) P(x,y),在这里为了方便理解,我构建了一个坐标系,原点位置为二维平面的中心位置,z轴方向为相片法向量向外。
重点:相机成像就是做个 ( x ˉ , y ˉ , z ) (\bar{x},\bar{y},z) (xˉ,yˉ,z) ( x , y ) (x,y) (x,y)的计算。

小孔成像2

图2 相机小孔成像相似三角形计算

咱们可以构建一个相似三角形,有 f / ( z − f ) = l ′ / l = x / x ˉ = y / y ˉ (1) f/(z-f)=l^{'}/l=x/\bar{x}=y/\bar{y} \tag{1} f/(zf)=l/l=x/xˉ=y/yˉ(1)
所以,
{ x = x ˉ f / ( z − f ) y = y ˉ f / ( z − f ) (2) \begin{cases} x=\bar{x}f/(z-f)\\ y=\bar{y}f/(z-f)\\ \end{cases} \tag{2} {x=xˉf/(zf)y=yˉf/(zf)(2)
通常图像坐标原点并不是图像中心点,而是左上角,于是需要加一个偏移量 O x O_x Ox O y O_y Oy来对应像素坐标。所以,式子变为
{ x = x ˉ f / ( z − f ) + O x y = y ˉ f / ( z − f ) + O y (3) \begin{cases} x=\bar{x}f/(z-f)+O_x\\ y=\bar{y}f/(z-f)+O_y\\ \end{cases} \tag{3} {x=xˉf/(zf)+Oxy=yˉf/(zf)+Oy(3)

咱们可以将Aperture(即孔径点)定义成我们坐标系的原点,以换取更简单的表示形式,则图2中紫色部分的 ( z − f ) (z-f) (zf)就变成了 z z z,替换式子得到
{ x = x ˉ f / z + O x y = y ˉ f / z + O y (4) \begin{cases} x=\bar{x}f/z+O_x\\ y=\bar{y}f/z+O_y\\ \end{cases} \tag{4} {x=xˉf/z+Oxy=yˉf/z+Oy(4)

改写成齐次矩阵乘积描述形式,
[ x y 1 ] = 1 z [ f 0 O x 0 f O y 0 0 1 ] [ x ˉ y ˉ z ] (5) \left[ \begin{matrix} x \\ y \\ 1 \end{matrix} \right] ={1\over{z}} \left[ \begin{matrix} f & 0 & O_x\\ 0 & f & O_y\\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} \bar{x} \\ \bar{y} \\ z \end{matrix} \right] \tag{5} xy1 =z1 f000f0OxOy1 xˉyˉz (5)
内参数包含焦距 f f f、两个方向的中心偏移量 O x O_x Ox O y O_y Oy。通常,用矩阵 K K K来描述内参数,
K = [ f 0 O x 0 f O y 0 0 1 ] (6) K= \left[ \begin{matrix} f & 0 & O_x\\ 0 & f & O_y\\ 0 & 0 & 1\end{matrix} \right] \tag{6} K= f000f0OxOy1 (6)
所以,式(5)可以写成
[ x y 1 ] = 1 z K [ x ˉ y ˉ z ] (7) \left[ \begin{matrix} x \\ y \\ 1 \end{matrix} \right] ={1\over{z}} K \left[ \begin{matrix} \bar{x} \\ \bar{y} \\ z \end{matrix} \right] \tag{7} xy1 =z1K xˉyˉz (7)
通过这个内参数公式,我们可以通过像素(二维)坐标,反算出相机(三维)坐标

[ x ˉ y ˉ z ] = z K − 1 [ x y 1 ] (8) \left[ \begin{matrix} \bar{x} \\ \bar{y} \\ z \end{matrix} \right]=zK^{-1}\left[ \begin{matrix} x \\ y \\ 1 \end{matrix} \right] \tag{8} xˉyˉz =zK1 xy1 (8)
根据式(8),若想从像素(二维)坐标拿到相机坐标(三维)坐标,还需要知道深度信息,即目标点离相机的距离。

文毕,有疑问或指导请留言交流!

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

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

相关文章

[SSD固态硬盘技术 15] FTL映射表的神秘面纱

为什么需要映射表?固态硬盘的存储器件采用的是闪存[5],具有以下几个特点: (1)读写基本单位是以页(Page)为单位,擦除是以块(Block)为单位。

NFC概述摘要

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 原理来说,NFC和Wi-Fi类似,利用无线射频技术来实现设备间通信。NFC的工作频率为13.5…

基于c语言实现的对代码的同源性检测

完整代码:https://download.csdn.net/download/qq_38735017/87382389本次课程设计为了巩固上学期在软件安全课程上所学的安全知识,包括堆栈溢出、整数溢出等等,同时考察了一些课外的新事物,例如字符串匹配与CFG控制流程图的同源性…

Attention机制 学习笔记

学习自https://easyai.tech/ai-definition/attention/ Attention本质 Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是“从关注全部到关注重点”。 比如我们人在看图片时,对图片的不同地方的注意力…

为什么要在电子产品中使用光耦合器?

介绍 光耦合器不仅可以保护敏感电路,还可以使工程师设计各种硬件应用。光耦合器通过保护元件,可以避免更换元件的大量成本。然而,光耦合器比保险丝更复杂。光耦合器还可以通过光耦合器连接和断开两个电路,从而方便地控制两个电路…

【Markdown】markdown语法规定

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

Vue3 如何实现一个函数式右键菜单(ContextMenus)

前言: 最近在公司 PC 端的项目中使用到了右键出现菜单选项这样的一个工作需求,并且自己现在也在实现一个偶然迸发的 idea( 想用前端实现一个 windows 系统从开机到桌面的 UI),其中也要用到右键弹出菜单这样的一个功能,…

通讯录文件操作化

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重…

几个chatGPT的难题,关于语言转换

不同语言代码的移植一直以来是程序员面临的难题,最近问了问chatGPT能否解决这个问题。编写一个程序,实现c语言函数转换为php函数答:这是一个非常困难的问题,因为两种语言的语法、结构和标准库都不相同。如果您希望完成这个任务&am…

MySql服务多版本之间的切换

从网上总结的经验,然后根据自己所遇到的问题合并记录一下,方便日后再次需要用到 MySql服务多版本同时运行 步骤 1、如果你电脑上已经有一个mysql版本,例如mysql-5.7.39-winx64,它占据了3306端口。此时如果你想下仔另一版本&…

活动星投票紫砂新青年制作一个投票活动

“紫砂新青年”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说,公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序,网友们就可以通过手机拍视频上传视频参加活动,而短视频微信投票评选活动既可以给用户发挥…

6年自动化测试,终于进华为了,年薪25w其实也并非触不可及

我的职业生涯开始和大多数测试人一样,开始接触都是纯功能界面测试,第一份测试工作就是在电商公司做功能测试,工作忙忙碌碌,每天在各种业务需求学习和点点中度过,过了好几年发现自己还只是一个功能测试工程师&#xff0…

锐捷(十四)mpls vxn optionc的关键问题所在和具体问题分析

用锐捷的设备搭建mpls vxn optionc的基础版和带RR的版本,在控制平面和转发平免上分析mpls vxn optionc的关键问题所在和具体问题分析。一 基础mpls vxn optionc:核心:两pe之间之间建立MP EBGP邻居,从而直接传递路由解放了ASBR。关…

LeetCode-1223-掷骰子模拟

1、动态规划法 我们可以利用数组dp[i][j][k]dp[i][j][k]dp[i][j][k]来表示当我们已经投过iii次骰子,其中第iii次投出的骰子是jjj,此时连续投出骰子jjj的次数为kkk。因此我们可以根据上一轮中得到的状态dp[i−1][j][k]dp[i-1][j][k]dp[i−1][j][k]&#…

最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 本代码说明了“最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用。提供了一个示例&#xff0c…

加盟管理系统挑选法则,看完不怕被坑!

经营服装连锁店铺究竟有多难?小编已经不止一次听到身边的老板,抱怨加盟连锁店铺难以管理了,但同时呢,也听到了很多作为加盟商的老板,抱怨总部给的支持和管理不到位。服装加盟店铺管理,到底有哪些难点呢&…

BFS广度优先遍历——Acwing 844. 走迷宫

1.BFS简介我们可以将bfs当做一个成熟稳重的人,一个眼观六路耳听八方的人,他每次搜索都是一层层的搜索,从第一层扩散到最后一层,BFS可以用来解决最短路问题。2.基本思想从初始状态S开始,利用规则,生成所有可…

window11 安装node及配置环境变量

一、安装环境 本教程演示的环境: 系统:win 11 64位 node.js下载地址: http://nodejs.cn/ node.js版本:长期支持版本(本教程基于16.15.0) 点击选中图标下载到电脑本地即可。 二、安装步骤 1、双击安装包,一…

华为10年经验测试工程师,整理出来的python自动化测试实战

前言 全书共分11章,第一章是基础,了selenium家谱,各种组件之间的关系以及一些必备知识。第二章告诉如何开始用python IDLE写程序以及自动化测试环境的搭建。第三章是webdriver API,我花了相当多时间对原先的文档,冗余…

HTML5之HTML基础学习笔记

列表标签 列表的应用场景 场景:在网页中按照行展示关联性的内容,如:新闻列表、排行榜、账单等特点:按照行的方式,整齐显示内容种类:无序列表、有序列表、自定义列表 这是老师PPT上的内容, 列表…