相机系列——透视投影:针孔相机模型

news2024/12/26 23:22:26

作者:木一

引言

上文我们提到,三维相机是对真实世界成像的模拟,为了让三维物体在计算机屏幕上呈现出来的图像符合人眼观察效果,通常采用透视投影方式模拟相机成像,为了简化计算,可以用针孔相机模型来描述透视投影成像过程。

针孔相机模型

针孔相机模型是一种简化的光学成像模型,基本原理是中心透视投影,将三维空间中的物体通过针孔投影到二维成像平面上。这种模型忽略了镜头畸变、光线衍射等复杂因素,使得计算和分析变得相对简单,因此也广泛应用于计算机视觉和图形学领域。

针孔相机模型 图源@作者

为了能够用数学语言来描述针孔相机模型,需要建立四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系,三维物体在二维图像上的成像过程通过坐标系变换来表达。

四个坐标系 图源@作者

1、世界坐标系

世界坐标系是描述客观世界的绝对坐标系,由于相机可以位于客观世界中的任意位置,需要建立一个基准坐标系来描述相机的位置,并且用它来描述环境中任意空间点的位置,用(Xw, Yw, Zw)表示世界坐标值。

2、相机坐标系

相机坐标系是以相机光心为参考点建立起的三维坐标系,用于描述任意空间点在相机空间中的位置,建立方式为:以相机光心为坐标原点,相机主光轴为Z轴,平行于图像平面水平方向作为X轴,平行于图像平面垂直方向作为Y轴,用(Xc, Yc, Zc)表示相机坐标值。

3、图像坐标系

图像坐标系是定义在成像平面上的二维平面坐标系,以实际物理单位(mm)表示,建立方式为:以相机主光轴与图像平面的交点为原点,交点称为像主点,X轴平行于图像水平方向向右,Y轴平行于图像垂直方向向下,用(x, y)表示图像坐标值。

4、像素坐标系

在计算机中数字图像是经离散化处理后以像素矩阵方式进行存储的,因此建立像素坐标系以描述相机图像,像素坐标可以理解为像素在图像平面中的位置索引。建立方式为:以图像平面左上角为原点,u轴平行于图像坐标系的X轴,水平向右,v轴平行于图像坐标系的Y轴,垂直向下,用u,v表示像素坐标值。

坐标变换

相机成像可以理解为是将三维空间中的物体投影到二维图像平面上的过程,投影过程最终在三维空间点和图像平面点之间建立映射关系,因此可以通过三维空间点与二维图像平面点之间的坐标转换来表达投影过程。

坐标转换流程包括:

坐标变换 图源@作者

1、世界坐标系 => 相机坐标系

世界坐标系转换到相机坐标系的过程是刚体变换,通常采用平移矩阵R和旋转矩阵T来表示变换过程。齐次坐标以及矩阵变换可以参考博文:用矩阵表述变换与齐次坐标 - 简书

旋转平移变换 图源@作者

2、相机坐标系 => 图像坐标系

相机坐标系到图像坐标系是真正的投影过程,基本原理是中心透视投影,根据三角形相似原理,可推知空间点与它的像点关系如下:

投影变换 图源@作者

3、图像坐标系 => 像素坐标系

数字图像是经离散化处理后以像素矩阵方式进行存储的,图像坐标在图像平面以物理单位表示,像素坐标在图像平面以像素坐标表示,图像坐标与像素坐标的转换关系为:

像素离散化 图源@作者

其中dx、dy表示单个像素实际物理尺寸的宽和高。

图像坐标系到像素坐标系的转换用矩阵表示为:

综合以上变换,可以得到完整的坐标变换过程如下:

其中,透视投影过程和像素离散过程组合后的变换矩阵称为相机内参矩阵,平移、旋转过程的变换矩阵称为相机外参矩阵

相机畸变

实际的相机成像过程受镜头影响,往往无法遵循严格的线性变换,这会导致最终的图像产生畸变(失真),镜头引起的畸变主要分为径向畸变切向畸变

相机畸变 图源@作者

