热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

常用crc查表法_聊聊三维重建条纹法之相位法1

一、前言前文介绍了双目立体视觉的基本原理。具体到三维扫描应用中,有多种结构光重建的方案。条纹法是其中应用比较广泛的一类方法,尤其在追求高精度的工业应用中
837accd6b5f5dab5de774ed90b32bbb3.png

一、前 言

前文 介绍了双目立体视觉的基本原理。具体到三维扫描应用中,有多种结构光重建的方案。条纹法是其中应用比较广泛的一类方法,尤其在追求高精度的工业应用中比较常见。条纹法,顾名思义,通过投射一组时序变化的条纹图案,来辅助完成立体匹配和视差计算、或者深度的直接计算。根据不同的条纹图案,衍生出了一系列方法,如格雷码等二值编码方案、正弦条纹的相移法、格雷码+相移法、彩色条纹法等等。本文主要介绍相位法的原理。

相位法又叫相位测量轮廓术(Phase Measurement Profilometry,PMP),这听起来有点神秘的名字,来自激光干涉计量领域,在19世纪80年代被引入三维测量领域。PMP方法通过采用正弦光栅投影和相移技术,利用多幅具有一定相位差的条纹图来计算相位,再对应计算出物体的高度。

二、相位与高度的关系

将下图左边的条纹图投射到物体上,我们会发现原本竖直的条纹图案发生了扭曲,我们称之为条纹图被物体高度调制,扭曲的条纹形状就蕴藏了物体的高度信息。

6b38b3601e3fb59271ee80f06d0ac674.png

接下来,我们看如何从正弦条纹的相位差里推算物体的高度信息。请看下图,整个系统包含投射系统,相机及参考平面。相机中心距离投影系统中距离为

,且两者连线与参考平面平行。相机到参考平面距离为

假设投射系统投射的光束与参考平面交于

点,该点在相机像平面上成像于
点。当放上物体后,假设另一光束与物体交于D点,也在相机像平面中成像于
点。于是对相平面中的
点而言,前后出现了两个相位值,因而根据该相位差,即可推导出
点的高度
53d9cdf0dbeb8c8d396118e1a9b0cd5c.png

其中

是正弦条纹的周期,
之间的相位差。
特别注意: 上面公式推导中使用了一个等式替换:

这个等式成立是有条件的,注意

是不同的。所以要求此处的相位差必须是经过相位展开后,非周期性的。这就牵扯出相位法中非常重要的
相位展开(phase unwrapping)的技术,我们在本文稍后介绍相位展开。

上述方法只需要使用一个相机加一个投影系统,通常称之为单目相位法。前文介绍的双目视觉原理,也可以和相位法紧密结合,只需要将双目匹配的描述子换成展开后的相位值即可。

三、相移法解相

求解相位的过程叫解相。当将正弦条纹图像投射到三维漫反射表面时,从相机中观测到的像可表示为:

其中,

是物体表面各向异性的反射率,
是背景强度,
表示光栅条纹的对比度,
是相位值。这几个量都是未知量,从一幅图像中求解
是困难且不准确的。人们通常采用相移法来确定准确的相位。所谓相移是将正弦条纹移动一个周期的
,相应的相位被移动了
,由此可产生新的亮度分布函数
。上式有3个未知量,所以至少需要3张相移图像才能求解出
。标准的N步相移法是应用最广泛的相移算法。我们以标准的四步相移为例,相位移动的增量为
,
,则相应的四帧条纹图为:

连列

四个方程,可以计算出相位函数:

对于更普遍的N步相移法,可通过如下方法计算相位值:

参考相位

也是通过上述方法求解,之后可得相位差:

注意,由于上述相位值计算过程中使用了反正切函数,因而得到的相位值落在

,这样的相位值叫包裹相位值,也叫截断相位值,或叫相位主值。

四、包裹相位展开

相位展开也叫解包裹(我觉得叫拆快递也是可以的:),目的是为了重建连续的相位分布。相位展开一般有空域展开与时域展开。

  • 空域展开 一般需要比较相邻两个像素点截断相位值,通过加减
    ,使相邻像素点相位位于
    。从这个方法的描述来看,能work的条件在于三维物体表面在相平面的投影的连续性,一旦出现深度不连续区域,该方法就会出错。即使保证深度连续,该方法精度也不高,因为相位空域展开方法本质上是积分过程,容易产生累计误差,导致相位展开失败。下图是空域展开的示意图。
