【三维重建】相移法+格雷码

news2024/11/26 20:31:52

本篇文章介绍一种稠密点云的获取方式——条纹结构光三维重建算法。

在学习此算法前,我们需要对基于视觉的三维重建算法有一定了解。

需要了解什么是相机模型、相机标定以及三角化的相关知识。

【三维重建】摄像机几何-CSDN博客

【三维重建】摄像机标定(张正友相机标定法)_相机内参矩阵和外参矩阵怎么获取-CSDN博客

【三维重建】三角化-CSDN博客

        当我们得到两个相机的内参、外参后,就能通过两个视图的匹配点计算出该点的三维坐标。但是一般的特征匹配算法(SIFT、SURF)只能提取特征点,并且只有正确匹配才能得到正确的三维坐标。因为两个视图上能够成功匹配的点比较少, 因此通过这种方式获得的点云是稀疏的。

        结构光的重建算法和三角化是一样的,不一样的是结构光算法通过向物体主投影带有特殊编码的图案,提高了两个视图成匹配点的个数,可以得到更多的三维点。

下面介绍一种常见的结构光算法:相移法+格雷码

单目结构光系统由一个相机和一个投影仪组成。我们可以把投影仪看作是一个逆相机,双目视觉中,需要成功得到两个相机视图中的匹配点对儿,那么在单目结构光系统我们就需要得到相机和投影视图的匹配点对儿。

知道了做什么,接下我们介绍一下怎么做?如何得到相机和投影视图的匹配点对儿?

相移法

首先,需要先生成待写入投影仪的理想N步相移条纹

通常对于N步相移来说,生成第k幅条纹图案的公式如下:

这个公式是一个正弦函数,k的增加可以看作正弦函数向左移动的过程。

对这个曲线的值进行repeat操作,就能生成下面幅图,图的每一行对应的就是正弦函数的值

根据实际需要设置相应的参数就能生成理想的相移图。

将相移图投影到物体上,再由相机捕获的图叫做实际相移图。

通过N幅相移图,就能计算出每个像素点的相位值\varphi

相机与投影仪就能通过相位值建立联系

格雷码

通过相移法解出的相位值是成周期状的,我们需要的是每一行的相位值是唯一的。

通过格雷码进行相位展开,得到唯一的相位值。

通过投影格雷码就能够计算出每一个像素的阶次k,阶次反映的是当前像素在第几个周期。

通过阶次可以计算出绝对相位 :\Phi =\varphi +2k\pi

绝对相位在每一行中是唯一的。

重建

通过归一化,将相位值的取值范围变成0-1之间,知道当前像素的相位值,就能知道当前像素在投影仪中是哪一列。

通过相机-投影仪标定可以得到相机与投影仪的投影矩阵

投影矩阵反应了世界坐标到像素坐标的映射关系。

通过绝对相位图能够知道,相机视图的像素坐标u^c,v^c 以及投影仪视图的像素的横坐标u^p

通过联立前面两个公式即可求得三维坐标:

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

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

相关文章

AlibabaCloud微服务:Linux 部署 Sentinel 流量控制

目录 一、实验 1.环境 2.Linux 部署 Sentinel 3. 微服务接入Sentinel配置 二、 问题 1.Linux本地启动Sentinel控制台 2.JDBC连接失败 一、实验 1.环境 (1)主机 表1 主机 系统软件版本IP备注Linuxopenjdk 1.8.0192.168.204.200 maven3.5.0nac…

【QT】QDialog/ QMessageBox/提示对话框/颜色(文字)------对话框

QDialog—对话框 什么是对话框,如下样式 非模态对话框,即打开以后,我还可以对其他框进行操作。 模态对话框,打开以后,其他框都不能再操作了 模态对话框是阻塞对话框 QDialog dig(this);//显示模态对话框dig.exec();…

数据库-Mysql-读写分离(Atalas,Mysql-Router,Mysql-Proxy)

Atalas 这个是很老的了,了解即可。 wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm rpm -ivh Atlas-2.2.1.el6.x86_64.rpm #安装后的目录 cd /usr/local/mysql-proxy配置 /usr/local/mysql-proxy/bin/encrypt roo…

【Bugs】java: 错误: 不支持发行版本 xx

文章目录 报错场景:报错原因:解决方法: 报错场景: IDEA运行Java项目报错,点击运行之后,IDEA在编译代码的时候就出现报错: 报错类型一:java: 错误: 不支持发行版本 21报错类型二&am…

H12-821_131

131.如图所示,R1、R2、R3和R4运行OSPF,缺省情况下该网络中选举________个DR。(请填写阿拉伯数字) 答案:3 注释: DR是链路上的概念,使用路由器接口的IP地址表示。链路的网络类型是广播网络类型或…

