概述

欢迎访问 持续更新:https://cgabc.xyz/posts/fb344124/

本文是在读了论文《基于数字光栅投影的结构光三维测量技术与系统研究》[1]之后做的学习总结,方便自己学习,同时与博友共享,共同提高!

三维重建 & 三维测量

三维重建

三维重建(3D Reconstruction)是指利用二维投影恢复物体三维信息的数学过程和计算机技术,包括数据获取、预处理、点云拼接和特征分析等步骤。

三维重建过程:图像获取、摄像机标定、特征提取、立体匹配和三维重建。

三维测量

三维数据测量即对物体的三维数据进行测量,根据三维数据测量采用的原理或媒介的不同可以将其分为两大类:接触式测量和非接触式测量。接触式测量是在测量时与被测物体相接触的测量方法;非接触式测量则指在测量时与被测物体不接触的测量方法。

光学三维测量

光学三维测量主要分为被动三维测量(无结构光)和主动三维测量(有结构光)两种:

被动三维测量

主要过程:多幅二维图像–>计算出特征点–>重建三维特征点–>特征点滤波–>得到三维模型。

主动三维测量

  • 结构光的作用:增加三维物体的纹理信息;
  • 双目视觉系统:将投影仪当作一个逆向的相机,通过建立投影仪图像和相机图像的对应关系,将投影仪标定转换为成熟的相机标定,从而将单相机结构光三维测量系统转换为经典的双目视觉系统;
  • 主要测量方法:激光扫描法(LS)、傅立叶变换轮廓术(FTP)、相位测量轮廓术(PMP)、彩色编码条纹投影法(CFP)等。

基于PMP的结构光三维测量技术

本文所讲的三维测量方法用的是主动三维测量中的相位测量轮廓术(PMP)

测量时,投影仪将一幅或一组正弦光栅条纹投影到空间中,形成投影条纹,摄像机拍摄到被测物体表面,得到条纹图像,根据图像获得相位分布情况进行三维重建。

整体架构参见附录《结构光三维测量原理图》。

结构光生成与投射

  • 水平方向光栅条纹图像12幅:不同频率3组,每组不同相移的4幅图像
  • 竖直方向光栅条纹图像12幅:不同频率3组,每组不同相移的4幅图像

结构光生成

由计算机生成并发送到投影仪的光栅图像的灰度分布为:

I(u,v)=a+bcos(θ(u,v)),θ(u,v)=ϕ(u,v)+αI(u,v) = a + bcos(\theta(u,v)), \theta(u,v) = \phi(u,v)+ \alpha I(u,v)=a+bcos(θ(u,v)),θ(u,v)=ϕ(u,v)+α

其中,(u,v)(u,v)(u,v)表示投影面投影像素单元的坐标,I(u,v)I(u,v)I(u,v)为(u,v)(u,v)(u,v)点的灰度值,a和b分别为正弦光栅的直流基波分量(光强背景值)和振幅(调制光强),θ(u,v)\theta(u,v)θ(u,v)为I(u,v)I(u,v)I(u,v)对应的光栅相位,ϕ\phiϕ为待求相位主值,α\alphaα为相位位移。

光栅非正弦性

由于环境光的影响,投影光栅在波峰和波谷处出现平台现象[2]。

相位计算

相位主值计算

相位主值即相对相位值,本文采用标准的四步相移法计算光栅图像的相位主值。

利用频率相同四幅光栅图像计算出一幅相位主值图像,四幅光栅图像的光强表达式为:
Ii(u,v)=a+bcos(θi(u,v)),θi(u,v)=ϕ(u,v)+π2i,i∈{0,1,2,3}I_i(u,v) = a + bcos(\theta_i(u,v)), \theta_i(u,v) = \phi(u,v) + \frac{\pi}{2}i, i \in \{0,1,2,3\} Ii​(u,v)=a+bcos(θi​(u,v)),θi​(u,v)=ϕ(u,v)+2π​i,i∈{0,1,2,3}

则光栅图像的相位主值为:
ϕ(u,v)=arctan(I3−I1I0−I2)\phi(u,v) = arctan( \frac{I_3-I_1}{I_0-I_2} ) ϕ(u,v)=arctan(I0​−I2​I3​−I1​​)

编程中,一般使用atan2方法:
ϕ(u,v)=atan2(I3−I1,I0−I2)\phi(u,v) = atan2(I_3-I_1, I_0-I_2 ) ϕ(u,v)=atan2(I3​−I1​,I0​−I2​)

最终,12幅水平条纹光栅图像计算出3幅水平相位主值图像,12幅竖直条纹光栅图像计算出3幅竖直相位主值图像。

相位展开

相位展开,又称解包裹,计算其绝对相位值。本文利用 三频外差原理 计算其绝对相位值。

最终,根据上步计算出的3幅水平相位主值图像计算出1幅水平绝对相位值图像,根据上步计算出的3幅竖直相位主值图像计算出1幅竖直绝对相位值图像。

DMD图像坐标计算

