本文最后更新于:2026年8月12日 下午
搭一组四相机阵列、做完内外参标定后,重投影 RMS 落在约 0.12px。本文记录从标定到回答"这套系统到底有多准、又被什么限制"的完整判断:用 Fisher 信息给出精度的理论下界,实测它,再逐步找出真正的瓶颈——不是模型拟合得不够好,而是检测噪声本身。一个贯穿全文的结论:系统已经贴着自己的检测噪声地板,五个看上去能提精度的杠杆,逐一试过,增益全为零。
1. 这套系统在做什么
先用一句话把场景立起来:四台相机固定在一个刚性支架上,同步拍照,目标是把任意一个出现在它们共同视野里的物体,测出它在三维空间里的位置——准到毫米。
四台相机两两分辨率不同:cam1/2 是 4MP(2560×1440)、cam3/4 是 2MP(1080P)。标定用的是一块棋盘(11×8 内角点、方格 25mm,共 88 个角点),四台相机对着它在各种姿态下同步拍一组标定图。把 cam1 定为世界坐标系原点,其余三台相对它的位置(基线)分别是约 1207mm / 802mm / 529mm——cam1–cam2 拉得最开,是后续深度精度的主力。
要让这套阵列能测三维,得先标定两样东西:
- 内参(每台相机各自):焦距
$f_x,f_y$、主点$c_x,c_y$、镜头畸变系数。它描述"这台相机怎么看世界"——把一个 3D 点映射成它画面上的哪个像素。 - 外参(相机之间):cam2/3/4 相对 cam1 的刚性位姿(旋转 + 平移),也就是整个阵列的几何骨架——基线长度直接决定能测多准的深度。
标定完,报告里最显眼的数字叫重投影 RMS:把每张标定图的棋盘姿态投影回每台相机的画面,算出来的角点位置和实际检测到的角点之间的平均像素误差。这套系统标出来是 0.12px 左右——对一组多相机阵列来说相当漂亮。
但 RMS 低,不等于"测得准"。 RMS 只回答了"模型能不能拟合这些标定点",不回答真正关心的问题:换一组没见过的姿态,把一个点三角化出来,三维测量能准到多少毫米? 一个低 RMS 的标定完全可以配一个糟糕的测量——比如外参把基线估错了尺度,标定点上 RMS 照样低,但任何绝对深度都会系统性偏。
要严肃回答"到底多准",需要两件东西:
- 一个理论下界——给定噪声水平,最优估计器能好到什么程度;
- 一个实测——拿着独立测试集去量,再和下界比。
下界由 Fisher 信息(Fisher Information) 与 Cramér–Rao 不等式给出。本文就是绕着这两个东西转的。
数据:data_0807(四机同步:cam1/2 原生 4MP 2560×1440、cam3/4 1080P;cali 222 位姿、sigama 5组×100、test 5 距离)。板:chessboard 11×8 内部角点,方格 25.0mm。标定世界系:cam1 为原点(深度=Z);精度评估另用 rig 系(原点=4机质心,轴=PCA 水平/竖直/深度法向,距离=板心到 rig 平面垂直距离)。
2. 理论基础:测量模型、Fisher 信息与 Cramér–Rao 下界
2.1 目标
量化四目相机系统在相机数(2/3/4 目)×基线×距离下的 深度 z 与 横向 xy 测量精度,并与 Fisher 信息理论下界(CRLB)对比,回答「加相机/长基线是否真提精度、离理论极限多远、瓶颈在哪里」。
2.2 测量模型与观测噪声
每个标定/测试角点是一次像素观测 z_i ∈ ℝ²。针孔+畸变测量模型 g($\theta$) 把 3D 板点映射到像素:
板点
X_w—(板位姿R_b,t_b)→ 世界 —(相机外参R,t)→ 相机系X_c→ 归一化X_c/X_{c,z}→ 径向+切向畸变 → 内参K→ 像素(u,v)。
观测受检测噪声污染:z_i ~ N(g($\theta$), $\Sigma$),$\Sigma$ = $\sigma_a$²·I(各向同性,逐坐标方差 $\sigma_a$²)。其中 $\sigma_{\text{det}}$ = √($\sigma_u$²+$\sigma_v$²) 是 2D 检测噪声地板(实测),$\sigma_a$ = $\sigma_{\text{det}}$/√2 为单坐标标准差(使 $\sigma_u$²+$\sigma_v$² = $\sigma_{\text{det}}$² 成立)。
参数约定:内参 $\theta$=[fx,fy,cx,cy,k1,k2,p1,p2,k3](9 参 Brown5);cam1/2 升 rational 则 +[k4,k5,k6](12 参)。每张标定图另有外参 (r_i,t_i)(6 参/图)。
2.3 Fisher 信息与 Cramér–Rao 下界
对高斯观测 z ~ N(g($\theta$), $\Sigma$),Fisher 信息矩阵为 I($\theta$) = $J{\mathsf{T}}\Sigma{-1}J$,其中 J = $\partial g/\partial\theta$ 是测量模型对参数的雅可比。Cramér–Rao 不等式给出任何无偏估计器的方差下界:$\operatorname{Cov}(\hat{\theta})$ $\succeq I(\theta)^{-1}$,即 $\mathrm{CRLB}=\sqrt{\operatorname{diag}(I^{-1})}$。
本管线 J 用数值中心差分求:逐列扰动该参数 $\theta$ ± h·e_k,投影全部角点取差 J[:,k] = (g($\theta$+h·e_k) − g($\theta$−h·e_k))/(2h)——避免手写畸变解析导数的易错性,且天然兼容 5 参/8 参 rational 两种模型(只需切换 $\theta$ 的列数,雅可比代码不变)。
边缘化干扰参数(Schur 补):参数常分待估 β 与干扰 γ(如每图外参),$\theta$=(β,γ)。把信息矩阵分块 $I=\begin{bmatrix}A&B\B^{\mathsf{T}}&C\end{bmatrix}$(A=ββ 块、B=βγ 块、C=γγ 块),则只关心 β 时的边际信息 $I_\beta=A-BC{-1}B{\mathsf{T}}$(等价于把 γ 积分掉的边缘后验),$\mathrm{CRLB}\beta=\sqrt{\operatorname{diag}(I\beta^{-1})}$。本管线三种 Fisher 都靠这一步消去外参/板位姿/内参等干扰量。

Fisher 信息计算管线:观测 → 测量模型 g($\theta$) → 数值雅可比 J → 信息矩阵 I=$J{\mathsf{T}}\Sigma{-1}J$ → Schur 边缘化干扰量 → CRLB;底部分支为本管线的三种 Fisher 计算(内参/外参/三角化),共享 I=$J{\mathsf{T}}\Sigma{-1}J$ 这一核心,差别仅在待估/干扰/边缘化的对象。
2.4 本管线的三种 Fisher 计算
全管线有 3 个独立的 Fisher 计算,参数、干扰量、边缘化对象各不同,但共享 I=$J{\mathsf{T}}\Sigma{-1}J$ 这一核心,差别仅在「把什么当待估、把什么当干扰、消掉什么」:
| 内参 Fisher | 外参 Fisher | 三角化 Fisher | |
|---|---|---|---|
| 待估 β | $\theta$=fx,fy,cx,cy,k… | rig 外参(3×6=18) | 3D 点 X(3) |
| 干扰 γ | 每图外参 (r_i,t_i) |
板位姿(6/快照)+内参 | 无(几何+噪声给定) |
| 观测 | 标定角点像素 | 标定角点像素 | 测试角点像素 |
| 雅可比 J | ∂投影/∂($\theta$,外参) | ∂重投影/∂(rig,板,内参) | ∂投影/∂X(2×3/机) |
| 信息矩阵 | $J{\mathsf{T}}\Sigma{-1}J$ | $J{\mathsf{T}}\Sigma{-1}J$(已白化) | $\sum_c J_c{\mathsf{T}}\Sigma_c{-1}J_c$ |
| 边缘化 | Schur 消每图外参 | Schur 消板位姿+内参 | 不需 |
| CRLB 含义 | 单次标定内参精度下界 | rig 相对位姿(基线)精度下界 | 单点三角化精度下界 |
求解步骤统一为:(i) 确定待估 β 与干扰 γ;(ii) 对 β∪γ 全列做数值雅可比 J;(iii) I=$J{\mathsf{T}}\Sigma{-1}J$;(iv) 若有 γ 则 Schur 补取 $I_\beta$;(v) $\mathrm{CRLB}\beta=\sqrt{\operatorname{diag}(I\beta^{-1})}$。
2.5 检测噪声地板与「噪声受限 vs 模型受限」判据
$\sigma_{\text{det}}$= 静态连拍角点检测的亚像素可重复性,是纯检测地板(不含模型误差)。两个比值判据贯穿全报告:
- 重投影 RMS / $\sigma_{\text{det}}$:标定残差 vs 噪声地板。≈1 ⇒ 噪声受限(模型已足够);≫1 ⇒ 模型受限(畸变拟合不足,残差被模型误差主导)。
- k 折经验散布 / Fisher CRLB(均用 $\sigma_{\text{det}}$):经验不确定度 vs 理论下界。→1 ⇒ 噪声受限;≫1 ⇒ 模型/数据受限。
本数据 $\sigma_{\text{det}}$≈0.023px、重投影 RMS≈0.12px(≈5.3×)、内参 fx kfold/CRLB($\sigma_{\text{det}}$)≈24–81×。但「模型/噪声受限」的判据须区分两个 $\sigma$(见 §2.6):诊断分母用真实工作点噪声 $\sigma_{\text{real}}$≈RMS,而非静态地板 $\sigma_{\text{det}}$。在 $\sigma_{\text{real}}$ 口径下深度实测/CRLB≈0.9×(贴极限)、内参 fx k/CRLB($\sigma_{\text{real}}$)=4.7–15.6× ⇒ 主结论=检测噪声 $\sigma_{\text{real}}$ 受限,改进空间在检测侧。
2.6 理论下界 vs 真实误差:方差分解与有效噪声
Fisher CRLB 只计入「定位噪声经多目几何放大」这一项,且把标定出的内外相当真值;真实测量误差还可能含模型偏差与标定散布。三者独立故方差可加:
$\sigma_{\text{meas}}$² = $\sigma_{\text{CRLB}}$² + $\sigma_{\text{model}}$², $\sigma_{\text{model}}$ = √($\sigma_{\text{meas}}$² − $\sigma_{\text{CRLB}}$²)。
关键在于 $\sigma_{\text{CRLB}}$ 用哪个 $\sigma$,而 CRLB 线性于其噪声分母(I∝1/$\sigma$²):
- $\sigma_{\text{det}}$(静态爆发地板 ≈0.023px)= 板居中、正对、光照好时的传感器+亚像素噪声,理想采集条件下的渐近下界。
- $\sigma_{\text{real}}$(逐图去心残差 RMS ≈ 标定重投影 RMS,差~10⁻⁶,≈0.12px)= 真实工作点的定位噪声。它比 $\sigma_{\text{det}}$ 大 ~5×:标定采集的板姿态分布远比静态爆发恶劣(边缘畸变大/分辨率下降、倾斜透视缩短→角点变钝、远距板小→每角点像素少、光照不均对比度低),这些条件下的定位噪声都高于理想居中正对态,$\sigma_{\text{real}}$ 是对这套真实姿态分布的平均(实测逐图 $\sigma_{\text{real}}$ 跨度 0.07–0.19px,最差 10% 帧是最好 10% 的 2.7×)。$\sigma_{\text{det}}$ 是理想地板,$\sigma_{\text{real}}$ 才是工作点噪声。
⇒ 判「模型受限与否」,分母用 $\sigma_{\text{real}}$。方差分解($\sigma_{\text{real}}$ 口径):
- 深度实测 / CRLB($\sigma_{\text{real}}$) ≈ 0.6–1.0 ⇒ $\sigma_{\text{model}}$ ≈ 0 ⇒ 系统贴检测噪声地板,无模型误差项。
- 与之自洽:残差校正场、鱼眼、部分重叠外参、板非平面、联合 BA 五个杠杆全部零增益 ⇒ 模型方差为 0。
- 有效噪声 $\sigma_{\text{eff}}$=ratio·$\sigma_{\text{det}}$ 恰 = $\sigma_{\text{real}}$,故 $\sigma_{\text{eff}}$ 曲线贴合实测——「Fisher 曲线贴合实测」即源于分母取了 $\sigma_{\text{real}}$。

左:三角化误差椭圆——深度 z 是多目几何的固有弱轴(椭圆纵向拉长),横向 x 视差大故精度好。
右:解析双目 $\sigma_z$ = z²·$\sigma_{\text{det}}$/(f·B)(视差 d=fB/z,dz/dd = −z²/(fB)):深度误差 ∝ 距离²、反比于(基线×焦距)。但本 rig 会聚角有限,远场 z² 近似不成立,实测/理论同为 $\sigma$ ∝ $z^{\sim1.5}$(两曲线平行,只差常数倍 ratio;)。
2.7 约定:rig 系、角点序消歧、单位
- rig 系:原点=4 机光学中心质心;三轴由相机布局 PCA 给出(PC1=水平长基线、PC2=竖直、PC3=深度=相机平面法向)。距离=板心到 rig 平面垂直距离(组内均值),比 cam1 世界 Z 更贴近「物体到 rig 的真实距离」。
- 棋盘 180° 对称:角点反序对内参无害(吸收进该图外参),但对多目相对位姿有害 ⇒ stage5 先做跨相机角点序消歧。
- 异构相机(cam1/2 原生 4MP、cam3/4 1080P):Fisher 框架天然兼容(每机各自 $\sigma_{\text{det}}$ 与
K)。 - 单位:全部长度 mm。board.yaml square_size=25mm(待实物复测);若与实物不符,所有 mm 值等比缩放,px 级结论不变。
2.8 多目三角化与融合算法
本 rig 把 C 个相机的观测融合成一个 3D 点估计。核心:不是「两两三角化再合并」,而是把全部相机的线性方程一次性堆叠求最小二乘解——这正是多目相对双目的本质区别,也对应 Fisher 信息 $I_X=\sum_c J_c{\mathsf{T}}\Sigma_c{-1}J_c$ 的「各机独立观测 ⇒ 精度相加」(实现:lib/geometry.py::triangulate_dlt)。
① 双目三角化(2 目)—— DLT 线性交会。对每机,去畸变后像点 (u,v) 与投影矩阵 P=K[R|t] 给出一条空间射线,写成两条关于齐次坐标 $X=(X,Y,Z,1)^{\mathsf{T}}$ 的线性方程:
P[2]·X · u − P[0]·X = 0,P[2]·X · v − P[1]·X = 0(每机 2 行)。
2 目堆叠得 4 行 A·X = 0(A 为 4×4),SVD 取最小奇异向量 Vt[-1],齐次除 Xh[3](保号)得 3D 点——4 行恰好定解(噪声下唯一)。深度由视差决定:视差 d=fB/z ⇒ $\sigma_z$ = |dz/dd|·$\sigma$ = z²·$\sigma$/(f·B)——深度是弱轴(误差 ∝ 距离²、反比基线×焦距)。
② 多目融合(>2 目)—— 堆叠 SVD 全局最小二乘。把全部 C 机的 DLT 行堆叠:每机 2 行 ⇒ A 为 2C×4,SVD 最小奇异向量 = 全局最小二乘解。在「各机观测独立高斯」假设下,这等价于最大似然估计(所有视角同时最优,信息一次性用尽;而非先两两交会再加权平均——后者会丢信息)。其精度正是三角化 Fisher:$I_X=\sum_c J_c{\mathsf{T}}\Sigma_c{-1}J_c$,C 个相机各自贡献信息、矩阵相加 ⇒ 精度相加(协方差减小);双目是 C=2 的特例。
为何加相机收益递减(实测边际仅 ~1–2%/目):深度轴主要由视差/基线约束,本 rig 最长基线 cam1–cam2(1207mm)已把深度卡到地板;新增的 cam3/cam4 基线更短、且多在前向(与已有相机视角相关性强),边际相机主要补充横向信息与冗余,而非深度。故 4 目深度 ≈ 2 目深度(实测),加相机的价值在视场/冗余/横向,而非深度精度本身。

左:双目 DLT——每机 2 行射线方程(共 4 行),视差 d=fB/z 决定深度(弱轴),$\sigma_z=z^2\sigma/(fB)$。右:>2 目融合——堆叠全部 C 机 DLT 行(2C×4)→ SVD 最小奇异向量 = 全局最小二乘(高斯下 ML);Fisher 不确定椭球随相机数增加而缩小($I_X=\sum_c J_c{\mathsf{T}}\Sigma_c{-1}J_c$,精度相加),4 目椭球 < 2 目椭球。实现见 lib/geometry.py::triangulate_dlt。
3. 设备、数据采集与筛选
3.1 设备
相机:4 台硬件同步相机,异构(2 高分辨 + 2 标准):
| 相机 | 分辨率 | fx(px) | 用途 |
|---|---|---|---|
| cam1 | 2560×1440(4MP) | 2036 | 世界原点 + 主参考 |
| cam2 | 2560×1440(4MP) | 2041 | 长基线对 |
| cam3 | 1920×1080(1080P) | 1346 | 短基线冗余 |
| cam4 | 1920×1080(1080P) | 1347 | 短基线冗余 |
标定板:平面棋盘,12×9 方格 ⇒ 11×8 内部角点(= 88 个,findChessboard 检测目标),方格边长 25mm(board.yaml,TODO 实物复测 —— 仅等比缩放 mm 绝对值,px/比值结论不变)。
装置(rig):4 机刚性安装在同一框架上,硬件同步触发(每姿态 4 机同时各采 1 帧)。以 cam1 光心为世界原点,其余 3 机位置(标定所得):
| cam2 | cam3 | cam4 | |
|---|---|---|---|
| 中心(mm, cam1系) | (−1155, 64, 345) | (−700, 389, 37) | (−366, 379, −49) |
| 基线 |t| (mm) | 1207 | 802 | 529 |
⇒ rig 占据约 1.15m(水平)× 0.4m(竖直)× 0.4m(深度) 的三维体积(非共面),cam1–cam2 为最长基线(水平+前探),4 机汇聚观测前方 ~1–3m 的共享测量区。

四目 rig 实拍:4 台相机刚性安装在同一框架上,硬件同步触发。

四目 rig 结构 3D 示意:4 相机(色块)刚性安装,光轴(箭头)汇聚观测前方测量区;蓝面 = 标定板(12×9 方格,300×225mm)在 ~1m 处示意位置;灰线 = 基线。cam1 = 世界原点。
3.2 数据采集
数据集 data_0807,分 3 组(均 4 机同步):
| 数据集 | 内容 | 数量 | 喂给 |
|---|---|---|---|
cali |
标定姿态:手持板在共享区内变换角度/位置/距离(~1–3m,覆盖全视场与倾角),4 机同步各 1 帧 | ~217 张/机(其中四机全检出 88 角点的同步快照 96) | 内参/ 外参标定 |
sigama |
静态连拍:板保持静止,每机连拍 | 5 组 × 100 帧/机 | 检测噪声地板 $\sigma_{\text{det}}$ |
test |
独立测试:板置于 5 个距离(标称 1/1.5/2/2.5/3m;实测距离由三角化定),4 机同步 | 5 距离 × ~8 组 | 多目精度泛化 |
同步:每姿态 4 机硬件触发同时采集;
sigama是单机静态连拍(测本机噪声)。cali与test的"组"= 一次同步采集(4 机各 1 帧)。
标定板采集覆盖(cali good pool,每机 ~146–158 张):

上排:图像平面角点密度 —— 88 角点 × ~150 图 = ~13000 点散布全视场(红 + = 主点);覆盖到边缘(畸变最大处)是内参标定质量的保障。
下排:板心空间分布(深度 Z × 横向 X)—— 标定姿态覆盖 ~500–3000mm 深度、±横向偏移,姿态多样性充足。
逐机像面覆盖热力图(cali 全姿态 ~217 张/机,2×2 = cam1–4;色标蓝→红 = 角点检测频次低→高):

每机把全部标定姿态的检出角点投回各自像面统计密度。4 机均覆盖到视场四角与边缘(畸变最大、标定最关键的区域),中央与主点附近(日常成像区)采样最密(红)。边缘也有低-中密度覆盖(青/黄)⇒ 内参畸变项在全视场都有约束,无大片盲区 —— 这是内参标定可信(而非仅中心区域准)的几何前提。
3.3 数据筛选
目标:把每台相机 cali 的 ~217 张,按"角点检测能否成功 + 重投影误差大小"分成三类,只保留干净的好图进入标定池。目的是剔除会污染标定的图:出画/遮挡的(检测失败)、以及模型在该位姿拟合不足的高误差图(畸变吃不掉的极端斜姿/微抖)。
方法(三步):
- 角点检测:每图
findChessboardCorners+ 亚像素cornerSubPix(窗口自适应)提取 88 个角点。检测失败或不足 88 点 ⇒1_出画(板不在画面内/严重遮挡;实测 ~27–32%,降采样验证 97% 仍检不出 ⇒ 真出画,非算法失败)。 - 重投影 RMS:对检出 88 角点的图,用干净内参
solvePnP反解板位姿,再把 88 板点重投影回图像,逐图算 RMS = √($\Sigma$‖检测−投影‖²/N)。RMS≈$\sigma_{\text{det}}$ ⇒ 该图检测噪声主导(好图);RMS≫$\sigma_{\text{det}}$ ⇒ 模型在该位姿拟合不足。 - 阈值分类:RMS > 1px ⇒
2_误差超限(扔);RMS ≤ 1px ⇒3_good(留 = 标定池)。
三类长什么样(cam1 示例,已带角点/重投影箭头/RMS 标注):

