图形学-(视图变换,投影变换)

news/2024/5/10 23:09:53/文章来源:https://blog.csdn.net/weixin_46773434/article/details/127437314

1.视图变换

在 3 维物体变到二维平面的过程中,我们需要规定好相机的位置。对于相机所做的变换就是视图变换
(Viewing/Camera transformation)。

我们需要对相机位置进行定义,对于一个相机我们要规定下面三个属性:

  1. 相机位置(视点)(Position)
  2. 相机拍摄方向(视线)(Look-at/Gaze direction)
  3. 相机向上方向(Up direction,假设垂直于 look-at direction)

根据相对运动我们可以知道,只要相机和被拍摄物体相对位置不变,那么拍摄出来的照片应当是一样
的。我们可以通过对被拍摄物体做相同的变换来把相机变换到标准位置。相机的标准位置为

  1. 相机位置在原点 (0, 0);
  2. 相机拍摄方向是-z 轴方向;
  3. 相机的向上方向是 y 轴方向。

将任意位置的相机移动到标准位置需要以下操作:

  1. 将摄像机中心点移动到原点;
  2. 把视线旋转到-z轴方向;
  3. 把上方向旋转到y轴方向;

平移变换的变换矩阵可以写作:
在这里插入图片描述
旋转矩阵的写法比较麻烦。从 ̂𝑔 旋转到-z 轴方向,𝑡̂旋转到 y 轴方向以及 ̂𝑔 × 𝑡̂旋转到 x 轴方向比较难
写,但是旋转变换的逆变换非常的简单
在这里插入图片描述
我们用 x 轴方向单位向量 (1, 0, 0, 0),y 轴单位向量 (0, 1, 0, 0),z 轴单位向量 (0, 0, 1, 0) 代入后结果是正确的。我们知道旋转矩阵的逆矩阵是正交矩阵,因此旋转变换矩阵的逆是旋转变换矩阵的转置矩阵。也是说

在这里插入图片描述
在这里插入图片描述
以上就是我们得到的视图变换矩阵。

2.投影变换

投影变换(Projection transformation)是把 3 维模型投影到 2 维平面的变换。投影变换分为正交投影(Orthographic projection)以及透视投影(Perspective projection)。正交投影中,投影后原本平行的线保持平行关系但是透视投影中平行的线在投影后不一定能保持平行关系,会相交到某一点上(这也就是近大远小现象)
在这里插入图片描述

2.1 正交投影

正交投影将相机放在原点上,拍摄方向是-z 轴方向,向上方向是 y 轴方向。只需要去掉 z 轴后,xy 平面
上的图像就是投影结果。为了能够正交投影,我们会把所有模型移动到 [−1, 1]3 的区间范围内。
在空间中描述一个立方体(立方体中包含了所有需要绘制的模型),将立方体变换到 [−1, 1]3 的区间范
围内
在这里插入图片描述
定义空间中的立方体的左右在 x 轴的坐标,上下在 y 轴的坐标,远近在 z 轴的坐标。这个立方体就可以
被描述 [𝑙, 𝑟 ] × [𝑏, 𝑡] × [𝑓 , 𝑛]。对于 z 轴来说,越远 z 值更小,越近 z 值更大。远是小于近的,保证了右手坐标系下从-z 方向看过去 z 值的规律。

将这样的立方体映射到正则/标准/规范(canonical)立方体 [−1, 1]3
变换方法是先将中心平移到原点,之后对每个边进行缩放到大小为 2。

变换矩阵为:
在这里插入图片描述

2.2 透视投影

透视投影(Perspective projection)是最为广泛的投影方式。透视投影满足近大远小的性质。接下来我们定义视锥。视锥就是一个透视相机渲染时能看到区域的形状,相机放在平面的中心,一个视锥包含 4 个元素:

在这里插入图片描述

  1. 近平面:渲染的区域里相机最近的平面;
  2. 远平面:渲染的区域里相机最远的平面;
  3. 视野(Field of view,FOV):平面顶部和底部中心到相机连线的夹角;
  4. 宽高比:平面宽度和高度之比。

从一个点射出的四棱锥定义了远和近两个平面。我们可以把远平面缩小成和近平面一样大的长方形,
这样视锥就会变成一个立方体。再做一次正交投影就可以得到最终的投影结果了。
在这里插入图片描述
我们需要对这些点进行变换,变换满足三个条件:

  1. 任何一个在近平面上的点不会发生变化;
  2. .远平面处的点 z 值不发生变化;

