基于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
  • 【论文精读】KD-MVS

    今天读的是发表在ECCV2022上的自监督MVS文章 作者来自于旷视科技和清华大学 文章链接 arxiv 代码链接 https github com megvii research KD MVS 目录 Abstract 1 Introduc
  • OpenMVS+Win10+VS2019+vcpkg编译及问题

    Win10 VS2019 OpenMVS1 1 1 Vcpkg 1 VS2019安装 2 git安装 3 vcpkg安装 3 1下载vcpkg 3 2安装vcpkg 3 3 配置环境变量 4 Vcpkg下载OpenMVS依赖的三方库 5 下
  • 【论文精读】CVRecon: Rethinking 3D Geometric Feature Learning For Neural Reconstruction

    今天读的是一篇发表在ICCV2023上的文章 试图使用mvs的方法来助力neural reconstruction 项目地址 点击前往 文章地址 点击前往 文章目录 Abstract 1 Introduction 2 Related Wor
  • 基于MATLAB的线激光三维彩色扫描仪

    暑期做的一个项目 开始并不是很熟悉 在网上查找的资料也不是很具体 但是自习学习了理论知识之后还是比较容易的做出来这个项目 现在开源整个项目 由于篇幅有限 本文适合稍微有点点基础的朋友 源码见底部 先显示下最后结果 一 硬件设计 主要有步进电
  • 从照片的三维重建(3D Reconstruction)——MVS系列(1)

    MVS multi view system从多视图的密集重建 SFM的重建成果是稀疏三维点云 为了进入更加深刻的领域 获得更好的结果 我们进入到MVS 如何理解密集点云的生成原理 MVS是生成密集点云的方法 事实上 为什么我们在SFM中不能
  • Matterport3D:室内环境RGB-D数据的深度学习

    Matterport3D 室内环境RGB D数据的深度学习 Taylor Guo 2017年9月24日 Matterport3D Learning from RGB D Data in Indoor Environments Matterp
  • 医疗图像三维重建方法小结(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
  • 【论文精读】Vis-MVSNet: Visibility-aware Multi-view Stereo Network

    今天属于是重读经典了 这是一篇发表在BMVC2020上的文章 试图解决MVS中可见性的问题 该文章最近在拓展之后被发表在了IJCV上 本文的解读是基于扩展之后的IJCV版本 期刊的版本内容更加详细一点 文章链接 BMVC2020版本和IJC
  • ContextCapture导入点云进行重建

    ContextCapture导入点云进行重建 ContextCapture导入点云进行重建 点云 PointCloud 导入点云 静态站点云 移动测量点云 输入文件 数据属性 字段 Fields ContextCapture的坐标系 管理点
  • 【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识

    三维重建 深度学习 NeRF Pytorch代码 预备基础知识 给定一个场景的多视角的图像 神经辐射场 NeRF 通过图像重建误差优化一个神经场景表征 优化后可以实现逼真的新视角合成效果 NeRF最先是应用在新视点合成方向 由于其超强的隐式
  • Photoscan/Metashape与Contextcapture联合建模

    Photoscan与Contextcapture联合建模以及激光与影像联合建模 使用Photoscan完成影像的地理坐标与投影坐标转换 Photoscan空三结果导出 Contextcapture导入空三区块 CC刺控制点并继续AT 倾斜摄
  • Halcon三维模型预处理(1):调平的三大手法

    面结构光拍摄生成的点云模型 往往相对系统坐标系是有角度的 首先讲一下调平的目的 1 为接下来的预处理切除背景面做准备 3 不做调平 后续处理会很麻烦 因为不清楚坐标系在平台的为位置 2 对于无序抓取项目 平台相对相机可能是有角度的 将抓取平
  • Colmap学习三:后端Initialization部分(基础矩阵F、本质矩阵E和单应矩阵H)

    算矩阵的基础知识 解析本质 基础 单应矩阵的自由度 1 寻找初始像对 1 1手动选择ID 1 2自动筛选 prior focal length存在情况下 开始筛选 匹配点数由小到大排序 第二张候选影像的匹配数目大于init min num
  • matlab相机标定知识整理

    matlab相机标定知识整理 单目相机标定 单目相机标定 内参矩阵 cameraParams Intrinsics K 或者 cameraParams K 旋转矩阵 cameraParams RotationMatrices 有待确定 ca
  • 基于opencv下的双目视觉三维重建与重投影残差计算

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

    Unity Photogrammetry Workflow 5 2 8 着色和贴纹理 Colorize or Texture 5 2 10 网格输出 Mesh export 输出附有颜色信息的Mesh 点云 5 2 8 着色和贴纹理 Col
  • 【三维重建】Ubuntu18.04安装COLMAP

    Ubuntu18 04安装COLMAP 文章目录 Ubuntu18 04安装COLMAP 前言 安装COLMAP 安装CUDA cuDNN 安装依赖项 安装Ceres优化库 安装glog 可选 配置并编译COLMAP 运行COLMAP 总结
  • 计算机视觉之三维重建(一)(摄像机几何)

    针孔摄像机 添加屏障 使用针孔 o 光圈 针孔 摄像机中心 实现现实与成像一对一映射 减少模糊 其中针孔与像平面的距离为f 焦距 虚拟像平面位于针孔与真实物体之间 与像平面互为倒立关系 位置映射 利用相似三角形得到现实坐标在像平面上的映射坐

随机推荐

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