左:出画(检测失败,板部分出画/遮挡,戳记原因);中:误差超限(RMS>1px,红箭头大 = 极端斜姿/微抖致模型拟合不足,扔);右:正常 good(RMS≤1px,绿角点+小红箭头,留作标定池)。
数据(分类计数 + 每类 RMS):
| cam | 总数 | 1_出画 | 2_误差超限(>1px) | 3_good(≤1px,标定) | median RMS(px) | RMS>1px |
|---|---|---|---|---|---|---|
| cam1 | 217 | 64 | 4 | 149 | 0.203 | 4 |
| cam2 | 217 | 58 | 1 | 158 | 0.196 | 1 |
| cam3 | 217 | 69 | 2 | 146 | 0.116 | 2 |
| cam4 | 217 | 70 | 0 | 147 | 0.115 | 0 |

为什么阈值定 1px(不用旧 8px、不做 10% trim):data_0807 极干净——per-image RMS median≈0.2px、p95≈0.5–1.9px,cam1/2 原生 4MP + 对焦改善后 5 参 Brown 几乎无高 RMS 位姿。旧 8px 阈值在此太松(超限≈0,放任坏图);10% trim 又会误剔一堆 RMS 0.3–0.7px 的好图。1px 恰切掉真高 RMS 尾(各 0–4 张,RMS 1–5.5px,多为极端斜姿/微抖),保留 ~146–158 张/机干净池。
4. 检测噪声地板 $\sigma_{\text{det}}$ 与真实噪声 $\sigma_{\text{real}}$
本节先测理想条件下的检测噪声地板 $\sigma_{\text{det}}$,再辨析真实工作点噪声 $\sigma_{\text{real}}$:为何 $\sigma_{\text{det}}$ 会低估真实噪声约 5×、$\sigma_{\text{real}}$ 如何定义(≈ 标定 RMS,到 10⁻⁶)、其中可建模的系统偏差 var(b) 仅 1.5–3.3% 且减之无效。
4.1 $\sigma_{\text{det}}$:静态爆发地板(理想条件)
目标:测每台相机的角点定位噪声地板 $\sigma_{\text{det}}$ —— 即"信号完全不变时,角点检测能重复到多准"。它是后续所有 Fisher 精度下界的噪声分母($\sigma_a$=$\sigma_{\text{det}}$/√2),精度下界整体线性于它。
方法:静态连拍(板不动,5 组×100 帧,每组距离不同:~1/1.5/2/2.3/2.8m)下,各帧角点检测的差异 = 纯亚像素检测噪声(信号恒定)。对每组扣组内均值(消去静态板信号),残差像素位移 Δu,Δv 的方差即检测噪声;按 2D 模型 $\sigma_{\text{det}}$=√(VarΔu+VarΔv)。每组的板距由 100 帧角点中位 + 标定内参 solvePnP 求得。
逐组数据(5 组 × 4 机,各自 PnP 测距):
| 组 | cam1 距/$\sigma$ | cam2 距/$\sigma$ | cam3 距/$\sigma$ | cam4 距/$\sigma$ |
|---|---|---|---|---|
| 0 | 1190 / 0.0231 | 1048 / 0.0249 | 949 / 0.0281 | 1018 / 0.0253 |
| 1 | 1632 / 0.0226 | 1564 / 0.0262 | 1470 / 0.0239 | 1507 / 0.0241 |
| 2 | 2018 / 0.0212 | 1957 / 0.0268 | 1876 / 0.0243 | 1907 / 0.0216 |
| 3 | 2384 / 0.0228 | 2330 / 0.0246 | 2256 / 0.0194 | 2282 / 0.0212 |
| 4 | 2837 / 0.0164 | 2784 / 0.0196 | 2722 / 0.0188 | 2745 / 0.0218 |

$\sigma_{\text{det}}$ vs 板距:$\sigma_{\text{det}}$ 随距离略降(0.028→0.018),远距板小但检测更稳(板更正面、光照更匀)。各机趋势一致、绝对值接近(0.018–0.028px),差异主要来自传感器/对焦。
跨组池化(后续 Fisher 用此 $\sigma_{\text{det}}$):
| cam | $\sigma_{\text{det}}$(px) | $\sigma_u$ | $\sigma_v$ | 组/帧 |
|---|---|---|---|---|
| cam1 | 0.0213 | 0.013 | 0.017 | 5/500 |
| cam2 | 0.0244 | 0.018 | 0.017 | 5/500 |
| cam3 | 0.0231 | 0.013 | 0.019 | 5/500 |
| cam4 | 0.0228 | 0.013 | 0.019 | 5/499 |
上表是 $\sigma_{\text{det}}$(静态爆发地板,理想条件),不是 $\sigma_{\text{real}}$(真实工作点噪声);$\sigma_{\text{real}}$≈RMS≈0.10–0.14px,是 $\sigma_{\text{det}}$ 的 ~5×。下文辨析这 5× 差距的来源($\sigma_{\text{det}}$ 在理想条件下被低估、真实标定姿态分布更恶劣,而非模型偏差),并给出 $\sigma_{\text{real}}$ 的逐图定义与其系统偏差 var(b) 仅 1.5–3.3% 的实证。
4.2 $\sigma_{\text{det}}$ 偏低的来源:理想地板 vs 工作点噪声
$\sigma_{\text{det}}$ 的测法决定了它是一个理想条件下的下界:静态爆发时板静止、正对、居中、光照好 ⇒ 角点最锐、对比度最高 ⇒ cornerSubPix 定位最准。0.023px 是「信号恒定 + 条件最优」时的传感器+亚像素地板。
但标定/测试实际用的图,板在全视场变换,远不如此理想:
| 恶化因素 | 出现场景 | 对定位噪声的影响 |
|---|---|---|
| 边缘 | 板移到视场边角 | 畸变梯度大、像素分辨率下降 → 角点定位散 |
| 倾斜 | 板非正对(俯仰/偏航) | 透视缩短 → 角点不对称、变钝 → 亚像素拟合差 |
| 远距 | 板在 2–3m | 板成像小 → 每角点像素少 → 离散化噪声大 |
| 光照不均 | 部分姿态背光/阴影 | 对比度低 → 梯度弱 → cornerSubPix 散 |
这些条件下的逐图定位噪声都高于理想居中正对态。$\sigma_{\text{real}}$ 是对这套真实姿态分布的平均(且 RMS 是二次平均,被差帧抬高)⇒ $\sigma_{\text{real}}$ ≫ $\sigma_{\text{det}}$ 是必然。
证据(最终模型下逐图 $\sigma_{\text{real}}$ 分布) —— 对 good pool 每张图用最终内参 solvePnP + 投影,算该图去心残差 RMS(=该图的 $\sigma_{\text{real}}$):
| p10 | 中位 | p90 | 最差 10% 均值 | 最好 10% 均值 | |
|---|---|---|---|---|---|
| 逐图 $\sigma_{\text{real}}$(px) | 0.077 | 0.103 | 0.143 | 0.193 | 0.070 |
⇒ 逐图定位噪声跨度很大:最差 10% 帧的噪声是最好 10% 的 2.7×,还有拖到 0.4–0.7px 的长尾(极端倾斜/边缘帧)。即便是最好的标定帧(0.070px)仍是 $\sigma_{\text{det}}$(0.023px)的 3× —— 因为标定帧本就涉及位姿求解、且姿态不如静态爆发理想。$\sigma_{\text{real}}$≈0.11px 正是这套分布的均值,而 $\sigma_{\text{det}}$ 只采到了分布最优端的条件。结论:$\sigma_{\text{det}}$ 是理想地板,$\sigma_{\text{real}}$ 才是真实工作点噪声;5× 差距来自条件差异,不来自模型偏差(证明)。
由此,$\sigma_{\text{det}}$ 当 CRLB 分母时,所有「实测/CRLB」比值先天虚高 ~5×,不可据之判模型受限。
4.3 $\sigma_{\text{real}}$ 的定义:逐图去心残差 RMS ≈ 标定 RMS(到 10⁻⁶)
- 残差 = 角点检测坐标 − 模型投影坐标(投影用该图
solvePnP位姿 + 相机内参)。 - 逐图去心:每张图所有角点残差先减该图均值再求 RMS —— 扣掉
solvePnP在 6 自由度位姿上已吸收的刚体平移(DC),剩下才是「模型+内参解释不了、且与位姿无关」的纯定位噪声。 - 数值事实😒\sigma_{\text{real}}$(逐图去心 RMS)与标定 RMS(
intrinsics.json,OpenCV 未去心的总重投影 RMS)两者算法不同,却近似相等到 ~10⁻⁶:
| 相机 | $\sigma_{\text{real}}$(去心 RMS) | 标定 RMS(未去心) | 差 | 相对差 |
|---|---|---|---|---|
| cam1 | 0.12012 | 0.12012 | 2×10⁻⁷ | 2×10⁻⁶ |
| cam2 | 0.12454 | 0.12454 | 3×10⁻⁷ | 2×10⁻⁶ |
| cam3 | 0.12194 | 0.12194 | 2×10⁻⁷ | 2×10⁻⁶ |
| cam4 | 0.11791 | 0.11791 | 3×10⁻⁸ | 3×10⁻⁷ |
差值的物理来源 = 逐图均值残差(DC):去心扣掉的正是每图残差均值,其幅值 |b|≈0.0001px,|b|²≈10⁻⁸–10⁻⁷ 与上表差值同量级。即「标定 RMS² ≈ $\sigma_{\text{real}}$² + 逐图DC²」,而逐图 DC 被 solvePnP 的 6 自由度位姿几乎吃光 ⇒ DC 可忽略。
⇒ 全报告「RMS/$\sigma_{\text{real}}$ ≈ 1.00000x、系统贴真实检测噪声地板」成立到 6 位有效数字。这不是严格的数学恒等(两者算法不同:一个去心、一个不去心),而是「逐图 DC 残差已被证明可忽略」的经验近等式——区别重要:它说明位姿拟合确实把 DC 吸收干净,$\sigma_{\text{real}}$ 是干净的工作点噪声,而非混入未建模 DC 的脏量。
4.4 噪声层级:$\sigma_{\text{det}}$ ≪ $\sigma_{\text{real}}$(5.3×)
| 相机 | $\sigma_{\text{det}}$(静态爆发) | $\sigma_{\text{real}}$(逐图去心=RMS) | $\sigma_{\text{real}}$ / $\sigma_{\text{det}}$ |
|---|---|---|---|
| cam1(rational) | 0.0213 | 0.1201 | 5.65× |
| cam2(rational) | 0.0244 | 0.1245 | 5.10× |
| cam3(brown5) | 0.0231 | 0.1219 | 5.29× |
| cam4(brown5) | 0.0228 | 0.1179 | 5.18× |

4.5 var(b) 拆解 —— 系统偏差 b vs 随机噪声(逐格算法 + 可视化)
$\sigma_{\text{real}}$ 里有多少是系统偏差 b(可建模、可消除),多少是随机(不可消除)?关键:残差是 2D 矢量,只有把像面分格、看同一格跨多张图的统计,才能区分「跨图一致的固定偏置 b」与「跨图抖动的随机散布」——单张图无法区分二者(模型偏差与噪声叠在一起)。
逐机算法(与 lib/experiments.py::_cell_diagnostic 一致;网格版见 lib/exp_sigma_real.py::_cell_grids / _fig_resid_grid):
- 取残差:good pool 全部标定图(~150 张),每张
solvePnP解位姿 → 逐角点残差(du,dv) = 检测 − 投影(投影用该图位姿 + 该机内参)。 - 归一化像面坐标:每角点
cv2.undistortPoints去畸变 →(x_n,y_n)(归一化视场坐标)。归一化是为抹掉畸变梯度、让格在像面均匀,否则边缘格会被畸变拉伸得很碎。 - 24×24 分格:把
(x_n,y_n)的实测范围等分 24×24 = 576 格。 - 逐格统计(仅当该格样本 ≥8 才纳入,保中位稳定):对落入该格的全部残差点(跨所有图)
- 固定 b 分量:
b_u = |median(du)|、b_v = |median(dv)|—— 该格跨 ~150 图一致的偏置(若模型在某像面位置系统性地偏一个方向,中位非零)。 - 随机分量:
r_u = std(du)、r_v = std(dv)—— 该格跨图的抖动。
- 2D 合幅值:逐格
b_mag = hypot(b_u,b_v)、r_mag = hypot(r_u,r_v)(u/v 两分量勾股合成)。 - 跨格聚合(鲁棒估计,与 $\sigma_{\text{real}}$ 对齐):对全部有效格的分量取中位再合成 ——
b = hypot(median_cells(b_u), median_cells(b_v) )、random = hypot(median_cells(r_u), median_cells(r_v) )。用中位而非均值:少量极端格(边缘/数据稀疏格)不污染整体估计。 - var(b) 占比 = b² / $\sigma_{\text{real}}$²。
| 相机 | b(px) | 随机(px) | var(b) 占比 | b/$\sigma_{\text{real}}$ 振幅 | 随机/b |
|---|---|---|---|---|---|
| cam1(rational) | 0.0149 | 0.0936 | 1.5% | 12.4% | 6.3× |
| cam2(rational) | 0.0161 | 0.0997 | 1.7% | 12.9% | 6.2× |
| cam3(brown5) | 0.0212 | 0.1093 | 3.0% | 17.4% | 5.2× |
| cam4(brown5) | 0.0213 | 0.1089 | 3.3% | 18.1% | 5.1× |
怎么读:b 是典型格(跨格取中位)的系统偏置;var(b)=1.5–3.3% ⇒ 即便按振幅 b/$\sigma_{\text{real}}$ 也只 12–18%,系统偏差是 $\sigma_{\text{real}}$ 的次要项;随机/b ≈ 5–6× ⇒ 残差能量里随机主导约一个量级。(注:b 与「随机」是典型格的中位估计,而 $\sigma_{\text{real}}$ 是全点均值 RMS、被高方差的边缘格抬高,故 var(b)+var(随机)≈62–88% 而 ≠100%——这不影响「系统偏差占比」结论,因分子分母同源比较。)
24×24 残差格可视化(上排=固定 b,下排=随机;每格即算法第 4–5 步的 b_mag/r_mag):

上排(固定 b,magma):全视场中位 ≈0.015–0.021px、与 $\sigma_{\text{det}}$ 同量级、无中心大块亮斑——若有 ⇒ 存在未被模型吃掉的空间结构畸变。下排(随机,viridis):≈0.09–0.11px、比 b 大 ~6×、相当均匀 ⇒ 残差是逐图随机噪声。这与残差校正场因果干预的 0% 增益互为印证:减掉任何低阶空间场 test RMS 纹丝不动 ⇒ 残差里确无可建模的大块结构。
var(b) 是方差占比:残差是 2D 矢量,方差才是 RMS² 的线性贡献者,故判据用 var(b) 而非振幅。两台 rational(1.5–1.7%)显著低于两台 brown5(3.0–3.3%),与「rational 多 3 个径向项吃掉更多系统偏差」一致。

4.6 b 可忽略的两条独立证据
(证据① 网格中位直测):上表 b≈0.015–0.021px,与 $\sigma_{\text{det}}$≈0.023px 同量级。若 b 是大块未建模畸变,它应 ≫ $\sigma_{\text{det}}$;实测仅与传感器噪声相当 ⇒ 没有未被模型吃掉的大块系统偏差。
(证据② 残差校正因果干预,决定性):把测出的 b 场当固定偏移从独立测试集投影里减掉,看 test RMS 降不降。b 若真是系统偏差,减掉它必线性降 test RMS;若纹丝不动,则 b 是标定集过拟合产物、无泛化意义。
| 相机 | test RMS 校正前 | P 法(多项式)后 | G 法(网格-RBF)后 | P 增益 | G 增益 |
|---|---|---|---|---|---|
| cam1 | 0.10654 | 0.10653 | 0.10730 | +0.005% | −0.71%(反升) |
| cam2 | 0.10288 | 0.10289 | 0.10365 | −0.015% | −0.75% |
| cam3 | 0.13714 | 0.13714 | 0.13849 | +0.001% | −0.99% |
| cam4 | 0.13259 | 0.13259 | 0.13436 | −0.0002% | −1.34% |
⇒ P 法 4 机全部 ≈0.0%、G 法反升 −0.7~−1.3%(过拟合)。减掉 b 场 test RMS 纹丝不动 ⇒ b 不可建模利用,可忽略。与残差校正场实验互为印证。

4.7 模型选型自洽:cam3/4 用 brown5 的 var(b) 同样受控
四机内参按相机选畸变模型(选型细节见 §5.3):cam1/2(4MP)用 rational(12 参),cam3/4(2MP)用 brown5(9 参),判据是独立测试 RMS 而非训练 RMS。cam3/4 用更简单的 brown5,var(b) 却同样小,因为选阶机制本身就是对系统偏差的内置惩罚。
| 相机(分辨率) | brown5 test RMS | rational test RMS | brown5 vs rational |
|---|---|---|---|
| cam1(4MP) | 0.1602 | 0.1090 | +47.0%(拟合严重不足 ⇒ 必须上 rational) |
| cam2(4MP) | 0.1516 | 0.1025 | +47.9%(同上) |
| cam3(2MP) | 0.1382 | 0.1369 | +1.0%(rational 仅优 1% ⇒ brown5 够用) |
| cam4(2MP) | 0.1347 | 0.1328 | +1.5%(同上) |
cam1/2 是 4MP、边缘畸变大,brown5 拟合不足(test +47%);选 rational 吃掉这部分 ⇒ var(b) 降到 1.5–1.7%。cam3/4 是 2MP、视场小、畸变温和,rational 的 k4–k6 在 test 上几乎无增益(1–1.5%,低于标定噪声);留 brown5 反而省 3 个不可辨识自由度(条件数更低更稳),var(b)=3.0–3.3% 仍与 $\sigma_{\text{det}}$ 同量级。选阶判据(test RMS)本身就是「系统偏差有多大」的度量——凡被选中的模型,都是该机系统偏差已被压到最小的那个,故「逐机 var(b) 都小」是选型机制的必然,非巧合。cam3/4 不上 rational 的原因也在此:其 +1% 增益低于标定噪声,多出的 k4–k6 不可辨识(条件数≈10⁸),只会让 Fisher 协方差病态。

