计算机视觉之三维重建(5)---双目立体视觉
文章目录
- 一、平行视图
- 1.1 示意图
- 1.2 平行视图的基础矩阵
- 1.3 平行视图的极几何
- 1.4 平行视图的三角测量
- 二、图像校正
- 三、对应点问题
- 3.1 相关匹配法
- 3.2 归一化相关匹配法
- 3.3 窗口问题
- 3.4 相关法存在的问题
- 3.5 约束问题
一、平行视图
1.1 示意图
如下图即是一个平行视图。特点:(1) 两个平面平行。 (2) 基线平行于图像平面,极点 e e e 和 e ′ e' e′ 位于无穷远处。
1.2 平行视图的基础矩阵
1. 对于基础矩阵我们有另一个表达式: F = e ′ × K ′ R K − 1 F=e'×K'RK^{−1} F=e′×K′RK−1,推导过程如下所示。
2. 在平行视图情况下,极点交于无穷远处,所以我们可以假定极点 e ′ = [ 1 , 0 , 0 ] T e'=[1,0,0]^T e′=[1,0,0]T,平行视图下, K = K ′ K=K' K=K′, R = I R=I R=I,那么对于平行视图有:
1.3 平行视图的极几何
1. 极线是水平的,平行于 u u u 轴。
2. 平行视图下, p p p 和 p ′ p' p′ 在 v v v 轴方向坐标相同,即垂直方向没有变换。
3. 极点位于无穷远处。
4. 已知 p p p 和 F F F 的情况下, p ′ p' p′ 只需要按着扫描线寻找即可,扫描线指的是过 p p p 且平行于 u u u 轴的线。
1.4 平行视图的三角测量
1. 俯视这个平行视图,两个摄像机平面就会变成线。 P P P 到 O 1 O_1 O1 和 O 2 O_2 O2 的距离表示为深度 z z z, O 1 O_1 O1 和 O 2 O_2 O2 的距离为 B B B,焦距为 f f f。利用相似三角形底比高可得视差与深度 z z z 成反比。
2. (1) 平行视图中的视差图:根据两台平行摄像机在不同角度观察同一物体或场景时,由于视角差异造成的图像的差异进而推断出物体的深度和距离,得到一幅信息图,可以用于对物体或场景的三维重建和识别。 (2) 3D电影通过用两个摄像头同时模拟拍摄同一场景,模拟人眼双眼视觉,再将两个平行视图分别投影到屏幕上,由于使用特殊的偏振式眼睛,通过人眼的立体视觉原理,会给观众感知到一种立体的深度效果。
二、图像校正
1. 图像校正:使一组非平行视图通过校正构建成平行视图。
2. 图像校正有五步:
(1) 在两幅图像 l l l 和 l ′ l' l′ 上找到一组匹配点 p i ↔ p i ′ p_i↔p'_i pi↔pi′,不少于 8 8 8 个。
(2) 计算基础矩阵 F F F(八点法),求解两幅图像中的极点 e e e 和 e ′ e' e′。
(3) 选择透视变换 H ′ H' H′ 将 e ′ e' e′ 映射到无穷远点 ( f , 0 , 0 ) (f,0,0) (f,0,0),变换公式: H = T − 1 G R T H=T^{-1}GRT H=T−1GRT。
① 先将图像的中心点从左下角移到中心。② 构造 R R R。③ 构造 G G G。
(4) 对透视变换矩阵 H H H 进行变换,使得经过 H H H 和 H ′ H' H′ 变换后的两个像平面满足平行视图要求: Σ d ( H p i , H ′ p i ′ ) Σd(Hp_i,H'p_i') Σd(Hpi,H′pi′)。
(5) 分别利用新的矩阵 H H H 和 H ′ H' H′,对左右两幅图像 l l l 和 l ′ l' l′ 进行重采样,得到一组平行视图。
三、对应点问题
对应点搜索问题,即根据 p p p 点寻找对应 p ′ p' p′ 点的问题,我们根据平行视图极几何关系可知, p ′ p' p′ 点一定在扫描线上,这样可以进一步缩小的检索范围。
3.1 相关匹配法
通过点与点之间 3 ∗ 3 3*3 3∗3 窗口的相关性来进行判断。作为相关性标准,该方法可行依据在于,一般情况下一个图像上像素颜色或灰度的变化是平滑的,这样近似相同点平方的最大值的和在理论上大于高偏差点平方的最大值的和。
3.2 归一化相关匹配法
1. 对于一个图像上存在像素颜色或灰度变化突变的情况,上一种方法会出现计算误差较大,所以需要进行归一化。
2. 归一化相关匹配法:改变原来的相似性度量,通过每个窗口向窗口均值进行归一化,达到平滑的效果。
3.3 窗口问题
对于较小的窗口:会引入更多的噪声,更容易受到噪声影响,但反之也会在没有噪声影响的地方提供更精确的信息。对于较大的窗口:通过归一化操作可以平滑更多的噪声,但也会丢失一部分细节。
3.4 相关法存在的问题
1. 透视缩短和遮挡问题:
2. 当遇到不规则物体在视角上存在遮挡时,可能由于 B / z B/z B/z 的过大,两个像平面无法得到更多的信息交互,导致信息丢失,所以可以适当减小 B / z B/z B/z。但当 B / z B/z B/z 过小时,由于双目视觉上遮挡的信息只能尽量的去弱化,不能去消除,所以当 B / z B/z B/z 过小时,物体的突出部会造成过大的深度误差,从而在三维重建过程中存在视觉上的明显错误。
3. 同质区域:由于存在世界坐标下不同区域但颜色非常相近的地方,所以会导致误差的产生,比如用双目视觉去测量一堵白墙的形状,但光影极其不明显。
4. 对于世界实物上存在重复的区域,这会对双目视觉的三维重建产生较大的影响。
3.5 约束问题
1. 唯一性约束:对于一张图像中的任何点,在另一张图像上最多只有一个匹配点,不存在同质区域和重复区域。
2. 顺序约束/单调性约束:左右视图中的对应点次序一致,保证不存在遮挡。
3. 平滑性约束:视差函数通常是平滑的,减少曝光亮度突变的问题。
相关文章:

计算机视觉之三维重建(5)---双目立体视觉
文章目录 一、平行视图1.1 示意图1.2 平行视图的基础矩阵1.3 平行视图的极几何1.4 平行视图的三角测量 二、图像校正三、对应点问题3.1 相关匹配法3.2 归一化相关匹配法3.3 窗口问题3.4 相关法存在的问题3.5 约束问题 一、平行视图 1.1 示意图 如下图即是一个平行视图。特点&a…...

计算机网络-TCP/IP 网络模型
TCP/IP网络模型各层的详细描述: 应用层:应用层为应用程序提供数据传输的服务,负责各种不同应用之间的协议。主要协议包括: HTTP:超文本传输协议,用于从web服务器传输超文本到本地浏览器的传送协议。FTP&…...
算法训练营第29天|LeetCode 491.递增子序列 46.全排列 47.全排列Ⅱ
LeetCode 491.递增子序列 题目链接: LeetCode 491.递增子序列 解题思路: 用哈希集合进行去重,同一树层不能取重复元素。 代码: class Solution { public:vector<vector<int>>result;vector<int>path;void…...
Ubuntu服务器搭建 - 环境篇
Ubuntu服务器搭建 - 环境篇 基于腾讯云服务器 - Ubuntu 20.04 LTS 一、安装 - MySQL 1.1 概述 MySQL安装方式有三种: 1. 使用Ubuntu 包管理工具 apt安装 2. 使用MySQL官方APT存储库安装 3. 使用MySQL官方二进制发行版安装 1.2 安装 MySQL 使用MySQL官方APT存储库安装 $ wget…...

深度学习基础模型之Mamba
Mamba模型简介 问题:许多亚二次时间架构(运行时间复杂度低于O(n^2),但高于O(n)的情况)(例如线性注意力、门控卷积和循环模型以及结构化状态空间模型(SSM))已被开发出来,以解决 Transformer 在长…...

Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件
Topaz Video AI for Mac是一款功能强大的视频处理软件,专为Mac用户设计,旨在通过人工智能技术为视频编辑和增强提供卓越的功能。这款软件利用先进的算法和深度学习技术,能够自动识别和分析视频中的各个元素,并进行智能修复和增强&…...
解决WordPress文章的段落首行自动空两格的问题
写文章时,段落首行都会空两格,可是WordPress自带的编辑器却没有考虑到这一点,导致发布的文章首行都是顶格的,看起来很不习惯。 我们通常的解决方法都是在发布文章时把编辑器切换到“文本”模式,然后再在首行手动键入两…...
RISC-V单板计算机模拟和FPGA板多核IP实现
🎯要点 🎯使用单板计算机 Visionfive 2 或模拟器测试RISC-V汇编🎯RISC-V汇编加载和算术。🎯使用GNU MAKE汇编RISC-V指令,ESP32使用CMake编译执行指令。🎯RISC-V汇编功能和使用释义:控制指令&am…...
Mojo编程语言案例及介绍
Mojo是一种新兴的编程语言,它结合了现代编程范式与简洁易读的语法,为开发者提供了一个强大且高效的开发工具。以下将详细介绍Mojo编程语言的特性,并通过一个实际案例来展示Mojo的应用。 一、Mojo编程语言介绍 Mojo编程语言的设计理念是“简单…...

【Python面试题收录】Python中有哪些方法交换两个变量的值?至少给出三种方法。
一、使用临时变量 # 定义原始变量 a 10 b 20# 直接交换,Python会一次性执行两个赋值操作 a, b b, a# 无需额外变量,a 和 b 的值已经交换 print(a) # 输出: 20 print(b) # 输出: 10 二、利用元组解包特性(不使用临时变量,推荐…...

MySQL核心命令详解与实战,一文掌握MySQL使用
文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…...

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)
目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 管理员信息属性 💬 学生信息实体属性 💬 宿舍安排信息实体属性 💬 卫生检查信息实体属性 &…...

vulnhub pWnOS v2.0通关
知识点总结: 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码,查看模块信息 环境准备 攻击机:kali2023 靶机:pWnOS v2.0 安装地址:pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到,该靶…...
leetcode热题100.数据流的中位数
作者:晓宜 🌈🌈🌈 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力😊 Problem: 295. 数据流的中位数…...
C 从函数返回指针
我们已经了解了 C 语言中如何从函数返回数组,类似地,C 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示: int * myFunction() { . . . }另外,C 语言不支持在调用函数时返回局部…...

(文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构
参考文献: [1]徐俊俊,吴在军,周力,等.考虑分布式电源不确定性的配电网鲁棒动态重构[J].中国电机工程学报,2018,38(16):4715-47254976. 1.摘要 间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合…...

蓝桥杯第八届c++大学B组详解
目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析:就是将折扣字符串转化为数字,进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…...
小于n的最大数 Leetcode 902 Numbers At Most N Given Digit Set
这两个问题的本质就是一个棵树,然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑,get_lower_largest_digit_dic是这两个题目的共同点 题目一: 小于n的最大数 算法题目:小于n的最大数 问题描述:给一个数组nums[5…...

Leetcode刷题-数组(二分法、双指针法、窗口滑动)
数组 1、二分法 704. 二分查找 - 力扣(LeetCode) 需要注意区间的问题。首先在最外面的循环判断条件是left<right。那就说明我们区间规定的范围就是【left,right】 属于是左闭右闭!!!!!&…...

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)
继续上篇博文:STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写, 为什么:当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时,其实就是将对应的该引脚的寄存器地…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...