76c22991ccb6e75627b8560c2f34d754.png
  • 时域展开 通过投射不同条纹图到物体来辅助确定绝对相位。常用的办法有投射多种频率的条纹图,投射格雷码条纹图等。这些方法均是对每个点的相位在序列上独立展开,从原理上就能避免误差传播,此外该算法在展开相位时不依赖附近点的相位值,因而可以准确测量深度不连续区域,而且非常有利于算法并行处理,可以使用GPU或FPGA加速。时域相位展开方法以其理论的优越性和实践的精确性赢得了广泛的应用。下图是多频相移时域展开的示意图。
e62fc5a1714d81a110699aac8716a587.png

观察上述相位图,是不是看起来和空域展开图很相似?这两者的展开方法一样,唯一的区别是沿着空域横轴还是沿着时间轴展开。接下来介绍两类相位展开的方法。

4.1 Gray编码法

向物体投射一组Gray编码图像和相移图像,通过对编码图像进行解码得到相移图像的级数,下图中是6幅Gray编码图序列,图像中任意点的Gray编码值根据所在每幅图像中落于黑白区域而选定,诸如 011001。Gray编码相比其他二值编码的优势在于:图像上任意一点,最多只会存在一个码处于01边界,这使得解码出错的概率大大减少。

c76a9c55408a9f419f042484e2fee605.png

在相位计算过程中,首先计算每个空间点的相位主值

和对应的Gray编码值
,得到的绝对相位值为:

在具体应用中采用几位Gray编码,几步相移需要根据实际情况选择。假设场景在条纹方向的像素宽度是

个像素,若要求在整个解包场景中对包裹进行无歧义展开,需要满足下式,其中
表示需要投影的Gray码光栅数,
表示包裹相位的周期。

Gray编码法算法简单,但是解码过程依赖图像二值化的准确程度,因此对被测物体表面颜色比较敏感,颜色较丰富或颜色较暗都会影响二值化的准确性,需要在物体表面喷白色粉末;另外投射的Gray编码图仅可用于相位展开,对提高相位计算精度并没有帮助。另外当投射场景较大时,需要增加Gray编码的位数,相应的增加投影的图像数据,采集时间也会增加。

4.2 多频相移法

投射不同频率的条纹图到物体表面,分别求解相位主值,然后利用多频率的相位主值之间的数学关系在整个测量场景中展开,得到绝对相位。以三频为例,解得到的包裹相位为

,且周期为
,记
的最小公倍数,则求解的绝对相位值为:

看下图可知,当场景超过

,则包裹相位会出现循环,绝对相位的求解就会出现歧义。
2dc8a8fe74d8df150564e62a22f20767.png

上式计算绝对相位值的函数

有很多,最常用的是查表法和外差法(留到下文介绍)。多频相移相比Gray编码法能支持大场景扫描(不用增加条纹幅数),对物体表面颜色不敏感,有更高的解相精度。

利用多频相移解包时,假设

个频率条纹所得的包裹相位周期为
,则全场景无歧义解包需要满足:

其中

表示个各周期的最小公倍数。

(未完待续,查表法和外差法的细节留到下文展开介绍,以免文章太长,看起来累。)

参 考

  • http://www.doc88.com/p-0058545515267.html
  • http://www.doc88.com/p-9038154413483.html
  • http://xueshu.baidu.com/usercenter/paper/show?paperid=392481e13f6279fc01571e400f7527a2&site=xueshu_se
  • https://www.quora.com/What-are-the-advantages-of-Gray-code-over-binary-code



推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • angular.element使用方法及总结
    2019独角兽企业重金招聘Python工程师标准在线查询:http:each.sinaapp.comangularapielement.html使用方法 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 计算成像的原理与应用研究
    本文探讨了计算成像的原理与应用研究。首先介绍了小孔成像实验和软件方面的相关内容。随后从傅里叶光学的角度简单谈了成像的过程。成像是观测样品分布的一种方法,通过成像系统接收光的强度来呈现图像。视网膜作为接收端接收到的图像实际上是由像元组成的矩阵,每个元素代表相应位置像元接收光的强度。大脑通过对图像的分析,得出一系列信息,如识别物体、判断距离等。计算成像是一种采集记录系统,通过处理数据得到样品分布与像的对应关系,用于后续问题的分析。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
author-avatar
心只为你跳国
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有