4.8 边界与结论
- 边界:b 只测了空间固定的系统偏差;逐图变化的偏差(每图位姿/对焦/光照微变引起的)被统计进「随机」分量,故 var(b)=1.5–3.3% 是系统偏差下界。残差校正因果干预(§4.6)的零增益兜底:即便把逐图变化的偏差也算上,test RMS 也降不动。§4.9© 给出能直接分离「姿态依赖模型偏差」与纯噪声的决定性实验。
- 结论:$\sigma_{\text{real}}$≈0.12px 是真实工作点定位噪声地板($\sigma_{\text{det}}$≈0.023px 是理想条件地板,低估 ~5×);其中系统偏差 var(b) 仅 1.5–3.3% 且减之无效 ⇒ 残差 ≥97% 是逐图随机噪声。 系统不是模型受限(五杠杆 + 联合 BA 零增益、本节残差校正零增益三重佐证),而是检测噪声受限;降 $\sigma_{\text{real}}$ 只能靠检测侧亚像素窗口(已收回 ~7%)或硬件。
4.9 $\sigma_{\text{det}}$ 的测法辨析:位置不变性实证 + 决定性未来实验
(A) 连拍的真正价值 = 剥离模型偏差
同一位置连拍 N 张,位姿固定 ⇒ 模型投影/畸变误差跨帧不变,在「跨帧 std」里相互抵消,剩下的只是纯传感器 + 亚像素定位噪声;单张图里噪声与模型偏差叠在一起,分不开。故 $\sigma_{\text{det}}$ 的用途 = 「模型若完美时的传感器渐近下界」,是 Fisher CRLB 的理想噪声分母——单理想位置连拍测它是下界设计,不是缺陷;工作点噪声须用 $\sigma_{\text{real}}$。
(B) 位置不变性实证
sigama/ 的 5 组连拍位置不同(板心从画面一侧扫到另一侧),但全部落在中央、光照好的带。逐组算 $\sigma_{\text{det}}$(每组 100 帧):
| 相机 | 5 位置 $\sigma_{\text{det}}$(px) | 跨位置 spread | 池化(=) | 5 位置板心范围(归一化像框) |
|---|---|---|---|---|
| cam1 | 0.0231 / 0.0226 / 0.0212 / 0.0228 / 0.0164 | 0.0067 | 0.0213 | x 0.53–0.78, y 0.53–0.67 |
| cam2 | 0.0249 / 0.0262 / 0.0268 / 0.0246 / 0.0196 | 0.0072 | 0.0244 | x 0.29–0.56, y 0.55–0.67 |
| cam3 | 0.0281 / 0.0239 / 0.0243 / 0.0194 / 0.0188 | 0.0093 | 0.0231 | x 0.49–0.54, y 0.52–0.72 |
| cam4 | 0.0253 / 0.0241 / 0.0216 / 0.0212 / 0.0218 | 0.0041 | 0.0228 | x 0.50–0.62, y 0.56–0.75 |
跨位置 spread ≤ 0.01px(四机最大 0.0093)—— $\sigma_{\text{det}}$ 是个低方差、在中央带几乎不变的稳定估计;5 个位置全在中央带(归一化 x 多在 0.3–0.8、y 0.5–0.75,无极端边角),板都正对、光照好。
⇒ $\sigma_{\text{det}}$ 到 $\sigma_{\text{real}}$ 的 5× 差距(~0.1px)是位置 spread(~0.01px)的 10–20×,不可能由「测的位置略偏」或「$\sigma_{\text{det}}$ 估计本身有噪声」解释,唯一来源是采样区制不同:连拍只采到中央/正对/光照好的理想区制(那里纯噪声 ~0.02px),而标定/测试跨边缘/倾斜/远距/暗光(那里纯噪声更高)。故 $\sigma_{\text{det}}$ 是理想区制的下界,其低估是区制覆盖问题而非估计问题;连拍只要还停在中央带,「多位置加权平均」也关不掉这个 gap(位置不变性已证),要关掉它就得在边缘/倾斜/远距姿态上连拍——那等于重测 $\sigma_{\text{real}}$。这正是 CRLB 分母用 $\sigma_{\text{real}}$ 而非「更准的 $\sigma_{\text{det}}$」的原因。
© 决定性未来实验:标定姿态上的逐位置连拍
边界:var(b) 只测了空间固定的系统偏差,逐图(姿态)变化的模型偏差会躲进「随机」桶,故「非模型受限」依赖「$\sigma_{\text{real}}$ ≈ 纯噪声」的假设。下列实验能直接证实它(现有数据做不到):在(部分)标定姿态上各连拍 ≥10 张而非单帧;分离原理——同位姿跨帧 std = $\sigma_{\text{pure}}$(pos)(模型偏差跨帧抵消),同位姿单帧 RMS = √($\sigma_{\text{pure}}$² + $\sigma_{\text{model}}$²),差即该位姿模型偏差。若 $\sigma_{\text{pure}}$ ≈ 0.12px ⇒ $\sigma_{\text{model}}$≈0、「非模型受限」得到印证;若 $\sigma_{\text{pure}}$ ≈ 0.05px、余 ~0.1px 为模型偏差 ⇒ 存在隐藏模型杠杆。仅需重新采集、不改算法。现有证据(残差校正场 0% 增益 + 深度实测/CRLB($\sigma_{\text{real}}$)≈0.6–1.0)已强烈支持前者。
5. 内参标定
目标:从干净标定池标定每台相机的内参 $\theta$(fx,fy,cx,cy + 畸变),并给出两个评估:训练 RMS(拟合好坏)与独立测试集泛化 RMS(真泛化能力,防过拟合)。同时用 10 折交叉估计参数不确定度(供对比 Fisher CRLB)。
承接上游😦§4):噪声地板 $\sigma_{\text{det}}$≈0.023px(逐机 0.021–0.024)、真实工作点噪声 $\sigma_{\text{real}}$≈RMS≈0.12px($\sigma_{\text{real}}$/$\sigma_{\text{det}}$≈5.3×)。本节标定用 $\sigma_{\text{real}}$ 为判据**(测试泛化 RMS 应贴 $\sigma_{\text{real}}$ 地板、而非 $\sigma_{\text{det}}$),§5.6 的 Fisher CRLB 用 $\sigma_{\text{det}}$ 建分母再按 §10 重标 $\sigma_{\text{real}}$。
方法:
- 标定=解超定方程 $\min_\theta \sum \lVert\text{检测}-\text{投影}\rVert^2$(OpenCV
calibrateCamera,LM 最小化重投影残差)。先用 5 参 Brown 稳健标定得初值,再按相机选畸变模型重标(模型阶用测试泛化 RMS 选,非训练 RMS —— 后者随参数增多单调降=过拟合):cam1/2(4MP)用 rational(k4-6)(测试 RMS 比 brown5 低 ~32%、且 brown5 训练 RMS 翻倍=拟合不足,见下文「畸变模型对比」);cam3/4(2MP)Brown 已贴 CRLB、加 rational 几乎无增益,保留 5 参 Brown 省自由度。 - 10 折交叉:随机分 10 份、留一折标定,跨折 $\theta$ 的
std(ddof=1)= 经验不确定度(真数据 Monte Carlo,供比 Fisher CRLB)。 - 测试泛化:固定 $\theta$,对独立测试集(5 距离)每图
solvePnP→ 重投影 RMS。
5.1 标定数据与训练/测试 RMS
数据(auto 亚像素窗口已部署,;测试距离列为真实三角化深度 cam1-Z 中位 1.18/1.51/2.03/2.40/2.83m,对应标称 1/1.5/2/2.5/3m):
| cam | 模型 | fx | rms(训练) | 测试1.18m | 测试1.51m | 测试2.03m | 测试2.40m | 测试2.83m |
|---|---|---|---|---|---|---|---|---|
| cam1 | rational | 2035.9 | 0.120 | 0.093 | 0.085 | 0.108 | 0.124 | 0.136 |
| cam2 | rational | 2040.9 | 0.125 | 0.092 | 0.105 | 0.111 | 0.099 | 0.106 |
| cam3 | brown5 | 1345.8 | 0.122 | 0.134 | 0.134 | 0.136 | 0.142 | 0.146 |
| cam4 | brown5 | 1346.8 | 0.118 | 0.139 | 0.137 | 0.122 | 0.125 | 0.150 |

左:fx;中:训练 RMS;右:测试泛化 RMS by 距离。测试 RMS = 真实逐图定位噪声 $\sigma_{\text{real}}$,auto 后 0.10–0.14px。
5.2 最终内参与测试泛化
最终内参 $\theta$ ± 10 折不确定度(交付值;auto 亚像素窗口已部署,值 ± kfold $\sigma$):
| 参数 | cam1 (rational) | cam2 (rational) | cam3 (brown5) | cam4 (brown5) |
|---|---|---|---|---|
| fx | 2035.9 ± 0.33 | 2040.9 ± 0.24 | 1345.8 ± 0.25 | 1346.8 ± 0.56 |
| fy | 2025.6 ± 0.34 | 2029.9 ± 0.24 | 1346.3 ± 0.22 | 1347.9 ± 0.64 |
| cx | 1264.4 ± 0.13 | 1268.0 ± 0.10 | 966.4 ± 0.26 | 936.9 ± 0.75 |
| cy | 767.1 ± 0.16 | 733.4 ± 0.25 | 520.1 ± 0.33 | 550.7 ± 0.43 |
| k1 | 4.63 ± 0.58 | 3.22 ± 0.26 | −0.398 ± 0.001 | −0.393 ± 0.002 |
| k2 | 3.36 ± 1.41 | −0.54 ± 0.54 | 0.207 ± 0.002 | 0.194 ± 0.004 |
| p1 | 1e-4 ± 0 | 1e-4 ± 0 | −0 ± 0 | −1e-4 ± 0 |
| p2 | −1e-4 ± 0 | 1e-4 ± 0 | 1e-4 ± 0 | −3e-4 ± 1e-4 |
| k3 | 0.30 ± 0.22 | −0.32 ± 0.08 | −0.062 ± 0.001 | −0.053 ± 0.003 |
| k4 | 5.41 ± 0.58 | 4.01 ± 0.26 | — | — |
| k5 | 6.06 ± 1.85 | 1.06 ± 0.73 | — | — |
| k6 | 1.44 ± 0.88 | −1.03 ± 0.32 | — | — |
读法:fx/fy/cx/cy 精度 < 1px(主参稳定);畸变项 cam1/2(rational)kfold $\sigma$ 大(k1-k6 间高度相关,近退化,① cond≈10⁸),但不影响成像精度(证非可降 RMS);cam3/4(brown5)畸变项 $\sigma$ 极小(参数稳定)。p1/p2(切向)≈0(镜头无显著切向畸变)。rational 的薄棱镜 s/倾斜 τ 未开 flag 时恒 0,实为 8 参 rational,无过拟合。
测试泛化 RMS(test pooled,5 距离均值):cam1 0.109 / cam2 0.102 / cam3 0.138 / cam4 0.135 px —— 四机均 ≤ 训练 RMS(0.118–0.125),无过拟合。完整 $\theta$(含恒零的薄棱镜 s / 倾斜 τ)见
outputs/intrinsics.json。
5.3 畸变模型选型:cam1/2 用 rational 的依据
这一节回答:cam1/2(4MP)为什么不用更简单的 5 参 Brown,而要多上 3 个径向系数(k4-6)?做法 = 固定其余一切,唯一变量是畸变模型:同一份 good pool、同一 5 参 Brown 初值、同一独立测试集,分别用 brown5($\theta$ 长 9)与 rational($\theta$ 长 12)标定,比训练 RMS、分距离测试 RMS、kfold $\sigma$。结论只有一个 —— brown5 是"拟合不足",不是"防过拟合"。
| cam | 模型 | fx | 训练 RMS | 测试1.18m | 测试1.51m | 测试2.03m | 测试2.40m | 测试2.83m | 测试均值 |
|---|---|---|---|---|---|---|---|---|---|
| cam1 | rational(8参) | 2035.9 | 0.120 | 0.093 | 0.085 | 0.108 | 0.124 | 0.136 | 0.109 |
| cam1 | brown5(5参) | 2041.0 | 0.260 | 0.181 | 0.184 | 0.150 | 0.147 | 0.140 | 0.160 |
| cam2 | rational(8参) | 2040.9 | 0.125 | 0.092 | 0.105 | 0.111 | 0.099 | 0.106 | 0.102 |
| cam2 | brown5(5参) | 2030.1 | 0.249 | 0.215 | 0.181 | 0.123 | 0.122 | 0.118 | 0.152 |

cam1/cam2 分距离测试 RMS:brown5 在全部 5 个距离都高于 rational(均值 +47%)。

(a) 训练 vs 测试 RMS:brown5 训练 RMS 也高一倍(0.26 vs 0.12)—— 模型本身拟合不了,不是过拟合;(b) 径向畸变系数:brown5 把畸变硬塞进 k1-3,与 rational 的 k1-6 数值完全不同(不可逐参比,只比净畸变曲线)。
cam1/2 的 brown5 完整内参 $\theta$ ± 10 折 $\sigma$(对照 rational 表):
| 参数 | cam1 brown5 | cam1 rational | cam2 brown5 | cam2 rational |
|---|---|---|---|---|
| fx | 2041.0 ± 1.95 | 2035.9 ± 0.33 | 2030.1 ± 2.44 | 2040.9 ± 0.24 |
| fy | 2029.0 ± 2.23 | 2025.6 ± 0.34 | 2019.3 ± 1.79 | 2029.9 ± 0.24 |
| cx | 1280.9 ± 2.32 | 1264.4 ± 0.13 | 1262.0 ± 2.75 | 1268.0 ± 0.10 |
| cy | 758.1 ± 3.45 | 767.1 ± 0.16 | 734.5 ± 1.74 | 733.4 ± 0.25 |
| k1 | −0.633 ± 0.002 | 4.63 ± 0.58 | −0.630 ± 0.002 | 3.22 ± 0.26 |
| k2 | 0.486 ± 0.005 | 3.36 ± 1.41 | 0.483 ± 0.005 | −0.54 ± 0.54 |
| k3 | −0.186 ± 0.004 | 0.30 ± 0.22 | −0.184 ± 0.004 | −0.32 ± 0.08 |
深度解读(为何 brown5 不行):
- 训练 RMS 翻倍 = 拟合不足,非过拟合。过拟合的特征是"训练低、测试高";这里 brown5 训练就高(0.26),测试更高(0.16)——5 参 Brown 根本表达不了 4MP 机的畸变场。rational 多出的 k4-6(3-5-7 阶径向)把这部分残差吃掉,训练测试都降。
- 主参 kfold $\sigma$ 激增 = 模型误设的信号。brown5 的 fx/fy/cx/cy kfold $\sigma$ = 1.7–3.5px,是 rational(0.13–0.34px)的 ~10–20×。机理:畸变模型不对时,优化器强迫焦距/主点去"吸收"未被建模的高阶径向残差 ⇒ 这些本该稳定的主参在折间剧烈飘移。这是模型设定错误(model misspecification)的教科书症状——参数不稳不是因为数据差,而是因为模型容器装不下真实畸变。
- 主参数值都漂了:brown5 cx=1280.9 vs rational 1264.4(差 16px)、fx 差 4-6px。说明畸变模型的选择会反噬到主参估计,不选对就连 fx 都不可信。
- k1 数值不可逐参比:brown5 k1=−0.63 vs rational k1=4.63 —— 两模型把同一物理畸变分配到不同阶数的系数里,逐项比无意义;要比就比净畸变曲线(即上图测试 RMS,它才是成像口径)。
结论:cam1/2 选 rational 不是"多参换精度"的奢侈,而是物理必需——这两台 4MP 机的畸变场含 Brown 5 参之外的高阶径向分量,5 参既拟合不了训练集、主参又因吸收残差而失稳。cam3/4(2MP)分辨率低、角点噪声大,Brown 5 参已贴 CRLB、k4-6 不可辨识(零增益),故保留 5 参省自由度(杠杆实验已证)。模型选型 = 用独立测试 RMS 选阶,非训练 RMS(后者随参增多单调降,会误选过参模型)。
5.4 实验:鱼眼模型试算
畸变模型再丰富一档是否还能降 test RMS:用 cv2.fisheye(8 参数 Kannala-Brandt)
在同一标定角点集标定,在独立测试集比 test RMS(lib/exp_fisheye.py,2 图 + JSON)。
test RMS 用「fisheye.undistortPoints → 归一化光线 → solvePnP(I,0) → fisheye.projectPoints」三步,
与现行模型的 solvePnP+projectPoints 评估口径一致。
| 相机 | 现行模型 test pooled RMS | 鱼眼 test pooled RMS | 相对增益 | 鱼眼 K 折留出 RMS |
|---|---|---|---|---|
| cam1 (rational) | 0.109px | 0.108px | +1.0% | 0.104px |
| cam2 (rational) | 0.102px | 0.104px | −1.4%(鱼眼更差) | 0.113px |
| cam3 (brown5) | 0.138px | 0.136px | +1.7% | 0.113px |
| cam4 (brown5) | 0.135px | 0.131px | +3.1% | 0.107px |
结论:不值得切换。四机相对增益均在 ±3.1% 内(远未达"切换阈值" 5%),且 cam2(最高分辨率)
鱼眼反而更差。物理上 cam1/2 视场 ≈64°、cam3/4 ≈71°,均非鱼眼镜头(鱼眼 >100°),强套
Kannala-Brandt 径向模型无优势。这与全文主诊断一致:模型不是瓶颈,换更丰富畸变提不了精度。

左:pooled test RMS 鱼眼 vs 现行,基本并列(cam1 鱼眼略高);右:K 折留出 RMS 鱼眼 ≥ 现行 train RMS,无泛化优势。
5.5 10 折交叉验证:经验不确定度
方法(经验 Monte Carlo 不确定度):把每机 good pool(~146–158 张)随机均分 10 份;每次留 1 份作验证、其余 ~130 张标定得 $\theta_k$;跨 10 折 $\theta_k$ 的 std(ddof=1) = 该参数的经验不确定度(回答"如果重新采集等量数据,$\theta$ 会飘多少")。最终 $\theta$ = 全 good pool 标定(用全部数据,精度最高);kfold $\sigma$ 衡量 $\theta$ 的可重复性。固定随机种子(seed=42)保证可复现。
结果图表:

逐参数 kfold $\sigma$ 分组柱(4 相机 × 9/12 参数,对数纵轴)。主参(fx/fy/cx/cy)<1px;畸变项 cam1/2(rational)$\sigma$ 大(参数间近退化),cam3/4(brown5)$\sigma$ 极小。

kfold $\sigma$ / Fisher CRLB($\sigma_{\text{det}}$) 比值热图:fx 比值 24–81×($\sigma_{\text{det}}$ 口径);换 $\sigma_{\text{real}}$ 后 4.7–15.6×(参数非唯一)。
解读:
- 主参 fx/fy:kfold $\sigma$ 0.24–0.64px ⇒ 焦距估计稳健(重采等量数据,fx 飘 <0.65px ≈ 0.03%)。
- cx/cy:kfold $\sigma$ 0.10–0.75px ⇒ 主点稳定;cam4(2MP)最差($\sigma_{cx}$ 0.75px,疑似对焦略逊)。
- 畸变项:cam3/4(brown5)kfold $\sigma$ ~0.001(极稳);cam1/2(rational)kfold $\sigma$ ~0.5–1.8(看似散,但 k1–k6 高度相关,实际成像不受影响,证零增益)。
- kfold/CRLB($\sigma_{\text{real}}$) ≈ 5–16×(fx):比理论下界($\sigma_{\text{real}}$ 口径)宽,残余 = Brown 近退化的参数非唯一性(①),非可降 RMS。
5.6 内参 Fisher 合理性:理论下界 vs 经验散布
目标:用 Fisher 信息理论问"单次标定的内参 $\theta$ 理论上能定多准"(CRLB 下界),再与 10 折经验散布(真数据重采样下 $\theta$ 实际飘多少)对比。两者比值 →1 ⇒ 噪声受限(已达理论极限);≫1 ⇒ 有超出噪声的散布。
方法(三种 Fisher 之一):待估 β=$\theta$(9/12 内参),干扰 γ=每图 6 参外参;对 [β,γ] 全列数值中心差分雅可比 J → 信息阵 I=$J{\mathsf{T}}\Sigma{-1}J$ → Schur 补消外参得内参边际信息 $I_\beta=A-BC{-1}B{\mathsf{T}}$ → $\mathrm{CRLB}\theta=\sqrt{\operatorname{diag}(I\beta^{-1})}$。经验对照 = 10 折跨折 $\theta$ std。
数据(CRLB 用 $\sigma_{\text{det}}$ 建分母,故「比值($\sigma_{\text{det}}$)」列虚高 ~5.3×;诊断须看 fx k/CRLB($\sigma_{\text{real}}$) 列):
| cam | k折σfx | CRLB fx($\sigma_{\text{det}}$) | 比值($\sigma_{\text{det}}$) | fx k/CRLB($\sigma_{\text{real}}$) | 诊断($\sigma_{\text{real}}$ 口径) |
|---|---|---|---|---|---|
| cam1 | 0.332 | 0.0074 | 45× | 8.0× | 噪声受限;残 8×=参数非唯一 |
| cam2 | 0.242 | 0.0100 | 24× | 4.7× | 同上 |
| cam3 | 0.251 | 0.0076 | 33× | 6.3× | 同上 |
| cam4 | 0.561 | 0.0069 | 81× | 15.6× | cam4(2MP)参数最不稳 |

「比值($\sigma_{\text{det}}$)≫1 ⇒ 模型/数据受限」不成立:CRLB 分母用 $\sigma_{\text{det}}$(静态≈0.023px),而真实逐图噪声 $\sigma_{\text{real}}$≈RMS≈0.12px 是其 ~5.3×,CRLB∝$\sigma$ 线性 ⇒ 比值被同比放大。$\sigma_{\text{real}}$ 口径下 fx k/CRLB 仅 4.7–15.6×,残差 = Brown 近退化的参数非唯一性(非可降 RMS)。主结论 = 检测噪声 $\sigma_{\text{real}}$ 受限,非模型受限。畸变项(k1–k6)CRLB 因 cond≈10⁸ 不可靠,不作诊断。
5.7 内参最终结果与不确定度
最终结果——交付 $\theta$ = 用全部 good pool 训练数据一次性标定(每机 ~146–158 张)。⚠ 10 折 kfold 仅用于估计不确定度:每折留 1 份、用其余 90% 数据标定,跨折 $\theta$ 的散布即 kfold $\sigma$;最终交付的 $\theta$ 用 100% 数据(精度最高),与 kfold 估计相互独立。下游 §6/§7 消费此 $\theta$;± = kfold $\sigma$。
主参 fx/fy/cx/cy(px):
| cam | 模型 | fx | fy | cx | cy | 测试RMS(px) |
|---|---|---|---|---|---|---|
| cam1 | rational | 2035.9 ± 0.33 | 2025.6 ± 0.34 | 1264.4 ± 0.13 | 767.1 ± 0.16 | 0.109 |
| cam2 | rational | 2040.9 ± 0.24 | 2029.9 ± 0.24 | 1268.0 ± 0.10 | 733.4 ± 0.25 | 0.102 |
| cam3 | brown5 | 1345.8 ± 0.25 | 1346.3 ± 0.22 | 966.4 ± 0.26 | 520.1 ± 0.33 | 0.138 |
| cam4 | brown5 | 1346.8 ± 0.56 | 1347.9 ± 0.64 | 936.9 ± 0.75 | 550.7 ± 0.43 | 0.135 |
畸变系数(cam1/2 rational = k1–k6;cam3/4 brown5 = k1–k3;切向 p1/p2 全机 |·|<3e-4 可忽略,未列。⚠ 逐参 kfold $\sigma$ 大 = 参数高度相关/近退化,勿逐参比,看净畸变曲线 = 测试 RMS):
| cam | k1 | k2 | k3 | k4 | k5 | k6 |
|---|---|---|---|---|---|---|
| cam1 | 4.63 ± 0.58 | 3.36 ± 1.41 | 0.30 ± 0.22 | 5.41 ± 0.58 | 6.06 ± 1.85 | 1.44 ± 0.88 |
| cam2 | 3.22 ± 0.26 | −0.54 ± 0.54 | −0.32 ± 0.08 | 4.01 ± 0.26 | 1.06 ± 0.73 | −1.03 ± 0.32 |
| cam3 | −0.398 ± 0.001 | 0.207 ± 0.002 | −0.062 ± 0.001 | — | — | — |
| cam4 | −0.393 ± 0.002 | 0.194 ± 0.004 | −0.053 ± 0.003 | — | — | — |
($\theta$ 与 §5.2 表同源——§5.2 为标定过程讨论用、本卡为交付 canonical;完整 $\theta$ 含 p1/p2 见 outputs/intrinsics.json::theta。)
不确定度:
- 经验(10 折 kfold $\sigma$):主参 fx/fy/cx/cy = 0.10–0.75px(上表 ± 列)≈ fx 的 0.03%,即"重采等量数据,$\theta$ 最多飘这么多"。cam4 最大($\sigma_{cx}$ 0.75px,2MP 对焦略逊)。
- 理论下界:fx CRLB($\sigma_{\text{real}}$)≈ 0.04–0.05px(§5.6);kfold 高出 4.7–15.6× = Brown 近退化的参数非唯一性残余(净畸变曲线确定、单系数不定),五杠杆零增益已证非可降 RMS。
- 畸变项 k1–k6:信息阵 cond≈10⁸,逐参不确定度不可靠;只有 fx/fy 可作诊断,畸变项看净畸变曲线(即测试 RMS)。
结果怎么来的(方法溯源):
- 数据:每机 good pool ~146–158 张干净标定图(stage1 按重投影/对称性筛选,§4)。
- 标定(交付 $\theta$ 就此步产物):5 参 Brown 稳健初值(
calibrate_robust)→ 按相机选畸变模型、用全部 good pool 重标(cam1/2 rational、cam3/4 brown5;模型阶由独立测试 RMS 选,非训练 RMS)→ OpenCVcv2.calibrateCamera(LM)最小化重投影残差 $\min_\theta\sum_{\text{images}}\sum_{\text{corners}}\lVert\text{检测}-\text{投影}\rVert^2$,每图配 6DOF 板位姿。 - 不确定度(独立步骤):10 折 kfold——随机分 10 份、留 1 折用其余 9 折标定,跨折 $\theta$ 的
std(ddof=1);不参与交付 $\theta$,只产 kfold $\sigma$。 - 验证三联:① 测试 RMS ≤ 训练 RMS(无过拟合);② kfold $\sigma$(可重复性);③ Fisher CRLB 合理性(§5.6)。
- 产物:
outputs/intrinsics.json::theta(cam1/2 长 12、cam3/4 长 9)+kfold_std+test_rms_by_distance。
结论与可靠性:四机测试 RMS(0.102–0.138px)均 ≤ 训练 RMS ⇒ 无过拟合,内参在检测噪声 $\sigma_{\text{real}}$ 地板上($\sigma_{\text{model}}$≈0),不引入额外误差。可靠性边界:① $\sigma_{\text{real}}$ ≈ 0.12–0.14px 带约 10% 估计不确定 ⇒ kfold/CRLB 比值 ±10%,不改变「噪声受限」定性;② kfold 是有限样本 MC(~150 张/10 折),$\sigma$ 本身 ±15% 统计涨落;③ 测试仅覆盖 1.18–2.83m,超范围畸变外推未测。模型侧唯一已兑现增益 = cam1/2 rational(测试 RMS −32%);进一步压 RMS 须检测侧(对焦/4MP/亚像素/打光)。
下游引用:§6 外参冻结此 $\theta$(不参与优化)、§7 三角化用此 $\theta$ 的 K/dist 去畸变——后续全文「内参」均指本结果。
6. 外参标定
目标:把 4 台相机统一到一个刚性 rig 坐标系 —— 求 cam1→cam2/3/4 的相对位姿(基线 + 朝向),即 rig 外参。cam1 定为原点,其余三台的基线就是 rig 的几何骨架,后续三角化精度全靠它(基线越长,深度越准)。
承接上游😦§4/§5)**:内参 $\theta$ 取 §5.7 最终值(cam1/2 rational、cam3/4 brown5,测试 RMS 0.102–0.138px ≈ $\sigma_{\text{real}}$≈0.12px 地板);外参 Fisher 与比较口径的噪声分母同 §4 的 $\sigma_{\text{det}}$(0.023px)建分母、§10 再按 $\sigma_{\text{real}}$/$\sigma_{\text{det}}$≈5.3× 重标。最终基线(cam1 原点)cam2/3/4 ≈ 1207/802/529mm,外参 CRLB≈69nm ⇒ 外参过定、从不构成瓶颈(见 §6.4)。
分两步,且分开讲:① 角点序消歧—— 棋盘对称性引入的歧义必须先解决,否则后续所有外参估计都会得到镜像解;② rig 外参估计—— 消歧后,用三种逐步耦合的方案估计 cam1→cam2/3/4 相对位姿并交叉验证,给出结果与置信度。
6.1 角点序消歧(chessboard 180° 对称)
棋盘有 180° 旋转对称 —— 同一幅角点图,角点序 (0,1,…,87) 与翻转序 (87,86,…,0) 都合法。单台相机无法分辨自己拿到的是哪种序;若直接拿翻转序去算位姿,得到的是镜像板姿态。两台相机各自独立选序时,一旦一台正序、一台反序,导出的相对位姿就是镜像外参 ⇒ 三角化深度符号翻转。
解法(rig 刚体约束):rig 是刚体 ⇒ cam1→cj 的相对位姿跨所有快照应为常数。对每个快照、每台相机算正序/反序两套 PnP 位姿,枚举组合,按「相对位姿跨快照一致」聚类选出全局自洽的角点序。关键:聚类必须联合平移 t 与旋转 R(阈值 30mm + 3°);只按平移聚类会把镜像/翻转姿态错误合并(镜像解的平移可能相近,但旋转差一个翻转)⇒ 镜像外参 ⇒ 深度翻号。
消歧后 4 机角点序跨机一致、无翻转;这正是下面四套方案都能算出自洽外参的前提(四方案复用同一消歧逻辑)。
6.2 rig 外参估计:四方案对比
估计 cam1→cam2/3/4 的相对位姿(外参)有四条路径,构成一个耦合度递增的阶梯:方案一(零耦合,三对独立)→ 方案二(外参联合、内参冻结)→ 方案三(内外参全联合)→ 方案四(贝叶斯:全联合 + 内参高斯先验)。四方案并置有两个用途:① 方法独立的交叉验证——方案一(逐对 PnP+聚类)与方案二(联合 BA)原理完全不同,若亚毫米自洽即外参正确性的强证据(非单一方法产物);② 主动探测可辨识性边界——方案三放开内参暴露 fx↔tz 不可辨识,方案四用高斯先验软钉该方向、塌缩回冻结解(§6.6),从而从两侧印证"生产应冻结内参"(非教条,是可辨识性实证;公平口径下四方案深度全持平、横向 J 边际更优,见 §6.2.5)。下面先详述每方案做法,再统一对比。
6.2.1 方案一:两两锚定法(pairwise anchor)
做法(_pairwise_extrinsics / _collect_pair_snaps / _pairwise_est):
- 世界系锚定:cam1 = 原点(R=I, t=0)。
- 逐对收集:对每个 cj∈{cam2,3,4},收集 cam1 与 cj 都检出角点的同步快照(两机重叠即可,不要求其他相机在场)。
- 逐快照双解:每快照对 cam1、cj 各
solvePnP得绝对位姿。棋盘 180° 对称使 cj 角点序有两解 ⇒ 对 cj 的正序 / 反序各解一次,得相对位姿候选(Rn,tn)与(Rf,tf);cam1 用正序锁世界系。 - 联合 t+R 聚类消歧:把全部正/反候选(2N 个)投到(平移,旋转)联合空间,找最稠密簇(阈值 ‖Δt‖<30mm 且 旋转角<3°,同 );簇心 = 一致解。
- 逐快照选向 + 聚合:每快照取距簇心较近的(正或反,度量 ‖Δt‖+50·旋转角);簇内旋转取 chordal 平均(弦平均)、平移取欧氏平均 ⇒ cj 外参。三机各自独立完成,无联合优化、无共享板位姿。
结果(experiment_extrinsic_schemes.json::scheme1_pairwise):
| 相机 | 基线(mm) | 成对重投影 RMS | 内点/总快照 | 跨快照基线 std | 旋转 std |
|---|---|---|---|---|---|
| cam2 | 1206.99 | 0.458 px | 113/113 | 3.04 mm | 0.13° |
| cam3 | 801.41 | 0.346 px | 120/121 | 2.95 mm | 0.22° |
| cam4 | 528.27 | 0.394 px | 123/123 | 3.74 mm | 0.17° |
- 独立测试集:训练 rig-RMS 0.402 px、测试 rig-RMS 0.225 px(1m 0.172 / 1.5m 0.104 / 2m 0.236 / 2.5m 0.283 / 3m 0.356)。内参冻结 ⇒ 无单机测试项。
- 特点:最简单、零耦合、无过拟合风险;缺点是不融合多机证据,单快照 PnP 噪声大(跨快照基线 std ~3mm),靠 100+ 快照平均压不确定度。核心价值 = 方法独立的生产交叉验证基线。
6.2.2 方案二:部分重叠冻结内参 BA(partial-overlap frozen-intr BA)
做法(读 experiment_partial_overlap.json::scheme2_B;实现 = _build_partial_snaps + _bundle_adjust_sub):
- 冻结内参😒\theta$ 固定为标定结果,整个估计不动内参(外参与内参解耦)。
- 扩样到 ≥2 机重叠:收集所有 cam1 在场 + 至少 1 台他机在场的快照(2/3 机检出都算,不限四机同检)——比方案一更融合,同一快照可同时约束多机。
- 角点序消歧:每快照用 all-4 BA 方案做参照(
_disamb_snapshot)统一角点序 ⇒ 规范板角点 + 一个初始板位姿。 - 联合 BA(
_bundle_adjust_sub,scipy LM):待估 = {cam2/3/4 外参(各 6 自由度,共 18)} + {每快照板位姿(6 自由度/快照)},最小化全部多机重投影残差。关键:共享板位姿公式天然支持变相机子集——每快照残差项只含它在场的相机,故 2/3/4 机快照都贡献约束,无需四机齐全。 - 生产采用:现行
stage5用其四机同检子集(96 快照)产出下游外参;本方案的 ≥2 机全集(139 快照)是其上界估计。
结果(scheme2_partial,139 个 ≥2 机快照、671 条成对观测):
| 相机 | 基线(mm) |
|---|---|
| cam2 | 1207.10 |
| cam3 | 801.58 |
| cam4 | 528.63 |
- 训练 rig-RMS 0.324 px;独立测试 rig-RMS 0.190 px(1m 0.147 / 1.5m 0.091 / 2m 0.204 / 2.5m 0.232 / 3m 0.299)。内参冻结 ⇒ 无单机测试项。
- 特点:融合全部多机多快照证据、外参与内参解耦(不吸收内参误差、不过拟合);变子集公式把约束数据从「四机同检 96」扩到「≥2 机 139」。生产采用方案族(下游用 stage5 四机子集产出:基线 cam2/3/4 = 1206.9/801.6/528.7mm)。
6.2.3 方案三:内外参联合 BA(joint intr+extr BA)
做法(读 experiment_joint_ba.json::scheme2_J;实现 = _build_canon + _joint_bundle_adjust,freeze_intr=False):
- 在方案二基础上松开内参:待估 = {四机内参 $\theta$(9 或 12/机)} + {cam2/3/4 外参} + {每快照板位姿},全部一起联合 BA(共 552 参,scipy LM)。
- 动机:检验「放开内参、让内外参联合最优,能否进一步提升整体精度」——即内参与外参该联合估还是该解耦估。
- 风险:参数空间从 18(+板位姿)暴涨到 552,引入新的不可辨识方向——尤其 fx↔tz(见诊断)。
结果(scheme3_joint,基线 cam2/3/4 = 1208.20 / 802.59 / 530.24 mm):训练 rig-RMS 0.216 px(四方案最低);单机测试 RMS 0.121 px(≈$\sigma_{\text{real}}$,内参本身泛化正常);cam1 fx 沿 fx↔tz 方向滑走 +2.68px=8.1$\sigma$,rig 基线同比例放大(三机均 +0.8~+1.3mm,系统偏高)。
端到端公平口径(full-system vs full-system:J 用自家内参+外参跑独立测试集多目三角化,lib/exp_joint_ba_test.py):
| 相机数 | 深度 z:S→J(mm) | Δz | 横向 xy:S→J(mm) | Δxy |
|---|---|---|---|---|
| 2 目 | 0.457→0.456 | 持平(−0.3%) | 0.305→0.282 | −7.5% |
| 3 目 | 0.231→0.231 | 持平(+0.1%) | 0.199→0.170 | −14.5% |
| 4 目 | 0.157→0.158 | 持平(+0.6%) | 0.164→0.130 | −20.6% |
- 深度持平(2/3/4 目 Δz 全 ±0.6% 内):深度在 $\sigma_{\text{real}}$ 噪声地板,任何标定侧手段都降不动。
- 横向 J 一致优于 S(−7.5/−14.5/−20.6%,随相机数增大):联合 BA 松开内参后 rig 跨机旋转落到更优几何 ⇒ 横向收紧;相机越多越依赖跨机外参一致性 ⇒ 收益越大。
- 为什么不直接用 J 作生产外参:① 横向改善的绝对量亚 0.1mm(横向本就优秀 0.08–0.35mm),统计一致但实际边际;② J 把 rig 基线系统性放大 +0.8~+1.3mm(三机同向,fx↔tz 病态方向的指纹 ⇒ 准确度顾虑);③ 参数从 18(+板位姿)暴涨到 552,过拟合风险(cam1 fx 滑 8$\sigma$)。收益不抵代价,生产仍选冻结内参。

左:深度 z J≈S 持平(BA 无增益,贴地板);中:横向 xy J 一致优于 S(BA 收紧外参);右:Δ%——深度~0、横向随相机数负向增大。
内参泛化判定:主指标用 rig 无关的单机测试 RMS(每张测试图每机独立 PnP+投影,完全不用外参,无法被共享板位姿过拟合)。它显示 J vs S 差 <0.004px ⇒ 内参没变好;端到端横向改善来自 rig 外参(独立参数),不来自内参。注意:多机 rig 拟合 RMS 会给 J 报 −44%(0.098px<$\sigma_{\text{real}}$ 物理不可能)——那是对共享板位姿过拟合的指标伪影,不可作判定,必须配单机泛化或端到端测试交叉验证。机理与信息椭球见 §6.6。
6.2.4 方案四:贝叶斯 BA(joint + 内参高斯先验)
做法(变体 P,_joint_bundle_adjust(freeze_intr=False, prior=…);代价加 MAP/Tikhonov 先验项 $\Sigma$($\theta$−$\theta$₀)²·$\sigma_{\text{real}}$²/$\sigma_{\text{prior}}$²,锚 $\theta$₀=§5 单目 $\theta$、宽 $\sigma_{\text{prior}}$=k 折 $\sigma$):同方案三放开内参,但用「单目已知的 fx」软钉住 J 暴露的 fx↔tz 病态方向——是方案二(硬冻结)与方案三(全自由)的中间路线,检验「软约束能否兼得稳定与精度」。
结果(scheme4_bayesian):cam1 fx 仅移 +0.19px(0.6$\sigma$,方案三的 1/13)、基线相对 S 偏差回到 10⁻³ 量级(+0.002/+0.002/−0.019%)、单机测试 RMS 0.1221 px(≈方案二 0.1220)。先验 ≈ 冻结:把病态方向钉住后,P 塌缩回 S,换不来精度(单目 fx 本就在 $\sigma_{\text{real}}$ 地板,无头部空间可挖)。机理与信息椭球见 §6.6。
6.2.5 四方案汇总
公平口径(full-system:各方案用自家内参+外参跑端到端测试集):深度四方案全持平(贴 $\sigma_{\text{real}}$ 地板,任何标定侧手段都降不动);横向 J 一致优于 S(−7.5/−14.5/−20.6%,随相机数增大,因横向依赖跨机外参一致性),但绝对量亚 0.1mm。
一张表看全(四方案全维度;基线 cam2/cam3/cam4 mm):
| 维度 | 方案一两两锚定 | 方案二部分重叠 BA(S) | 方案三联合 BA(J) | 方案四贝叶斯 BA(P) |
|---|---|---|---|---|
| 耦合 / 待估 | 零耦合,3 个独立外参 | 外参联合,内参冻结 | 内外参全联合(552 参) | 全联合 + 内参高斯先验 |
| 基线 cam2/cam3/cam4 | 1206.99/801.41/528.27 | 1207.10/801.58/528.63 | 1208.20/802.59/530.24 | ≈ S |
| 基线偏离均值(最大) | 0.69 mm | 0.33 mm | 1.29 mm | 0.28 mm |
| 训练 rig-RMS (px) | 0.402 | 0.324 | 0.216(最低) | 0.250(pooled) |
| 诚实单机测试 RMS (px) | —(内参冻结) | 0.122 | 0.121(正常) | 0.122(≈S) |
| 公平口径 深度 / 横向 | 基线方法 | 持平 / 基准 | 持平 / −7.5~−20.6% | ≈ 方案二 |
| cam1 fx 移动 | — | 0(冻结) | +2.68px(8.1$\sigma$) | +0.19px(0.6$\sigma$) |
| 10 折基线 $\sigma_{\max}$ | 0.103 mm | 0.010 mm(最稳) | 0.071 mm | ≈ S |
| 角色 | 方法独立交叉验证 | 生产采用 | 横向边际更优 / 对照 | 验证「先验≈冻结」 |
深度分析:
-
方法独立的亚毫米自洽(外参正确性的核心证据):方案一(逐对 PnP + t/R 聚类)与方案二(联合 BA)原理完全不同,却给出差 <0.4mm 的基线 ⇒ 外参是数据强约束下的真实解,非单一方法产物。方案三基线三机同向全正(+0.8~+1.3mm,rig 被系统性放大),方向与 fx↔tz(焦距偏大 ⇔ 距离偏远)一致——是参数非唯一的指纹;方案四的先验把这方向钉住,基线即回到 S。
-
公平口径:深度持平、横向 J 边际更优(§6.2.3 端到端表):深度在 $\sigma_{\text{real}}$ 地板四方案无差别;横向 J 一致优于 S。改善绝对量亚 0.1mm(横向本就优秀),且 J 基线被系统性放大(准确度顾虑)⇒ 收益不抵代价。
-
外参严重过定,不是瓶颈:四方案 10 折基线 $\sigma$ 全部 <0.11mm,在 529–1207mm 基线上是 10⁻⁴ 量级,比 Fisher CRLB(~72nm $\sigma_{\text{real}}$)大 10³–10⁴× 但绝对值极小。下游测试 rig-RMS(方案一/二 0.19–0.23px)由检测噪声 $\sigma_{\text{real}}$ 主导,不由外参主导(外参贡献比检测地板小 10⁴×)。
结论:J 横向边际更优但绝对量可忽略(亚 0.1mm);J 基线被系统性放大(+0.8~+1.3mm,两独立方法之外的高估 ⇒ 准确度顾虑);552 参过拟合风险(cam1 fx 滑 8$\sigma$)。生产选方案二(冻结),是「收益不抵代价」,非 J 不可用。联合 BA 的价值有二:① 公平口径下证明「冻结 vs 联合」在深度上无差别(反证深度已贴地板);② 主动暴露 fx↔tz 不可辨识(§6.6),印证「外参必须冻结内参估」。

四方案逐机基线:方案一/二重合、方案三系统偏高 1.3mm;方案四≈方案二。

rig 叠加俯视图(cam1 原点,各方案 rig 几何几乎重合)。

训练 rig-RMS(紫)vs 诚实单机泛化测试 RMS(红星,rig 无关):方案三训练最低、单机泛化正常(0.121px≈$\sigma_{\text{real}}$)。端到端公平口径见 §6.2.3 表。

10 折基线 $\sigma$ vs Fisher CRLB(对数轴):各方案均远高于 CRLB 但绝对值 <0.11mm ⇒ 外参过定;方案二/四最稳($\sigma$≈0.01mm)、方案一/三中等($\sigma$≈0.07–0.10mm)。注意:方案三的 fx↔tz 非唯一性不表现在 kfold $\sigma$(0.07mm < 方案一 0.10mm),而表现在上表「基线偏离均值」1.29mm 的系统性放大——是偏置,不是方差。
置信度评定(rubric:基线偏差 <1mm 且 kfold $\sigma_{\max}$ <1mm ⇒ High;否则按非唯一性降级):
| 方案 | 置信度 | 依据 |
|---|---|---|
| 方案一(两两锚定) | High | 偏差 0.69mm;kfold $\sigma_{\max}$=0.103mm;跨折稳定 ⇒ 过定强约束 |
| 方案二(部分重叠 BA) | High | 偏差 0.33mm;kfold $\sigma_{\max}$=0.010mm(最稳)⇒ 过定强约束 |
| 方案三(联合 BA) | Med | 公平口径横向边际更优但绝对量可忽略;基线被放大 1.29mm;cam1 fx 移 8.1$\sigma$ ⇒ fx↔tz 不可辨识 ⇒ 作对照,不作生产 |
| 方案四(贝叶斯 BA) | High | 先验钉住病态方向 ⇒ ≈方案二;验证「软约束≈硬冻结」,无精度增益但无漂移 |
6.3 生产外参:计算方法与数据
四方案对比选定方案二族 = 冻结内参的部分重叠 BA;本节给出下游实际消费的生产外参的完整计算方法与所用数据(最终数值结果与置信度评定见 §6.7)。生产实现 = lib/run_all.py::stage5,产物 = outputs/extrinsics.json::scheme2(96 张四机同检快照上的 BA 解;scheme1 为 BA 前的消歧均值,作初值与对照)。
计算方法(5 步):
- 世界系锚定:cam1 = rig 原点(R = I,t = 0)。所有相机位姿在 cam1 坐标系下表达。
- 逐快照双解 PnP:对每个四机同检同步快照、每台相机,用
cv2.solvePnP(迭代法)解板→相机绝对位姿;因棋盘 180° 对称,对每台再补解一次翻转角点序位姿,得正/反两套候选。 - 角点序消歧(联合 t+R 聚类):rig 是刚体 ⇒ cam1→cj 相对位姿跨快照应为常数。枚举所有正/反候选,在(平移,旋转)联合空间找最稠密簇(阈值 ‖Δt‖<30mm 且 旋转角<3°);簇心旋转取弦平均(chordal mean)、平移交由 BA 精修,得初值外参
scheme1,并为每快照、每相机标定正/反序。关键:必须联合 t+R——只按平移聚类会把镜像/翻转姿态错误合并 ⇒ 镜像外参 ⇒ 三角化深度翻号(曾踩坑)。 - 规范化角点 + 共享板位姿 BA:按消歧标签翻转角点得规范化角点集
canon;以scheme1为初值,scipy.least_squares(trf,稳健 Huber)联合优化 {cam2/3/4 外参 18 自由度 + 每快照共享板位姿 6 自由度},最小化全部多机重投影残差。内参 $\theta$ 全程冻结(= 结果,不参与优化 ⇒ 外参与内参解耦,避免 fx↔tz 不可辨识)。同一快照的板位姿被所有在场相机共享 ⇒ 多机证据在板位姿上自然融合。 - 相对位姿导出:rig 外参由各机绝对位姿换算:$R_{jw}=R_j R_1^{\mathsf{T}}$,
t_jw = t_j − R_jw·t_1。
数据:96 个四机同检同步快照(从 217 个同步快照筛出,if any(cam 未检出): continue);标定板 11×8 内角点、25mm 方格(core/base/board.yaml,square_size 为标称值,TODO 复测——仅缩放 t/CRLB 的绝对 mm,不影响比值结论);内参冻结 = cam1/2 rational、cam3/4 brown5。BA RMS = 0.295 px(96 快照、四机重投影),较消歧均值 scheme1 的 0.391 px 降 24%;消歧簇内翻转快照数 cam2/3/4 全为 0(数据干净,无歧义残留)。

