格雷码 + 相位移(Phase Shift)融合

一、为什么要融合?

先看两个方法的本质:

格雷码(Gray Code)

优点:稳定、不易误码

缺点:只能整数精度(像素级)

输出:

相位移(Phase Shift)

优点:亚像素精度(0.01 pixel)

缺点:周期性 → 会"跳变"

输出:相位不知道属于哪个周期(2π歧义)

二、核心思想(关键)

格雷码 → 确定周期编号

相位 → 确定周期内位置

工业流程

1 投影 Gray Code

2 投影 Phase Shift(3/4/5步相移)

方法 优点
3步
4步 抗噪好
5步 精度更高

3 相机采集

4 Gray 解码 → k

5 Phase 计算 → φ

6 相位展开 → Φ = 2πk + φ

7 三角测量 → 3D

三、相位移数学原理

以 **三步相移(3-step)**为例:

投影:

解相位

这是 包裹相位(wrapped phase)

相位展开

问题:

φ 是周期性的

例如:

真实: 7π

测量: π

用 Gray Code 解:

格雷码得到:

k = 周期编号

最终:

得到:

绝对相位(Absolute Phase)

四、空间坐标恢复

投影仪列坐标:

然后:

相机点 ↔ 投影仪点

做:

三角测量(Triangulation)

得到: XYZ

精度分析

工业优化

多步相移(推荐)

方法 优点
3步
4步 抗噪好
5步 精度更高

正反投影

pattern + inverse 提升鲁棒性

相位滤波

Gaussian / Median

阴影掩码

低亮度区域剔除

五、案例

相机分辨率:1280 × 1024

投影仪分辨率:1024 × 768

测量物体:金属台阶(有高度差)

目标:

恢复每个像素对应的 3D 坐标 (X,Y,Z)

投影阶段

投影 Gray Code

投影 10位格雷码(因为 1024=2¹⁰)

需要 10 张图(正码)

  • 10 张图(反码)

= 20 张

投影相位移(Phase Shift)分析单个点P

1、gray code 解码

假设该像素在 10 张 Gray 图中:

cpp 复制代码
1 1 0 1 0 0 1 0 1 1
2、转换为二进制
cpp 复制代码
Gray:  1 1 0 1 0 0 1 0 1 1
Binary:1 0 0 1 1 1 0 0 1 0
3、转十进制

k = 570 表示:该点属于第 570 条投影列(粗定位)

相位计算

该像素在4张相移图中的灰度:

I1 = 120

I2 = 200

I3 = 130

I4 = 60

计算相位

cpp 复制代码
包裹相位:φ ∈ (-π, π]

相位展开(核心)

格雷码给出:

k = 570


绝对相位

投影仪坐标恢复

投影宽度: W = 1024

投影列坐标

投影列坐标 = 569.74 pixel(亚像素)

计算深度

相机内参

投影仪内参(当成"反向相机")

fx_p = 1000

fy_p = 1000

cx_p = 512

cy_p = 384

外参(投影仪相对于相机)

R = I(简化)

T = [100, 0, 0] mm

表示:

投影仪在相机右边 100 mm

已知观测(来自Gray+Phase)

相机看到:

u = 700

v = 500


投影仪对应:

xp = 569.74(亚像素)

yp = 400

像素 → 归一化坐标

相机光线方向
cpp 复制代码
x_c = (700 - 640)/1200 = 0.05
y_c = (500 - 512)/1200 ≈ -0.01
相机光线:
投影仪光线

投影光线(在投影仪坐标系):

坐标统一到相机坐标系

投影仪位置:

C_p = (100, 0, 0)

求两条线最近点(核心)

理想情况:

两条线相交

实际:

求最小距离点

解方程

cpp 复制代码
从:

-0.01t = 0.016s
→ s = -0.625t

代入 x 方程:

0.05t = 100 + 0.0577(-0.625t)
0.05t = 100 - 0.036t
0.086t = 100
t ≈ 1162.8

求3D坐标

最终结果

(X,Y,Z) ≈ (58.1, -11.6, 1162.8) mm

误差分析

相位误差

Gray错误(最危险)

如果:

k = 570 → 571

误差:

≈ 1 pixel

放大后:

严重误差(跳变)

相关推荐
线束线缆组件品替网8 小时前
Amphenol RJE1Y36610644401 CAT6A网线组件选型与替代指南
网络·人工智能·数码相机·电脑·音视频·硬件工程·游戏机
模拟器连接器曾工12 小时前
6G传输EtherNet/IP 工业以太网 X-code 8针圆形M12连接器
数码相机·网络协议·ethernet/ip·x键位m12航空连接器·工业以太网m12连接器
3DVisionary1 天前
从微观损伤到宏观断裂:DIC非接触测量在复合材料可靠性验证中的前沿实践
人工智能·数码相机·算法·机器学习·3d·复合材料·dic技术
程序员Android2 天前
Android 相机MFNR 拍照trace 分析
android·数码相机
格林威2 天前
工业相机图像采集处理:从 RAW 数据到 AI 可读图像,海康相机 C# 实战代码深度解析
开发语言·c++·人工智能·数码相机·c#·工业相机·堡盟相机
格林威2 天前
工业相机参数解析:曝光时间与运动模糊的“生死博弈”
c++·人工智能·数码相机·opencv·算法·计算机视觉·工业相机
格林威2 天前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
格林威3 天前
工业相机图像高速存储(C++版):RAID 0 NVMe SSD 阵列暴力提速,附海康实战代码!
开发语言·c++·人工智能·数码相机·计算机视觉·工业相机·堡盟相机
rit84324993 天前
光场相机成像过程及空间域重对焦仿真
数码相机