本文最后更新于:2026年8月5日 中午

本文记录图漾 FM815-IX-E1 结构光深度相机的成像原理推导,以及一组距离-精度的实测。先梳理结构光与双目立体视觉的基础(针孔模型、三角测量、视差、SGBM、整流),再把设备的实测参数代入,和 9 个距离的平面墙平整度数据对照。数值取自设备特性转储、出厂标定和实测采集。

关键参数(实测)

依据
型号 / 接口代际 FM815-IX-E1 / Gige_2_0(HW 1.3.0,FW 3.13.70) DumpAllFeatures
架构 主动双目结构光(1 投射器 + 左右 IR + RGB) §1
基线 $B$ 99.89 mm 右→左 IR 外参 tx
焦距 $f$ 1102.09 px @1280×960 左 IR 内参
视场 FOV 60.2° × 47.1° $2\arctan(W/2f)$
工作量程 0.59 – 4.4 m(两端硬边界) §4
深度精度 0.7 mm @0.6m → 12 mm @3.3m,$\propto Z^2$($\sigma_d\approx0.13$ px) §5
深度分辨率 1280×960(原生)/ 640×480(降采)/ 320×240 §6

结构光与双目视觉

符号约定(贯穿全文):

符号 含义 单位
$P=(X,Y,Z)$ 物点的三维坐标 mm
$Z$ 深度,物点沿光轴的距离 mm
$X$, $Y$ 物点的横向、纵向坐标 mm
$f$ 焦距(= 物理焦距 ÷ 像素尺寸) px
$B$ 基线,两光心的横向间距(双目 = 左右相机;单目 = 相机↔投射器) mm
$d$ 视差,同一物点在两图中的水平位置差 px
$\sigma_d$ 子像素视差噪声 px
$\Delta Z$ 每 1 视差像素对应的深度增量 mm

坐标系:原点在左相机光心;$+Z$ 沿光轴(深度方向),$+X$ 沿基线方向,$+Y$ 纵向;像坐标以主点为原点。量纲自洽:$Z=fB/d\to\text{px·mm/px}=\text{mm}$。

1.1 结构光概述与两种架构

结构光的共同思想是主动投射已知图案、由相机观察求深度。按相机数量分两种:

单目结构光 双目结构光 / 主动双目
构成 1 投射器 + 1 相机 1 投射器 + 2 相机(立体对)
测距 相机观察投射图案形变,以「投射器-相机」基线三角测量 投射器投 IR 散斑作人工纹理,两相机做立体匹配(视差→深度)
典型 初代 Kinect、RealSense F200 RealSense D4xx、Apple TrueDepth、本设备

1.2 针孔成像与深度的丢失

针孔模型:光心 $O$,像面在 $z=f$,物点 $P=(X,Z)$ 的光线 $OP$ 与像面交于 $p$,由相似三角形:

$$ \frac{x}{f}=\frac{X}{Z}\quad\Longrightarrow\quad x=f\frac{X}{Z} $$

针孔相机模型:光心 O、像面 z=f、物点 P、像点 p;小三角形 O-f-p 与大三角形 O-Z-P 相似

投影把三维 $(X,Y,Z)$ 压成二维 $(x,y)$,$Z$ 消失——同一光线上远近不同的点投到同一像点。故单张图像无法测距,需要双目(两个观察点)做三角测量。

1.3 双目三角测量与深度公式

两个相机从不同位置观察同一物点,各得一条指向它的光线,两线交点即物点的 3D 位置。

双目三角测量:两条光线交于物点 P,水平位置差即视差 d

设两相机焦距同为 $f$、光轴平行、光心横向相距基线 $B$(整流后的标准姿态,见 §1.6)。物点 $P=(X,Y,Z)$:

  • $P$ 在左相机像横坐标 $x_L=f\dfrac{X}{Z}$
  • $P$ 在右相机像横坐标 $x_R=f\dfrac{X-B}{Z}$