在这里插入图片描述
从 YZ 平面看过去,对于远平面上的点 (𝑥, 𝑦, 𝑧) 在投影变换后,根据相似三角形的性质,点的位置变为
( 𝑛𝑧𝑥,𝑛𝑧𝑦, 𝑧)。对于任意一个点点 (𝑥, 𝑦, 𝑧) 来说,变化过程为:
在这里插入图片描述
中间点的 z 值变化目前是不确定的。但是对于以上的变化结果我们可以得到变换矩阵的部分结果:

在这里插入图片描述
接下来求出未知量。对于近平面的上的点,应当满足变换:
在这里插入图片描述
因此可以得到方程:
在这里插入图片描述
𝑛2 显然和 x,y 的值没有什么关系,因此 x,y 的系数为 0。但是方程不能解出,还需要一个方程。
对于远平面,我们选择中心点,变换应当满足:
在这里插入图片描述
可以得到方程:
在这里插入图片描述
方程展开后可以得到:
在这里插入图片描述

解得:
在这里插入图片描述
因此我们就解出了变换矩阵:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Transformer3

又是 一篇关于Transformer的~~ 太多了 本文结合Transformer和ConvNets的优点,构造了一种新的即插即用运算符ParC,可以高效地部署在不同的平台上。一个Trick 搞定 CNN与Transformer,即插即涨点即提速! 论文链接:http…

Ansible自动化运维工具介绍与部署

ansible自动化运维工具介绍与部署 文章目录一、什么是自动化运维?二、常用的自动化运维工具2.1 Ansible2.2 SaltStack2.3 Puppet2.4 三种自动化工具特点对比三、介绍Ansible3.1 什么是 Ansible?3.2 Ansible 无需代理3.3 Ansible 方式四、部署Ansible4.1 控制节点4.…

U-BOOT小全(三):SPL框架

1、什么是SPL? 为了可以使已有的所有SPL的设计统一,也为了简化添加适用于新板子的设计,专门设计一个通用的SPL框架。在SPL框架下,一个板子的所有代码都能够被重用。代码复制和链接不再是必要的。 在uboot-2011的/doc/README.spl…

跨境电商必读:什么是社交媒体营销?

关键词:跨境电商,社交媒体营销 社交媒体渠道已迅速成为业务发展战略不可分割的一部分,关于社交媒体如何重塑消费者行为,以及组织如何利用它获得收益,网络上已经有大量相关信息,但仍有许多跨境电商企业难以…

H3C VLAN简单配置

将两台电脑都设为自动获取IP&#xff0c;然后左边的加入vlan10,右边的加入vlan20 先配置左边交换机 <H3C>system-view [H3C]user-interface console 0 [H3C-line-console0]idle-timeout 0 0 [H3C-line-console0]exit [H3C]vlan 10 [H3C-vlan10]port GigabitEthernet 1/…

04-Jenkins构建Maven项目

1&#xff09;Jenkins项目构建类型 a&#xff09;Jenkins构建的项目类型介绍 Jenkins中自动构建项目的类型有很多&#xff0c;常用的有以下三种&#xff1a;自由风格软件项目&#xff08;FreeStyle Project&#xff09;Maven项目&#xff08;Maven Project&#xff09;流水线项…

沉睡者IT - 如何识别NFT“洗盘交易”?

推荐阅读1&#xff1a;【创业粉引流变现项目】 推荐阅读2&#xff1a;【抖音网上如何赚钱变现】 推荐阅读3&#xff1a;【中视频横版16:9视频制作教程】 对金融人士来说&#xff0c;“洗盘交易”&#xff08;wash trading&#xff09;并不是一个新词。加密货币也以相同的买入…

grid管理的数据库实例修改时区问题

问题描述 由于安装创建数据库之前没将操作系统的时区设置为本地正确的时区&#xff08;Pacific/Apia&#xff09;&#xff0c;使用的是GMT时间&#xff08;UTC时区&#xff09;&#xff0c;后续将操作系统和数据库修改成正确时区之后&#xff0c;发现sysdate显示有误。 服务端…

计算机网络基础 ---- 动态路由---OSPF协议----详解

OSPF协议&#xff1a; ospf&#xff1a;开放式最短路径优先协议&#xff08;Open Shortest Path First&#xff09; 一、基本概念&#xff1a; 是携带真实掩码&#xff08;无类别链路状态IGP协议&#xff09;&#xff1b;周期更新&#xff08;30min&#xff09; 触发更新 -…

