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

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

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

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

【三维重建】摄像机几何-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.rhkb.cn/news/271679.html

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

相关文章

【C++干货基地】六大默认成员函数: This指针 | 构造函数 | 析构函数

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…

听 GPT 讲 client-go 源代码 (24)

分享更多精彩内容,欢迎关注! File: client-go/applyconfigurations/batch/v1/jobstatus.go 在client-go的applyconfigurations/batch/v1/jobstatus.go文件中,定义了与Job的状态相关的配置和操作。 文件中定义了以下几个结构体: Jo…

Kube-Prometheus 监控Istio

推荐 Istio 多集群监控使用 Prometheus,其主要原因是基于 Prometheus 的分层联邦(Hierarchical Federation)。 通过 Istio 部署到每个集群中的 Prometheus 实例作为初始收集器,然后将数据聚合到网格层次的 Prometheus 实例上。 网…

Kruscal建树+倍增LCA,蓝桥2023省赛,网络稳定性

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 2.网络稳定性 - 蓝桥云课 (lanqiao.cn) 二、解题报告 1、思路分析 考虑到…

自动驾驶预测与决策规划(nuplan数据集)

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.概述 2 数据采集 3.开环与闭环仿真 4.数据注释 5.场景 6.规划框架 6.1Train 6.2Simulation 6.3Metric 6.4Visualization 7.下载…

【2024.03.05】定时执行专家 V7.1 发布 - TimingExecutor V7.1 Release

目录 ▉ 软件介绍 ▉ 新版本 V7.1 下载地址 ▉ V7.1 新功能 ▼2024-03-03 V7.1 - 更新日志 ▉ V7.0 新UI设计 ▉ 软件介绍 《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件。软件具有 25 种【任务类型】、12 种【触发器】触发方式&#x…

基于51单片机风速仪风速测量台风预警数码管显示

基于51单片机风速仪风速测量报警数码管显示 1. 主要功能:2. 讲解视频:3. 仿真4. 程序代码5. 设计报告🔗6. 下载链接资料下载链接: 基于51单片机风速仪风速测量报警数码管显示( proteus仿真程序设计报告讲解视频) 仿真图…

CRMCHAT修复获取客户ip信息,地区信息

CRMCHAT修复获取客户ip信息,地区信息-TP源码网原因: 因pv.sohu.com/cityjson?ieutf-8接口已无法正确获取ip信息,导致后台站点统计无法正确获取用户ip信息,无法获取地区信息 修改 注释掉无用接口地址 修复ip信息 也可以使用&…

【Lazy ORM】 小工具 acw 本地客户端 你负责点击页面,他负责输出代码

介绍 wu-smart-acw-client 简称acw-client&#xff0c;是一个基于Lazy ORM定制的客户端代码生成小工具 Lazy ORM 小工具 acw 本地客户端 你负责点击页面&#xff0c;他负责输出代码安装 <dependency><groupId>top.wu2020</groupId><artifactId>wu-sma…

即插即用篇 | YOLOv8 引入 ParNetAttention 注意力机制 | 《NON-DEEP NETWORKS》

论文名称:《NON-DEEP NETWORKS》 论文地址:https://arxiv.org/pdf/2110.07641.pdf 代码地址:https://github.com/imankgoyal/NonDeepNetworks 文章目录 1 原理2 源代码3 添加方式4 模型 yaml 文件template-backbone.yamltemplate-small.yamltemplate-large.yaml

2024蓝桥杯每日一题(前缀和)

一、第一题&#xff1a;壁画 解题思路&#xff1a;前缀和贪心枚举 仔细思考可以发现B值最大的情况是一段连续的长度为n/2上取整的序列的累加和 【Python程序代码】 import math T int(input()) for _ in range(1,1T):n int(input())s input()l math.ceil(len(s)/…

图文并茂的讲清楚Linux零拷贝技术

今天我们来聊一聊Linux零拷贝技术&#xff0c;今天我们以一个比较有代表性的技术sendfile系统调用为切入点&#xff0c;详细介绍一下零拷贝技术的原理。 1.零拷贝技术简介 Linux零拷贝技术是一种优化数据传输的技术&#xff0c;它可以减少数据在内核态和用户态之间的拷贝次数&…

Linux报错排查-刚安装好的ubuntu系统无法ssh连接

Linux运维工具-ywtool 目录 一.问题描述二.问题解决2.1 先给ubuntu系统配置阿里云源2.2 安装openssh-server软件2.3 在尝试ssh连接,可以连接成功了 三.其他命令 一.问题描述 系统:ubuntu-18.04-desktop-amd64 系统安装完后,想要通过xshell软件连接系统,发现能Ping通系统的IP,但…

【探索Linux】—— 强大的命令行工具 P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )

阅读导航 引言一、socket 常见API表二、函数详细介绍01. socket()02. bind()03. listen()04. accept()05. connect()06. send()07. recv()08. close()09. select()10. getaddrinfo()11. sendto()12. recvfrom()13. setsockopt()14. getsockopt()15. shutdown()16. inet_pton()1…

昇腾芯片解析:华为自主研发的人工智能处理器全面分析

在当今科技发展的浪潮中&#xff0c;昇腾芯片作为一种新兴的处理器&#xff0c;正引起广泛的关注和讨论。升腾芯片究竟是由哪家公司生产的&#xff1f;这个问题一直困扰着许多人。下面小编将全面介绍、分析升腾芯片的生产商及各类参数、应用&#xff0c;以便读者对其有更全面的…

centos7 python3.12.1 报错 No module named _ssl

https://blog.csdn.net/Amio_/article/details/126716818 安装python cd /usr/local/src wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz tar -zxvf Python-3.12.1.tgz cd Python-3.12.1/ ./configure -C --enable-shared --with-openssl/usr/local/opens…

C++:Stack和Queue的模拟实现

创作不易&#xff0c;感谢三连&#xff01; 一、容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 就如同是电源适配器将不适用的交流电…

css实现背景渐变叠加

线性渐变效果图: .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#fff 30%),linear-gradient(to right,pink,skyblue);}径像渐变效果图&#xff1a; .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#…

【JavaEE初阶】 JVM类加载简介

文章目录 &#x1f343;前言&#x1f332;类加载过程&#x1f6a9;加载&#x1f6a9;验证&#x1f6a9;准备&#x1f6a9;解析&#x1f6a9;初始化 &#x1f384;双亲委派模型&#x1f6a9;什么是双亲委派模型&#xff1f;&#x1f6a9;双亲委派模型的优点 ⭕总结 &#x1f343…

Vue.js 实用技巧:深入理解 Vue.mixin

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…