消失点(灭点、Vanishing Point)

2023-05-16

目录

定义:

性质:

消失点分为3种 

一条直线的消失点是过摄影中心且平行于该直线的直线与像平面的交点。

地面物体的两个消失点的连线为水平线,提供地平线的信息

应用:

计算焦距和图像中心

求像心

求焦距

 利用灭点恢复相机姿态,至少需要找到两个互相垂直方向上的灭点。


最近在看Cube-SLAM和相机标定都看到了消失点,之前没了解过,花了些时间学习了下。

定义:

消失点:指的是 立体图形各条平行边的延伸线所产生的相交点。因为空间中的平行线经透视变换后均相较于一点。例如下图的轨道包含若干条平行线,在图像上交于一点。

  

空间中直线有多种表示方式,参考:(68条消息) 空间直线的几种方程_空间直线方程_酷酷的Herio的博客-CSDN博客

直线L经过点M_0(\:x_0\:,y_0\:,z_0\:)且平行于向量s,则直线上一点M(\:a\:,b\:,c\:)可使用参数方程可表示为:

\begin{cases}\mathrm{x}\left(\mathrm{t}\right)=\mathrm{x}_0\:+\mathrm{at}\\ \mathrm{y}\left(\mathrm{t}\right)=\mathrm{y}_0\:+\mathrm{bt}\\ \mathrm{z}\left(\mathrm{t}\right)=\mathrm{z}_0\:+\mathrm{ct}\end{cases}

根据透射几何,直线上的点在相机像平面上的投影为:

\begin{cases}\frac{\mathrm{z(t)}}{\mathrm{f}}\:=\frac{\mathrm{x(t)}}{\mathrm{u}}\\ \frac{\mathrm{z(t)}}{\mathrm{f}}\:=\frac{\mathrm{y(t)}}{\mathrm{v}}\end{cases}\Rightarrow\begin{cases}\mathrm{u}=\frac{\mathrm{f(x_0+at)}}{\mathrm{z_0+ct)}}\\ \mathrm{v}=\frac{\mathrm{f(y_0+bt)}}{\mathrm{z_0+ct}}\end{cases}

其中f为焦距,当t\rightarrow\infty时,\begin{cases}\mathrm{u}=\frac{\mathrm{fa}}{\mathrm{c}}\\ \mathrm{v}=\frac{\mathrm{fb}}{\mathrm{c}}\end{cases}

 若c 等于 0,意味着 z 值不变。假设我像这样拿着相机,我的像平面是垂直的,空间直线与相机z 轴是垂直的,直线上点的z值不变,则表示世界上的直线与我的像平面平行。它不会离得更远或更近,它会保持平行,这些线都会保持平行线。这就是为什么我说世界上几乎所有的平行线都收敛于一点。如果平行线是垂直的或与像平面对齐的,它们不会收敛。

以上推导说明空间中的不垂直于相机光轴的平行线在图像上均相交于一点,该交点即为消失点,且消失点在图像上的位置仅与平行线的方向有关

参考:灭点_cc514981717的博客-CSDN博客
(68条消息) 14.图像透视——投影几何性质,平行线(Parallel Lines),消失点(Vanishing Point)_3_Tom Boom的博客-CSDN博客