根据一个方向的绝对相位值,可以确定DMD图像中的一条垂直线或水平线;则根据水平和垂直两个方向的绝对相位值,可以确定DMD图像中的一个点。

通过竖直和水平光栅条纹的CCD图像(相机图像)中的点(uc,vc)(u_c,v_c)(uc​,vc​),可以确定DMD图像(投影仪图像)中对应的一个点(up,vp)(u_p,v_p)(up​,vp​),该点坐标可用如下公式计算。

{up=Φv(uc,vc)Nv⋅2π⋅Wvp=Φh(uc,vc)Nh⋅2π⋅H\begin{cases} u_p = \frac{\Phi_v(u_c,v_c)}{N_v \cdot 2\pi} \cdot W \\ v_p = \frac{\Phi_h(u_c,v_c)}{N_h \cdot 2\pi} \cdot H \end{cases} {up​=Nv​⋅2πΦv​(uc​,vc​)​⋅Wvp​=Nh​⋅2πΦh​(uc​,vc​)​⋅H​

其中,Φv\Phi_vΦv​和Φh\Phi_hΦh​分别为CCD光栅图像中(uc,vc)(u_c,v_c)(uc​,vc​)点处竖直和水平方向的绝对相位值,NvN_vNv​和NhN_hNh​分别为竖直和水平CCD光栅图像中光栅条纹数,H和W分别为CCD光栅图像竖直和水平方向分辨率。

图像矫正

对 (uc,vc)(u_c,v_c)(uc​,vc​) 和 (up,vp)(u_p,v_p)(up​,vp​) 使用预先标定出的 系统畸变参数 进行矫正,二阶径向畸变 矫正公式如下。

{uˉ=u+(u−u0)[k1(x2+y2)+k2(x2+y2)2]vˉ=v+(v−v0)[k1(x2+y2)+k2(x2+y2)2]\left\{ \begin{aligned} \bar u = u + (u-u_0)[k_1(x^2+y^2) + k_2(x^2+y^2)^2] \\ \bar v = v + (v-v_0)[k_1(x^2+y^2) + k_2(x^2+y^2)^2] \end{aligned} \right. {uˉ=u+(u−u0​)[k1​(x2+y2)+k2​(x2+y2)2]vˉ=v+(v−v0​)[k1​(x2+y2)+k2​(x2+y2)2]​

重建三维坐标

投影测量和计算机视觉中总是利用两张或两张以上的图像恢复物体的三维坐标。

本文根据矫正后的CCD图像和DMD图像坐标(uc,vc)(u_c,v_c)(uc​,vc​)和(up,vp)(u_p,v_p)(up​,vp​),以及预先相机标定出的系统内参和外参,计算出对应的三维坐标(世界坐标)。

{sc[ucvc1]=Ac[Rctc][XwYwZw1]确定相机光心与像点的一条线sp[upvp1]=Ap[Rptp][XwYwZw1]确定光机光心与像点的一条线}得到三维坐标\left\{ \begin{aligned} s_c \left[\begin{array}{c}u_c\\v_c\\1\end{array}\right] = A_c[R_c \quad t_c] \left[\begin{array}{c}X_w\\Y_w\\Z_w\\1\end{array}\right] \text{确定相机光心与像点的一条线} \\ s_p \left[\begin{array}{c}u_p\\v_p\\1\end{array}\right] = A_p[R_p \quad t_p] \left[\begin{array}{c}X_w\\Y_w\\Z_w\\1\end{array}\right] \text{确定光机光心与像点的一条线} \end{aligned} \right\}\text{得到三维坐标} ⎩⎨⎧​sc​⎣⎡​uc​vc​1​⎦⎤​=Ac​[Rc​tc​]⎣⎡​Xw​Yw​Zw​1​⎦⎤​确定相机光心与像点的一条线sp​⎣⎡​up​vp​1​⎦⎤​=Ap​[Rp​tp​]⎣⎡​Xw​Yw​Zw​1​⎦⎤​确定光机光心与像点的一条线​⎭⎬⎫​得到三维坐标

其中,scs_csc​和sps_psp​分别为相机和光机的尺度因子,(uc,vc)(u_c,v_c)(uc​,vc​)和(up,vp)(u_p,v_p)(up​,vp​)分别为矫正后的CCD图像和DMD图像坐标,AcA_cAc​和ApA_pAp​为内部参数矩阵,[Rctc][R_c \quad t_c][Rc​tc​]和[Rptp][R_p \quad t_p][Rp​tp​]为外部参数矩阵。

添加彩色纹理

利用预先计算出的 白平衡参数 和 R、G、B灰度图像,根据三原色加法原理,得到彩色图像,再使用该彩色图像渲染三维点云。

三维点云处理

利用PCL(Point Cloud Library)库对三维点云进行处理。

系统精度评估

标定精度评估

使用标定出的参数计算出所有标定点的三维坐标,然后计算其与实际坐标的距离。

测量精度评估

  • 平面测量误差
  • 球体空间误差:球心距、单个球的球面误差

参考文献

[1]李中伟. 基于数字光栅投影的结构光三维测量技术与系统研究[D].华中科技大学,2009.
[2]达飞鹏,盖绍彦. 光栅投影三维精密测量[M]. 北京:科学出版社,2011.

附录

基于数字光栅投影的结构光三维测量技术相关推荐

  1. 基于数字光栅投影的结构光三维测量技术与系统研究

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文末福利:按描述操作,可获取原书籍电子版. [摘要] 相位测量轮廓术是目前使用最为广泛的一种结构光三维 ...

  2. 基于相移法的结构光三维测量技术

    1. 结构光三维测量原理 1.1 单目结构光系统 结构光投影三维测量系统主要由一个CCD相机.投影仪和PC机组成,如图所示.首先在PC上进行结构光编码,通过投影仪将编码好的结构光投影至物体表面,再由数 ...

  3. 结构光三维测量(数字光栅投影)

    结构光三维测量(数字光栅投影) 结构光三维测量系统 单目测量系统 双目测量系统 单目系统测量实例 光栅生成 三维点云重建 结构光三维测量系统 目前对于三维视觉来说,有很多种技术,例如双目/多目视觉法. ...

  4. 图像凸集投影法_论文分享|数字投影结构光三维测量方法研究

    温馨提示:本文约5600字,阅读全文需约10分钟. 文末福利:按照文末提示操作,输入关键词可获取论文全文. 摘要 人类所处的物理世界空间是三维的,任何实物都以三维的方式呈现.随着社会的进步发展,三维信 ...

  5. 基于条纹投影的结构光3D成像的研究分享

    作为本次大创的研究成果之一,我们大创小组将对本次大创学习到的知识做一个总结与大家分享讨论,旨在对初学者提供一定的帮助.对于使用条纹投影的结构光3D成像技术,本大创小组由全员新手不断通过对多篇论文的理解 ...

  6. 【论文阅读笔记】Structured-light 3D surface imaging: a tutorial(结构光三维表面成像)

    Geng J. Structured-light 3D surface imaging: a tutorial[J]. Advances in Optics and Photonics, 2011, ...

  7. 编码结构光三维视觉测量系统(二)

    一.摘要 结构光三维视觉测量方法不需要直接接触被测物体,不会磨损被测物体表面,且具有速度快.精度高.实用性高等特点,是进行三维测量的最佳方法之一.而单目结构光视觉测量系统与双目相比,具有成本低.算法简 ...

  8. 图像条纹检测 python_【连载2.1】结构光三维检测引言面向强反射表面的多传感器三维检测技术研究...

    本章大纲 2.1 引言 2.2 多传感器三维检测系统介绍 2.2.1 多传感器三维检测总体模型2.2.2 多传感器三维检测系统工作原理 2.3 坐标系统一化全局标定方法 2.3.1 全局标定方法介绍2 ...

  9. 双目格雷码结构光三维测量系统原理解析

    背景 比较经典的光学三维测量方法有:双目立体视觉.线激光扫描.格雷码结构光.相移结构光.立体匹配方法误匹配点较多,线激光方法扫描速度慢,相移结构光方法计算效率低,而格雷码方法基本具有以上一个方法的所有 ...

最新文章

  1. bzoj2961 共点圆 (CDQ分治, 凸包)
  2. 如何做中文文本的情感分析?
  3. MolCLR | 对比学习在分子图表示任务中大有作为
  4. leetcode206.反转链表 解题思路(简单)
  5. 1014. Best Sightseeing Pair
  6. 一款问答APP的产品需求文档(PRD)
  7. Flex移动皮肤开发(一)
  8. python爬虫当当网图书信息_利用python爬虫可视化分析当当网的图书数据!
  9. 收集最火的开源项目——PHP 篇
  10. 一次用Python制作电影字幕的尝试
  11. 编辑图片加文字的软件哪个好?这三个软件还不错
  12. 左神算法基础class6—题目1图的存储与表达
  13. NAT技术配置(内外网IP地址转换)
  14. Python 面试题
  15. 非学校用户如何免费下载论文
  16. (JavaSE 学习记录)Java运算符
  17. 短线股票怎么操作怎样才能炒好短线股票
  18. 【雷达通信】基于matlab距离角度解耦法MIMO-OFDM雷达波束形成【含Matlab源码 2208期】
  19. maven项目搭建常见故障
  20. 计算机的未来展望英语作文,展望未来英语作文范文

热门文章

  1. c语言中英文翻译 毕业设计,c语言中英文翻译资料 毕设论文.doc
  2. 输出一个由*组成的三角形图案_三种由555芯片组成的输出电路
  3. 中二教程_场管自激特斯拉线圈
  4. 根据产品路线图确定技术路线图的优先级
  5. IMail的安装和设置
  6. dgutwanganxxb微信公众号入门
  7. Alcohol 120% 1.9.6.5429版发布与最新激活法
  8. Kaggle小技巧:TTA(test time augmentation)测试时增强
  9. iOS Charts裤绘制蜡烛图
  10. 离职原因可以说,但要注意三个原则