径向畸变:越远离光轴的光线越向内弯曲,导致正方形成像后变成桶形,这也称桶形畸变。反之如果越离光轴的光线越向外弯曲则为枕形畸变

径向畸变 图源@作者

切向畸变:切向畸变是透镜与成像平面不完全平行的制造缺陷造成的。

在实际应用中,通常采用多项式拟合模型来表示相机畸变,通用公式表示为:

其中图像坐标通过归一化平面坐标表示,(x,y)表示实际图像坐标,(Xdistorted, Ydistorted)表示畸变后的图像坐标。归一化平面坐标参考:https://blog.csdn.net/ouyangandy/article/details/96840781

常用的多项式拟合畸变模型为:

其中:

基于畸变模型,可以对图像进行畸变校正,即计算畸变图像点的正确位置,对图像进行像素重映射和插值处理,以纠正图像畸变导致的变形现象。

畸变纠正(左:畸变图像,右:畸变纠正图像) 图源@作者

文章参考:

什么是归一化的平面坐标_归一化平面-CSDN博客

相机径向和切向畸变及去畸变 - 知乎

用矩阵表述变换与齐次坐标 - 简书

https://www.cnblogs.com/weststar/p/11836266.html

OpenCV: Camera Calibration and 3D Reconstruction


 关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态

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

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

相关文章

设计模式——观察者模式17

观察者模式指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式。 中介者模式是N对N的双向关系。观察者模式是1对N的单向关系。 设计模式,一定要敲代码…

STC89C52学习笔记(十三)

STC89C52学习笔记(十三) 综述:本文讲述了红外调控的原理和通信以及外部中断相关知识。 一、红外调控 1、定义 红外遥控是利用红光进行通信的设备。 2、特点 ①由红LED将调制后的信号发出,由专门的红外接收头进行解调输出。 …

​​​​网络编程探索系列之——广播原理剖析

hello !大家好呀! 欢迎大家来到我的网络编程系列之广播原理剖析,在这篇文章中, 你将会学习到如何在网络编程中利用广播来与局域网内加入某个特定广播组的主机! 希望这篇文章能对你有所帮助,大家要是觉得我写…

jupyter使用虚拟环境里的依赖配置

进入虚拟环境fourier-features-pytorchconda activate fourier-features-pytorch 安装ipykernel pip install ipykernel -i https://pypi.tuna.tsinghua.edu.cn/simple将核与虚拟环境匹配 python -m ipykernel install --user --namefourier-features-pytorch打开jupyter j…

Kafka 架构深入介绍 及搭建Filebeat+Kafka+ELK

目录 一 架构深入介绍 (一)Kafka 工作流程及文件存储机制 (二)数据可靠性保证 (三)数据一致性问题 (四)故障问题 (五)ack 应答机制 二 实…

【max材质addtive叠加模式特效渲染不出通道的解决办法】

max材质addtive叠加模式特效渲染不出通道的解决办法 2021-12-22 18:15 max的scanline扫描线,vray渲染可以,红移不行(只支持它自己的材质,它自己的材质没有additive模式)。据说mr是可以的。 右侧的球体使用附加不透明度。 附加不透明度通过将…

关于机器学习/深度学习的一些事-答知乎问(六)

如何使用频率域变换对序列数据进行增强? 时频变换是常见的信号分析思路,同样可用于数据增强。在频率域添加噪声是方法之一。比如可以对传感器信号应用短时傅里叶变换STFT得到具有时序关系的谱特征,再在谱特征上应用两种数据增强方法。一是对…

Amazon MemoryDB for Redis的探索和实践

一、背景 由于当下项目的日益增长的数据量,单机Redis已经远远不能满足我们的要求。考虑转成集群,但是直接在服务器中搭建Redis集群的话,EC2挂掉则Redis也会随之挂掉,耦合性太强。所以将Redis相关的服务全部抽取在单独的服务器上或…

论文笔记:Time Travel in LLMs: Tracing Data Contamination in Large Language Models