钉钉h5应用 globalthis is not defined vite client

钉钉h5应用 globalthis is not defined vite client problem 背景 钉钉h5应用使用 vue3 vite 构建的前端工程 问题 h5页面在pc端浏览器和pc端钉钉打开正常h5页面在移动端钉钉打开异常 页面空白 通过调试工具找到报错信息 globalthis is not defined vite client reason …

flutter插件市场,字节大牛耗时八个月又一力作

目录 触摸事件分发机制view渲染机制常用view布局ViewGroup自定义View实战 高级UI晋升 1.android的事件分发机制 2.Android面试题——View篇 3.自定义View面试题! 4.布局ViewGroup 5.Android自定义View实战 最后 其实Android开发的知识点就那么多,面试…

低代码:数智化助力新农业发展

随着科技的飞速发展和数字化转型的深入推进,低代码开发平台正逐渐成为软件开发的热门话题。尤其在农业领域,低代码技术为传统农业注入了新的活力,助力新农业实现高效、智能的发展。 低代码开发平台的概念与特点 随着科技的飞速发展&#xff0…

Sublime Text 格式化Json文件 之 Pretty Json

需要使用到 Pretty Json插件。 一、安装方法 sublime 下,按快捷键 Comand control p, 输入install Package,然后回车 等几秒钟,加载启动进程完毕后弹出的页面中输入pretty json, 然后回车 等待几秒钟,可以查看Sublime 最下面的…

《UE5_C++多人TPS完整教程》学习笔记27 ——《P28 项目资产(Assets for The Project)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P28 项目资产(Assets for The Project)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译…

如何查询docker镜像的最新版本

查询Docker镜像的最新版本通常有两种方式: 通过Docker CLI在本地查询: 如果你已经拉取过某个镜像并且想要查看本地是否已经有该镜像的最新版本,可以使用docker images命令列出所有本地镜像及其标签(即版本)。但请注意&…

各中间件性能、优缺点对比

参考资料: Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

十三、类的继承、访问级别

类的继承与访问控制 类的继承 使用sealed修饰的类,是私有类,不能作为基类使用C#中一个类,只能有一个父类,但是可以实现多个接口子类的访问级别不能超过父类的访问级别 using System; using System.Collections.Generic; using S…

Mysql实战(1)之环境安装

1,进入:MySQL :: MySQL Downloads 2, 3, 4,

【Linux】磁盘情况、挂载,df -h无法看到的卷

文章目录 解决挂载、解决挂载完重启就消失1、查看linux下的硬盘挂载的空间、使用空间2、查看没有挂载的硬盘是否检测在系统中3、挂载 (挂载完,要在/etc/fstab 下面配置挂载信息 要不然重启挂载就消失了) 解决挂载、解决挂载完重启就消失 linu…

全局渐变滚动条样式

效果如下&#xff1a; APP.vue<style> /* 整个滚动条 */ ::-webkit-scrollbar {width: 5px;height: 10px; } /* 滚动条上的滚动滑块 */ ::-webkit-scrollbar-thumb {background-color: #49b1f5;/* 关键代码 */background-image: -webkit-linear-gradient(45deg,rgba(255,…

鸿蒙4.0-DevEco Studio界面工程

DevEco Studio界面工程 DevEco Studio 下载与第一个工程新建的第一个工程界面回到Project工程结构来看 DevEco Studio 下载与第一个工程 DevEco Studio 下载地址&#xff1a; https://developer.harmonyos.com/cn/develop/deveco-studio#download 学习课堂以及文档地址&#x…

1.1 深度学习和神经网络

首先要说的是&#xff1a;深度学习的内容&#xff0c;真的不难。你要坚持下去。 神经网络 这就是一个神经网络。里面的白色圆圈就是神经元。神经元是其中最小的单位。 神经网络 单层神经网络&#xff1a; 感知机 &#xff08;双层神经网络&#xff09; 全连接层&#xff1a; …

三色标记过程

可达性分析 GC过程中需要对对象图遍历做可达性分析。使用了三色标记法进行分析。 什么三色&#xff1f; 白色&#xff1a;尚未访问过。 黑色&#xff1a;本对象已访问过&#xff0c;而且本对象 引用到 的其他对象 也全部访问过了。 灰色&#xff1a;本对象已访问过&#xff0…

简单的排序算法

目录 1.直接插入排序 2.希尔排序 3.选择排序 4.冒泡排序 5.计数排序 6.排序总结 1.直接插入排序 &#xff08;1&#xff09;思想 所谓插入排序&#xff0c;就是将待排序数据插入到已经有序的数据中&#xff0c;为了使插入后数据依然有序&#xff0c;就要选中一个合理的…