左:生产 rig 外参俯视图(cam1 原点)。右:同一 rig 的 3D 位姿(4 机光学中心 + 光轴朝向 + 板心视锥连线),梯形布局——cam1/cam2(4MP)顶宽边 1207mm、cam3/cam4(2MP)底窄边 340mm、高 ~380mm。
6.4 外参 Fisher:基线能定多准
目标:用 Fisher 信息问"rig 相对位姿(基线)能定多准"。把每快照板位姿(6/快照)+ 各机内参当干扰边缘化掉(Schur 补),得只含 rig 外参的边际信息 → 基线 CRLB。看外参是否过定(远小于基线 ⇒ 强约束 ⇒ 外参不是瓶颈)。
方法(三种 Fisher 之一):待估 β=rig 外参(3 机×[R,t]=18 参,cam1 参考),干扰 γ=板位姿(6×快照)+内参;对 [β,γ] 数值雅可比 → I=$J{\mathsf{T}}\Sigma{-1}J$ → Schur 补消 γ(把每快照板位姿 + 内参边缘化)→ $\mathrm{CRLB}{\text{rig}}=\sqrt{\operatorname{diag}(I\beta^{-1})}$。本节基线 CRLB 取自生产配置(方案二:冻结内参四机同检 BA);四方案外参 CRLB 同量级(贝叶斯 P ≈ 冻结 S,先验钉住尺度)。
数据($\sigma_{\text{real}}$ 口径为主:基线 CRLB≈69nm=$\sigma_{\text{det}}$ CRLB×5.3,$\sigma_{\text{real}}$ 是真实工作点噪声;$\sigma_{\text{det}}$ 对照 13nm 仅作渐近参考)。两口径均比深度地板低 10⁴×:
| cam | 基线(mm) | 基线 CRLB ($\sigma_{\text{real}}$) | $\sigma_{\text{det}}$ 对照 | 旋转 CRLB(°) |
|---|---|---|---|---|
| cam2 | 1206.9 | 0.000069mm(≈69nm) | 13nm | [0.42, 0.10, 0.33] |
| cam3 | 801.6 | 0.000069mm(≈69nm) | 13nm | [0.26, 0.19, 0.04] |
| cam4 | 528.7 | 0.000069mm(≈69nm) | 13nm | [0.18, 0.18, 0.05] |
⇒ 基线 CRLB ≈69nm($\sigma_{\text{real}}$)($\sigma_{\text{det}}$ 下 13nm),比基线(529–1207mm)小 7–9 个量级 ⇒ 外参几何强约束,严重过定,从不构成精度瓶颈(深度两项分解:外参对深度的贡献比检测地板小 10⁴×)。加相机/加快照对外参精度无意义;外参 CRLB 整体区间 68–72nm。
6.5 联合 BA 实验补充:S/J/P 三变体内参移动与过拟合警示
§6.2.3 已给出端到端公平口径(深度持平、横向 J 边际更优);本节补两组 §6.2.3 未展开的细节:内参移动实测与BA 拟合 RMS 的过拟合陷阱,二者共同印证「必须用 rig 无关的单机泛化作主判定」。
S/J/P 三变体内参移动 + 过拟合对照(experiment_joint_ba.json;唯一变量 = 内参自由度):
| 指标 | S(内参冻结) | J(联合 BA) | P(联合 + 内参先验) | 判读 |
|---|---|---|---|---|
| 训练 RMS(pooled) | 0.2336 | 0.2162 | 0.2501 | J ↓7.5%(参数更多→轻度过拟合);P 反升(先验罚项抬成本) |
| 诚实单机测试 RMS(rig 无关,主判定) | 0.1220 | 0.1213 | 0.1221 | J +0.61% / P −0.07%,均持平(内参没变好) |
| 多机 rig 拟合 RMS(过拟合敏感) | 0.1763 | 0.0981 | 0.1623 | J ↓44% = 伪增益(0.098<$\sigma_{\text{real}}$≈0.12px 物理不可能) |
| cam1 fx 移动 | — | +2.68px(=8.1$\sigma$) | +0.19px(=0.6$\sigma$) | fx↔tz 不可辨识;P 钉住(见 §6.6) |
| rig 基线相对变化 cam2/3/4 | — | +0.09%/+0.12%/+0.28% | +0.002%/+0.002%/−0.019% | J 随 fx 同步缩放;P ≈ S |

训练 RMS 逐机(J 微降)、诚实单机测试 RMS 逐距离/逐机(J≈S 持平,主判定)、三指标增益对比(训练↓、诚实测试→0、多机 rig 拟合伪↓)。

内参移动 Δ$\theta$(J−S),误差棒 = k 折 $\sigma$。cam1 fx +2.68px=8.1$\sigma$(远超误差棒),却对单机测试 RMS 零影响 ⇒ fx↔tz 不可辨识(参数非唯一),非系统修正。
过拟合警示:多机 rig 拟合 RMS 给 J 报 −44%(0.098px<$\sigma_{\text{real}}$≈0.12px 物理不可能),是它奖励对共享板位姿结构的过拟合(板位姿 6DOF/快照足以吸掉大量残差)。⇒ 凡用 BA 拟合 RMS 判"哪个方案更精",都需配 rig 无关的单机泛化或端到端测试集测量(exp_joint_ba_test.py,§6.2.3)交叉验证,否则必被过拟合欺骗。这正说明为何 §6.2.3 端到端表才是联合 BA 的公平口径。
6.6 fx↔tz 尺度退化:联合 BA 基线为何被放大
J 让 cam1 fx 滑走 8$\sigma$ 却对成像零影响,这不是数值故障,而是信息几何的必然:联合参数空间存在一条几乎"免费"的方向,
优化器沿它漂移几乎不付重投影代价。几何机理、信息椭球实测、高斯先验反证三个角度共同印证这条方向 = fx↔tz 尺度协同漂移。
(1) 几何机理:正对板时 fx 与板距精确等价(已知尺寸也救不了)
最干净的反例——板正对相机(法向 ∥ 光轴),针孔模型下角点投影像:
$u_i = f\cdot X_i / Z$, $X_i =$ 已知方格坐标(25mm 网格), $Z =$ 板距, $f =$ 焦距。
观测只依赖比值 $f/Z$。已知 $X_i$ 只是给定了像上图案的尺度,而该尺度被 $f/Z$ 完全吸收:令 $f\to\alpha f$、$Z\to\alpha Z$,每个投影像都不变。
所以正对姿态下 (f, Z) 是精确的秩 1 退化——板的已知尺寸无法把 f 与 Z 分开。这正是 Zhang 平面标定"至少要 3 个不同倾斜姿态"
的根因。直觉"我知道方格是 25mm,所以尺度被钉死"只在板填满视场或距离已知时成立;对一个 2m 外的小平面板,正对看它 = 看一个
“可整体缩放的图案”,尺寸信息退化为一个被 f/Z 吸收的标量。
倾斜才(微弱地)打破退化 —— 这就是"1/8"的由来。板倾斜 $\theta$ 时,板面各角点深度不同:横向位置 $X_i$ 处深度 $Z_i \approx Z_0 + X_i\sin\theta$,
投影像不再只是 $f/Z_0$ 的函数,板内深度展开提供了分离 $f$ 与 $Z_0$ 的杠杆。杠杆强度 = 板上深度展开 / 平均深度:
$L \approx (W\sin\theta) / Z_0$, $W =$ 板角点场跨度, $\theta =$ 倾角, $Z_0 =$ 工作距离。
本 rig:$W =$ (11−1)×25mm = 250mm(11 个内角点的长边跨度),$Z_0 \approx$ 2m(测试距离中位 1.18–2.83m),故几何上限
$L_{\max} = W/Z_0 = 250/2000 =$ 1/8;真实倾角($\theta\approx$ 20–40°,$\sin\theta\approx$ 0.3–0.6)只兑现其中的 $\sin\theta \approx$ 3–6%。
Fisher 信息 ∝ L² ≈ 0.1–0.4%,CRLB 比典型方向松 ~15–25×。即:板的已知尺寸确实钉尺度,但只钉到 ~1/8 强度(正对姿态下甚至完全不钉)——
这是 fx↔tz 方向天生最弱的根源,而非标定做错了。
为什么单目没事、联合 BA 才出问题? 单目标定里 f 由多单应矩阵的代数结构(IAC 约束 $\omega=K{-\mathsf{T}}K{-1}$,≥3 姿态过定)钉住——那是强约束
(k 折 $\sigma$ 0.2–0.6px),不靠这条弱的尺度杠杆;且相机自身是世界原点(t≡0),没有额外的全局深度自由度。联合 BA 多出 rig 平移 t_c
(各机一个、跨全部快照共享),这些全局深度自由度可与 f_c 沿同一弱尺度方向协同漂移:所有 f_c 升 x%、所有深度(板距 + 基线深度)
升 x% ⇒ 单机重投影几乎不变(f/深度比守恒),但 rig 绝对尺度整体滑动 ⇒ 多目三角化的深度尺度被破坏
(而旋转/横向方向仍强约束,故见「BA 有效吗」第 2 层:横向有限改善、深度不动)。
(2) 信息椭球实测:最扁的轴正是尺度协同漂移方向
参数不确定椭球 = Fisher 信息的逆 C = $(J{\mathsf{T}}\Sigma{-1}J)^{-1}$。主轴 = C 的特征向量(= $J{\mathsf{T}}\Sigma{-1}J$ 的特征向量),半轴长 = $\sqrt{C\text{ 特征值}}$ = $1/\sqrt{\text{信息特征值}}$。
做法:在 J 解处对全联合参数向量(内参+外参+板位姿)算重投影残差的数值雅可比 J → I = $J{\mathsf{T}}\Sigma{-1}J$($\sigma_{\text{real}}$)→ eigh(I)(升序)→
最小特征值 λ_min = 最弱方向(椭球最长轴),条件数 κ = λ_max/λ_min = 病态程度。(κ 与 $\sigma$ 无关——$\sigma$ 只整体缩放 I,不改特征向量与 κ。)
实测(20 快照子集控时;尺度退化是几何性质,与快照数无关,lib/exp_joint_ba.py::_joint_fisher_eigen):
| 量 | 值 | 含义 |
|---|---|---|
| 条件数 κ | 4.8×10¹⁰ | 联合问题严重病态:最扁轴比最强轴长 √κ ≈ 2.2×10⁵ 倍 |
| 最弱特征向量 ‖v‖² 组成 | 焦距 fx+fy 41% + 板距 t_z 58% + 其它 1% | 99% 集中在"焦距+深度",即尺度协同漂移 |
| 最弱向 fx 分量符号 | cam1/2/3/4 全同号 | 所有焦距同向移、深度反向移 = f/depth 比守恒的协同漂移 |
⇒ 联合信息椭球最扁的那根轴 = fx↔tz 尺度方向,被几何判定为全局优化的最弱点。优化器一旦沿它滑(哪怕几 $\sigma$),重投影不报警,
但绝对 rig 尺度已漂——这正是 cam1 fx 滑 8$\sigma$ 的数学身份。

左:联合 Fisher 信息特征值谱(对数轴),最弱值比最强小 10¹⁰×。右:最弱特征向量组成——焦距 + 深度平移占 99%,证实最扁轴 = 尺度协同漂移方向。
(3) 高斯先验反证:钉住尺度方向 ⇒ 收敛回冻结解、零增益
若病根真是这条弱尺度方向,那么只用先验把它钉住(不冻结其余)就应让 J 收敛回 S。变体 P = 联合 BA + 内参高斯先验
(MAP/Tikhonov:代价加 $\Sigma$($\theta$−$\theta$₀)²·$\sigma_{\text{real}}$²/$\sigma_{\text{prior}}$²,锚 $\theta$₀ = §5 单目 $\theta$,宽 $\sigma_{\text{prior}}$ = k 折 $\sigma$,权重 $\sigma_{\text{real}}$/max(kfold$\sigma$, $\sigma_{\text{real}}$)):
| J(全自由) | P(联合 + 先验) | S(冻结) | |
|---|---|---|---|
| cam1 fx 移动 | 8.1$\sigma$(+2.68px) | 0.6$\sigma$(+0.19px) | 0(定义) |
| 基线相对 S 偏差 cam2/3/4 | +0.09 / +0.12 / +0.28% | +0.002 / +0.002 / −0.019%(≈ S) | 0 |
| 诚实单机测试 RMS | 0.1213px | 0.1221px(≈ S 0.1220) | 0.1220px |
先验把 fx↔tz 方向钉住后:fx 漂移 8$\sigma$ → 0.6$\sigma$、基线回到 S 的 10⁻³ 量级、单机泛化 P ≈ S(−0.07%,无增益)。
即先验 ≈ 冻结——用"单目已知的 fx"软钉病态方向,与硬冻结等价,换不来精度(单目 fx 本就在 $\sigma_{\text{real}}$ 地板,无头部空间可挖;
任何联合移动都是纯漂移而非改进)。先验权重调对(= k 折 $\sigma$)⇒ 塌缩成冻结;调松 ⇒ 漂移复来。

逐机 Δfx(相对 S):J 漂移多 $\sigma$(cam1 8.1$\sigma$)、P 收敛回 0(误差棒 = k 折 $\sigma$)。先验把 fx↔tz 病态方向钉住 ⇒ P ≈ S,数值印证"先验 ≈ 冻结"。
三角度合一的结论:联合优化并非"处处不准",而是在 fx↔tz 尺度方向上病态(信息椭球最扁轴,κ ≈ 10¹⁰);
该方向天生最弱(板尺寸/距离 ≈ 1/8 的二阶杠杆,正对姿态下精确退化),rig 平移的加入让它成为全局最弱点。
高斯先验与冻结内参都是"砍掉这条方向"的等价手段(先验 = 软砍、冻结 = 硬砍)——生产取冻结(零超参、可审计)。
这从「估计」(P ≈ S)与「信息几何」(椭球最弱轴 = 尺度)两侧共同印证,并与「BA 有效吗」第 2 层互补:
尺度/深度方向病态(故深度无增益、贴地板),旋转/横向方向仍强约束(故横向有限改善)。注:本机理也是在线/自标定的正确架构——
若相机缓慢漂移需增量重标,用上一轮 $\theta$ 作高斯先验做 MAP 更新正是此处的 P 变体;对一次性静态标定则直接冻结更干净。
6.7 外参最终结果与不确定度
最终结果(生产外参 = 冻结内参四机同检 BA = outputs/extrinsics.json::scheme2,cam1 原点;下游 §7 消费此结果):
| 相机 | t (mm) [x, y, z] |
基线 |t| (mm) | 旋转 R(相对 cam1,3×3,行优先) |
|---|---|---|---|
| cam1 | [0, 0, 0] |
0(原点) | 单位阵 I |
| cam2 | [−1154.98, 63.60, 344.73] |
1207.0 | [0.891, 0.042, 0.453; −0.045, 0.999, −0.005; −0.453, −0.016, 0.892] |
| cam3 | [−699.77, 389.16, 37.12] |
801.6 | [0.967, 0.018, 0.254; 0.036, 0.978, −0.207; −0.252, 0.210, 0.945] |
| cam4 | [−365.52, 378.77, −48.76] |
528.6 | [0.993, −0.032, 0.114; 0.054, 0.980, −0.194; −0.105, 0.198, 0.975] |
完整精度(含 R 全部有效位、scheme1 初值)见 outputs/extrinsics.json。基线读数取 scheme2(BA 解);baselines_mm 字段记 scheme1(消歧均值,1206.88/801.63/528.65),两者差 <0.15mm。rig 几何:四机近似共面、cam1→cam2 横向展开 ~27°(最长基线),cam3/cam4 偏上偏近(短基线、收敛角小)。
不确定度:
- 基线:10 折 kfold $\sigma$ = 0.010mm(方案二,生产,最稳)= 基线的 10⁻⁵;理论下界 CRLB($\sigma_{\text{real}}$)≈69nm($\sigma_{\text{det}}$ 13nm,§6.4),比 529–1207mm 基线小 7–9 个量级。
- 旋转:10 折 std 0.13–0.22°;CRLB($\sigma_{\text{real}}$)亚弧秒级。
- BA 精修(消歧均值 scheme1 → BA 解 scheme2):cam2 Δt=0.13mm/Δrot=0.008°、cam3 Δt=0.15mm/0.003°、cam4 Δt=0.10mm/0.002° ⇒ 三机均 <0.15mm / <0.01°,初值已近最优。
- 方法间一致性:方案一(逐对 PnP)与方案二(联合 BA)基线差 <0.4mm(亚毫米自洽,正确性核心证据)。
结果怎么来的(方法溯源 = §6.3 的 5 步):96 个四机同检同步快照 → 联合 t+R 聚类消歧(§6.1)→ 冻结内参 $\theta$(§5.7)联合 BA {cam2/3/4 外参 18DOF + 每快照共享板位姿}。产物 outputs/extrinsics.json::scheme2。
置信度(综合四证据 + BA 幅度)= High:
| 证据 | 量值 | 判读 |
|---|---|---|
| 方法独立交叉验证 | 方案一(逐对 PnP)与方案二(联合 BA)基线差 <0.4mm | 外参是数据强约束的真实解,非单一方法产物 |
| 10 折重复性 $\sigma_{\max}$ | 0.010mm(方案二,最稳) | 跨折极稳 ⇒ 过定 |
| BA 精修幅度 | <0.15mm / <0.01° | 初值已近最优 ⇒ 强约束 |
| Fisher 基线 CRLB | 13nm($\sigma_{\text{det}}$)/ ≈68–72nm($\sigma_{\text{real}}$) | 比基线小 7–9 个量级 ⇒ 严重过定 |
结论与可靠性:外参严重过定(CRLB 69nm vs 529–1207mm 基线,裕度 7–9 量级),下游测试 rig-RMS(0.19–0.23px)由 $\sigma_{\text{real}}$ 主导、外参贡献比检测地板小 ~10⁴× ⇒ 外参从不构成精度瓶颈。可靠性边界:① 两方法共享检测噪声 ⇒ 亚毫米自洽不排除公共偏置(残余风险,缓解=联合 t+R 聚类 + §7 Fisher 闭环);② CRLB 69nm vs kfold 0.01–0.1mm 的 10³–10⁴× 落差是「下界 vs 有限样本实现」的口径差,非模型误差;③ 冻结内参是建模决定(依赖 §5.7 内参不漂;若温漂/松焦,外参会静默吸收 ⇒ 须定期用独立测试 rig-RMS 监测);④ 棋盘 square_size 为标称值,仅缩放绝对 mm。下游引用:§7 三角化投影阵 P_c = K_c[R_c|t_c] 用此外参——后续全文「rig 外参/基线」均指本结果。
7. 多目精度评估
目标:这是整份报告的实测核心 —— 用 §5.7 的内参 $\theta$ + §6.7 的 rig 外参,对独立测试集(5 个距离的棋盘)做去畸变多目三角化,把 88 个已知网格角点重建成 3D,与真实网格对齐(Kabsch),得到每个相机组合、每个距离下的实测 3D 测量误差😒(板法向 ≈ 深度)与 xy(横向)。这是"这套标定到底测得多准"的最终实证,也是与 Fisher 理论对比的实测来源。
承接上游😦§4/§5/§6)**:内参 $\theta$ = §5.7(cam1/2 rational、cam3/4 brown5)、rig 外参 = §6.7 生产方案二(冻结内参 BA,基线 cam2/3/4≈1207/802/529mm);Fisher 理论下界 CRLB 按 §4 $\sigma_{\text{real}}$≈0.12px($\sigma_{\text{real}}$/$\sigma_{\text{det}}$≈5.3×)口径读数(§10)。判据:实测误差贴 CRLB($\sigma_{\text{real}}$)⇒ 已达理论极限($\sigma_{\text{model}}$≈0),高出的部分源自边缘帧 $\sigma_{\text{real}}$ 更大与 Kabsch 口径差,非模型偏差。
方法:① 对每个测试快照,各机角点先去畸变 → DLT 多目三角化得 3D 点云;② 用 Kabsch 将点云对齐到已知棋盘网格(刚体、无尺度——kabsch() 只返回 R,t;三角化点云已是度量 mm,rig 尺度的绝对误差由此进入板面残差),残差 RMS = 3D 测量误差,按 z(深度)/xy(横向)分解;③ 遍历全部相机组合(2/3/4 目)× 5 距离。数据筛选:仅保留四机全部检出 88 角点的同步组(任一机未检出 → 整组删,保证组合间公平可比)。
7.1 测试集概况与三角化实现
测试集概况(各夹保留组/总组):1m:7/8, 1.5m:8/8, 2m:8/8, 2.5m:8/8, 3m:6/8。实测板心深度(全四目三角化世界 Z 中位,以测出来的为准,非文件夹标称):1m:1175mm, 1.5m:1508mm, 2m:2027mm, 2.5m:2402mm, 3m:2834mm。
DLT 三角化实现要点:对每点构造 A,取 SVD 最小奇异值对应零向量 Vt[-1] 作齐次解。该零向量符号任意(SVD 不约定符号),齐次除法必须除以
Xh[3]本身(保号);若误用abs(Xh[3]),会在 SVD 给出负号时把整点取反 → 深度符号翻转(近距离正、远距离负,幅值却对)。除以Xh[3]保号后,5 个距离深度全部为正且贴合标称(1174/1507/2027/2401/2833mm),重投影残差由数百 px 降到 0.5-1.4px。
7.2 实测 3D 误差 vs Fisher 理论下界
实测 3D 误差 vs Fisher 理论下界(4 目生产配置 cam1+2+3+4 × 5 真实板心深度;CRLB 用 $\sigma_{\text{real}}$ 口径 = $\sigma_{\text{det}}$ CRLB×5.3):
| 真实深度(m) | z 实测(mm) | xy 实测(mm) | CRLB z($\sigma_{\text{real}}$) | CRLB xy($\sigma_{\text{real}}$) | z/CRLB | xy/CRLB |
|---|---|---|---|---|---|---|
| 1.17 | 0.064 | 0.096 | 0.070 | 0.051 | 0.92× | 1.9× |
| 1.51 | 0.081 | 0.078 | 0.110 | 0.065 | 0.73× | 1.2× |
| 2.03 | 0.145 | 0.160 | 0.184 | 0.085 | 0.79× | 1.9× |
| 2.40 | 0.196 | 0.207 | 0.277 | 0.103 | 0.71× | 2.0× |
| 2.83 | 0.307 | 0.289 | 0.357 | 0.119 | 0.86× | 2.4× |
| 中位 | ≈0.8× | ≈1.9× |
深度 z 实测 / CRLB($\sigma_{\text{real}}$)≈0.7–0.9×(贴理论下界,$\sigma_{\text{model}}$≈0);横向 xy≈1.2–2.4×(略高于极限,边缘帧 $\sigma_{\text{real}}$ 更大所致)。$\sigma_{\text{det}}$ 口径下 z 比值虚高至 4–5×,是分母用 $\sigma_{\text{det}}$ 被低估 5.3× 所致。
按相机数 / 基线分档(替换原 10 张逐组合子表;完整组合数据基线·相机数曲线):

