双目视觉实战--单视图测量方法

目录

一.简介

二、2D变换

1. 等距变换(欧式变换)

2. 相似变换

3. 仿射变换

4. 射影变换(透视变换)

5. 结论

三、影消点与影消线

1. 平面上的线

2. 直线的交点

3. 2D无穷远点

4. 无穷远直线

5. 无穷远点的透视变换与仿射变换

6. 无穷远线的透视变换与仿射变换

7. 空间中的面和直线

8. 三维空间中的无穷远点(空间中平行线的交点)

9. 影消点

10. 影消线(视平线)

11. 无穷远平面

12. 两组平行线的夹角和影消点的关系

三、单视图重构

1. 单视图标定

2. 单视图重构


一.简介

双目视觉是利用两个摄像头或者图像传感器来模拟人类双眼之间的距离差异(即视差)而实现对物体深度信息的获取和三维立体重建。通过计算两个视角下的物体位置差异,可以得出物体相对于相机的距离,进而实现深度估计和三维重建。在机器视觉、机器人、虚拟现实、增强现实等领域有广泛应用。

单视图测量是指利用一张图像对其中物体的几何尺寸进行估计的方法。它常用于工程、制造、建筑等领域中对物体尺寸和形状进行快速测量和分析。

单视图测量通常涉及以下步骤:

  1. 选择测量对象和拍摄一张图像:从需要测量的物体中选择需要测量的特征,并拍摄一张包含这些特征的图像。

  2. 估计物体尺寸:使用现有的相机参数和基本几何知识(如三角测量、比例关系等)来推断图像中物体的几何尺寸。也可以使用相对高级的计算机视觉技术(如结构光、影像匹配等)来提高测量精度和效率。

  3. 验证测量结果:根据实际测量需求,对测量结果进行验证和校准,例如与现场实际测量值进行比较,或者使用多个视角的测量结果进行融合和校正。

单视图测量的优点在于其简单、直观,不需要额外的传感器和测量设备。但是,由于只利用一张图像进行估计,存在一定的误差和不确定性,尤其是物体形状和光照变化较大时。因此,在实际应用中,通常需要结合其他测量方法和技术来提高精度和可靠性。

二、2D变换

1. 等距变换(欧式变换)

等距变换(Isometric Transformation),也被称为刚体变换(Rigid Transformation),是指在二维或三维空间中保持物体的形状、大小和长度不变的变换。

等距变换包括平移(Translation)、旋转(Rotation)和镜像(Reflection)三种基本操作。平移是沿着某个方向将物体整体移动一定距离,旋转是围绕某个点进行旋转角度的变换,而镜像则是通过翻转物体使其对称。

在二维空间中,等距变换可以表示为:

平移变换:

[x']   [1 0 tx] [x]
[y'] = [0 1 ty] [y]

旋转变换:

[x']   [cosθ -sinθ] [x]
[y'] = [sinθ cosθ]  [y]

镜像变换:

  • 对x轴镜像:
[x']   [1  0] [x]
[y'] = [0 -1] [y]
  • 对y轴镜像:
[x']   [-1 0] [x]
[y'] = [0  1] [y]
  • 对原点镜像:
[x']   [-1  0] [x]
[y'] = [ 0 -1] [y]

在三维空间中,等距变换的表示方式类似,只是需要增加更多的维度和参数来描述物体的移动、旋转和镜像操作。

特点:

  • 不变量:长度、面积
  • 3个自由度
  • 适合描述刚性物体的运动

2. 相似变换

相似变换(Similarity Transformation)是指保持物体形状和比例关系的变换,包括平移、旋转和缩放这三种基本操作。

在二维空间中,相似变换可以表示为:

平移变换:

[x']   [1 0 tx] [x]
[y'] = [0 1 ty] [y]

旋转变换:

[x']   [cosθ -sinθ] [x]
[y'] = [sinθ cosθ]  [y]

缩放变换:

[x']   [s 0] [x]
[y'] = [0 s] [y]

其中,(x, y) 是原始点的坐标,(x', y') 是经过相似变换后得到的新点的坐标,(tx, ty) 是平移的向量,θ 是旋转角度,s 是缩放因子。

相似变换不改变物体的形状和比例关系,只是对物体进行位置的移动、旋转和缩放。它们都是线性变换,保持了直线的性质,但不一定保持角度、曲率等其他几何性质。

特点:

  • 不变量:长度的比值、角度
  • 4个自由度

3. 仿射变换

仿射变换(Affine Transformation)是指将一个点或物体通过线性变换和平移变换映射到另一个空间中的变换。它可以保持物体的平行性、直线性和比例关系,但不一定保持物体的角度和曲率。

仿射变换可以用线性代数的矩阵运算来表示,通常使用一个2x2矩阵表示旋转和缩放的部分,再加上一个2x1的平移向量。在二维平面上,仿射变换可以用如下矩阵形式表示:

[x']   [a b] [x]   [tx]
[y'] = [c d] [y] + [ty]

其中 (x, y) 是原始点的坐标,(x', y') 是经过仿射变换后得到的新点的坐标,(a, b, c, d) 是旋转和缩放的参数,(tx, ty) 是平移的向量。

仿射变换在计算机视觉和图像处理中有广泛的应用,例如图像的旋转、放缩、平移、翻转等操作都可以通过仿射变换实现。此外,仿射变换还可以用于图像配准、图像校正、特征对齐、人脸识别等任务中。

值得注意的是,仿射变换是一种线性变换,它保持直线的性质,但不能保持曲线。如果需要处理非线性变换,例如透视投影,就需要使用更为复杂的射影变换(Projective Transformation)了。

特点:

  • 不变量:平行线、面积的比值
  • 不能保持原有线之间的夹角关系
  • 6个自由度

4. 射影变换(透视变换)

射影变换(Projective Transformation)是指将一个空间中的点或物体经过投影摄像机(perspective camera)或透视图(perspective view)的映射投影到另一个平面或空间中的变换。它通常可以用矩阵来表示,因此也被称为齐次坐标变换(Homogeneous Coordinates Transformation)。

射影变换是一种非线性变换,它可以用一个3x3的矩阵表示,并且由于其具有旋转、平移、缩放和投影等变换效果,因此它可以完成更为复杂的几何变换任务。在计算机视觉中,最常用的射影变换是针孔相机模型(Pinhole Camera Model)下的投影变换,该模型假设相机与场景之间的关系是透视投影。而在图像处理中,射影变换可以被用来实现各种图像的校正和纠偏,例如透视失真纠正、倾斜校正等。

特点:

  • 不变量:共线性、四共线点的交比
  • 不能保持原有平行关系
  • 8个自由度

5. 结论

  • 欧式变换相似变换的特例
  • 相似变换仿射变换的特例
  • 仿射变换透视变换的特例

三、影消点与影消线

1. 平面上的线

2. 直线的交点

3. 2D无穷远点

4. 无穷远直线

无穷远线是无穷远点的几何,也是平面上线的“方向”的集合。

5. 无穷远点的透视变换与仿射变换

        无穷远点经透视变换不是无穷远点

        无穷远点经仿射变换仍是无穷远点

6. 无穷远线的透视变换与仿射变换

        无穷远线经透视变换不是无穷远线

        无穷远线经仿射变换仍是无穷远线

7. 空间中的面和直线

空间中的直线定义为两平面的交线。一般用来描述直线的方向。

8. 三维空间中的无穷远点(空间中平行线的交点)

        空间中平行线的交点

9. 影消点

定义:无穷远点在图像平面上的投影点

设空间中直线方向为

        则影消点和直线方向满足以下关系:

10. 影消线(视平线)

影消线是空间上同一平面的多个无穷远点经透视变换得到的影消点的集合,也是空间上无穷远线经透视变换得到的平面直线。

        影消线和无穷远直线的关系:

影消线和平面法向量之间的关系:

11. 无穷远平面

        平行平面在无穷远处相交于一条公共线,称为无穷远直线。

        两条或多条无穷远直线的集合定义为无穷远平面

12. 两组平行线的夹角和影消点的关系


        由影消点和直线方向的关系,

        可以得到空间中两组平行线的夹角和影消点, 的关系:

此外,有以下性质:

应用:

  • 估计相机参数(单视图标定)
  • 恢复三维场景结构

三、单视图重构

1. 单视图标定

选取三个互相垂直的平面,分别找出三个平面上的影消点。可以列出下面三个方程:
        有5个自由度,但只能列出三个方程。若假定零倾斜、正方形像素,则,即只剩下三个自由度。这样就可以根据三个影消点求解出相机内参数矩阵。


2. 单视图重构

可以由两个影消点画出这一平面的影消线,根据之前求出的内参数矩阵/(K/),即可得到这一平面的法向量:
        同理可以求出另外两个平面的法向量。根据三个平面的方程,即可重构出画面。

注意:

场景的实际比例无法恢复;
需要手动选择影消点和影消线;
需要场景的先验信息,如点对应的关系,线、面几何信息等等。
单幅视图2D到3D的映射具有多义性
 

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

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

相关文章

Spring Cloud Gateway 使用 Redis 限流使用教程

从本文开始,笔者将总结 spring cloud 相关内容的教程 版本选择 为了适应 java8,笔者选择了下面的版本,后续会出 java17的以SpringBoot3.0.X为主的教程 SpringBoot 版本 2.6.5 SpringCloud 版本 2021.0.1 SpringCloudAlibaba 版本 2021.0.1.…

Prometheus的Pushgateway快速部署及使用

prometheus-pushgateway安装 一. Pushgateway简介 Pushgateway为Prometheus整体监控方案的功能组件之一,并做于一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如监控源位于防火墙之后,Prometheus无法穿透防火墙&…

C++基础——内存分区模型

1 概述 C程序在执行是,将内存大致分为4个区域: 代码区:用于存放二进制代码,由操作系统进行管理全局区:存放全局变量和静态变量及常量栈区:由编译器自动分配释放,存放函数的参数、局部变量等堆…

回首往昔,初学编程那会写过的两段愚蠢代码

一、关于判断两个整数是否能整除的GW BASIC创意代码 记得上大学时第一个编程语言是BASIC,当时Visual Basic还没出世,QBASIC虽然已经在1991年随MS-DOS5.0推出了,但我们使用的还是 GW-BASIC, 使用的教材是谭浩强、田淑清编著的《BA…

【广州华锐互动】VR建筑安全培训体验为建筑行业人才培养提供有力支持

随着建筑行业的快速发展,建筑施工安全问题日益受到广泛关注。然而,传统的安全培训方式往往缺乏实践性和真实性,难以让员工真正掌握安全操作技能。近年来,虚拟现实(VR)技术的广泛应用为建筑施工安全培训提供了新的机遇。 虚拟现实技…

金融用户实践|分布式存储支持数据仓库业务系统性能验证

作者:深耕行业的 SmartX 金融团队 闫海涛 估值是指对资产或负债的价值进行评估的过程,这对于投资决策具有重要意义。每个金融公司资管业务人员都期望能够实现实时的业务估值,快速获取最新的数据和指标,从而做出更明智的投资决策。…

【数组的使用续篇】

文章目录 以数组的形式打印数组打印方法:Arrays.toString(数组名) 数组排序大小排序方法是 Arrays.sort(数组名) 创建一个自己的打印数组的方法自己创建一个冒泡排序两数之间交换方法 逆置数组打印核心思路还是 i 和 j 交换 总结 以数组的形式打印数组 打印方法&am…

软件测试用例设计方法-因果图法

边界值法是等价类划分法的补充,所以,它们是一对搭档。 那么,判定表法有没有它的搭档呢? 答案是,有的。那就是本篇文章分享的用例设计方法—— 因果图法 。 定义 因果图法: 用来处理等价类划分和边界值…

三维地图开发三维地图服务器

三维地图开发三维地图服务器 发布时间:2020-03-03 版权: 搭建离线地图服务主要是两个步骤:一是:下载离线地图服务需要的地图数据;二是:将下载的离线地图数据发布成地图服务;只有做好这两步&…

出差学小白知识No5:ubuntu连接开发板|上传源码包|板端运行的环境部署

1、ubuntu连接开发板&#xff1a; 在ubuntu终端通过ssh协议来连接开发板&#xff0c;例如&#xff1a; ssh root<IP_address> 即可 这篇文章中也有关于如何连接开发板的介绍&#xff0c;可以参考SOC侧跨域实现DDS通信总结 2、源码包上传 通过scp指令&#xff0c;在ub…

python使用dataset快速使用SQLite

目录 一、官网地址 二、安装 三、 快速使用 一、官网地址 GitHub - pudo/dataset: Easy-to-use data handling for SQL data stores with support for implicit table creation, bulk loading, and transactions. 二、安装 pip install dataset 如果是mysql&#xff0c;则…

堆/二叉堆详解[C/C++]

前言 堆是计算机科学中-类特殊的数据结构的统称。实现有很多,例如:大顶堆,小顶堆&#xff0c;斐波那契堆&#xff0c;左偏堆&#xff0c;斜堆等等。从子结点个数上可以分为二汊堆&#xff0c;N叉堆等等。本文将介绍的是二叉堆。 二叉堆的概念 1、引例 我们小时候&#xff0c;基…

left join时筛选条件对查询结果的

-- 创建表 CREATE TABLE table1 (id int(11) NOT NULL AUTO_INCREMENT,card_num varchar(60) DEFAULT NULL,customer_id varchar(60) DEFAULT NULL,PRIMARY KEY (id) ) ENGINE InnoDBAUTO_INCREMENT 12DEFAULT CHARSET utf8mb4 COMMENT 测试表1;-- 创建表 CREAT…

44springboot摄影跟拍预定管理系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

basic_sr介绍

文章目录 pytorch基础知识和basicSR中用到的语法1.Sampler类与4种采样方式2.python dict的get方法使用3.prefetch_dataloader.py4. pytorch 并行和分布式训练4.1 选择要使用的cuda4.2 DataParallel使用方法常规使用方法保存和载入 4.3 DistributedDataParallel 5.wangdb 入门5.…

众佰诚:抖音小店的体验分什么时候更新

随着移动互联网的发展&#xff0c;越来越多的电商平台开始涌现&#xff0c;其中抖音小店作为一种新型的电商模式&#xff0c;受到了许多用户的欢迎。然而&#xff0c;对于抖音小店的体验分更新时间&#xff0c;很多用户并不是很清楚。本文将对此进行详细的解答。 首先&#xff…

SimpleCG图像操作基础

上一篇我们介绍了程序的交互功能&#xff0c;就可以编写一些简单的游戏了&#xff0c;例如贪吃蛇、扫雷、俄罗斯方块、五子棋等&#xff0c;都可以使用图形函数直接绘制&#xff0c;在后续文章中将逐一展示。不过编写画面丰富游戏离不开图像&#xff0c;所以本篇我们介绍一下基…

智能合同和TikTok:揭示加密技术的前景

在当今数字化时代&#xff0c;智能合同和加密技术都成为了技术和商业世界中的热门话题。它们代表了一个崭新的未来&#xff0c;有着潜在的巨大影响。 然而&#xff0c;你或许从未想过将这两者联系在一起&#xff0c;直到今天。本文将探讨智能合同和TikTok之间的联系&#xff0…

联想G50笔记本直接使用F键功能(F1~F12)需要在BIOS设置关闭热键功能可以这样操作!

如果开启启用热键模式按F1就会出现FnF1的效果&#xff0c;不喜欢此方式按键的用户可以进入BIOS设置界面停用热键模式即可。 停用热键模式方法如下&#xff1a; 1、重新启动笔记本电脑&#xff0c;当笔记本电脑屏幕出现Lenovo标识的时候&#xff0c;立即按FnF2进入BIOS设置界面…

表单规定输入域的选项列表(html5新元素)

datalist datalist 元素规定输入域的选项列表。 datalist属性规定 form 或 input 域应该拥有自动完成功能。当用户在自动完成域中开始输入时&#xff0c;浏览器应该在该域中显示填写的选项&#xff1a; 使用 input元素的列表属性与datalist元素绑定. 还有一定的搜索能力&…