相机模型,坐标变换,畸变

小孔成像模型

墨子就记录了小孔成像是倒立的。这从几何光学的角度是很好理解的:光沿直线传播,上方和下方的光线交叉,导致在成像平面位置互换。

小孔的大小有什么影响?

小孔越大,进光量变大了,但是成像平面上一个点来源于物体的多个点,相当于画画的笔触越粗,所成的像也越模糊。

但是小孔越小成像就越清晰吗?先不说技术上无法实现,孔越小,光的衍射diffraction现象会越明显,光要越过障碍物,会出现水波纹:

小孔的形状有什么影响?

无论小孔什么形状,物体的每个位置会穿过小孔,在平面投下小孔形状的图案。但结果小孔的物体有无数道光线,所以最终成像来看没什么差异。正如前面的比方,改变小孔的形状,也可以理解为笔触的不同。

坐标变换

世界坐标到相机坐标

相机坐标系的原点是光心。世界坐标系到相机坐标系,是一个仿射变换:旋转+平移。

P_c=\begin{pmatrix} R & T\\ 0 & 1 \end{pmatrix}P_w

相机坐标到传感器坐标

图像坐标系是以传感器sensor为原点的,所以相机坐标系到图像坐标系就是一个缩放变换。

由三角形相似可以得到,缩小的尺度就是焦距f和物距的比值。

\begin{bmatrix} X\\ Y\\ Z \end{bmatrix}=\frac{1}{Z_c}\begin{pmatrix} f& 0& 0\\ 0 & f& 0\\ 0& 0 & 1 \end{pmatrix}\begin{pmatrix} X_c\\ Y_c\\ Z_c \end{pmatrix}

传感器坐标到像素坐标

像素坐标是离散化的,它是以传感器坐标以像素长宽为单位得到的。因为图像一般以左上角为原点,所以传感器坐标到像素坐标还需要一次平移。

内参和外参

前面从世界坐标系到像素坐标系经历了三次坐标变换。第一次涉及到的的平移和旋转构成了外参矩阵,后两次构成了内参矩阵。

外参有6个参数,3个控制旋转,3个控制平移。

内参有10个参数,其中五个是f,dx,dy,u_0,v_0,分别表示焦距,像素宽度,像素高度,图像宽度,图像高度。另外五个控制畸变。

畸变

近大远小

在相机坐标系到传感器坐标系转换中,涉及到了焦距和物距:

由上面的坐标变换公式可以看到, 成像大小与物距成反比,焦距成正比。这就可以解释透视关系中的近大远小。

那么是不是焦距和物距等比例同时放大缩小,成像就不变?理论上是这样的,但是物体不是一个平面,不同位置到镜头的距离是不一样的,没办法保证所有的点同时满足等比例变换,所以就会产生透视畸变:前景处被放大,背景处被缩小。

这就可以解释为什么拍特写摄影师都推荐用长焦。虽然剧烈近一点用短焦也可以拍出差不多大的像,但是因为焦距小,物距的微小变化就会被放大,导致畸变严重。

切向畸变

借鉴近大远小的分析,即便是平面物体,当平面和镜头不平行时,就产生了切向Tangential畸变。

径向畸变

径向是指半径的方向。因为镜头制作工艺,图像中心和边缘的折射有差异,所以产生了径向畸变。径向畸变又分为桶形畸变和枕形畸变:

很显然,径向畸变是关于半径r的函数,所以一般建模为r的指数多项式。

reference:

29. 小孔相机 - 知乎

为什么小孔成像实验中,孔的形状不影响像的形状? - 知乎

aachen数据集,其中一项是内参

> The intrinsic calibration is defined by the width `w` and height `h` of the image, its focal length 
`f`, the position of the principal point (`cx` and `cy`), and a radial distortion parameter `r`. 

Step1:模型 16个相机参数(内参、外参、畸变参数)-CSDN博客

Computer Vision

相机标定(Camera calibration)-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信加粉计数器

1.采用非注入式开发,支持无限多开 2.每个账号都有独立的分组,实时远程网页数据分享 3.后台功能强大,操作简单,自动去重复,准确计数分秒不差

【Python】理解WOE(Weight of Evidence)和IV(Information Value)

忠孝东路走九遍 脚底下踏著曾经你我的点点 我从日走到夜 心从灰跳到黑 我多想跳上车子离开伤心的台北 忠孝东路走九遍 穿过陌生人潮搜寻你的脸 有人走的匆忙 有人爱的甜美 谁会在意擦肩而过的心碎 🎵 动力火车《忠孝东路走九遍》 在信用评分和…

可视化 FlowChart 0.4.1 最强的拖拽组件

主要解决以及目标: ti-flowchart 能满足 二次开发的大部分需求。 下发GIF图可见,左边的模块A 由二次开发人员设计,通过向flowchart注册模块Dom,实现符合拖拽,编辑,布局,以及响应事件上抛。 实…

Debian12安装后更换为国内镜像源,切换root用户,解决用户名不在sudoers文件中此事将被报告