两式相减得视差:

$$ d=x_L-x_R=\frac{fB}{Z} $$

解出:

$$ \boxed{Z=\dfrac{fB}{d}} $$

这里默认了左右焦距相同。实际两个镜头的物理焦距不可能完全相等($f_L\ne f_R$),上面的推导是在整流后的图像上做的:整流(见 1.6 节)会把左右两幅图重采样到同一个虚拟相机——公共的焦距 $f$、共面的像面、平行的光轴,所以这里的 $f$ 是整流后的公共焦距,并不是要求两只镜头一模一样。即便暂且假设光轴平行、只有焦距不同,原始视差也会退化为

$$ d=x_L-x_R=\frac{(f_L-f_R)X+f_R B}{Z} $$

它同时含有 $X$ 和 $Z$,无法由视差单值解出深度。这正是必须先整流、再做匹配的几何原因,也把本节和 1.6 节连了起来。

物点越近视差越大、越远越小。对应问题:$Z=fB/d$ 的前提是知道左右图中哪个像素对应同一物点——此为双目视觉的计算核心,依赖图像纹理,由 SGBM 算法求解。

SGBM(Semi-Global Matching,半全局匹配) 是求解对应问题的主流算法(Hirschmüller, 2005):① 对每像素在视差窗内逐候选算块相似度(代价);② 沿多个方向一维累加代价并施加平滑惩罚 $P_1$/$P_2$(半全局,比纯局部鲁棒、比真全局快);③ 取聚合代价最小的视差;④ 后处理:亚像素插值、左右一致性 LRC、唯一性、散斑/中值滤波。

为什么随机散斑能匹配:SGBM 匹配小窗口(如 7×7)而非单像素。随机散斑使每个窗口内的亮点排布独一无二(高熵→可区分),左图窗口能在右图找到唯一对应。规则图案则歧义。

散斑之间的暗点:暗点自身无亮度,但以其为中心的窗口仍含周围亮点,故可匹配;SGBM 的平滑惩罚把周围亮点的视差传播到相邻暗点,中值滤波补全。因此深度逐像素稠密给出,非仅在亮点处。暗点与亮点同在一片表面(同一面墙),视差相同,匹配器还原的是这个一致视差。

逐像素稠密来自匹配不是插值:每像素视差由块匹配沿极线搜索取 argmin 得到;SGBM 的半全局聚合让代价受邻居影响(故弱纹理可匹配),但最终仍是逐像素独立决策;插值只用于亚像素精化(已匹配像素的代价曲线抛物线插值)、中值滤波、可选无效区填补。

1.4 三维坐标三角化(点云)

$Z$ 已知后,$X=x_LZ/f$,$Y=y_LZ/f$。每像素配其 $Z$ 得 3D 点,全图遍历得点云。$Z$ 为轴向深度(非斜距),平墙的轴向深度近似常数。

1.5 深度精度 $\Delta Z=Z^2/(fB)$ 与子像素

对 $Z=fB/d$ 求视差 $d$ 的微分:

$$ |dZ|=\frac{Z^2}{fB}|dd| $$

视差每差 1 像素($|dd|=1$),深度差 $\Delta Z=Z^2/(fB)$。$\Delta Z\propto Z^2$——深度精度随距离平方退化,此为三角测距的几何属性。子像素匹配使视差精度达 0.1 px 量级,设子像素噪声 $\sigma_d$,则深度噪声 $\text{RMS}\approx\sigma_dZ^2/(fB)$。

1.6 整流与视差搜索窗(量程)

整流(rectification):两相机物理上不严格平行同向(有微小旋转 $R$ 和基线位移 $t$)。出厂标定测出 $R/t$,据此对左右图各算一个单应变换(homography),把两图重采样到「光轴平行、像面共面、基线水平、对应点同行」的规范化姿态。

R/T 与单应的关系——为什么整流在图像上是单应变换:整流的几何起因是 $R/t$(标定测出的两相机 3D 相对姿态),但实际作用在图像上的是单应变换。推导如下。