(69条消息) 计算机视觉教程1-3:图解透视几何原理(灭点、灭线)_Mr.Winter`的博客-CSDN博客 

性质:

注:以下仅讨论不垂直于相机光轴的空间直线

消失点分为3种 

透视是什么?一点、两点、三点透视 - 知乎 (zhihu.com)

一条直线的消失点是过摄影中心且平行于该直线的直线与像平面的交点。

这也是,灭点的几何意义。

因为过摄影中心的平行直线在像平面上的成像仅为该消失点(M_0(\ x_{0}=0\:,y_{0}=0\:,z_{0}=0\:)\:),而每条平行线均应通过该消失点,说明该点即为消失点,也即所有平行的直线在像平面的投影均相交于该点。

地面物体的两个消失点的连线为水平线,提供地平线的信息

假设地面物体包含平行于地面的结构线,并形成了两个消失点,那么这两个消失点和相机光心组成的平面平行于地面(两对平行的相交直线所构成平面平行),那么该平面与像平面的交线即为图像上的地平线,这两个消失点就在交线上,所以两个消失点的连线属于地平线。

也即消失点定义的推论1:位于空间中一个平面内的直线的灭点,是过投影中心且与该平面平行的平面与像平面的交线。推论2:空间中与某平面平行的直线的灭点在一条直线上。

应用:

计算焦距和图像中心

在这里插入图片描述

在这里插入图片描述

求像心

H是垂心(三条高线的交点),并且所有三个角度AOB,BOC和COA均为直角,则OH垂直于ABC平面!

说明OH为相机光轴,所以H为像心。

求焦距

在这里插入图片描述

以上公式为垂心的性质,参考: (68条消息) 3月3日 单灭点、双灭点、单应矩阵求解相机姿态,世界坐标-相机坐标-图像坐标-像素坐标四个坐标系的变换关系,通过Vanishing Points计算焦距和像心_灭点求外参_Hali_Botebie的博客-CSDN博客

 利用灭点恢复相机姿态,至少需要找到两个互相垂直方向上的灭点。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

参考:(68条消息) 3月3日 单灭点、双灭点、单应矩阵求解相机姿态,世界坐标-相机坐标-图像坐标-像素坐标四个坐标系的变换关系,通过Vanishing Points计算焦距和像心_灭点求外参_Hali_Botebie的博客-CSDN博客 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

消失点(灭点、Vanishing Point) 的相关文章

  • vscode编辑c++报错undefined reference to `Point::setY(int)‘ collect2.exe: error: ld returned 1 exit statu

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 64 TOC 文vscode编辑c 43 43 报错undefined reference to 96 Point setY int co
  • 论文笔记之PPDM(Parallel Point Detection and Matching for Real-time Human-Object Interaction Detection)

    分为两分支 xff0c 一个用于点 xff08 人 物 交互三个点 xff09 检测 xff0c 一个用于点匹配 xff0c 达到了实时的效果 CVPR2020接收 论文地址 xff1a https arxiv org pdf 1912 1
  • PCD文件格式(The PCD (Point Cloud Data) file format)

    https blog csdn net RuoQiQingCheDi article details 83959198
  • rtklib--伪距单点定位(single-point positioning)学习(1)Satposs

    目录 前言pntpos总体调用流程图Satposs总体调用流程图 xff1a 1 Satposs 按照所观测到的卫星顺序计算出每颗卫星的位置 速度 钟差 频漂 2 ephclk 通过广播星历来确定卫星钟偏3 stasys 根据卫星编号确定该
  • gcc之-fomit-frame-point

    Kernel里的dump stack oops打印出来的backstrace调用链表是怎样实现的呢 xff1f 大家都知道当发生函数调用的时候 xff0c 函数的参数传递 xff0c 返回值传递都要遵循一定的规则 xff0c 在ARM体系架
  • 如何偏移多边形边?

    I have a list of point2D that makes a closed polygon Now I want to create another set of 2D points by offsetting the pol
  • 二次贝塞尔曲线:计算点

    我想计算二次曲线上的点 与 HTML5 的 canvas 元素一起使用 当我使用quadraticCurveTo JavaScript 中的函数 我有一个源点 一个目标点和一个控制点 假设我如何计算创建的二次曲线上的点t 0 5 只 知道这
  • 扩展结构的最简单方法(PointF)

    我们需要用 PointF 沿贝塞尔曲线的位置的 t 参数 存储一条附加信息 由于该数据不容易重新计算 因此我想在计算点时将其与 PointF 一起存储 以便在其他例程中使用 我们有数百个对 PointF 的引用 因此我希望不必创建一个新的替
  • 多边形内的点到多边形边的距离

    我正在使用 NLCD 数据研究大片区域 7 个森林和非森林州 在一些森林地区有一个地块 这是我正在研究的硕士论文 我用这个庞大的数据集难倒了我问过的每个人 但我们确信有一个解决方案 森林 非森林区域是有符号的离散栅格 我能够通过对森林区域进
  • 在 MatLab 中绘制 3d 点

    我试图在任何坐标系中仅绘制一个点 笛卡尔坐标系 圆柱坐标系或球坐标系 I tried plot3 1 1 1 有很多值 但只是在所有值的同一位置显示一个小点 我试过surf X Y Z 但 matlab 说 Z 必须是矩阵 而不是标量或向量
  • 多个点能否组成一个圆? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我有例如20个点 我如何检查这些
  • 确定点是否位于 3D 网格内部的算法

    用于确定点是否位于 3D 网格内部的快速算法是什么 为简单起见 您可以假设网格都是三角形并且没有孔 到目前为止我所知道的是 确定光线是否穿过网格的一种流行方法是计算光线 三角形相交的数量 它必须很快 因为我正在使用它进行触觉医学模拟 所以我
  • ggplot中的控制点边框厚度

    使用ggplot时 我可以设置shape到 21 25 以获得具有内部独立设置的形状 fill 和边界 col 颜色 如下所示 df lt data frame id runif 12 x 1 12 y runif 12 ggplot df
  • 使用 PointToScreen 在 wpf 中查找控件的位置

    我正在尝试在主窗口内找到用户控件的相对坐标 我尝试使用 Control PointToScreen 方法 但没有成功 每次我这样做时 我都会收到一个异常 System InvalidOperationException 此视觉对象未连接到P
  • QPainterPath 与直线的交点(通过 x 求 QPainterPath y)

    我有 QPainterPath 我需要通过 x 找到 QPainterPath 的 y 坐标 我在 QPainterPath 中找到了 intersected 方法 因此 我创建了新的 QPainterPath 它是具有 x 坐标的从路径边
  • Android 绘制点

    如何用画布绘制完整的圆或点 我使用画布和路径 绘画类 my code Override public boolean onTouchEvent MotionEvent event float eventX event getX float
  • MongoDB 如何查找哪个多边形包含指定点?

    我将许多多边形插入MongoDB 2 4 8 并希望找到指定点所在的多边形 这似乎是一个常见问题 但在阅读了谷歌的所有文档后 我没有得到结果 所以提出这个问题 e g db addr poly insert loc type Polygon
  • 如何生成圆形分布中的随机点

    我想知道如何生成出现在圆形分布中的随机数 我能够在矩形分布中生成随机点 以便这些点在 0 我将如何继续生成圆内的点 以便 x 500 2 y 500 2 import random import math radius of the cir
  • 如何在 MATLAB 中创建带有分级标记颜色的散点图?

    我想在 MATLAB 中绘制一个简单的散点图 标记颜色从光谱的一端到另一端各不相同 例如红色 橙色 黄色 蓝色 紫色 我的数据比较了一段时间内河流的水量和水质 3 个简单的列 时间 水量 质量 我想绘制数量与质量的 x y 散点图 但颜色随
  • OpenGL ES 2.0 中的纹理点?

    我正在尝试在 OpenGL ES 2 0 中为粒子系统实现纹理点 例如点精灵 我遇到的问题是所有点都渲染为实心黑色方块 而不是正确映射纹理 我已经验证 gl PointCoord 实际上返回从 0 0 到 1 0 的 x y 值 这将映射到

