计算机视觉教程1-3:图解透视几何原理(灭点、灭线)
目录
- 1 灭点(Vanishing Point)
- 2 灭线(Vanishing Line)
- 3 实例分析
1 灭点(Vanishing Point)
考虑三维空间中的一条直线
{x(t)=x0+aty(t)=y0+btz(t)=z0+ct\begin{cases} x\left( t \right) =x_0+at\\ y\left( t \right) =y_0+bt\\ z\left( t \right) =z_0+ct\\\end{cases}⎩⎪⎨⎪⎧x(t)=x0+aty(t)=y0+btz(t)=z0+ct
其中(x0,y0,z0)\left( x_0, y_0, z_0 \right)(x0,y0,z0)为直线上一点,ttt为参数。
根据相似三角形原理,有
{z(t)f=x(t)uz(t)f=y(t)v⇒{u=f(x0+at)z0+ctv=f(y0+bt)z0+ct\begin{cases} \frac{z\left( t \right)}{f}=\frac{x\left( t \right)}{u}\\ \frac{z\left( t \right)}{f}=\frac{y\left( t \right)}{v}\\\end{cases}\Rightarrow \begin{cases} u=\frac{f\left( x_0+at \right)}{z_0+ct}\\ v=\frac{f\left( y_0+bt \right)}{z_0+ct}\\\end{cases}{fz(t)=ux(t)fz(t)=vy(t)⇒{u=z0+ctf(x0+at)v=z0+ctf(y0+bt)
其中fff为相机焦距。令t→∞t\rightarrow \inftyt→∞,则
{u=facv=fbc{\begin{cases} u=\frac{fa}{c}\\ v=\frac{fb}{c}\\\end{cases}}{u=cfav=cfb
当c≠0c\ne 0c=0时,即空间直线与成像平面不平行时,该直线在成像平面上的投影为收敛于灭点(Vanishing Point)的线段,如图所示;当c=0c=0c=0时,则为正交投影,直线与成像面不存在透视关系,亦不存在灭点。
从灭点方程可见,灭点只取决于直线的方向,而与直线上具体的点无关,因此空间中不平行于成像平面的平行线将相交于同一个灭点。此外,相机中心与灭点连成的直线平行于原直线。
2 灭线(Vanishing Line)
将空间直线推广到空间平面可得类似的结论:空间平面与成像平面不平行时,该平面在成像平面上的投影为收敛于灭线(Vanishing Line)的区域,相互平行的空间平面在成像空间收敛于同一条灭线。灭线是该空间平面上所有空间直线灭点的集合。
空间水平面上的垂直结构在成像面上的投影可以提供相机或场景的几何信息,例如相机的姿态模式、场景物体高度推测等,列如表所示。
3 实例分析
下面给出几个实例。
如图所示,由于垂直结构在垂直方向上不存在灭点,且灭线穿过像素平面中心,因此根据表,此时相机成像平面不存在偏角(与水平面正交)。此外,图也说明了平行平面收敛于同一条灭线(海、天、木地板),平行直线相交于同一个灭点。
图2.4.3给出了基于透视几何高度估计的实例。
首先将图2.4.2(a)所示的源图片进行畸变修正,接着按图2.4.2(b)所示进行灭点、灭线估计。根据平行直线相交于同一灭点的几何关系,找出目标物对应的灭点,以及与该灭点对应的参考物,如图2.4.2中的目标物——人,以及参考物——柜子。通过参考物的几何信息,按比例映射到目标物,完成高度估计。此外,由于成像平面中垂直方向有灭点,亦能推测此时相机姿态模式——朝下。
计算机视觉教程1-3:图解透视几何原理(灭点、灭线)相关推荐
- 深度学习与计算机视觉教程(11) | 循环神经网络及视觉应用(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...
- 深度学习与计算机视觉教程(4) | 神经网络与反向传播(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...
- 深度学习与计算机视觉教程:斯坦福CS231n · 全套笔记解读
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...
- 深度学习与计算机视觉教程(10) | 轻量化CNN架构 (SqueezeNet,ShuffleNet,MobileNet等)(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...
- 深度学习与计算机视觉教程(3) | 损失函数与最优化(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...
- promise用法_图解 Promise 实现原理(四):Promise 静态方法实现
作者:Morrain 转发链接:https://mp.weixin.qq.com/s/Lp_5BXdpm7G29Z7zT_S-bQ 前言 Promise 是异步编程的一种解决方案,它由社区最早提出和实 ...
- 实现同步请求_图解 Promise 实现原理(二)—— Promise 链式调用
摘要 很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了.本系列文章由浅入深逐步实现 Promise,并结合流程图.实例以及动画进行演示,达到深刻理解 Promise 用法 ...
- promise用法_图解 Promise 实现原理(一)—— 基础实现
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/UNzYgpnKzmW6bAapYxnXRQ 作者:孔垂亮 很多同学在学习 Promise 时 ...
- css5辅助线,苦练 CSS 基本功——图解辅助线的原理和画法
原标题:苦练 CSS 基本功--图解辅助线的原理和画法 本文转载于 SegmentFault 社区 作者:comehope 在用 CSS 进行绘图和布局时,除了借助浏览器开发工具之外,还经常需要绘制一 ...
- Git使用教程:完全图解!
Git使用教程:完全图解 红色的地方是重点,圈起来要靠 使用Git前面要知道明白自己要干什么 进行文件的版本控制或者推送到(拉取)远程的的仓库 两天踩得的坑,都能快把自己给埋了,坑见后文. 避免各位少 ...
最新文章
- gprof使用介绍 (gcc -pg)
- IOS开发笔记 - 基于SDWebImage的网络图片加载处理
- 广义表及其存储方式简介
- Redmine数据库备份及搬家
- 分布式事物框架TCC-Transaction使用教程
- DFS+BFS(POJ3083)
- 已root手机在DDMS下无法读取data目录的解决办法
- html中css字体颜色代码大全,css字体颜色的设置方法
- android wifi分析 实现原理,解析android 流量监测的实现原理
- 【锐捷交换】交换机MSTP+VRRP配置
- 【转】常用邮箱的 IMAP/POP3/SMTP 设置
- PTA 离散数学-数理逻辑自测
- Android使用Service播放音乐
- 如何一日千里 突飞猛进?
- DBSCAN聚类——Python实现
- 小白学习朴素贝叶斯——看即懂
- SpringCloud分布式开发五大神兽(一)
- Jackson之JSON序列化和多态反序列化
- VMware Photon OS安装配置
- js 日期字符串如何转换成moment日期