iclr 2024 spotlight reviewer评分 688 1 intro 论文认为许多下游任务(例如,总结、自然语言推理、文本分类)上观察到的LLMs印象深刻的表现可能因数据污染而被夸大 所谓数据污染,即这些下游任务的测试数据出现在LLMs的预训练数据…

ins视频批量下载,instagram批量爬取视频信息

简介 Instagram 是目前最热门的社交媒体平台之一,拥有大量优质的视频内容。但是要逐一下载这些视频往往非常耗时。在这篇文章中,我们将介绍如何使用 Python 编写一个脚本,来实现 Instagram 视频的批量下载和信息爬取。 我们使用selenium获取目标用户的 HTML 源代码,并将其保存…

MySQL模糊查询

一、MySQL通配符模糊查询(%,_) 1.1.通配符的分类 1.“%”百分号通配符:表示任何字符出现任意次数(可以是0次) 2.“_”下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。当然…

计算机组成原理【CO】Ch3 存储系统

文章目录 考纲3.1 存储系统概述3.2 主存储器3.3 主存储器与CPU的连接3.4 外部存储器3.5 高速缓冲存储器3.6 虚拟存储器【※】存储系统总体流程图【※】各个部件的存储位置计算机存储相关硬件与数据结构说明进程控制块(PCB)页表页表始址页表始址寄存器(PTR)MMU(内存管理单元…

Springboot Gateway 报错Failed to resolve “bogon”的原因及解决办法

一、问题出现原因及初步分析 今天遇到一个奇怪的错误,一个一直正确运行的微服务后台,突然无法访问,如何重启都会报错。 想到近期有人在服务器上安装过其它服务,因此,考虑可能是配置问题,可配置问题修复后…

实时数据同步之Maxwell和Canal

文章目录 一、概述1、实时同步工具概述1.1 Maxwell 概述1.2 Canal概述 2、数据同步工作原理2.1 MySQL 主从复制过程2.2 两种工具工作原理 3、MySQL 的 binlog详解3.1 什么是 binlog3.2 binlog 的开启3.3 binlog 的分类设置 4、Maxwell和Canal对比5、环境安装 二、Maxwell 使用1…

信也科技网络自动化实践-网络策略管理

1、背景 随着各种法律法规和行业标准的出台和更新,企业或组织需要遵守各种安全合规性要求。网络安全策略管理需要符合这些要求,从而保障企业或组织的安全和合规性。网络安全策略管理需要涵盖企业或组织的整个网络生命周期,包括网络规划、设计…

halcon 3.2标定相机

参考《solution_guide_iii_c_3d_vision.pdf》 3.2.2.2 Which Distortion Model to Use 选用何种畸变模型 对于面阵相机,halcon中两种畸变模型:The division model and the polynomial model(差分模型和多项式模型),前…

MLOps

参考: 什么是MLOps?与DevOps有何异同?有什么价值?https://baijiahao.baidu.com/s?id1765071998288593530&wfrspider&forpcMLOps简介_AI开发平台ModelArts_WorkflowMLOps(Machine Learning Operation)是机器学习&#xf…

kafka(六)——存储策略

存储机制 kafka通过topic作为主题缓存数据,一个topic主题可以包括多个partition,每个partition是一个有序的队列,同一个topic的不同partiton可以分配在不同的broker(kafka服务器)。 关系图 partition分布图 名称为t…

Unity 扩展自定义编辑器窗口

在Assets文件夹路径下任意位置创建Editor文件夹,将扩展编辑器的代码放在Editor文件夹下 生成编辑器窗口 代码中首先引用命名空间 using UnityEditor; 然后将创建的类继承自EditorWindow public class MenuEditor : EditorWindow 然后通过扩展编辑器菜单功能调用…

AndroidStudio 导出aar包,并使用

打包 1、确认当前选项是否勾选,如未勾选请先勾选。 2、勾选完成后重启Android Studio。 3、重启完成后,选中要打包的module 4、打包完成 使用 1.在项目中新建libs,放入aar文件。 2.修改配置 添加如下代码 flatDir {dirs("libs")}3.修改app…