Taichi 加速 Python 中图像处理

Taichi 咱来说一说哈 在计算机视觉&#xff08;特别是深度学习图片预处理、模型训练&#xff09;等复杂度较高&#xff0c;技术迭代速度快的领域&#xff0c;用 Python 快速开发出算法原型、验证效果是许多研发人员的首选方案。著名图像处理库 OpenCV 就提供了完整的 Python 封…

Ubuntu Linux 操作系统-清华大学开源软件镜像站下载

Ubuntu 是一个由全球化的专业开发团队建造的操作系统。它包含了所有您需要的应用程序&#xff1a;浏览器、Office 套件、多媒体程序、即时消息等。Ubuntu 是一个 Windows 和 Office 的开源替代品。 Ubuntu 的名称来自非洲南部祖鲁语或豪萨语的 “ubuntu” 一词&#xff08;译为…

总结超参数最优化

1.超参数是什么&#xff1f; 超参数是指的是比如SGD的一个学习率&#xff0c;或者是抑制过拟合时候的一个权重衰减率参数等等&#xff0c;这些参数需要一个合适的值才能很好的提升神经网络的学习效率 2.我们在进行超参数最优化的时候如何去做到超参数最优化&#xff1f; 2.1.设…

盘点十大国内外热门的SaaS点评平台

在B端市场里&#xff0c;企业如何调研、选择企服软件是困扰已久的问题。使用者需要选择合适的企服软件去提升企业内部效率&#xff0c;因此&#xff0c;选择一个合适的SaaS点评平台便非常重要。在SaaS点评平台&#xff0c;使用者可以了解、选择产品&#xff0c;而服务商可以收获…

撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing

书接上文。易智编译再推荐几种好用的写作工具&#xff1a; 7.Grammarly Grammarly是谷歌浏览器的一个扩展程序&#xff0c;可在浏览器任一窗口中检查你文字的拼写和语法。无论是使用Google文档编写&#xff0c;撰写电子邮件还是发布文章&#xff0c;Grammarly都会指出英语错误…

CNN的识别机制

搬来这个给自己学学~~ 所有基础都要写一个 大佬勿怪 只为自己学习 近年来&#xff0c;CNN 因其优异的性能&#xff0c;在计算机视觉、自然语言处理等各个领域受到了研究者们的青睐。但是&#xff0c;CNN 是一个 「黑盒」 模型&#xff0c;即模型的学习内容和决策过程很难用人类…

Blazor组件自做十 : 光学字符识别 OCR 组件

光学字符识别 OCR 组件 演示地址 https://blazor.app1.es/ocr使用方法手机或者电脑点击拍照OCR可启动相机拍照,或者点击文件OCR选择文件,稍等片刻即可获得OCR结果.直接输入Url可识别在线图片AI表格识别 AI Form 演示地址 https://blazor.app1.es/aiform

读《趣学算法》:重开算法之门,时间复杂度与空间复杂度

14天阅读挑战赛 一、前言 程序 数据结构 算法 时过境迁&#xff0c;自己早已把算法的基础忘记得干干净净&#xff0c;最近看到CSDN发起了《趣学算法》的14天阅读挑战赛&#xff0c;兴趣再次油然而起&#xff0c;既然想学&#xff0c;就不用那么计较&#xff0c;马上就开始&a…

web权限提升-令牌窃取烂土豆dll劫持

目录 &#xff08;一&#xff09;Windows2008&7令牌窃取提升-本地 0x01 前置知识——令牌&#xff08;TOKEN&#xff09; 令牌有很多种&#xff1a; MSF伪造令牌实战 0x02 原理和利用范围 &#xff08;二&#xff09;烂土豆提权 1. 原理&#xff1a; 总结 2.环境搭…

Cosmos模块化功能链 走向亿级用户的超级Dapp时代

前言 加密不缺故事&#xff0c;而 Aptos 贡献了一次事故。 Move 生态的威力不应被轻视&#xff0c;跟随 Aptos 主网上线的&#xff0c;已经有域名服务 Aptos Names、钱包 Pontem、多签钱包 Momentum Safe、NFT 市场 Souffl3、借贷协议 Argo。 这是第一次众多应用和主网一起上…

【预测模型-DELM分类】基于哈里斯鹰算法改进深度学习极限学习机实现数据分类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …