基于opencv下的双目视觉三维重建与重投影残差计算

2023-11-12

一、重投影残差

1.1基本概念

重投影残差,按照字面意思解释就是在第二次重新投影的二维像素点与第一次投影得到的像素点之间的残差(欧式距离)大小,残差的大小反映的就是测量仪器的精度以及外界因素对测量结果的干扰,即测量误差的大小。

如下图所示:

假设P是世界坐标系中的一个三维点(真实物点),第一次投影指的就是双目相机C1、C2拍摄时,P点投影到二维像平面上所捕获到的图像点,即图中的P1和P2点;然后利用双目视觉原理,针对P1、P2这对匹配点以及标定求出的内外、畸变参数等等,可以求出一个三维点(理论值);然后利用求出来的三维点与相机的位姿关系进行第二次投影得到P’2点;一般用重投影点P’2与获取的二维像点P2的欧式距离e值的大小反映的就是重投影误差的大小。
在这里插入图片描述

二、关键坐标系之间的转换

2.1 像素坐标系与图像坐标系

在这里插入图片描述
(u , v)表示的是像素坐标,单位Pixel;
(x , y)表示的是图像坐标,单位mm;
(u0 , v0)表示的是光心位置,有时候表示为(Cx,Cy);
dx , dy分别表示的是每个像素在横纵坐标的实际物理尺寸,单位mm;

2.2 图像坐标系与相机坐标系

在这里插入图片描述
在这里插入图片描述
以上公式最后的f,根据标定数据,在x和y方向分别以fx和fy代入,注意这里的fx和fy表示的是实际物理长度,单位mm,转换过程(三维坐标->像素坐标)如下图所示,不过有的情况标定得到得是实际长度(mm),则最后得fx和fy还需要除去dx、dy:
在这里插入图片描述

2.3 统一坐标重投影计算

如果世界坐标系与相机坐标系不统一的话,在进行透视投影之前需要把世界坐标系下的三维点云通过外方位参数[R|T]统一到相机坐标系下,在转换为像平面像素坐标,具体公式如下:
在这里插入图片描述
在这里插入图片描述
拆分:
在这里插入图片描述
R、t:世界坐标系相对于相机坐标系的外方位参数;
(X,Y,Z):世界坐标系下的坐标;
(x,y,z):转换的相机坐标系下的坐标;
(u,v):像素坐标。

2.4 残差计算

(u1,v1)记为获取的二维图像的匹配点,通过畸变矫正(undistortPoints())之后的结果,还要进行立体矫正(stereoRectify())
结果记为(x,y)(图像坐标),设(u,v)为矫正之后的像素坐标:
u = x/dx + Cx
v = y/dy + Cy
最后将得到的(u,v)和上式中的(u’,v’)做欧式计算,结果为残差值的大小

code: https://download.csdn.net/download/qq_39707351/11201279
Results:

在这里插入图片描述
按顺序依次为,三维点坐标,重投影像素坐标,匹配点像素坐标,残差大小(pixel)

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

基于opencv下的双目视觉三维重建与重投影残差计算 的相关文章

  • 【3D视觉】realsense D435三维重建

    1 xff0c 硬件 xff1a realsense D435 驱动及SDK开发包安装 GitHub IntelRealSense librealsense Intel RealSense SDK 下载最新驱动 安装后打开 Intel Re
  • 【论文精读】360MVSNet

    今天读的是发表在WACV2023上的MVS文章 该文章提出了基于全景相机的MVS pipeline 文章链接 点击前往 代码链接 暂未开源 文章目录 Abstract 1 Introduction 2 Related works 3 Met
  • 【论文精读】KD-MVS

    今天读的是发表在ECCV2022上的自监督MVS文章 作者来自于旷视科技和清华大学 文章链接 arxiv 代码链接 https github com megvii research KD MVS 目录 Abstract 1 Introduc
  • 基于MATLAB的线激光三维彩色扫描仪

    暑期做的一个项目 开始并不是很熟悉 在网上查找的资料也不是很具体 但是自习学习了理论知识之后还是比较容易的做出来这个项目 现在开源整个项目 由于篇幅有限 本文适合稍微有点点基础的朋友 源码见底部 先显示下最后结果 一 硬件设计 主要有步进电
  • ubunt 上进行c++ cuda编程

    目录 概述 cmake代码 头文件代码 头文件对应的cuda代码实现 c 的代码 运行结果 参考资料 概述 首先先通过一个简单的demo来演示cuda编程是怎么进行的 cmake代码 cmake minimum required VERSI
  • 【深度学习】【三维重建】windows11环境配置tiny-cuda-nn详细教程

    深度学习 三维重建 windows11环境配置tiny cuda nn详细教程 文章目录 深度学习 三维重建 windows11环境配置tiny cuda nn详细教程 前言 确定版本对应关系 源码编译安装tiny cuda nn 总结 前
  • 神经辐射场 (NeRF) 概念

    神经辐射场 NeRF 概念 理论介绍 NeRF模型以其基本形式将三维场景表示为由神经网络近似的辐射场 辐射场描述了场景中每个点和每个观看方向的颜色和体积密度 这写为 F x
  • 从照片的三维重建(3D Reconstruction)——MVS系列(1)

    MVS multi view system从多视图的密集重建 SFM的重建成果是稀疏三维点云 为了进入更加深刻的领域 获得更好的结果 我们进入到MVS 如何理解密集点云的生成原理 MVS是生成密集点云的方法 事实上 为什么我们在SFM中不能
  • 三维重建(三)相机参数标定与光束平差法(Bundle Adjustment)

    一 针孔成像模型涉及到的坐标系 由于相机的参数总数相对于某种光学模型而言的 这里用到的比较广泛的光学模型就是小孔成像的模型 下面针对小孔成像的光学模型涉及到的坐标系一一介绍 1 世界坐标系 世界坐标系即为三维空间中物体的坐标 用 Xw Yw
  • 医疗图像三维重建方法小结(python+VTK+ITK+Mayavi)

    医疗图像三维重建forpython 环境简介 方法 方法一 Poly3DCollection matplotlib 方法二 VTK ITK 方法三 Mayavi之contour3d 最终方法Mayavi TVTK 环境简介 语言是pytho
  • openmvg2.0编译与使用

    目录 写在前面 获取代码 github 网盘 编译 使用 稠密重建 参考 完 写在前面 1 openmvg是一个用于实现structure from motion的开源库 实现了完整的sfm pipeline 并有说明文档 https op
  • ContextCapture导入点云进行重建

    ContextCapture导入点云进行重建 ContextCapture导入点云进行重建 点云 PointCloud 导入点云 静态站点云 移动测量点云 输入文件 数据属性 字段 Fields ContextCapture的坐标系 管理点
  • Photoscan/Metashape与Contextcapture联合建模

    Photoscan与Contextcapture联合建模以及激光与影像联合建模 使用Photoscan完成影像的地理坐标与投影坐标转换 Photoscan空三结果导出 Contextcapture导入空三区块 CC刺控制点并继续AT 倾斜摄
  • 快速跑 nerf instant-ngp 快速调试与配置,跑自己的数据

    1 下载Anaconda3 2 打开Anaconda Prompt Anaconda 创建虚拟环境 conda create n nerf ngp python 3 8 切换到虚拟环境 conda activate nerf ngp 安装相
  • matlab相机标定知识整理

    matlab相机标定知识整理 单目相机标定 单目相机标定 内参矩阵 cameraParams Intrinsics K 或者 cameraParams K 旋转矩阵 cameraParams RotationMatrices 有待确定 ca
  • 图像拼接 之 特征点匹配

    图像拼接 之 特征点匹配 介绍 特征点对搜索 建立 K D 树 搜索 K D 树 特征点对的筛选 计算单应性矩阵 基于特征点对计算单应性矩阵 RANSAC 优化单应性矩阵 总结 参考资料 介绍 在人们实际生活和工作中时常需要获得宽视角 高分
  • 泊松曲面重建(基于PCL)

    Possion重建是Kazhdan等2006年提出的网格重建方法 Possion重建的输入是点云及其法向量 输出是三维网格 表面重建流程 1 构建八叉树 采用的是自适应的空间网格划分的方法 根据点云的密度调整网格的深度 根据采样点集的位置定
  • 使用openMVS对样例数据进行重建

    openMVS根据github上的步骤进行编译 注意 如果没有GPU 用不了CUDA的话 那么需要在openMVS目录下找到CmakeLists txt文件 把CUDA设置为OFF SET OpenMVS USE CUDA OFF CACH
  • 【三维重建】Ubuntu18.04安装COLMAP

    Ubuntu18 04安装COLMAP 文章目录 Ubuntu18 04安装COLMAP 前言 安装COLMAP 安装CUDA cuDNN 安装依赖项 安装Ceres优化库 安装glog 可选 配置并编译COLMAP 运行COLMAP 总结
  • 【论文精读】IGEV-MVS:Iterative Geometry Encoding Volume for Stereo Matching

    今天读的是发表于CVPR2023的文章 作者全部来自于华中科技大学 文章链接 Iterative Geometry Encoding Volume for Stereo Matching 项目地址 GitHub 目录 Abstract 1

随机推荐

  • 解决Eclipse创建Android项目时出现No resource found that matches the given name ‘Theme.AppCompat.Light’的问题

    首先 对于该问题的详细分析大家可以查看Theme AppCompat Light问题的深入分析一文 里面详细介绍了该问题出现的原因 简单来讲 就是新的eclipse默认模版主题UI需要使用比较高版本api 如果需要支持低版本 需要导入app
  • 华为OD机试 - 九宫格按键输入(Java)

    题目描述 九宫格按键输入 输出显示内容 有英文和数字两个模式 默认是数字模式 数字模式直接输出数字 英文模式连续按同一个按键会依次出现这个按键上的字母 如果输入 或者其他字符 则循环中断 字符对应关系如图 要求输入一串按键 输出屏幕显示 输
  • ad原理图怎么导出pdf_如何把PDF导出为图片?方法很简单!

    很多人想将PDF文件转换成JPG文件 却不知道怎么转 或者通过网上一些方法 导出来的图片分辨率却很低 那我们怎么让PDF文件转换成JPG文件相对应的分辨率 今天小编给大家分享PDF快速导出JPG的技巧 PDF转jpg图片方法一 另存为法 另
  • TOP 100值得读的图神经网络----自监督学习与预训练

    清华大学的Top 100 GNN papers 其中分了十个方向 每个方向10篇 此篇为自监督学习与预训练方向的阅读笔记 Top100值得一读的图神经网络 大家好 我是蘑菇先生 今天带来Top100 GNN Papers盘点文 此外 公众号
  • C语言经典编程题---交换两个数

    1 给定两个整形变量的值 将两个值的内容进行交换 include
  • 正确解决vs运行的输出框闪退问题

    如果是想看见下面这样的输出框 很简单 要在调试停止时自动关闭控制台 请启用 工具 gt 选项 gt 调试 gt 调试停止时自动关闭控制台 截图如下
  • 【OS】【期末选择题】【2023春】【仅供参考】

    文章目录 题型 一 选择 第一章 10 第二章 19 第三章 23 第四章 32 第五章 15 第六章 15 二 填空题 三 简答题 1 信号量 2 调度算法 3 页面置换 4 虚拟地址到物理地址的映射 Reference 题型 题型 题量
  • C语言---Unix套接字用于本地通信

    1 作用 用于本地间通信 2 使用 创建套接字的时候使用本地协议通信 AF UNIX 或者AF LOCAL 分为流式套接字和用户数据报套接字 unix socket socket AF LOCAL SOCK STREAM 0 unix so
  • 如何将python2/3修改为默认版本

    基于update alternatives命令 此方法为系统级修改 直接执行下面两个命令即可 sudo update alternatives install usr bin python python usr bin python2 10
  • WSL安装cuda输入nvidia-smi遇到报错

    打算在WSL安装Cuda 但是安装成功后发现输入nvidia smi一直报错 查了很多文章都没法解决 本来都准备放弃了 随手查看了下WSL版本 发现WSL一直是 1 改成 2 之后再次安装CUDA WSL驱动直接成功 1 在powershe
  • SQL SERVER表字段与关键字冲突的解决

    办法很简单 建表的时候 该字段用 包含起来即可 例如 create table test reqid varchar 20 IDENTITY int
  • 使用Tesseract和OpenCV构建自动收据扫描仪

    使用Tesseract和OpenCV构建自动收据扫描仪 这篇博客将介绍如何使用Tesseract和OpenCV构建自动收据扫描仪 将使用OpenCV构建系统的实际图像处理组件 包括 检测图像中的收据 边缘检测 轮廓检测 基于弧长和近似的轮廓
  • 操作系统(一):什么是操作系统

    1内核 1 1概念 操作系统主要关注操作系统的内核 1 2特征 1 2 1并发 计算机系统中同时存在多个运行的程序 需要OS管理调度 并发与并行 并发 一段时间内有多个程序运行 并行 一个时间点上有多个程序可以同时执行 要求系统存在多个CP
  • Python为什么叫爬虫?

    因为python的脚本特性和易于配置 对字符的处理也非常灵活 加上python有丰富的网络抓取模块 所以叫爬虫 1 网络爬虫是指一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的名字还有蚂蚁 自动索引 模拟程序或者蠕
  • Excel分类统计数量

    Excel分类统计数量 方法一 1 打开需要分类的excel表格 2 选中 事项类型 的列表信息 对其进行排序 升序 降序 3 排序结束后 选择需要进行分计数的列 点击 数据 分类汇总 4 选择需要的 分类字段 汇总方式 汇总项 5 选择后
  • Mac平面设计师必备软件,懂word就会设计,内置海量模板。

    Swift Publisher是Mac平面设计师必备软件 内置了丰富的彩色传单 折页 海报 画册 展架等模版 点击即可直接编辑并快速完稿 相比于其他的设计软件 Swift Publisher更简单 不需要花时间去学习软件就可以独立完成一些定
  • 声音合成与克隆——制作用于训练的声音数据集

    前言 1 PaddleSpeech 是一个简单易用的all in one 的语音工具箱 支持语音处理的相关操作 如语音知别 语音合成 声纹识别 声音分类 语音翻译 语音唤醒等多个方向的应用开发 这里只使用到语音合成与声音克隆 主要由文本前端
  • 计算机网络数据吞吐量,计算机网络的性能指标

    计算机网络的性能一般是指它的几个重要的性能指标 但除了这些重要的性能指标外 还有一些非性能特征 nonperformance characteristics 也对计算机网络的性能有很大的影响 一 计算机网络性能指标 1 速率 比特 bit
  • 每日一问—01如何在指定目录下的文件名前面加上“0”+序号

    import os path C i 1 for filename in os listdir path try new name 0 str i filename os rename os path join path filename
  • 基于opencv下的双目视觉三维重建与重投影残差计算

    一 重投影残差 1 1基本概念 重投影残差 按照字面意思解释就是在第二次重新投影的二维像素点与第一次投影得到的像素点之间的残差 欧式距离 大小 残差的大小反映的就是测量仪器的精度以及外界因素对测量结果的干扰 即测量误差的大小 如下图所示 假