随机推荐

  • Fusion-io的吸引力:高读写能力与低延迟

    fusion io ssd硬盘的性能 url http sapling me hardware fusion io html url
  • 转:python的socket编程

    python socket编程简介 xff1a python 编写server的步骤 xff1a 1 第一步是创建socket对象 调用socket构造函数 如 xff1a socket 61 socket socket family ty
  • TIME_WAIT连接过多的解决

    netstat n awk 39 tcp 43 43 S NF END for a in S print a S a 39 LAST ACK 1 SYN RECV 164 CLOSE WAIT 3 ESTABLISHED 655 FIN W
  • MySQL更改root密码

    情况一 记得root密码 用SET PASSWORD命令 1 打开终端win 43 r输入cmd回车即可打开 xff1b 2 通过mysql u用户名 p指定root用户登录MySQL xff0c 输入后回车会提示输入密码 3 修改MySQ
  • mac下控制台可以搜索到命令但是vscode显示zsh: command not found:

    记录下吧 困扰几天了 xff0c mac怎么这么难安这些环境变量什么的啊哈哈哈 node npm都是能搜到的 在控制台全局安装了yarn xff0c 控制台可以yarn v命令 xff0c 但是vscode报错zsh command not
  • 1.机器学习sklearn-------聚类

    1 sklearn简介 Scikit learn 也简称 s klearn 是机器学习领域当中最知名的 python 模块之一 sklearn库共分为6大部分 xff0c 分别用于完成分类任务 回归任务 聚类任务 降维任务 模型选择以及数据
  • KEIL编译报错,解决方法汇总

    目录 背景 最近在跟着野火码uCosiii的代码时 xff0c 感觉非常完美 xff0c 结果一编译 xff0c 报了120个莫名其妙的问题 xff0c 下面是踩过的坑 xff0c 一起记录下 xff0c 免得下次又掉进去了 1 编译汇编文
  • “从0开始的FreeRTOS”系列教程第一讲

    大家好 xff0c 这次给大家带来了Freertos的教程 xff0c 这次打算一口气做完一整个系列的教程 xff0c 大概更新频率会是月更 这个系列的教程的主要目的是带大家了解实时系统 real time operating system
  • 我的2013奋发突进

    先简单介绍自己 男 大专学历2012年6月毕业 期间2011 6月 2012 6 算是实习期 正式实习了一年 从2012 6月实习结束后 没打算在原来实习的单位呆着 换了一家公司 一直到2013年的7月末 考虑到种种原因 回归家乡了 技术篇
  • VR 杂想

    什么是VR VR xff08 科学技术 xff09 即VR xff08 Virtual Reality xff0c 即虚拟现实 xff0c 简称VR xff09 xff0c 是由美国VPL公司创建人拉尼尔 xff08 Jaron Lanie
  • 解决rosdep init错误和rosdep update错误以及ros密钥错误

    解决rosdep init错误和rosdep update错误以及ros密钥错误 如果仍无法解决下面所述问题 xff0c 欢迎留言 对于rosdep init错误有以下几种方法 1 更换软件源并更新软件包 sudo apt get upda
  • vscode使用技巧——webpack项目的断点调试

    为了方便调试 xff0c 我研究了一下如何使用vscode进行断点调试 本次尝试已在html template项目中测试通过 安装插件 在vscode的插件商店安装必要的插件 Debugger for Chrome 调整webpack配置
  • apt-get 源和常识

    本文内容 xff1a 1 apt get的源换成阿里或163的 2 atp get的源的常识 一 概述 安装好Ubuntu它自带源是国外的 xff0c 访问较慢 xff0c 经常会出现连接失败的情况 所以建议将它替换为国内的 xff08 如
  • 树莓派、百度DuerOS等RAW格式的镜像浏览、提取文件的方法

    前言 树莓派上装了docker等一堆东西 xff0c 要跑DuerOS的 DuerOS开发套件个人版 http open duer baidu com openduer product idk id 61 personal xff0c 有好
  • 解决Ubuntu可以ping通ip地址,不能ping通域名和浏览器无法上网的问题

    Ubuntu版本18 04 4 主要原因 原本的dns解析不行 要修改为谷歌的域名解析服务器8 8 8 8才行 并且每次关机后就会恢复默认 要添加到开机自启 1 修改配置文件 vim etc NetworkManager NetworkMa
  • Java核心技术卷1读书笔记

    Java核心技术卷1读书笔记 前言Math floorMod 前言 本笔记主要记录学习 JAVA核心技术 卷1 时遇到的问题或者心得 xff0c 若有朋友有更好的学习资源推荐请留言或联系我VX 18439428204 QQ 75107651
  • [前端基础] 浏览器篇

    提供基础用法 xff0c 基础概念引用 MDN W3C xff0c 基础内容做扩展知识 xff0c 可应对面试 xff0c 详细原理及应用需要去官网 GitHub 深入学习 1 常用 BOM 方法 BOM xff08 browser obj
  • STM32 keil5 报错:flash download failed-cortex M3解决方法

    起因 因为之前自己使用的STM32都是使用的F4 xff0c 自己打了一块STM32F1C8T6板子 xff0c 焊好之后 xff0c 打开以前正点原子的例程的时候 xff0c 出现无法烧录的情况 xff0c 总是报这样的错误 xff0c
  • Hadoop实战学习(3)-读取数据库内容

    要读取数据库中的数据 xff0c 首先需要实现一个实体类 xff0c 这个实体类部分映射数据库中要查询的表的字段 且该实体类需要实 现Writable与DBWritable两个接口 xff0c DBWritable的实现类负责查询与写入 x
  • 消失点(灭点、Vanishing Point)

    目录 定义 xff1a 性质 xff1a 消失点分为3种 一条直线的消失点是过摄影中心且平行于该直线的直线与像平面的交点 地面物体的两个消失点的连线为水平线 xff0c 提供地平线的信息 应用 xff1a 计算焦距和图像中心 求像心 求焦距