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

news/2024/10/21 7:08:05/

作者:木一

引言

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

针孔相机模型

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

针孔相机模型 图源@作者

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

四个坐标系 图源@作者

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.ppmy.cn/news/1423282.html

相关文章

安全开发实战(4)--whois与子域名爆破

目录 安全开发专栏 前言 whois查询 子域名 子域名爆破 1.4 whois查询 方式1: 方式2: 1.5 子域名查询 方式1:子域名爆破 1.5.1 One 1.5.2 Two 方式2:其他方式 总结 安全开发专栏 安全开发实战​​http://t.csdnimg.cn/25N7H 前言 whois查询 Whois 查询是一种用…

每日两题 / 142. 环形链表 II 146. LRU 缓存(LeetCode热题100)

142. 环形链表 II - 力扣(LeetCode) 用哈希记录走过的节点即可 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:Lis…

React搭建一个文章后台管理系统

1、项目准备 本篇文章讲解的是一个简单的文章后台管理系统,系统的功能很简单,如下:登录、退出;首页;内容(文章)管理:文章列表、发布文章、修改文章。 1)React官方脚手架:create-rea…

设计模式:备忘录模式

定义 备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不暴露对象实现细节的前提下,捕获和外部化对象的内部状态,以便在将来某个时刻可以将该对象恢复到此状态。备忘录模式使用三个类类型来实现:发…

Flowable工作流引擎:Spring Boot集成指南

Flowable工作流引擎:Spring Boot集成指南 前言开始集成相关配置文件pom文件 前言 在快速变化的软件开发世界中,工作流管理成为了企业应用不可或缺的组成部分。无论是简化复杂业务流程、提升操作效率还是确保流程的一致性和透明性,一个强大的…

前端网络---http协议演变

http协议的演变 什么是http协议? HTTP 协议全称为 Hypertext Transfer Protocol,即超文本传输协议,是互联网上应用最为广泛的一种网络传输协议 http协议演变 1991年0.9版本-------1996年1.0版本-------1997年1.1版本--------2015年2版本-…

走 https 和不走 https 对前端有什么影响

走 https 和不走 https 对前端有什么影响 之前网站走的是 https ,自从域名那边改成需要三个月就要更新之后就没有再用 https,现在都是走的 http,使用中遇到了几个比较明显的功能限制。 最直接的影响就是不能使用 ServiceWorker 了&#xff…

简述Kafka的高可靠性

什么叫可靠性? 大家都知道,系统架构有三高:「高性能、高并发和高可用」,三者的重要性不言而喻。 对于任意系统,想要同时满足三高都是一件非常困难的事情,大型业务系统或者传统中间件都会搭建复杂的架构来…