选择Debian作为编程开发最佳Linux的理由: Debian是面向程序员的最古老,最出色的Linux发行版之一。Debian提供了具有.deb软件包管理兼容性的超稳定发行版。Debian为程序员提供了许多最新功能。因此,它具有一个特殊的编程空间。Debian是开发人员…

第十六节:图 (20节)

一 图的概念 1)由点的集合和边的集合构成 2)虽然存在有向图和无向图的概念,但实际上都可以用有向图来表达 3)边上可能带有权值 二 图结构的表达 1)邻接表法 2)邻接矩阵法 3)除此之外还有其他众多…

adminlte 日期控件设置值

1,属性设置 $(function () {//Date range picker with time picker$(#reservationtime-1).daterangepicker({timePicker: false,timePickerIncrement: 1,timePicker24Hour: true,autoApply: true,singleDatePicker: true,locale: {format: YYYY-MM-DD,daysOfWeek: …

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction

(1)在 STL 库源码中这俩模板经常出现,用来给源码编译中的条件选择,模板的版本选择等提供依据。先给出其定义: 以及: 可以得出结论: conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…

JS中的宏任务和微任务

JavaScript 引擎是建立在一个事件循环系统之上的,它实时监控事件队列,如果有事件就执行,如果没有事件就等待。事件系统是一个典型的生产消费模式,生产者发出事件,接收者监听事件,在UI 开发中是常见的一个设…

LVM - Linux磁盘逻辑卷管理器概念讲解及实践

1、lvm概念 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(Logi…

InternLM-XComposer2-4KHD开拓性的4K高清视觉-语言模型

大型视觉-语言模型(LVLM)在图像字幕和视觉问答(VQA)等任务中表现出色。然而,受限于分辨率,这些模型在处理包含细微视觉内容的图像时面临挑战。 分辨率的限制严重阻碍了模型处理含有丰富细节的图像的能力。…

推荐5个实用的工具软件,提高效率

​ 现在,有很多实用的工具和软件可以帮助我们更高效地完成各种任务。以下是几个值得推荐的工具和软件,能够极大地提高我们的工作效率。 1.浏览器插件——SuperCopy ​ SuperCopy是一款浏览器插件,主要用于增强网页文本的复制功能。它解决了…

SQL注入工具sqlmap安装使用详解靶场实验

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、sqlmap简介 sqlmap 是一款开源的渗透测试工具&#…

主从Reactor服务器

目录: 目录: 目标: 本文讲解思路: 各模块的功能以及代码: 1.服务器相关模块:服务器模块的功能是对所有的连接以及线程进⾏管理 2.协议相关模块:协议模块是对当前的Reactor模型服务器提供应…

全球排名第一的质量管理(QMS)系统介绍,100%免费开源

什么是Odoo全程质量管理? 开源智造Odoo免费开源质量管理系统将政策、标准和实践规范化并自动化,以最小的开销提供最高质量的产品。快速轻松地选择要执行的测试,设置参数以评估结果,并定义接收时和生产过程中的测试策略。Odoo会自动…

Vue 快速入门:Vue初级

语法规则 前端渲染 渲染有几种方式:原生js、js模板、Vue模板语法 原生js 使用字符串拼接 js模板语法 Vue.js 模板语法概述 Vue.js 是一个用于构建用户界面的渐进式框架,其模板语法非常灵活和直观。Vue 的模板语法基于 HTML,可以通过指令…

达梦sql中参数个数太多导致出现SOH等特殊字符报错无效的序列号是不是达梦的bug

mybatis的Mapper.xml中如下: in中的参数大概有1万6千多个,分成每1000个一组拼接成sql,然而在达梦中执行时报如下: Caused by: dm.jdbc.driver.DMException: Invalid sequence noat dm.jdbc.driver.DBError.throwException(DBError.java:710)…

号卡极团分销管理系统 ue_serve.php 任意文件上传漏洞复现

0x01 产品简介 号卡极团分销管理系统,同步对接多平台,同步订单信息,支持敢探号一键上架,首页多套UI+商品下单页多套模板,订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定,内置敢探号、172平台、号氪云平台第三方接口以及号卡网同系统对接! 0x02 漏洞概述…

web入门练手案例(一)

下面是一下web入门案例和实现的代码,带有部分注释,倘若代码中有任何问题或疑问,欢迎留言交流~ 新闻页面 案例描述: 互联网的发展使信息的传递变得方便、快捷,浏览新闻称为用户获取信息的重要渠道。下面将实现一个简…

【doghead】mac与wsl2联通

mbp 设置为发送端,那么要能与windows上 wsl2的ubutnu通信。 mbp的 uv 构建ok zhangbin@zhangbin-mbp-2  ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv   main clion使用lldb cmake构建 更新git2.45.0啊

从零开始开发企业培训APP:在线教育系统源码剖析

今天,小编将深入剖析企业培训APP的开发,从零开始为企业构建一个高效、实用的在线教育系统。 一、需求分析 1.主要功能需求 包括但不限于: -用户管理 -课程管理 -学习计划 -互动功能 -考核评估 -统计分析 二、技术选型 1.前端技术 …