立体视觉_基于多频外差的三频正弦波理想状态下的解相位
来源:互联网 发布:高达纸模淘宝店有哪些 编辑:程序博客网 时间:2024/04/30 12:08
立体视觉_基于多频外差的三频正弦波理想状态下的解相位
2017.7.18
1.背景
在双目视觉中,如何协调两个摄像头并获取深度信息是一项关键技术。其中精度较高的办法之一是使用基于多频外差原理的相位相关技术。初到公司实习,接到的第一个任务就是学习多频外差的解相位相关技术。从无到有的三天学习,从理论知识到用具体数据模拟,在python下进行可视化实现,作以博文以记之。
2.过程
在做三维重建的时候,如何准确高效地获取物体的深度信息是关键。作为一种非接触式地扫描方法,结合实际情况,在只有两台相机地情况下该采用什么方法来获取呢?现在比较靠谱地方法就是利用相位相关地数学知识,将深度信息抽象在相位信息中。主要就是“求解包裹相位”和“相位展开”。求解包裹相位地作用是利用反三角函数将深度信息截断至-π到π的相位之内。此时的包裹相位实际上是按照投射的正弦光栅的周期进行分布的。如下图。
横坐标是图片中任意一行的像素,这张图片中使用的11pixel条距的正弦光栅。而我们的目的是确定该图片的该行任意一点处的深度信息,也就是说我们需要一个能够唯一确定图像上每一点的深度信息的相位函数,像这样按周期分布的相位函数是不行的。所以,我们要对包裹相位进行展开。
那么问题来了,只有一个频率的正弦波是无法进行相位展开的。要么双频、要么多频。查阅网上的资料,双频对于连续简单的物体重构效果较好,但是对于复杂物体的响应很差。而四频或者四频以上的光栅太耗时。所以我选取了三频的正弦光栅,条距分别是11px,12px,13px。
画出包裹相位图如下:
选用T1 = 11px,T2 = 12px,T3= 13px的原因是相位外差公式,计算可得T12 = 132px,T23 = 156px,再叠加T12和T23可得T123 = 858px。我要处理的图片宽度是854px,刚好满足要求。
在相机、投影仪和被测物相对位置不变的情况下,根据图像上同一点在相位编码图像上的
位置也相同,可以得到两种周期下相应的绝对相位之间的关系:
叠加后效果:
可见,叠加后相位再整行数据中已经覆盖了整个视场,可以根据绝对相位和高度之间的对应关系得到深度信息了。
3.模拟代码(python 需导入matpotlib包)
# encoding:utf-8from matplotlib import pyplot as plt PI = 3.1415926# 三行像素的包裹相位T1 = [0] * 854T2 = [0] * 854T3 = [0] * 854T_12 = [0] * 854T_23 = [0] * 854T_123 = [0] * 854 x = [0] * 854for i in range(0, 854): x[i] = im = 1n = 1q = 1for i in range(0, 854): if m < 12: T1[i] = m * 2 * PI / 11 - PI m = m + 1 else: m = 1 T1[i] = m * 2 * PI / 11 - PI m = m + 1 if n < 13: T2[i] = n * 2 * PI / 12 - PI n = n + 1 else: n = 1 T2[i] = n * 2 * PI / 12 - PI n = n + 1 if q < 14: T3[i] = q * 2 * PI / 13 - PI q = q + 1 else: q = 1 T3[i] = q * 2 * PI / 13 - PI q = q + 1for i in range(0, 854): if T1[i] >= T2[i]: T_12[i] = (T1[i] - T2[i]) elif T1[i] < T2[i]: T_12[i] = (T1[i] - T2[i] + 2 * PI) if T2[i] >= T3[i]: T_23[i] = (T2[i] - T3[i]) elif T2[i] < T3[i]: T_23[i] = (T2[i] - T3[i] + 2 * PI)for i in range(0, 854): if T_12[i] >= T_23[i]: T_123[i] = (T_12[i] - T_23[i]) elif T_12[i] < T_23[i]: T_123[i] = (T_12[i] - T_23[i] + 2 * PI) plt.plot(x, T1)plt.plot(x, T2)plt.plot(x, T3)plt.plot(x, T_12)plt.plot(x, T_23)plt.plot(x,T_123)plt.title("T123")plt.xlabel("pixel")plt.ylabel("w/rad")# plt.grid()plt.show()
- 立体视觉_基于多频外差的三频正弦波理想状态下的解相位
- 基于立体视觉的三维图像重建
- 机器视觉——基于立体视觉的变形测量
- 相机标定(4)---基于halcon的双目立体视觉标定
- 基于双目立体视觉的物体三维尺寸测量
- MFC下正弦波的绘制
- 一种理想状态下的内存管理
- 双目立体视觉的发展
- 双目立体视觉的原理
- FPGA实现基于ROM的正弦波发生器
- 外差、超外差、超内差的概念的区别
- 关于一些立体视觉的总结
- 从立体视觉的建立谈主视眼
- 树莓派上的立体视觉和深度知觉
- 双目立体视觉技术涉及到的基本概念
- opencv立体视觉的实现流程
- 双目立体视觉的数学原理
- 树莓派上的立体视觉和深度知觉
- 阿拉伯数字(1到4000)转化为罗马数字的javascript实现
- Android图片放置技巧
- 运行cs231n课程中Assignment1中的示例代码
- less 和 sass 配置
- 【实战教程】腾讯云&搭建微信小程序服务
- 立体视觉_基于多频外差的三频正弦波理想状态下的解相位
- SpringBoot中级教程之SpringBoot自定义配置(十一)
- css 使图片水平垂直居中
- Educational Codeforces Round 25 C. Multi-judge Solving
- ORACLE11G RAC启动关闭步骤
- CentOS 常用命令大全
- Apache与Tomcat 区别联系
- HelloChart折线图的改写
- 设计模式(16)-迭代器模式