实测 z RMS vs 真实板心深度,按相机数/基线分档:2 目最长基线 cam1+cam2(B=1207mm)与 4 目几乎重合(加相机对深度收益仅 ~1–2%/目);2 目最短基线 cam3+cam4(B=340mm)显著最差。灰虚线=解析地板 $\sigma_z$=z²·$\sigma_{\text{real}}$/(f·B)。深度 ∝ $z^{\sim1.5}$(非教科书 z²——本 rig 有限会聚角下远场近似不成立)。

4 目实测 vs Fisher CRLB($\sigma_{\text{real}}$):实测 z(红实线)贴 CRLB z($\sigma_{\text{real}}$)(红虚线,z/CRLB≈0.8×);实测 xy(蓝实线)略高于 CRLB xy($\sigma_{\text{real}}$)(蓝虚线,xy/CRLB≈1.9×)。$\sigma_{\text{real}}$ 口径下理论与实测闭环。
全 11 组相机组合的实测精度(生产 4 目 + 其余 10 组子配置;行按相机数分组、组内按 z 中位升序;CRLB 用 $\sigma_{\text{real}}$ 口径 = $\sigma_{\text{det}}$×5.3):
深度 z RMS(mm) —— 基线主导,非相机数主导:
| 组合 | 相机数 | 1.17m | 1.51m | 2.03m | 2.40m | 2.83m | z/CRLB 中位 |
|---|---|---|---|---|---|---|---|
| cam1+cam2+cam3+cam4 | 4 | 0.064 | 0.081 | 0.145 | 0.196 | 0.307 | 0.79× |
| cam1+cam2+cam4 | 3 | 0.064 | 0.082 | 0.145 | 0.195 | 0.307 | 0.75× |
| cam1+cam2+cam3 | 3 | 0.071 | 0.081 | 0.146 | 0.198 | 0.314 | 0.77× |
| cam2+cam3+cam4 | 3 | 0.087 | 0.163 | 0.250 | 0.312 | 0.492 | 0.85× |
| cam1+cam3+cam4 | 3 | 0.132 | 0.160 | 0.312 | 0.444 | 0.702 | 0.97× |
| cam1+cam2 | 2 | 0.072 | 0.082 | 0.147 | 0.197 | 0.314 | 0.73× |
| cam2+cam4 | 2 | 0.100 | 0.178 | 0.277 | 0.345 | 0.549 | 0.90× |
| cam1+cam3 | 2 | 0.137 | 0.182 | 0.337 | 0.481 | 0.744 | 0.98× |
| cam2+cam3 | 2 | 0.113 | 0.244 | 0.370 | 0.458 | 0.755 | 0.79× |
| cam1+cam4 | 2 | 0.218 | 0.264 | 0.486 | 0.741 | 1.207 | 0.95× |
| cam3+cam4 | 2 | 0.358 | 0.580 | 0.903 | 1.166 | 1.871 | 1.11× |
横向 xy RMS(mm) —— 相机数与基线几何共同主导:
| 组合 | 相机数 | 1.17m | 1.51m | 2.03m | 2.40m | 2.83m | xy/CRLB 中位 |
|---|---|---|---|---|---|---|---|
| cam1+cam2+cam3+cam4 | 4 | 0.096 | 0.078 | 0.160 | 0.207 | 0.289 | 1.89× |
| cam1+cam2+cam4 | 3 | 0.107 | 0.082 | 0.165 | 0.215 | 0.299 | 2.00× |
| cam1+cam2+cam3 | 3 | 0.104 | 0.076 | 0.169 | 0.229 | 0.311 | 1.85× |
| cam2+cam3+cam4 | 3 | 0.094 | 0.124 | 0.199 | 0.245 | 0.340 | 1.22× |
| cam1+cam3+cam4 | 3 | 0.113 | 0.122 | 0.219 | 0.315 | 0.472 | 2.31× |
| cam1+cam2 | 2 | 0.121 | 0.080 | 0.176 | 0.241 | 0.325 | 2.02× |
| cam2+cam4 | 2 | 0.116 | 0.144 | 0.221 | 0.278 | 0.392 | 1.26× |
| cam1+cam3 | 2 | 0.124 | 0.136 | 0.247 | 0.357 | 0.519 | 2.42× |
| cam2+cam3 | 2 | 0.103 | 0.169 | 0.299 | 0.404 | 0.525 | 1.03× |
| cam1+cam4 | 2 | 0.194 | 0.203 | 0.314 | 0.490 | 0.770 | 3.22× |
| cam3+cam4 | 2 | 0.141 | 0.203 | 0.384 | 0.604 | 0.909 | 1.32× |

全 11 组合 × 5 真实距离的实测 z(左)/xy(右)RMS 热图(对数色,按 z 中位升序 ⇒ 基线长→短)。读图:① 顶 4 行(cam1+cam2 长基线核心, B=1207mm)z 列几近重合 —— 加目对深度收益 ≤1–2%/目,深度精度由最长基线独占;② 底行 cam3+cam4(B=340mm)整片最亮,z 差 5–6×;③ xy(右)大体随相机数增多而下降(4 目最优),同一相机数下含 cam1+cam2 核心的组合横向也更准;④ 全部组合 z/CRLB($\sigma_{\text{real}}$)≤1.1×,整张配置空间贴 $\sigma_{\text{real}}$ 地板,非模型受限 —— 生产 4 目同时吃到了 cam1-cam2 的长基线深度红利与全视角的横向红利。
7.3 多目三角化的 Fisher 原理
融合算法(如何把 C 机观测合成一个 3D 点)见 §2.8;本节专讲这个估计能多准 —— 即三角化 Fisher 信息给出的理论精度下界(CRLB),以及它为何把深度判为弱轴。
① 这是三种 Fisher 中的「单点 3D」Fisher。待估量 β = 板心 3D 坐标 X=(X,Y,Z)(3 参);内外参与 rig 几何作为已知真值固定(无干扰量 nuisance)。这与内参 Fisher(β=9/12 个相机参数)、外参 Fisher(β=刚体位姿)是三个不同问题,共享同一套 crlb_from_J 数值核,但雅可比的列含义不同。
② 信息矩阵的构造。逐相机,把去畸变像点投影对 3D 点求偏导,得 2×3 数值雅可比 J_c = ∂(u,v)/∂X(对 X,Y,Z 三列;数值差分步长由 numerical_jacobian 自适应)。各机观测独立 ⇒ Fisher 信息矩阵相加:
I_X = $\sum_c J_c{\mathsf{T}}\Sigma_c{-1}J_c$(C 个相机的 3×3 信息阵求和;$\Sigma$c 为该机 2×2 像素协方差,对角元 $\sigma{\text{real}}$²)。
无干扰量 ⇒ 无需 Schur 补(对比外参 Fisher 须边缘化板位姿+内参)。$\mathrm{CRLB}=\sqrt{\operatorname{diag}(I_X^{-1})}$,即 3D 不确定椭球的三半轴。
③ 深度为何是弱轴 —— $\sigma_z=z^2\sigma/(fB)$ 的解析根源。信息阵 I_X 的特征方向由各机射线方向张成:横向(垂直于深度、平行于基线)有多机大角度交汇 ⇒ 特征值大 ⇒ CRLB 小;深度方向(沿光轴)各机视角差小、视差灵敏度低 ⇒ 特征值小 ⇒ CRLB 大。双目解析退化定量给出:视差 d = fB/z,像点噪声 $\sigma$ 经链式法则放大到深度 $\sigma_z=|\partial z/\partial d|\cdot\sigma=(z^2/(fB))\cdot\sigma$。两个杠杆都在分母——基线 B 越长、焦距 f 越大,深度越准;且 $\sigma_z$ $\propto$ $z^2$(远距平方恶化)。本 rig 多目沿深度轴会聚角有限(§7.5:18–40°),纯双目 d=fB/z 的小视差近似只在一阶成立,实测深度恶化斜率 ∝ $z^{\sim1.5}$(略缓于 z²,见 §7.2 深度-距离曲线)。
④ 椭球几何与设计规则。CRLB 给出的不确定椭球长轴沿深度、短轴沿横向(扁椭圆,4 目 @2m 时 z-CRLB/xy-CRLB ≈ 0.18/0.085 ≈ 2.1×,长轴约为短轴 2 倍)。两条实测设计规则:(a) 压深度靠长基线 —— 本 rig cam1–cam2 B=1207mm 已把 4 目深度压到地板,加短基线 cam3/cam4 边际仅 1–2%/目(§7.2 顶 4 行重合);(b) 压横向靠多视角 —— 横向特征值随独立视角数近似线性增长,4 目 xy 比最优 2 目低 ~20%。生产 4 目 = 长基线吃深度 + 全视角吃横向,两轴同时逼近 $\sigma_{\text{real}}$ 地板。
7.4 rig 系综合诊断
本节为综合诊断:把三角化 Fisher CRLB(理论下界)与实测 RMS 放到统一的 rig 系下逐距离×相机数对比,精确回答『离理论极限多远、差在哪、为何』。理论支柱:(1) 方差分解 $\sigma_{\text{real}}$²=$\sigma_{\text{CRLB}}$²+$\sigma_{\text{model}}$²——把实测误差拆成噪声项(CRLB)与模型项;(2) CRLB 线性于 $\sigma_{\text{det}}$ ⇒ 定义有效噪声 $\sigma_{\text{eff}}$=ratio×$\sigma_{\text{det}}$ 使 Fisher 曲线贴合实测;(3) rig 系(PCA)给出物体到 rig 的真实垂直距离,而非 cam1 世界 Z。本章最终结论与 4 目测量极限表见章末 §7.9。
7.5 rig 参考系与相机位姿
参考系:原点=4 机光学中心质心;三轴由相机布局 PCA 给出——PC1=水平(长基线 cam1-cam2 方向)、PC2=竖直、PC3=深度(相机平面法向,朝板定向)。4 机实测完全共面(PCA 奇异值 [890.04, 381.82, 0.15],平面度 S3/S1=0.0002≈0),布局为梯形(顶边 cam1-cam2 宽、底边 cam4-cam3 窄)。
| 梯形边 | 长度(mm) |
|---|---|
| top(cam1-2) | 1207 |
| bottom(cam4-3) | 340 |
| left(cam1-4) | 529 |
| right(cam2-3) | 632 |
相机在 rig 系的位姿(光学中心坐标 + 光轴与深度轴夹角=会聚角):
| cam | x 水平(mm) | y 竖直(mm) | z 深度(mm) | 光轴会聚角(°) |
|---|---|---|---|---|
| cam1 | -560 | 215 | -0 | 18.1 |
| cam2 | 646 | 165 | 0 | 39.7 |
| cam3 | 127 | -197 | -0 | 36.8 |
| cam4 | -212 | -183 | 0 | 31.0 |



正视=相机平面(梯形面,标边长);俯视=水平-深度(板心在各真实距离,绿虚线=相机平面);3D=相机+板心+视锥连线。cam1/cam2(4MP)=顶宽边 1207mm,cam3/cam4(2MP)=底窄边 340mm,高 ~380mm。
7.6 真实距离与测量重复性
目标:确定每个测试档的真实距离,并量化"同一距离反复摆放"的重复性。文件夹名(1/1.5/2/2.5/3m)只是标称,精确分析须用实测距离 —— 把每快照的板心三角化、投影到 rig 深度法向,取组内均值作为该档真实距离(比 cam1 世界 Z 或标称更准,因为 rig 原点在质心)。
| 标称 | rig 垂直距离均值(mm) | 组内$\sigma$(mm) | 组数 |
|---|---|---|---|
| 1m | 984 | 12.8 | 7 |
| 1.5m | 1380 | 18.8 | 8 |
| 2m | 1878 | 27.3 | 8 |
| 2.5m | 2231 | 30.3 | 8 |
| 3m | 2663 | 16.1 | 6 |
距离=板心到 rig 平面垂直距离(每快照三角化板心→投影到深度法向→组内均值),非 cam1 世界 Z、非文件夹标称。

每组每快照的实测深度箱线(◆=均值,散点=各快照)。组内$\sigma$(13-30mm)= 同一距离多次摆放的重复性,随距离增大(远距定位更难);各档均值与标称 1/1.5/2/2.5/3m 系统偏小 = rig 原点(质心)在板与相机之间。
7.7 Fisher 信息 vs 真实误差:精确剖析
§7.2 给出了 4 目(及全 11 组合)的实测误差与 CRLB($\sigma_{\text{real}}$)对比,结论是深度贴理论下界、横向略高。本节从四个互补角度印证该结论(方差分解、有效噪声、几何依赖、边缘 $\sigma_{\text{real}}$),并解释 $\sigma_{\text{det}}$ 口径下「差 4–5×」的来源(分母被低估 5.3×,详见 §10)。$\sigma_{\text{det}}$/$\sigma_{\text{real}}$ 的区分与数学在 §4/§10 已建立,此处只做实测剖析。

左:深度 z;右:横向 xy。实线=实测(最优组合),虚线=Fisher 理论($\sigma_{\text{det}}$ 口径,故低于实测 ~5×),点线=解析双目 $\sigma_z$=z²$\sigma_{\text{det}}$/(fB)。$\sigma_{\text{real}}$ 重标(×5.3)后二者贴合。
7.7.1 误差预算:方差分解

方差分解 $\sigma_{\text{meas}}$² = $\sigma_{\text{CRLB}}$($\sigma_{\text{real}}$)² + $\sigma_{\text{model}}$²。下表按管线原样的 $\sigma_{\text{det}}$ 口径展示(故 CRLB 被低估 5.3×,把 $\sigma_{\text{real}}$ 噪声虚算成「模型方差」);$\sigma_{\text{real}}$ 重算见结论。
深度 z(4 目最优,mm²):
| 距离(mm) | $\sigma_{\text{CRLB}}$($\sigma_{\text{det}}$) | $\sigma_{\text{模型}}$($\sigma_{\text{det}}$口径) | $\sigma_{\text{实测}}$ | 占比($\sigma_{\text{det}}$口径) |
|---|---|---|---|---|
| 984 | 0.0132 | 0.062 | 0.063 | 95.6% |
| 1380 | 0.0208 | 0.078 | 0.080 | 93.3% |
| 1878 | 0.0328 | 0.139 | 0.143 | 94.7% |
| 2231 | 0.0460 | 0.189 | 0.194 | 94.4% |
| 2663 | 0.0599 | 0.299 | 0.305 | 96.2% |
横向 xy(4 目最优,mm²;同 $\sigma_{\text{det}}$ 口径):
| 距离(mm) | $\sigma_{\text{CRLB}}$($\sigma_{\text{det}}$) | $\sigma_{\text{模型}}$($\sigma_{\text{det}}$口径) | $\sigma_{\text{实测}}$ | 占比($\sigma_{\text{det}}$口径) |
|---|---|---|---|---|
| 984 | 0.0066 | 0.091 | 0.091 | 99.5% |
| 1380 | 0.0101 | 0.075 | 0.075 | 98.2% |
| 1878 | 0.0146 | 0.157 | 0.157 | 99.1% |
| 2231 | 0.0216 | 0.203 | 0.205 | 98.9% |
| 2663 | 0.0267 | 0.284 | 0.285 | 99.1% |
$\sigma_{\text{real}}$ 口径重算(CRLB 换 $\sigma_{\text{real}}$):深度 $\sigma_{\text{model}}$=√($\sigma$实测²−CRLB($\sigma_{\text{real}}$)²),因实测/CRLB($\sigma_{\text{real}}$)≈0.8–1.0、实测²<CRLB($\sigma_{\text{real}}$)² ⇒ $\sigma_{\text{model}}$≈0(方差为负→裁零=已贴极限),深度无模型偏差。横向 xy 实测/CRLB($\sigma_{\text{real}}$)≈1–3×(略高于极限),小幅超出由边缘帧 $\sigma_{\text{real}}$ 更大拉高,仍以检测噪声主导。⇒ 系统贴 $\sigma_{\text{real}}$ 检测噪声地板,非模型受限;五杠杆零增益正交证实。
7.7.2 有效噪声 $\sigma_{\text{eff}}$
Fisher CRLB 线性于 $\sigma_{\text{det}}$(I∝1/$\sigma$²)。若把 $\sigma_{\text{det}}$ 放大 ratio 倍,Fisher 曲线 = ratio×原曲线。下图显示这条「Fisher($\sigma_{\text{eff}}$)」曲线几乎精确穿过实测。

| 误差分量 | 实测/Fisher 比 | $\sigma_{\text{det}}$(px) | $\sigma_{\text{eff}}$=比×$\sigma_{\text{det}}$(px) | 幂律实测 | 幂律理论 | 噪声方差占比 |
|---|---|---|---|---|---|---|
| 深度 z | 4.3× | 0.023 | 0.099 | z^1.59 | z^1.53 | 5.3% |
| 横向 xy | 10.7× | 0.023 | 0.244 | z^1.27 | z^1.42 | 0.9% |
关键洞察:$\sigma_{\text{eff}}$=ratio×$\sigma_{\text{det}}$ 恰=$\sigma_{\text{real}}$(深度 0.099px、横向 0.244px ≈ 逐图 $\sigma_{\text{real}}$)——即「Fisher($\sigma_{\text{eff}}$) 曲线贴合实测」不是因为模型误差冒充噪声,而是因为分母终于用对了($\sigma_{\text{real}}$);ratio≈4–11× 正是 $\sigma_{\text{real}}$/$\sigma_{\text{det}}$。实测与理论幂律斜率几乎相同($z^{\sim1.6}$ vs $z^{\sim1.5}$,二者平行;非教科书 z²——本 rig 有限会聚角下远场近似不成立)。⇒ 整体噪声地板=$\sigma_{\text{real}}$,非被模型偏差抬高。
7.7.3 比值的几何依赖

左:比值 vs 距离(每相机数曲线基本水平)⇒ $\sigma_{\text{real}}$/$\sigma_{\text{det}}$ 跨距离恒定;右:比值 vs 基线(短基线偏高)。全网中位 5.0×≈$\sigma_{\text{real}}$/$\sigma_{\text{det}}$。

组合 × 距离的比值热图:全网均匀偏高(无个别异常)⇒ $\sigma_{\text{real}}$/$\sigma_{\text{det}}$ 全网一致。
- 距离无关:固定组合下比值跨 5 档距离几乎不变 ⇒ $\sigma_{\text{real}}$/$\sigma_{\text{det}}$ 在各距离大致恒定($\sigma_{\text{real}}$ 始终≈5×$\sigma_{\text{det}}$)。
- 基线相关:最短基线 cam3+cam4(5.3×)比最长 cam1+cam2(4.3×)偏高 ⇒ 短基线几何放大弱、$\sigma_{\text{real}}$ 相对更显眼(非「模型项更重」)。
7.7.4 边缘 $\sigma_{\text{real}}$ 更大:检测噪声的实测根源
系统贴 $\sigma_{\text{real}}$ 地板,但 $\sigma_{\text{real}}$ 并非处处相等——逐图 $\sigma_{\text{real}}$ 跨度 0.07–0.19px,最差 10% 帧的定位噪声是最优 10% 的 2.7×。把 4 目三角化的板点回投到各机,残差随像径(距主点)增大而上升:

像场边缘残差↑ = 边缘 $\sigma_{\text{real}}$ 更大(边缘分辨率下降/畸变大→角点变钝、对比度低→SNR 低;离焦),非「畸变模型吃不掉高阶畸变」——鱼眼、rational 加阶、残差校正场全部零增益已排除模型归因。

板上各角点平均误差的空间分布(上=深度 z,下=横向 xy)。误差呈空间结构(边缘/特定区偏高)⇒ 这是 $\sigma_{\text{real}}$ 在像场上的不均匀(边缘高)经同一多目几何放大后的几何印记,而非系统模型偏差(已证模型项≈0)。
7.7.5 空间精度足迹

各距离 4 目 1$\sigma$ 椭圆(×30 放大;实线=Fisher 理论($\sigma_{\text{det}}$),虚线=实测(=$\sigma_{\text{real}}$))。纵轴(深度 z)远长于横轴(水平 x)⇒ 深度是多目几何的固有弱轴;实测椭圆比 $\sigma_{\text{det}}$ 理论大~5×、两轴同步放大 = $\sigma_{\text{real}}$>$\sigma_{\text{det}}$ 的均匀缩放,非各向异性模型误差。椭圆随距离增长 = $\sigma$∝$z^{\sim1.5}$ 的几何体现。
7.8 精度 vs 基线、vs 相机数
目标:回答三个工程问题 —— (1) 精度随基线长度怎么变?(2) 加更多相机还有收益吗?(3) rig 外参(基线)本身定得够不够准?前两者看实测,第三者看外参 CRLB(与 §6.4 互证)。


左:固定距离下 z ∝ 1/B(点沿 1/B 参考线分布,颜色=距离);右:各距离 2/3/4 目最优组合(○△□)。
相机数收益递减:最长基线 cam1-cam2(1207mm)已被 2 目覆盖,加第 3、4 目(主要引入更短基线)对深度 z 的边际增益仅 ~1-2%/目;真正卡精度的是基线长度与检测噪声 $\sigma_{\text{real}}$,不是相机数。
外参 CRLB vs 联合标定相机数(与 §6.4 互证外参过定):基线估计精度 ~0.01μm(亚微米),与相机数几乎无关——25 个共享板位姿已充分过定相对位姿,加相机不再提升外参精度(旋转 CRLB 仅小幅改善 0.319°→0.192°)。
| 相机数 | 组合 | 最大基线(mm) | baseline CRLB(μm) | 旋转 CRLB(°) | 配对基线数 |
|---|---|---|---|---|---|
| 2 | cam1+cam2 | 1207 | 0.01 | 0.319 | 1 |
| 3 | cam1+cam2+cam3 | 1207 | 0.01 | 0.239 | 3 |
| 4 | cam1+cam2+cam3+cam4 | 1207 | 0.01 | 0.192 | 6 |

⇒ 外参不是精度瓶颈(内参/外参/模型均非瓶颈,五杠杆零增益);加相机的真正价值是提供更多/不同基线(2 目 1 条 → 4 目 6 条配对基线),提升测量冗余与视场覆盖,而非外参精度本身。
7.9 多目精度:结果与测量极限
最终结论:
- 深度 z 贴理论地板:实测 z / CRLB($\sigma_{\text{real}}$)中位 0.7–1.0×(4 目 0.79×;全 11 组合 0.73–1.11×)。方差分解 $\sigma_{\text{model}}$=√($\sigma_{\text{meas}}$²−$\sigma_{\text{CRLB}}$($\sigma_{\text{real}}$)²) 在多数距离下开方为负 ⇒ $\sigma_{\text{model}}$≈0(模型项可忽略)。系统在检测噪声 $\sigma_{\text{real}}$ 地板上运行,无系统性模型偏差;精度提升试验(§8 残差校正场、§5.4 鱼眼、§6.5 联合 BA;历史亦含部分重叠外参、板非平面)全部零增益,正交佐证 $\sigma_{\text{model}}$=0。$\sigma_{\text{det}}$ 口径下「实测/CRLB≈5×、模型方差占 95%」是分母用 $\sigma_{\text{det}}$ 被低估 5.3× 所致,并非真有模型误差。
- 横向 xy 略高于地板:xy / CRLB($\sigma_{\text{real}}$)中位 1.0–3.2×(4 目 1.89×)。高出部分不是模型误差(五杠杆已证零增益),而是板边缘角点有效 $\sigma_{\text{real}}$ 大于板心(离轴更远 ⇒ 畸变模型残差更大、SNR 更低),而 Fisher 分母用单一平均 $\sigma_{\text{real}}$;板心角点比值接近 1。z 受边缘效应弱(整板深度近常数),故 z 比值贴 1、xy 比值偏高。
- 精度随几何单调:深度由最长基线独占(cam1+cam2 核心 4 组合重合,cam3+cam4 短基线差 5–6×);横向随相机数改善(4 目最优)。生产 4 目配置两轴同时最优——长基线吃深度、全视角吃横向。
4 目生产配置的全距离测量极限(精度最高测试集 = 4 机同步,§7.2 数据;这组数据的测量能力上限):
| 真实深度 | n | z 实测(mm) | xy 实测(mm) | CRLB z($\sigma_{\text{real}}$) | CRLB xy($\sigma_{\text{real}}$) | z/CRLB | xy/CRLB |
|---|---|---|---|---|---|---|---|
| 1.17m | 7 | 0.064 | 0.096 | 0.070 | 0.051 | 0.92× | 1.9× |
| 1.51m | 8 | 0.081 | 0.078 | 0.110 | 0.065 | 0.73× | 1.2× |
| 2.03m | 8 | 0.145 | 0.160 | 0.184 | 0.085 | 0.79× | 1.9× |
| 2.40m | 8 | 0.196 | 0.207 | 0.277 | 0.103 | 0.71× | 2.0× |
| 2.83m | 6 | 0.307 | 0.289 | 0.357 | 0.119 | 0.86× | 2.4× |

4 目实测 z(红实线)贴 CRLB z($\sigma_{\text{real}}$)(红虚线,z/CRLB≈0.8× ⇒ 深度达理论极限);实测 xy(蓝实线)略高于 CRLB xy($\sigma_{\text{real}}$)(蓝虚线,xy/CRLB≈1.9× ⇒ 横向小幅超出,边缘 $\sigma_{\text{real}}$ 更大所致)。
读法:4 目在 1–3m 工作距离上,深度测量精度 0.06–0.31mm、横向 0.08–0.29mm;深度已在 CRLB($\sigma_{\text{real}}$)理论极限上(z/CRLB≈0.8×,模型项≈0),横向在极限的 ~1.9× 处(可解释为边缘帧 $\sigma_{\text{real}}$ 更大,非模型偏差)。这就是本组数据在当前检测噪声 $\sigma_{\text{real}}$≈0.12px 下的测量极限;深度无系统性压缩空间,横向的边缘偏高只能靠降低 $\sigma_{\text{real}}$(检测侧,§11)缩小。
可靠性边界:
- $\sigma_{\text{real}}$ 是逐图估计,非已知真值😒\sigma_{\text{real}}$ ≈ 0.12px 取自逐图去心残差 RMS,本身带 ~10% 估计不确定;CRLB($\sigma_{\text{real}}$) 与之同比例波动。故 z/CRLB「0.8×」应读作「约 0.7–1.0×」。核心结论「贴地板」对 ±10% $\sigma_{\text{real}}$ 鲁棒(比值仍在 ~1 附近)。
- CRLB 假设 rig 几何精确已知:外参(基线 B、会聚角)取自标定值,其不确定度(外参 CRLB 68–72nm,§6.4)比深度 CRLB(0.1–0.4mm)小 10³–10⁴×,故几何误差对深度 CRLB 的二阶贡献可忽略。
- 小样本涨落:每距离档仅 6–8 组快照;比值带 ~15% 统计散布。
- Kabsch 对齐引入口径差:实测 RMS 是三角化网格经 Kabsch 刚体对齐已知板后的逐角点残差(全板均值),CRLB 是单点(板心)理论值;二者口径略异,故比值是「量级吻合」而非「逐点闭合」。
- CRLB 是下界,非点预测:实测可高于它(横向 1.9× 属正常),亦不应远低于它(z 的 0.7× 在 $\sigma_{\text{real}}$ 估计涨落范围内)。
根本瓶颈:所有维度精度最终受单目检测噪声 $\sigma_{\text{real}}$(=$\sigma_{\text{det}}$×5.3)封顶。模型侧五杠杆全部零增益 ⇒ 压缩空间在检测侧;进一步降 $\sigma_{\text{real}}$ 须靠物理改进(对焦/4MP 升级/亚像素窗口 auto/打光降纹理噪声,§11),cam1/2 已用 rational 模型(比 brown5 测试 RMS 低 ~32%)是模型侧唯一已兑现的增益。
8. 残差校正场:内参后处理的精度增益评估
目标:§5–§7 已分别给出内参、外参与多目精度;本节回到模型侧的最后一问——标定残差里还剩多少可建模的系统误差?尝试把标定角点的残差插值成全局残差场、作为固定偏移叠加到投影上(lib/experiments.py,8 图 + JSON),结论先行:零增益。这反过来界定了残差性质(≥97% 是逐图随机噪声、可建模的固定分量 var(b) 仅 1.5–3.3%),并由 var(b) 反解出真实工作点定位噪声 $\sigma_{\text{real}}$≈RMS≈0.12px(静态 $\sigma_{\text{det}}$ 的 ~5.3×),支撑全报告判据:系统是「检测噪声受限」而非「模型受限」。$\sigma_{\text{real}}$ 的系统辨析见 §4,本节聚焦残差场实验本身。
8.1 残差校正场实验
内参模型已分机选到最优(cam1/2 rational、cam3/4 brown5),重投影 RMS 仍 ~0.12px。
本节构造残差校正场:在标定角点(稀疏点)算残差、插值出全局残差矩阵、作为固定偏移叠加到投影上,
试图补掉最后那点系统误差。(lib/experiments.py,8 图 + JSON)
8.2 方法
- 残差场参数化为去畸变归一化坐标 (x_n,y_n) 的函数。归一化坐标 = 真实光线方向 ⇒
残差(=镜头畸变的未建模部分)是其函数,与板姿态无关 —— 这是"固定偏移"能跨姿态泛化的
前提。每角点:残差 = 检测 − 投影(px,投影用该图 solvePnP 位姿),(x_n,y_n) = undistort(检测)。 - 两种场模型互相印证:(P) 二维多项式,阶数由图像级 K 折 CV 选(防拟合噪声);
(G) 归一化平面分 32×32 格取残差中位数(抗噪),空格用薄板样条 RBF 插值 —— 即把
"稀疏点 → 插值 → 全局残差矩阵"落到全局残差矩阵上。把场在归一化平面稠密求值即得全局残差矩阵(交付物)。 - 应用 = 固定偏移:
校正投影 = 投影 + 场(x_n,y_n),在独立测试集(test_v1…v5,不同姿态/距离)
算 RMS 前后对比。绝不用拟合集自评(否则过拟合)。
8.3 结果:固定残差场无增益
| 相机 | 模型 | 多项式最优阶 | 测试 RMS 校正前→后(P) | (G) pooled | 格内跨图 std(随机) | 格中位(固定 b) | 随机/固定 | var(b)/var($\sigma_{\text{real}}$) |
|---|---|---|---|---|---|---|---|---|
| cam1 | rational | 2 | 0.107→0.107 | 0.107 | 0.094px | 0.015px | 6× | 1.5% |
| cam2 | rational | 2 | 0.103→0.103 | 0.104 | 0.100px | 0.016px | 6× | 1.7% |
| cam3 | brown5 | 2 | 0.137→0.137 | 0.138 | 0.109px | 0.021px | 5× | 3.0% |
| cam4 | brown5 | 2 | 0.133→0.133 | 0.134 | 0.109px | 0.021px | 5× | 3.3% |
测试 RMS 校正前后完全相同(增益 0.0%);多项式各阶留出 RMS 都 ≈ 无场 baseline(CV 一律选最低阶 2);
拟合集上反而 −7%(过拟合噪声)。⇒ 固定残差场不可行。

独立测试集(5 距离)RMS:校正前(浅)/后(深)几乎重合 ⇒ 固定场对测试精度零增益。

左:多项式各阶 K 折留出 RMS ≈ baseline(虚线),★=最优(都选最低阶)⇒ 加场不降残差;
右:无校正 / 多项式 P / 网格-RBF G 三者 pooled 测试 RMS 并列 ⇒ 与方法无关,均无增益。

全局残差矩阵(模型 G 稠密化,du/dv):全场幅值 ~0.01px,已低于 $\sigma_{\text{det}}$ ⇒ 几乎没有可建模结构。

左:固定校正偏移场矢量(箭长=px),整体极短 ⇒ 场接近零;右:残差幅值 vs 归一化半径,校正前后重合 ⇒ 未吃掉任何径向结构。
8.4 真因定位:固定场无效的根源
(B) 空间一致性诊断 —— 核心证据。把归一化平面分格,同一格 = 同一图像位置,跨多张图看残差:

同一图像位置的残差:格内跨图 std(逐图随机,0.094–0.109px)≫ 格中位 |残差|(固定可建模,0.015–0.021px),比值 5–6×。
固定分量 0.015–0.021px 与 $\sigma_{\text{det}}$(0.021–0.024px)同量级,且 var(b) 仅占残差方差 1.5–3.3% ⇒ 没有显著超噪声的、可插值的空间结构,残差主体(方差 60–85%)是逐图随机。
© 板非平面排除。联合求解每角点板系 z 偏移(88 个跨图共享未知数,res ≈ g·z_j):RMS 仅降 0.4–0.7%,
反解 |z| ≤ 0.06mm(板厚量级)⇒ 标定板足够平,非平面不是原因。
(D) 真实定位噪声。逐图残差全局偏置仅 ~0.0001px(solvePnP 已吸收刚体平移),残差是纯单角点散布;
其有效 2D $\sigma$($\sigma_{\text{real}}$)≈ 0.12px,是静态爆发 $\sigma_{\text{det}}$(0.023px)的 5.1–5.7×。

噪声层级:静态 $\sigma_{\text{det}}$ ≪ 真实逐图 $\sigma_{\text{real}}$ ≈ 重投影 RMS。真实逐图定位噪声远大于静态估计。
8.5 结论
-
固定残差场不可行:它只能吃掉那 0.015–0.021px(占残差方差仅 1.5–3.3%)的固定空间分量,对占残差方差 >96% 的 ~0.12px 逐图随机散布无能为力。多项式/网格-RBF 在独立测试集上零增益,拟合集反而过拟合,板非平面也排除 ⇒ 结论稳健、与方法无关。
-
主诊断:系统受限于真实检测噪声 $\sigma_{\text{real}}$ ≈ 0.12px ≈ RMS(RMS/$\sigma_{\text{real}}$ ≈ 1.0×),已贴近真实检测噪声极限。RMS/$\sigma_{\text{det}}$ ≈ 5.3× 之所以看起来像「模型受限」,是因为 $\sigma_{\text{det}}$ 是静态爆发地板(理想条件),远小于工作点噪声 $\sigma_{\text{real}}$;K 折/CRLB 比值偏大同样是 Fisher 用 $\sigma_{\text{det}}$ 做分母所致(§10)。
-
物理根因:静态爆发只含传感器噪声(同场景、相机不动);真实标定图板在动,伴有轻微离焦/抖动/混叠/
光照渐变,使 cornerSubPix 的亚像素定位偏差随图内容变化。这部分是测量噪声属性,不是相机模型属性 ——
任何相机侧模型(固定场/更复杂畸变/板形)都动不了它。 -
进一步压低 0.12px 地板只能靠检测侧(非模型侧):更锐对焦 / 更小光圈增大景深 / 更匀照明 /
抗混叠棋盘图案 / 亚像素细化窗口与阈值调参 / 学习型角点检测器。这些是把 $\sigma_{\text{real}}$ 从 ~0.12px 往 $\sigma_{\text{det}}$ 靠拢的途径。
9. K 折详述与可辨识性
lib/exp_kfold_viz.py(3 图 + JSON)把 stage4 的"单 fx 柱"展开为逐参数诊断。
(a) 逐参数 k 折 $\sigma$ vs Fisher CRLB($\sigma_a$ = $\sigma_{\text{det}}$/√2 ≈ 0.019px 为 CRLB 分母):
| 相机 | fx kfold/CRLB | fy | cx | cy | k1 | k2 | k3 | cond(Iβ) |
|---|---|---|---|---|---|---|---|---|
| cam1 | 45.0× | 41.9× | 105.6× | 94.5× | 26785× | 93032× | 15359× | 3.8×10⁸ |
| cam2 | 24.2× | 23.4× | 81.1× | 163.2× | 13327× | 42389× | 4917× | 3.0×10⁸ |
| cam3 | 33.1× | 27.3× | 274.1× | 221.5× | 85× | 171× | 133× | 8.3×10⁷ |
| cam4 | 81.0× | 86.8× | 681.0× | 335.4× | 328× | 570× | 435× | 1.1×10⁸ |

左:逐参数 k 折 $\sigma$(经验)vs CRLB(理论下界);右:比值热图(对数色),畸变项比值极大。
(b) 为何比值 ≫1 —— 分母是关键。CRLB 用的 $\sigma_a$ 来自静态爆发 $\sigma_{\text{det}}$(0.023px),
而 k 折散布含真实逐图定位噪声 $\sigma_{\text{real}}$≈0.12px(单轴 $\sigma$≈0.085px,是 $\sigma_a$ 的 ~5.3×)。
把 CRLB 同比放大 5.3× 后:fx 比值 45.0→8.0×、cam2 24.2→4.7×、cam3 33.1→6.3×(cam4 81→15.6×,偏高)。
即 $\sigma_{\text{real}}$ 口径下经验散布仅高出理论下界约 4.7–15.6×(fx)——剩余部分来自位姿集实现化与模型微差,而非模型受限。
畸变项(k1/k2/k3)比值仍巨大,因其本身量纲小、CRLB 极小,放大后仍在 10²–10³ 量级,但 k 折 $\sigma$ 绝对值已 <0.001–0.2,
对实际投影影响远小于 fx。
© 可辨识性 / 条件数。cond(Iβ) ≈ 10⁸–10⁹,信息阵接近退化——某些参数组合(如 fx↔k1↔k3、
cx↔p1)弱约束、强耦合(相关阵非对角绝对值可达 0.5–0.9)。但参数仍可分辨:k 折间 $\theta$ 稳定(fx $\sigma$ 0.19–0.56px,
相对 fx≈2034/1346 仅 0.01–0.04%),高 cond 反映"参数沿耦合方向联合不确定"而非"无法求解"。
cam4 k 折散布最大(fx 0.56、cx 0.79),可信度略低。

K 折稳定性:$\sigma_{fx}$ 随 K=2…15 收敛(经验不确定度已饱和,不再随抽样数下降);条件数柱;cam1/cam3 参数相关阵(红=正相关/蓝=负相关,对角为 1)。
10. Fisher 精度的 $\sigma$ 口径:$\sigma_{\text{det}}$ 与 $\sigma_{\text{real}}$ 的区分
若系统已贴噪声地板、无系统误差可建模(四杠杆 + 联合 BA 全零增益),为何 Fisher 理论精度看起来还差好几倍到几十倍(kfold/CRLB≈24–81×、深度实测/CRLB($\sigma_{\text{det}}$)≈4–5×、“模型方差占 95%”)?根源在 Fisher 信息矩阵 I=$J{\mathsf{T}}\Sigma{-1}J$ 的 $\Sigma$ 选取。
stage4/6/7 三个 Fisher 计算的 $\Sigma$ 全部取 $\sigma_{\text{det}}$(静态连拍传感器噪声 ≈0.023px)。$\sigma_{\text{det}}$ 量的是静止场景的读出 + Pattern 噪声,不含真实标定/测试图里棋盘角点的逐图像定位噪声 $\sigma_{\text{real}}$(亚像素梯度几何 + 对焦 + 混叠 + 光照渐变 + cornerSubPix 收敛误差)≈ 重投影 RMS ≈0.12px,是 $\sigma_{\text{det}}$ 的 5.3×(逐机 5.1–5.7×)。$\sigma_{\text{det}}$ 是 $\sigma_{\text{real}}$ 的乐观下界(理想检测器才达得到),不是当前检测器的真实观测噪声。
关键数学😒\mathrm{CRLB}=\sigma\sqrt{\operatorname{diag}((J{\mathsf{T}}J){-1})}$ ⇒ CRLB 关于 $\sigma$ 线性。把分母里的 $\sigma_{\text{det}}$ 换成 $\sigma_{\text{real}}$(=RMS),整条 CRLB 曲线精确放大 rms/sdet 倍,所有「实测/CRLB」「kfold/CRLB」比值同比缩小。这是一次精确的 post-hoc 重标定(线性缩放即精确,无需重跑管线)。
(a) 内参 kfold/CRLB(fx):24–81× → 4.7–15.6×
| cam | $\sigma_{\text{real}}$/$\sigma_{\text{det}}$ | kfold/CRLB($\sigma_{\text{det}}$) | kfold/CRLB($\sigma_{\text{real}}$) | 解读 |
|---|---|---|---|---|
| cam1 | 5.65× | 45× | 8.0× | ~5.65× 是 $\sigma$ 记账偏差;剩余 8.0× = 参数不稳定 |
| cam2 | 5.10× | 24× | 4.7× | 同上,残差 4.7× |
| cam3 | 5.29× | 33× | 6.3× | 同上,残差 6.3× |
| cam4 | 5.18× | 81× | 15.6× | cam4(2MP)参数最不稳,残差 15.6× |

把 Fisher 的 $\sigma_{\text{det}}$ 换成 $\sigma_{\text{real}}$(放大 ~5.3×)后,fx 的 kfold/CRLB 由 24–81× 降到 4.7–15.6×(对数轴)。
(b) 深度实测/CRLB:4.3–5.5× → 0.81–1.04×(贴 CRLB!)(下表为全部 2/3/4 目组合的平均 z 误差;与 © 用 「4 目最优」单列不同,故 1m 的 0.129 > © 的 0.071,但两表的比值结论一致)
| 距离 | z 实测(mm) | CRLB($\sigma_{\text{det}}$) | CRLB($\sigma_{\text{real}}$) | 实测/CRLB(sd) | 实测/CRLB(real) |
|---|---|---|---|---|---|
| 1m | 0.129 | 0.023 | 0.124 | 5.5× | 1.04× |
| 1.5m | 0.190 | 0.038 | 0.201 | 5.0× | 0.95× |
| 2m | 0.320 | 0.067 | 0.356 | 4.8× | 0.90× |
| 2.5m | 0.430 | 0.100 | 0.531 | 4.3× | 0.81× |
| 3m | 0.688 | 0.140 | 0.743 | 4.9× | 0.92× |