设相机内参矩阵为 $K$($3\times3$),3D 物点 $P$ 的原始投影(齐次坐标)为:

$$ \lambda p = KP $$

其中 $p=(u,v,1)^{\mathsf{T}}$ 是像点齐次坐标,$\lambda$ 是深度尺度因子。把相机绕光心做一个虚拟旋转 $R_v$(只转不移),物点 $P$ 不动但相机坐标系变了,在新坐标系下 $P$ 变为 $P’=R_vP$,新投影为 $\lambda’ p’ = K R_v P$。从原始投影反解 $P = \lambda K^{-1}p$,代入新投影:

$$ \lambda' p' = K R_v \lambda K^{-1} p = \lambda (K R_v K^{-1}) p $$

齐次坐标下比例因子 $\lambda/\lambda’$ 不影响,故:

$$ \boxed{p' \sim Hp,\quad H = KR_vK^{-1}} $$

也就是说,相机绕光心的 3D 旋转,落到图像上恰好是一个 2D 单应:

$$ H = KR_vK^{-1} $$

直觉上:K 的逆矩阵把像素还原成光线方向(归一化坐标),R_v 旋转光线,K 转回像素坐标——三步复合即为 H。

整流如何应用:① 由标定的 $R/t$ 构造整流旋转 $R_{\text{rect}}$(Bouguet 法:以基线方向 $t/|t|$ 为新 X 轴构造正交基),使基线水平、光轴平行;② 左相机虚拟旋转 $R_L=R_{\text{rect}}$,右相机 $R_R=R_{\text{rect}}\cdot R$;③ 各自诱导单应(公式见下);④ 对每像素执行去畸变(非线性)+ 单应 warp(线性),复合为像素重映射表,预计算一次查表完成。链条:$R/t$(标定)→ $R_{\text{rect}}$(Bouguet)→ 单应 $H$(输出端用公共 $K_{\text{new}}$)→ warp → 整流图。

$$ H_L=K_{\text{new}}R_{\text{rect}}K_L^{-1},\qquad H_R=K_{\text{new}}R_{\text{rect}}RK_R^{-1} $$

焦距如何被统一:$H_L$、$H_R$ 输出端用的是同一个公共内参 $K_{\text{new}}$,输入端才保留各自不同的 $K_L$、$K_R$。这和前面「两端同一个 $K$」的单应不同——那只统一朝向,焦距仍各是各的(左 $f_L$、右 $f_R$)。把输出端换成 $K_{\text{new}}$ 后,两张图都被重采样进同一个虚拟相机,焦距统一为公共值 $f_{\text{new}}$;镜头本身不动,只是每个像素按 $H$ 重新落位、新像素网格改用 $f_{\text{new}}$ 计量。读法从右往左:$K_i$ 的逆把原图像素还原成光线(剥掉该相机自己的 $f_i$),$R_i$ 把光线转到公共朝向,$K_{\text{new}}$ 用公共焦距投回像素。$f_{\text{new}}$ 是算法自选的自由参数,Bouguet / OpenCV 取两个相机焦距的平均,让整流图像素尺度贴近原图。基线则化为两个投影中心在水平方向的错开 $f_{\text{new}}B$,即视差——整流后两相机除这点水平错开外其余内参全同,故式子里只剩一个 $f$(即 $f_{\text{new}}$)。

整流:把两幅图变换到对应点同行,匹配由二维搜索降为一维

视差搜索窗 $[d_{\min},d_{\max}]$:SGBM 的配置参数,非物理常量。由 DISPARITY_OFFSET($d_{\min}$)和 DISPARITY_NUM($N$)决定,$d_{\max}=d_{\min}+N$。该窗经 $Z=fB/d$ 换算即工作量程:

$$ Z_{\min}=\frac{fB}{d_{\max}},\qquad Z_{\max}=\frac{fB}{d_{\min}} $$

1.7 单目结构光(对照)

单目结构光理论可行且为成熟技术(初代 Kinect、RealSense F200)。1 投射器 + 1 相机;投射器投已知图案,相机观察其被 3D 表面调制后的形态,将投射器视为第二只「虚拟眼」做三角测量。

单目结构光:投射器投已知图案($u_p$ 已知)+ 相机观察($u_c$),三角测量解出深度

推导同形 $Z=fB/d$,差异在于 $d=u_c-u_p$:单目中 $u_p$ 由已知图案给定(不搜索两图),双目中 $d=u_c-u_{\text{另一相机}}$(需搜索两图对应)。精度仍为 $\Delta Z=Z^2/(fB)$。本设备选用双目是工程取舍(廉价投射器 + 鲁棒匹配),非单目不可行。

图漾 FM815-IX-E1 实测

2.1 设备架构与参数

DumpAllFeatures 实测型号 FM815-IX-E1,接口 Gige_2_0,5 个组件:

SDK 组件 角色 实测参数
TY_COMPONENT_LASER IR 散斑投射器 power=100, auto_ctrl=1
TY_COMPONENT_IR_CAM_LEFT 左 IR 相机 1280×960 mono8, fx=1102.09
TY_COMPONENT_IR_CAM_RIGHT 右 IR 相机 1280×960 mono8, 右→左外参 tx=−99.89 mm
TY_COMPONENT_DEPTH_CAM SGBM 深度输出 320×240 / 640×480 / 1280×960
TY_COMPONENT_RGB_CAM RGB 相机(仅上色) 2560×1920

2.2 散斑投射与成像流水线

投射器内置 DOE,把红外激光打散为静态随机散斑(对人眼/RGB 不可见),左右 IR 相机成像。深度 = SGBM 左右 IR 匹配出视差 → $Z=fB/d$。RGB 另拍一张贴色得上色点云。

散斑结构光成像流水线:左右 IR 散斑→SGBM 深度→RGB 上色→点云

2.3 设备参数套入理论

  • $f=1102.09$ px,$B=99.89$ mm,$fB\approx 110080$ px·mm
  • FOV $=2\arctan(640/1102.09)=60.2°$,$2\arctan(480/1102.23)=47.1°$
  • 视差窗 DISPARITY_OFFSET=25, DISPARITY_NUM=162 → $d\in[25,187]$
  • 量程预测:$Z_{\min}=110080/187\approx589$ mm $\approx0.59$ m,$Z_{\max}=110080/25\approx4403$ mm $\approx4.41$ m

视差-距离曲线与搜索窗:窗 [25,187] px 对应量程 0.59–4.4 m

理论预测与实测对照

3.1 工作量程:预测 0.59–4.4 m vs 越界实测

距离 有效率 现象
0.5 m 6.7% 墙体 < 近端 0.59 m,整面墙无效,残存为墙后背景
0.6–3.7 m 75–91% 量程内,墙体完整可测
4.5 m 36.2% 墙体 > 远端 4.4 m,墙体无效,残存为近处地板/天花板

两端越界时墙体在深度图中消失,与预测吻合。

3.2 距离-精度:$\Delta Z=Z^2/(fB)$ vs 9 点实测曲线

正对平墙,不同距离各采 3 帧(1280×960)。平整度 = 点云到拟合平面的残差。方法关键在只统计墙体上的点(远距视场溢出墙会污染),用深度直方图定墙尖峰 + MAD 鲁棒迭代拟合主平面。

距离 RMS (mm) P95 有效率 $\sigma_d$ (px)
0.63 m 0.655 1.30 85.1% 0.181
1.02 m 1.300 2.62 90.2% 0.138
1.46 m 2.463 5.09 89.5% 0.127
1.94 m 4.631 9.40 91.0% 0.136
2.38 m 6.450 13.19 90.0% 0.126
2.82 m 8.234 16.88 86.3% 0.114
3.29 m 12.336 24.91 78.6% 0.125
3.72 m 12.498 25.76 74.7% 0.099

距离 vs 精度曲线

单距离平整度热力图(1 m:左为平面内残差,右为残差直方图)

对照:以实测 RMS 反推 $\sigma_d$(末列),1–3.3 m 段 $\sigma_d=0.114$–$0.138$ px,中位 0.126,基本恒定——单次匹配的视差抖动稳定在 ~0.13 px,深度噪声大致随 $\Delta Z\propto Z^2$ 走。理论曲线 $0.126Z^2/(fB)$ 与实测吻合。

完整精度模型(近端地板 + 视差量化):

$$ \mathrm{RMS}(Z)\approx\sqrt{\left(\sigma_d\frac{Z^2}{fB}\right)^{\!2}+z_{\mathrm{floor}}^{2}},\quad \sigma_d\approx0.126\text{px},\;z_{\mathrm{floor}}\approx0.47\text{mm} $$

多帧时间稳定性:逐像素深度时间抖动 ~0.5 mm,帧间残差相关 ≈1.0——单帧 RMS 的主体为固定系统性图案,多帧平均对精度改善有限。

3.3 散斑必要性:对应问题 vs 投射器开关

LASER 配置 深度有效率
power=100, auto=1 33.4%
power=100, auto=0 33.2%
power=0(关闭) 2.4%

关掉投射器深度由 33% 降至 2%——散斑是匹配纹理的主要来源。

3.4 点云密度来源

  • 场景与量程:前景 <0.59 m 整块无效。摆位使目标落入 0.6–4 m 可数倍提升有效率。
  • 分辨率:640→1280 点数 ×4(640 模式 fx=522.43 = 1280 的 fx 之半),精度不降。
  • SGBM 严苛度:放宽(uniq↓、关 LRC)密度↑但精度↓。
  • IR 增益:默认 gain=32 最优,调高反而更差。
  • 表面材质:玻璃/屏幕/黑色/强反光面恒无效。

采集、标定与设备特性

4.1 标定与 RGB 镜头畸变

出厂标定 access=1(只读),不可写回设备。双目外参(基线/整流)出厂锁死,自标等同重写深度引擎。

RGB 镜头畸变:带色点云中墙上直线(凹槽)弯曲——几何无畸变(整流已消 IR 畸变,depth=轴向 z),弯曲来自 RGB 独立镜头的桶形畸变($k_1=-0.2334$)。去畸变用 SDK 的 TYUndistortImage(Percipio 12 系数模型,非 OpenCV)。

去畸变后的带色点云(墙上直线已直)

4.2 投射器与 IR 成像特性

depth+IR 同开时 IR 帧全黑:投射器光照路由至主流量(depth),旁路 IR 组件取到灭灯相位。

模式 投射器 IR 帧 mean/max/std
depth+IR 同开 开/关 7/14/5(黑)
IR-only(-nodepth 199/255/78(亮)
IR-only 19/50/2(黑)

IR-only 模式采集的散斑

本设备无独立 IR 泛光灯。

4.3 距离选型

距离 精度 (RMS) 适用
0.6–1 m 0.7–1.3 mm 亚毫米至毫米级精密
1–2 m 1.3–4.6 mm 兼顾精度与覆盖(>90% 有效率)
2–3 m 4.6–12 mm 厘米级
>3 m ~12 mm,有效率下降 不建议

精度 $\propto Z^2$,按所需精度倒推安装距离。远距离大范围感知宜用 LiDAR(ToF,远而稀);结构光近而密,二者互补。



文章链接:
https://www.zywvvd.com/notes/3d/structured-light/structured-light-fm815/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

结构光相机成像原理与精度实测 -- FM815-IX-E1
https://www.zywvvd.com/notes/3d/structured-light/structured-light-fm815/
作者
Yiwei Zhang
发布于
2026年7月30日
许可协议