格雷码 + 相位移(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

放大后:

严重误差(跳变)

相关推荐
胖咕噜的稞达鸭4 小时前
如何写好一个skill
人工智能·数码相机
Hello-FPGA5 小时前
CameraLink相机模拟器 信号源加速激光雷达系统算法开发
数码相机
双翌视觉6 小时前
机器视觉系统为何离不开光学滤光片?
人工智能·数码相机·视觉检测·制造
3DVisionary13 小时前
XTDIC-VG视频引伸计技术原理解析:金属疲劳测试的“非接触革命“
python·数码相机·音视频·非接触测量·xtdic-vg·视频引伸计·金属疲劳测试
_李小白1 天前
【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变
笔记·数码相机
Hello-FPGA1 天前
基于VU13P VU系列FPGA的高性能CoaXpress 图像采集系统
数码相机
ctrl_v助手1 天前
VisionPro (R) QuickBuild相机的连接
服务器·笔记·数码相机·c#
工头阿乐1 天前
相机坐标系标定与外参矩阵求解
数码相机·线性代数·矩阵
问道财经1 天前
Pocket 4爆火,索尼富士慌了
数码相机
Hello-FPGA1 天前
CoaXPress 相机触发设置
数码相机