左:深度误差实测(黑)贴在 CRLB($\sigma_{\text{real}}$,蓝)上,远高于 CRLB($\sigma_{\text{det}}$,红虚线);右:$\sigma_{\text{real}}$ 口径下实测/CRLB≈0.9(达理论极限)。
深度「差 4 倍」不存在——用 $\sigma_{\text{real}}$ 重标定 Fisher 后,rig 深度精度本就在理论 CRLB 上(比值 0.81–1.04,集中在 ~0.9,部分 <1 是因为"实测"是组内 Kabsch 对齐的重复性散布而非绝对误差,且 CRLB 对单点三角化;≈0.9 即"达极限"),没有模型误差可挖。
© 「模型方差占 95%」同样是 $\sigma_{\text{det}}$ 分母所致。分解 $\sigma_{\text{model}}$²=$\sigma_{\text{real}}$²−$\sigma_{\text{CRLB}}$($\sigma_{\text{det}}$)² 把"$\sigma_{\text{real}}$ 与 $\sigma_{\text{det}}$ 的差"记成了模型误差。换成 $\sigma_{\text{real}}$ 口径:
| 距离(mm) | $\sigma_{\text{CRLB}}$($\sigma_{\text{det}}$) | $\sigma_{\text{CRLB}}$($\sigma_{\text{real}}$) | $\sigma$实测 | 模型方差占比($\sigma_{\text{det}}$) | 模型方差占比($\sigma_{\text{real}}$) |
|---|---|---|---|---|---|
| 984 | 0.0162 | 0.0896 | 0.074 | 95.2% | <0(实测已在 CRLB 内) |
| 1380 | 0.0251 | 0.1388 | 0.106 | 94.4% | <0 |
| 1878 | 0.0397 | 0.2195 | 0.173 | 94.7% | <0 |
| 2231 | 0.0542 | 0.2997 | 0.218 | 93.8% | <0 |
| 2663 | 0.0711 | 0.3932 | 0.332 | 95.4% | <0 |
$\sigma_{\text{model}}$²=$\sigma$实测²−$\sigma_{\text{CRLB}}$($\sigma_{\text{real}}$)² 全部为负 ⇒ 模型方差 = 0,实测完全落在(乃至低于)$\sigma_{\text{real}}$ 噪声预算内。「95% 模型方差」是 $\sigma_{\text{det}}$ 记账造成的错觉,不是物理。

fx kfold/CRLB($\sigma_{\text{det}}$) 总差距的对数分解 = $\sigma$ 口径因子(橙,≈5.3×,$\sigma_{\text{det}}$ 低估所致)+ 参数不稳定残差(紫,4.7–15.6×)。
(d) 内参的剩余 4.7–15.6× 是什么?不是"可降 RMS 的模型误差",是"参数非唯一性"。四杠杆 + 联合 BA
已证:任何模型侧手段都降不动 RMS(残差多项式 K 折留出曲线在阶 2→6 走平 = 无可建模结构;鱼眼/联合 BA 零增益)。
但 kfold 显示跨折 $\theta$ 散布仍 > CRLB($\sigma_{\text{real}}$)——这是 Brown/rational 模型存在近退化解(多组 $\theta$ 给出近乎相同的
最低 RMS),不同数据子集落到不同 $\theta$。"RMS 贴地板"与"参数非唯一"不矛盾:你可以重投影误差已达噪声极限,
而单个 $\theta$ 仍欠定。这是比"有系统误差"弱得多的"模型局限"——它影响标定可重复性(重标一次 $\theta$ 会动),
但不影响测量精度(RMS、深度都已贴地板)。
(e) 外参基线 CRLB😒\sigma_{\text{det}}$ 下 15nm → $\sigma_{\text{real}}$ 下 ~85nm,仍比深度地板小 4–5 个量级 ⇒ 外参从不构成瓶颈
(与两项分解一致:$\sigma_z$^extr 比 $\sigma_z$^det 小 10⁴×)。$\sigma$ 口径重标不改变此结论。
(f) 这不是循环论证吗?(方法论自检 —— 用纯几何公式独立复核)
最严厉的反驳会是:“把 RMS 当 $\sigma$ 代进 CRLB,再比 actual,那 any 系统都会贴 CRLB(RMS),等于啥也没证。”
为破此循环,我们换一个结构上完全不经过重投影残差的预测:教科书双目深度精度闭式 $\sigma_z$ = z²·$\sigma$/(f·B)
(只依赖几何 z、基线 B、焦距 f 和标量 $\sigma$,不含任何残差)。对最长基线 cam1+cam2(B=1206.7mm, fx=2033.6):
| 距离 | z(mm) | 实测 z(mm) | 几何预测($\sigma_{\text{det}}$) | 几何预测($\sigma_{\text{real}}$) | 实测/预测(sd) | 实测/预测(real) |
|---|---|---|---|---|---|---|
| 1m | 1174 | 0.085 | 0.015 | 0.087 | 5.74 | 0.97 |
| 1.5m | 1507 | 0.113 | 0.024 | 0.143 | 4.65 | 0.79 |
| 2m | 2027 | 0.185 | 0.044 | 0.259 | 4.21 | 0.71 |
| 2.5m | 2401 | 0.220 | 0.062 | 0.364 | 3.56 | 0.60 |
| 3m | 2833 | 0.348 | 0.086 | 0.507 | 4.05 | 0.69 |
实测/预测($\sigma_{\text{real}}$) ≈ 0.6–1.0 —— 纯几何 × $\sigma_{\text{real}}$ 精确解释实测,无额外项;且比值随距离从 0.97 单调降到 0.69,
正是远场 z² 近似过估(rig 会聚角有限 ⇒ 实际 ~z^1.5)的签名。结论非循环:几何预测来自 (z,B,f,$\sigma$),
actual 来自测量,二者在 $\sigma_{\text{real}}$ 下吻合 ⇒ 深度误差 = 几何 × 真实定位噪声,不含模型项。唯一的"循环"输入是标量 $\sigma_{\text{real}}$ 本身,
而 $\sigma_{\text{real}}$ 是定位噪声(非偏差)由四杠杆零增益 + 逐图 RMS 紧簇于 0.13–0.22px(非少数偏差图主导)独立支撑 —— 两根支柱各自独立、互相印证。
(g) 「残差随像径↑」的归因。“像场边缘残差变大"的正确读法是:边缘残差↑ = 边缘定位噪声 $\sigma_{\text{real}}$ 更大(边缘 SNR 低、入射角斜、场曲离焦),不是模型偏差。判据:若是平滑径向偏差(r²/r⁴/…),残差多项式(归一化坐标 4 阶,能表 r²–r⁴)、鱼眼(异种径向基)、联合 BA(自由内参)三者至少有一个会吃掉它并降 RMS;三者全零增益 ⇒ 残差不是平滑模型偏差,而是逐图定位噪声(其边缘更大是 SNR/对焦的几何后果)。径向趋势支持"检测噪声受限”,而非反驳。
(h) $\sigma_{\text{det}}$ 与 $\sigma_{\text{real}}$ 各自的正确用法
静态连拍测 $\sigma_{\text{det}}$ 是标准做法,精确量出"检测器在恒定信号下的可重复性"。它回答的是渐近下界问题;作「模型受限 vs 噪声受限」的诊断分母时,须用可达下界 $\sigma_{\text{real}}$。两个 $\sigma$ 对应两个 CRLB,各标清楚、不能混用:
| $\sigma_{\text{det}}$(静态连拍) | $\sigma_{\text{real}}$(逐图,=RMS) | |
|---|---|---|
| 物理含义 | 检测器在恒定信号下的可重复性(纯传感器+cornerSubPix 收敛抖动) | 实际标定/测试图里角点的逐图像定位误差 |
| 回答的问题 | “若模型完美、只剩检测器噪声,标定能多准?”(信息论渐近下界) | “以实际噪声,标定能多准 / 离极限多远?”(可达下界) |
| 用法 | 标定系统的品质因数 / 天花板,横向对比检测器好坏 | 「模型受限 vs 噪声受限」的诊断分母、可达精度评估 |
「实测/CRLB($\sigma_{\text{det}}$)≈4× / 60–270×」里绝大部分是 $\sigma_{\text{real}}$/$\sigma_{\text{det}}$≈5.3 这个比值本身,不是模型误差。诊断分母对齐真实噪声($\sigma_{\text{real}}$)后,这些比值回落到贴极限量级。
$\sigma_{\text{real}}$−$\sigma_{\text{det}}$≈0.12px 的位姿依赖定位退化是"噪声"而非"模型偏差",这是 $\sigma_{\text{real}}$ 能作 CRLB 分母的前提。其来源:场曲离焦(不同位姿切焦面不同)+ 斜姿非对称梯度(cornerSubPix 收敛偏/抖)+ 光照/对比变化 + 混叠(位姿相对像素栅格不同相)——逐图随机、不可被光滑模型吃掉,不是镜头畸变偏差。三条独立证据:
- 同位残差实验(
lib/experiments.py):同一图像位置格内,跨图残差 std≈0.10px(逐图随机),而格中位(=固定可建模分量)仅 0.015–0.021px ≈ $\sigma_{\text{det}}$(且 var(b) 只占残差方差 1.5–3.3%)⇒ $\sigma_{\text{excess}}$ 几乎全是逐图随机噪声,固定模型分量与 $\sigma_{\text{det}}$ 同量级、可忽略。 - 残差场/鱼眼/联合 BA 全零增益:若是模型偏差,这三者(光滑多项式 / 异种径向基 / 自由内参)至少一个能降 RMS;全不行 ⇒ 不是模型偏差。
- $\sigma_{\text{det}}$ 只采了 5 个静态位姿(5×100 帧,且都是静止、对焦锐的"好位姿");$\sigma_{\text{real}}$ 跨 ~150 个标定位姿(含斜/远/边缘)。$\sigma_{\text{real}}$>$\sigma_{\text{det}}$ 是位姿分布更宽更难的必然结果,而非模型差。
⇒ $\sigma_{\text{real}}$ 作 CRLB 分母合法(它是真实观测噪声),据此诊断"模型受限"得到"否"有效;$\sigma_{\text{det}}$ 版 CRLB 保留作渐近天花板/检测器品质因数。决定性未来实验(现有数据做不了):在多姿态下各拍静态连拍,测 $\sigma_{\text{det}}$(pose) 再跨姿态平均——若 ≈ $\sigma_{\text{real}}$,则印证"$\sigma_{\text{excess}}$ = 位姿依赖检测噪声";若仍 ≪ $\sigma_{\text{real}}$,则残余部分另有归因。
小结:系统受限于检测噪声 $\sigma_{\text{real}}$。深度精确贴 CRLB($\sigma_{\text{real}}$)、模型方差 = 0;内参 RMS 贴地板(仅参数轻度非唯一,不影响测量精度);外参过定、可忽略。Fisher 理论「看着遥不可及」是 $\sigma_{\text{det}}$ 过乐观所致;四杠杆 + 联合 BA 零增益与「无系统误差可建模」的结论一致。进一步降 $\sigma_{\text{real}}$ 靠检测侧(对焦/光圈/抗锯齿板/亚像素调参/学习检测器/cam3-4 升 4MP),模型侧已无可建模结构;CRLB($\sigma_{\text{det}}$) 数值本身正确(渐近下界),但作判定分母时须配 $\sigma_{\text{real}}$ 版本。
11. 检测侧:亚像素窗口与 $\sigma_{\text{real}}$ 的剩余压缩
模型侧已穷尽(残差场 / 鱼眼 / 部分重叠 / 板非平面 / 联合 BA:深度全零增益)。
唯一可能的方向是检测侧:把 $\sigma_{\text{real}}$(0.12px,真实瓶颈)往 $\sigma_{\text{det}}$(0.023px)压。本节试最直接的一招 ——
cornerSubPix 亚像素窗口/参数(lib/exp_subpixel_sweep.py 静态扫描 + lib/exp_subpixel_recal.py 全量重标定),
并给出"深度已到极限"的论证。
(1) 静态扫描(exp_subpixel_sweep.py):对 cam1/cam4 的静态连拍,扫描窗口 (3,3)/(5,5)/(7,7) + 准则变体:
| 配置 | cam1 $\sigma_{\text{det}}$ | cam4 $\sigma_{\text{det}}$ |
|---|---|---|
| (3,3) | 0.0394 | 0.0348 |
| (5,5) 现行 | 0.0285 | 0.0288 |
| (7,7) | 0.0250 (−12%) | 0.0261 (−9%) |
| (5,5)+紧/松收敛 | ≈0.0285(无差) | ≈0.0288(无差) |
⇒ (7,7) 比 (5,5) 静态 $\sigma_{\text{det}}$ 低 ~10%(准则无效)。但 $\sigma_{\text{det}}$ 是静态/近距,窗口随距离变(远距角点间距小,
大窗口可能越界双峰)⇒ 须全量重标定 + 独立测试判定真伪。
(2) 全窗口扫描(5–13)+ 自适应(exp_subpixel_recal.py):同图像集各窗口标定 → 独立测试 RMS(vs (5,5)):
| 窗口 | cam1(4MP) | cam4(2MP) |
|---|---|---|
| (5,5) 现行 | 0.1186 (基准) | 0.1524 |
| (7,7) | 0.1133 (−2.3%) | 0.1425 (−7.5%) |
| (9,9) | 0.1108 (−4.4%) | 0.4302 ❌双峰 |
| (11,11) | 0.1078 (−7.1%) | 1.92 ❌ |
| (13,13) | 0.927 ❌双峰 | 3.17 ❌ |
| auto 自适应 | 0.1085 (−6.4%) | 0.1334 (−13.5%) |
双峰边界(直径 ≥ ~1.5×间距即发散):4MP(3m 间距≈17px)安全到 (11,11)(径23≈1.35×间距),(13,13)(径27≈1.6×)发散;2MP(3m 间距≈11px)安全到 (7,7)(径15≈1.36×),(9,9)(径19≈1.7×)发散。固定窗口无法兼顾:4MP 想要 (11,11) 但 2MP 在 (9,9) 就发散;且同一相机近距(间距大)可用更大窗、远距(间距小)必须更小。
auto 自适应机制(detect.py::_adaptive_window,两阶段「先稳后准」):
① (5,5) 小窗先做一遍 cornerSubPix —— 锁定每个点到正确鞍点(小窗永不双峰,杜绝 (11,11) 那种"提错角点");
② 从锁定后的精修点测实测角点间距(比整数粗定位更准),设自适应大窗 半径=round(间距×0.6) clip[3,11],
再 cornerSubPix 精修一遍 —— 此时已在正确峰上,大窗只做平均(降方差),不会被邻峰吸走。
⇒ 又稳(小窗锁定永不错)又准(大窗平均降 $\sigma_{\text{real}}$)。验证:两阶段 auto 与单遍 auto 在本干净数据上数值相同
(cam1 0.1085、cam4 0.1334),但两阶段对脏图/极端斜姿更鲁棒(整数定位偏时也不会被邻峰吸走)。
- cam1 auto −6.4%(≈ 最优固定 (11,11) −7.1%,但 (11,11) 在更远距会发散,auto 不会);
- cam4 auto −13.5%(远超最优安全固定 (7,7) −7.5%——因为 auto 近距用大窗(11)、远距用小窗(7),逐距离取最优,而固定 (7,7) 全程保守)。
- auto 逐距离:cam4 1m 0.141→0.134、2m 0.152→0.122、3m 0.161→0.150(各距离全降,3m 不发散);cam1 1m 0.125→0.097、3m 0.129→0.128(近距大降、远距持平)。
![]()
窗口扫描(5–13)+ auto(粗线):auto 各距离贴最优曲线、且永不双峰发散(4MP (13,13)、2MP (9,9)+ 均发散)。
![]()
趋势曲线(稳定区,线性):(a) 测试 RMS 随窗口单调下降(更多像素平均 ⇒ 更准)——4MP 从 w=5 的 0.119 降到 w=11 的 0.108、
2MP 从 w=5 的 0.152 降到 w=7 的 0.143;× 标在边界=双峰发散(超出稳定区,不画进曲线:4MP w=13、2MP w=9+)。
auto(★)取各机稳定区的最优点(cam1 0.1085、cam4 0.1334),又准又稳。(b) auto 两阶段逐距离全稳定无发散且优于 (5,5)。
⇒ auto 是精度+可靠性兼顾的唯一机制:逐距离/逐分辨率自适应,充分回收"大窗平均"的精度收益,同时半径≤0.6×间距保证永不越邻角致双峰。无需逐机/逐距手调。
(3) 为什么有效 —— 物理原理(深度):
cornerSubPix 在 winSize 半窗(实采 (2w+1)² 像素)内拟合二次曲面找鞍点极值作为亚像素角点。
- 窗口越大 ⇒ 拟合用像素越多 ⇒ 定位方差越低($\sigma_{\text{real}}$↓):更多像素平均掉梯度噪声,这是大窗降 RMS 的根因。
- 但窗口直径 ≳ 1.5×间距时,窗口含入相邻角点的鞍点 ⇒ 拟合曲面双峰 ⇒ cornerSubPix 收敛到邻角(错位 ~1 格距) ⇒ 残差剧增(cam4 (9,9)@3m=0.43px、(13,13)=3.17px)。
- 最优 = 最大化平均(大窗)与避免双峰(窗径 < ~1.4×间距)的折中 ⇒ 安全半径 ≈ 间距×0.6(auto 取此)。
- 间距 ∝ fx/z(焦距/距离):近距/高分辨间距大→auto 给大窗;远距/低分辨间距小→auto 给小窗。这正是 auto 优于固定窗口的本质:固定窗口只能对某一距离/分辨率最优,auto 对全部最优。
- 准则无效(紧/松收敛 $\sigma_{\text{det}}$ 无差):收敛已达二次极值,再多迭代不动 ⇒ 窗口大小才是杠杆。
(4) 落地结果(已部署 config.py::REFINE_WIN="auto",全管线 auto 重标定完成)😒\sigma_{\text{real}}$(=测试 RMS)与深度实测下降:
| 相机 | $\sigma_{\text{real}}$(测试RMS) (5,5)→auto | 4 目深度 z(2m) (5,5)→auto |
|---|---|---|
| cam1(4MP) | 0.116→0.109 (−6.1%) | — |
| cam2(4MP) | 0.119→0.102 (−13.9%) | — |
| cam3(2MP) | 0.147→0.138 (−6.0%) | — |
| cam4(2MP) | 0.154→0.135 (−12.5%) | — |
| 4 目深度 z | — | 0.176→0.145mm (−17.8%);1m 0.074→0.064(−13.5%)、3m 0.336→0.307(−8.7%) |
| 4 目横向 xy | — | 0.191→0.160mm(−16.2%,2m);各距离 −15~−18% |
⇒ auto 把 $\sigma_{\text{real}}$ 降 6–14%、深度降 ~10–20%。深度仍在(更低的)CRLB($\sigma_{\text{real}}$) 极限(z/Clb=0.71–0.92×)⇒ 仍是检测噪声受限,只是地板更低。这是检测侧唯一有效的改进手段(模型侧五杠杆+联合 BA 零增益);进一步增益须靠硬件。
(5) 为何深度已到极限(论证):
- 深度实测贴 CRLB($\sigma_{\text{real}}$)😒/CRLB($\sigma_{\text{real}}$)=0.6–0.84×,即深度误差 = 几何 × $\sigma_{\text{real}}$,无模型误差项
(五杠杆 + 联合 BA 全零增益 ⇒ 模型方差=0,©)。 - $\sigma_{\text{real}}$ 是真实定位噪声(非偏差):残差场/鱼眼/联合 BA 零增益 + 同位跨图 std 0.10px≫固定 0.015–0.021px(③)。
- 给定 $\sigma_{\text{real}}$,CRLB($\sigma_{\text{real}}$) 是理论下界,实测已贴之 ⇒ 任何**不改 $\sigma_{\text{real}}$**的手段都无法降深度。
- 降 $\sigma_{\text{real}}$ 只能靠检测侧:本节证明 cornerSubPix 窗口能压 ~5–7%(2MP);再往下须硬件/采集
(更锐对焦/更小光圈/更匀照明/抗混叠棋盘/学习型检测器/cam3-4 升 4MP)—— 无法在现有数据上仿真。 - 结论:深度精度 = $\sigma_{\text{real}}$ × 几何 = CRLB($\sigma_{\text{real}}$),已基本达到(0.6–0.84×,缺口是 Kabsch 方法论 + 小样本,
④)。模型侧已无可建模结构;检测侧亚像素窗口收回 ~7%(2MP),进一步压缩须靠硬件。
12. 结论
- 标定已经够好了。 0.12px 的重投影 RMS 不是「模型还拟合得不够」,而是检测噪声在真实工作点的水平——真实工作点比静态连拍恶劣约 5.3 倍。4 目生产配置在 1–3m 工作距离上的实测测量精度:深度 0.06–0.31mm、横向 0.08–0.29mm——深度已贴 CRLB($\sigma_{\text{real}}$) 理论极限($z/\text{CRLB}\approx 0.8\times$)。
- 精度的诚实分母是 CRLB($\sigma_{\text{real}}$),不是 CRLB($\sigma_{\text{det}}$)。 用错分母会把一个「已贴极限」的系统误读成「还有 95% 模型方差可压」。
- 四外参方案对比的公平口径是 full-system vs full-system。 联合 BA(J)深度持平、横向边际更优但绝对量亚 0.1mm,且基线被 fx↔tz 退化放大(准确度顾虑)。生产选冻结内参 BA,是收益不抵代价,不是联合 BA 不可用。
- 想再提精度,去压检测噪声。 自适应亚像素窗口已收回 6–14%、深度 −18%;再往下须更高分辨率、更锐对焦,而不是换模型或加参数。
一句话:当系统贴着检测噪声地板时,模型侧已没有可建模的结构可挖,精度只剩检测侧的物理改进这一条路。
参考资料
- OpenCV Camera Calibration
- Cramér–Rao bound (Wikipedia)
- Bundle adjustment (Wikipedia)
- [Trucco & Verri, Introductory Techniques for 3-D Computer Vision] — 三角化精度几何推导
- https://github.com/zywvvd/four_eyed_vision
文章链接:
https://www.zywvvd.com/notes/3d/four-eyed-vision-calibration/four-eyed-vision-calibration/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付