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

作者:木一

引言

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

针孔相机模型

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

针孔相机模型 图源@作者

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

四个坐标系 图源@作者

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.mzph.cn/news/819864.shtml

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

相关文章

麒麟服务器操作系统安装HTTP服务

往期好文:麒麟服务器操作系统安装TFTP服务 Hello,大家好啊!今天我们将探讨如何在麒麟服务器操作系统上安装和配置HTTP服务,这是任何网络服务或应用的基础。无论你是想建立一个简单的网站,还是需要一个全功能的Web服务器…

CodeMirror使用: 编写一个在线编辑HTML、JS、CSS文件,网页的模板页面-初实现

前言:前几天编写一个UI模板控制的功能,根据上传的前端模板更换跳转入口主题页面;在编写的时候,突发奇想能不能在列表页面进行在线编辑刚刚上传的模板zip压缩包里的页面...于是经过学习研究有了这篇文章;当日记本一样记…

图灵《模仿游戏》论文学习

文章目录 1. 写在最前面2. 核心观点学习2.1 脑图观点记录2.2 经典观点记录 3. 感受4. 碎碎念5. 参考资料 1. 写在最前面 3 月看了一部以图灵为原型拍摄的人物传记类电影《模仿游戏》,里面反复提及到的论文《COMPUTING MACHINERY AND INTELLIGENCE》,引起…

计算机丢失VCRUNTIME140_1.dll处理办法

一、打开 下面连接地址,下载Visual Studio 2015, 2017, 2019, and 2022 https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?viewmsvc-170#visual-studio-2015-2017-2019-and-2022 二、下载系统对应的版本 32位系统下载X86 64位系统下载X…

win10 鼠标箭头自己乱动解决方案

我这里只说我碰到的然后我的解决方案,不一定对其他问题有效; 1. 首先拔掉鼠标线查看鼠标箭头是否仍然在乱动,如果是则非鼠标问题,如果不再乱动则是鼠标的问题;验证非鼠标问题; 2. 因为鼠标乱动跟鼠标无关…

【深度学习】AI修图——DragGAN原理解析

1、前言 上一篇,我们讲述了StyleGAN2。这一篇,我们就来讲一个把StyleGAN2作为基底架构的DragGAN。DragGAN的作用主要是对图片进行编辑,说厉害点,可能和AI修图差不多。这篇论文比较新,发表自2023年 原论文&#xff1a…

韩顺平 | 零基础快速学Python(16) 文件处理

文件 输入与输出 输入:数据从数据源(文件)到程序(内存); 输出:数据从程序(内存)到数据源(文件)。 #mermaid-svg-06PG6JZq4jJMV1oH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-sv…

数据库查询:查询入参类型和数据库字段类型不匹配导致的问题

问题:假设我们现在有这样的一张表 CREATE TABLE test_person (id int(20) NOT NULL COMMENT 主键,name varchar(20) DEFAULT NULL COMMENT 姓名,gender char(2) DEFAULT NULL COMMENT 性别,birthday date DEFAULT NULL COMMENT 生日,created_time timestamp NULL D…

JS-33-jQuery02-选择器

一、单个选择器 选择器是jQuery的核心。 一个选择器写出来类似$(#dom-id)。 美元符号定义 jQuery 为什么jQuery要发明选择器?回顾一下DOM操作中我们经常使用的代码: // 按ID查找: var a document.getElementById(dom-id);// 按tag查找&am…

Java的maven项目导入本地jar包的三种方式

文章目录 Java的maven项目导入本地jar包的三种方式1、在项目中创建一个lib文件夹,将想要使用的本地jar包放进去2、方法一:直接在pom.xml中添加下列依赖(项目协作推荐)3、方法二:在项目结构中引用lib文件夹(…

ATA-2048高压放大器在铁电材料中有什么应用

铁电材料是一类具有特殊电学性质的材料,它们能够在外加电场的作用下产生可逆的电极化,这种电极化可以在没有外加电场时保持。这使得铁电材料在许多应用中具有重要价值,特别是在电子设备和传感器领域。高压放大器作为一种电子设备,…

C++:Hash应用【位图与布隆过滤器】

什么是位图? 我们先来看一个问题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在 这40亿个数中。【腾讯】 如果我们使用unordered_set容器来解决,40亿个数据,每个数据…

MaxCompute 近实时增全量处理一体化新架构和使用场景介绍

随着当前数据处理业务场景日趋复杂,对于大数据处理平台基础架构的能力要求也越来越高,既要求数据湖的大存储能力,也要求具备海量数据高效批处理能力,同时还可能对延时敏感的近实时链路有强需求,本文主要介基于 MaxComp…

python将pdf转为docx

如何使用python实现将pdf文件转为docx文件 1.首先要安装pdf2docx库 pip install pdf2docx2.实现转换 from pdf2docx import Converterdef convert_pdf_to_docx(input_pdf, output_docx):# 创建一个PDF转换器对象pdf_converter Converter(input_pdf)# 将PDF转换为docx文件pdf…

护眼台灯哪个牌子好?护眼灯十大品牌推荐,谁用谁真香

对于有子女的家庭,特别是那些热爱阅读的,晚上看书时更应该注重光线的问题,不然一旦光线过暗就容易导致视觉疲劳,进而演化为近视。因此,除了打开房间的灯,在桌面上放置一台护眼台灯更加能够保护眼睛。然而&a…

社交网络与Web3:数字社交的下一阶段

随着信息技术的飞速发展,人们的社交方式也发生了巨大的变化。从最初的互联网聊天室到如今的社交网络平台,我们已经见证了数字社交的不断演变和发展。而随着区块链技术的兴起,Web3时代的到来将为数字社交带来全新的可能性和挑战。本文将探讨社…

【JAVA基础篇教学】第十四篇:Java中设计模式

博主打算从0-1讲解下java基础教学,今天教学第十四篇:Java中设计模式。 设计模式是解决软件设计中常见问题的可重复利用的解决方案。在 Java 中,常见的设计模式包括单例模式、工厂模式、观察者模式等。目前在基础教学篇中只展示常见的几种模…

STM32笔记---CAN采样点设置和报错

STM32笔记---CAN采样点设置和报错 采样点设置再同步补偿宽度(SJW)设置 报错分析CAN中断使能寄存器CAN错误状态寄存器 采样点设置 以前配置CAN参数的BS1和BS2参数时认为总线波特率符合要求就可以了,其实同一个波特率可能对应多组参数设置的情…

开发公司 or 个人开发者?软件开发如何选择?

引言 随着科技的发展,软件开发已成为一个相对复杂的行业,需要专业的技能和经验来保证项目的成功。许多企业、组织和个人都纷纷加入到了软件开发的队伍中。在选择软件开发人员时,您可能会面临一个选择:是找个人开发人员还是找专业的…

访问者模式【行为模式C++】

1.概述 访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。 访问者模式主要解决的是数据与算法的耦合问题,尤其是在数据结构比较稳定,而算法多变的情况下。为了不污染数据本身,访问者会将多种算法独立归档&…