研究 计算机视觉

实验3 相机标定实验

从针孔模型和单应性推导相机标定,整理棋盘格实验的内外参数、两组误差表及尚需核实的实验条件。

本页目录 21 节

组员:刘欣楠、翟国辰

实验内容 #

利用棋盘格平面模式对定焦相机进行标定,目标包括相机内参、各视图的外参和镜头畸变参数。

本文保留实验中的矩阵、参数、对比数据与示例图片。现有材料未附完整的 46 张采集图像、标定脚本、畸变系数和误差计算代码,尚不能独立复现整次实验;涉及这些材料的结论在下文注明范围。

实验目的 #

  1. 掌握针孔相机成像的原理与透视特点。
  2. 理解世界坐标、相机坐标、成像平面坐标与图像像素坐标之间的关系。
  3. 理解内参、外参的含义,以及径向、切向畸变的模型。
  4. 掌握基于平面模式的张氏标定法。
  5. 分析标定误差的来源,区分参数稳定性、拟合误差与独立验证精度。

实验环境与实验器材 #

硬件记录:NVIDIA 4090 Laptop、Intel i9-13900HX、华谷动力相机 WP-YTUT230M、镜头 WP-5M1614-C、平面棋盘格 9×12,单格边长 100 mm。

软件记录:华谷动力相机驱动、Python,以及以下依赖版本。命令仅记录依赖,不是完整标定程序。

pip install numpy==1.26.0 scipy==1.11.1 matplotlib==3.8.0 opencv-python==4.8.0.76

“9×12”指方格数还是内角点数尚未注明,不能直接据此填写 patternSize;还需核实 Python 版本、标定点数组中是否实际乘入 100 mm、角点细化设置与标定 flags。这些条件分别影响角点对应、平移量单位和所估计的畸变模型。

实验原理 #

针孔相机成像模型 #

以光心为原点,取相机前方为 Zc>0Z_c>0。本文采用位于 z=fz=ff>0f>0前置虚拟像平面。相机坐标为 (Xc,Yc,Zc)(X_c,Y_c,Z_c) 的点,在该平面上的米制坐标满足

{xm=fXcZc,ym=fYcZc.\begin{cases} x_m=f\dfrac{X_c}{Z_c},\\ y_m=f\dfrac{Y_c}{Z_c}. \end{cases}

这里 f,xm,ymf,x_m,y_m 使用相同的长度单位。固定物体尺寸、姿态且沿光轴改变距离时,像的尺寸随深度增大而减小。

若改用光心后方 z=fz=-f 的物理像平面,并保持横纵轴方向不变,则交点为 xm=fXc/Zcx_m=-fX_c/Z_cym=fYc/Zcy_m=-fY_c/Z_c,表现为倒像。前、后像平面是两种坐标约定,不能在已经采用 z=fz=f 的公式后再次翻转焦距符号。

成像系统的多坐标系关系 #

  • 世界坐标系:以棋盘格等参照物建立,空间点记为 Xw\mathbf{X}_w
  • 相机坐标系:原点在光心,ZcZ_c 沿视线朝前;外参约定为 Xc=RXw+t\mathbf{X}_c=\mathbf{R}\mathbf{X}_w+\mathbf{t}
  • 成像平面坐标:前置像平面上的 (xm,ym)(x_m,y_m) 以主点为原点,单位可为 mm 或 m。将其除以焦距得到规范化坐标 x=Xc/Zcx=X_c/Z_cy=Yc/Zcy=Y_c/Z_c;后者无量纲,对应 z=1z=1 的规范化平面,不能再称为米制坐标。
  • 图像像素坐标:通常以图像左上角为原点,uu 向右、vv 向下,坐标单位为 pixel;主点像素位置记为 (cx,cy)(c_x,c_y),也记作 (u0,v0)(u_0,v_0)

相机成像的坐标系关系示意图

在无畸变模型下,规范化坐标通过内参转为像素坐标:

[uv1]=K[xy1],K=[fxγcx0fycy001].\begin{bmatrix}u\\v\\1\end{bmatrix} =\mathbf{K}\begin{bmatrix}x\\y\\1\end{bmatrix},\qquad \mathbf{K}=\begin{bmatrix}f_x&\gamma&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}.

γ\gamma 是 skew 参数。零 skew、像素间距为 px,pyp_x,p_y 时,fx=f/pxf_x=f/p_xfy=f/pyf_y=f/p_y。世界点先经刚体变换,再作透视除法,最后由内参映射到像素;三维到二维的投影不是一个可逆的刚体变换。OpenCV 常规针孔模型采用零 skew 的内参形式;本文先保留一般 γ\gamma 以说明约束数量。OpenCV 相机模型

基于平面棋盘格的相机标定原理(张氏标定法) #

相机从不同方向观察已知平面图案,先估计平面与图像的单应关系,再求内参和各视图外参,最后进行非线性优化。“最少几张”取决于已知条件:一般五参数内参需要至少三幅非退化视图;若预设 γ=0\gamma=0,两幅适当视图在理想条件下可以提供足够约束。重复同一姿态不等于增加独立约束。这里的下限不保证含噪实验的稳定性。张正友原论文,第 3.1 节

平面棋盘格标定原理示意图

1. 棋盘格平面与图像平面之间的单应性 #

把世界坐标系建立在棋盘格上,使板上各点满足 Zw=0Z_w=0。令 x~=(u,v,1)T\tilde{\mathbf{x}}=(u,v,1)^T,则无畸变投影满足

Zcx~=K[Rt][XwYw01]=K[r1 r2 t][XwYw1].Z_c\tilde{\mathbf{x}} =\mathbf{K}[\mathbf{R}\mid\mathbf{t}] \begin{bmatrix}X_w\\Y_w\\0\\1\end{bmatrix} =\mathbf{K}[\mathbf{r}_1\ \mathbf{r}_2\ \mathbf{t}] \begin{bmatrix}X_w\\Y_w\\1\end{bmatrix}.

单应矩阵只确定到一个非零整体比例。若选择代表矩阵

H=λK[r1 r2 t],ζx~=H[XwYw1],ζ=λZc,\mathbf{H}=\lambda\mathbf{K}[\mathbf{r}_1\ \mathbf{r}_2\ \mathbf{t}], \qquad \zeta\tilde{\mathbf{x}}=\mathbf{H}\begin{bmatrix}X_w\\Y_w\\1\end{bmatrix}, \qquad \zeta=\lambda Z_c,

则齐次向量应按比例相等理解;不能直接把末分量为 1 的像素向量与未经归一化的乘积写成普通等号。λ\lambda 是每幅图单应矩阵的尺度选择,ζ\zeta 随点深度变化。畸变存在时,原始像素点与单应模型仅近似一致,后续还需估计畸变并优化。

2. 从单应矩阵估计内参 #

H=[h1 h2 h3]\mathbf{H}=[\mathbf{h}_1\ \mathbf{h}_2\ \mathbf{h}_3]。由旋转矩阵前两列正交且均为单位向量,得到

{r1=λ1K1h1,r2=λ1K1h2,{h1TKTK1h2=0,h1TKTK1h1=h2TKTK1h2.\begin{cases} \mathbf{r}_1=\lambda^{-1}\mathbf{K}^{-1}\mathbf{h}_1,\\ \mathbf{r}_2=\lambda^{-1}\mathbf{K}^{-1}\mathbf{h}_2, \end{cases} \qquad \begin{cases} \mathbf{h}_1^T\mathbf{K}^{-T}\mathbf{K}^{-1}\mathbf{h}_2=0,\\ \mathbf{h}_1^T\mathbf{K}^{-T}\mathbf{K}^{-1}\mathbf{h}_1 =\mathbf{h}_2^T\mathbf{K}^{-T}\mathbf{K}^{-1}\mathbf{h}_2. \end{cases}

B=KTK1=[B11B12B13B12B22B23B13B23B33],b=(B11,B12,B22,B13,B23,B33)T.\mathbf{B}=\mathbf{K}^{-T}\mathbf{K}^{-1} =\begin{bmatrix}B_{11}&B_{12}&B_{13}\\B_{12}&B_{22}&B_{23}\\B_{13}&B_{23}&B_{33}\end{bmatrix}, \qquad \mathbf{b}=(B_{11},B_{12},B_{22},B_{13},B_{23},B_{33})^T.

每幅图给出关于 b\mathbf{b} 的两条齐次线性约束。将各视图的约束堆叠为 Vb=0\mathbf{V}\mathbf{b}=\mathbf{0},用 SVD 取最小奇异值对应的右奇异向量,再恢复 K\mathbf{K}。六维 b\mathbf{b} 只确定到比例,因此一般需要五个独立约束;零 skew 时另有 B12=0B_{12}=0。含噪情形还需检查恢复出的 B\mathbf{B} 能否对应正定内参模型,不能只依据图片数量认定求解成功。

3. 估计相机外参 #

沿用上述 λ\lambda 定义,理想条件下

λ=K1h1=K1h2,r1=λ1K1h1,r2=λ1K1h2,r3=r1×r2,t=λ1K1h3.\begin{aligned} \lambda&=\|\mathbf{K}^{-1}\mathbf{h}_1\| =\|\mathbf{K}^{-1}\mathbf{h}_2\|,\\ \mathbf{r}_1&=\lambda^{-1}\mathbf{K}^{-1}\mathbf{h}_1,\qquad \mathbf{r}_2=\lambda^{-1}\mathbf{K}^{-1}\mathbf{h}_2,\\ \mathbf{r}_3&=\mathbf{r}_1\times\mathbf{r}_2,\qquad \mathbf{t}=\lambda^{-1}\mathbf{K}^{-1}\mathbf{h}_3. \end{aligned}

先选取单应矩阵的符号,使棋盘位于相机前方,再采用正尺度。含噪时两个范数通常不完全相等,可用其平均值初始化尺度,并将初始旋转矩阵投影到 SO(3)SO(3),保证 RTR=I\mathbf{R}^T\mathbf{R}=\mathbf{I}detR=1\det\mathbf{R}=1。这些是求解步骤,不表示本次实验脚本已核实采用相同实现。

4. 径向与切向畸变 #

(x,y)(x,y) 为理想规范化坐标,r2=x2+y2r^2=x^2+y^2。三参数径向模型为

x~=x(1+k1r2+k2r4+k3r6),y~=y(1+k1r2+k2r4+k3r6).\begin{aligned} \tilde{x}&=x\left(1+k_1r^2+k_2r^4+k_3r^6\right),\\ \tilde{y}&=y\left(1+k_1r^2+k_2r^4+k_3r^6\right). \end{aligned}

若再加入常用切向项,畸变坐标为

xd=x~+2p1xy+p2(r2+2x2),yd=y~+p1(r2+2y2)+2p2xy.\begin{aligned} x_d&=\tilde{x}+2p_1xy+p_2(r^2+2x^2),\\ y_d&=\tilde{y}+p_1(r^2+2y^2)+2p_2xy. \end{aligned}

再由 K(xd,yd,1)T\mathbf{K}(x_d,y_d,1)^T 得到畸变像素位置。这是理想点到畸变点的正向模型;去畸变需要求对应的逆映射。实际参数选择应与标定 flags 和输出系数对应,不能由下面的简化推导反推本次实验用了哪一种模型。OpenCV 畸变模型及系数约定

下面保留仅估计两个径向参数的线性初始化推导,明确设 k3=p1=p2=0k_3=p_1=p_2=0。令 (u,v)(u,v) 为理想像素坐标、(u~,v~)(\tilde{u},\tilde{v}) 为畸变后的像素坐标,则

u~=u+(uu0)(k1r2+k2r4),v~=v+(vv0)(k1r2+k2r4).\begin{aligned} \tilde{u}&=u+(u-u_0)(k_1r^2+k_2r^4),\\ \tilde{v}&=v+(v-v_0)(k_1r^2+k_2r^4). \end{aligned}

每个对应点给出两行:

[(uu0)r2(uu0)r4(vv0)r2(vv0)r4]Dj[k1k2]k=[u~uv~v]dj.\underbrace{\begin{bmatrix}(u-u_0)r^2&(u-u_0)r^4\\(v-v_0)r^2&(v-v_0)r^4\end{bmatrix}}_{\mathbf{D}_j} \underbrace{\begin{bmatrix}k_1\\k_2\end{bmatrix}}_{\mathbf{k}} =\underbrace{\begin{bmatrix}\tilde{u}-u\\\tilde{v}-v\end{bmatrix}}_{\mathbf{d}_j}.

将各点堆叠成 Dkd\mathbf{D}\mathbf{k}\approx\mathbf{d}。当 D\mathbf{D} 满列秩时,最小二乘解为

k=(DTD)1DTd.\mathbf{k}=(\mathbf{D}^T\mathbf{D})^{-1}\mathbf{D}^T\mathbf{d}.

数值实现宜用 QR 或 SVD 求解,而非显式求逆。若保留第三径向参数,需要在 D\mathbf{D} 中增加 r6r^6 对应的一列;若估计切向参数,也必须增加相应项,不能把两参数解当作完整畸变结果。

5. 非线性最小二乘与极大似然 #

令第 ii 幅图中第 jj 个角点观测为 xij\mathbf{x}_{ij},投影函数 ff 包含外参变换、透视除法、选定的畸变模型和内参映射。目标为

S(K,k,{Ri,ti})=i=1nj=1mixijf(K,k,Ri,ti,Xj)2.S(\mathbf{K},\mathbf{k},\{\mathbf{R}_i,\mathbf{t}_i\}) =\sum_{i=1}^{n}\sum_{j=1}^{m_i} \left\|\mathbf{x}_{ij}-f(\mathbf{K},\mathbf{k},\mathbf{R}_i,\mathbf{t}_i,\mathbf{X}_j)\right\|^2.

这里 k\mathbf{k} 统称实际参与估计的畸变参数。若各角点的像素噪声独立、同方差且服从各向同性高斯分布,最小化此式等价于极大似然估计;其他噪声模型可能需要加权或稳健损失。齐次投影的尺度由透视除法处理,不另为每幅图引入一个自由 λi\lambda_i

Levenberg-Marquardt 优化

把所有观测分量堆叠为固定向量 y\mathbf{y},预测记为 F(β)F(\boldsymbol{\beta}),残差为 e=yF(β)\mathbf{e}=\mathbf{y}-F(\boldsymbol{\beta}),则

S(β)=yF(β)2,F(β+δ)F(β)+Jδ.S(\boldsymbol{\beta})=\|\mathbf{y}-F(\boldsymbol{\beta})\|^2, \qquad F(\boldsymbol{\beta}+\boldsymbol{\delta}) \approx F(\boldsymbol{\beta})+\mathbf{J}\boldsymbol{\delta}.

若有 MM 个标量观测、pp 个参数,预测函数的 Jacobian 为

J=Fβ=[F1β1F1βpFMβ1FMβp].\mathbf{J}=\frac{\partial F}{\partial\boldsymbol{\beta}} =\begin{bmatrix} \dfrac{\partial F_1}{\partial\beta_1}&\cdots&\dfrac{\partial F_1}{\partial\beta_p}\\ \vdots&\ddots&\vdots\\ \dfrac{\partial F_M}{\partial\beta_1}&\cdots&\dfrac{\partial F_M}{\partial\beta_p} \end{bmatrix}.

固定观测 y\mathbf{y} 不依赖待估参数,故 y/β=0\partial\mathbf{y}/\partial\boldsymbol{\beta}=0;残差的 Jacobian 则是 J-\mathbf{J}。一阶近似给出

S(β+δ)eJδ2,JTJδ=JTe.S(\boldsymbol{\beta}+\boldsymbol{\delta}) \approx\|\mathbf{e}-\mathbf{J}\boldsymbol{\delta}\|^2, \qquad \mathbf{J}^T\mathbf{J}\boldsymbol{\delta}=\mathbf{J}^T\mathbf{e}.

加入阻尼 μ>0\mu>0 后,一种常用 LM 更新为

(JTJ+μI)δ=JTe,δ=(JTJ+μI)1JTe.(\mathbf{J}^T\mathbf{J}+\mu\mathbf{I})\boldsymbol{\delta} =\mathbf{J}^T\mathbf{e},\qquad \boldsymbol{\delta}=(\mathbf{J}^T\mathbf{J}+\mu\mathbf{I})^{-1}\mathbf{J}^T\mathbf{e}.

实际通过求解线性方程得到更新,并依据目标函数下降情况调整阻尼;μ\mu 与单应矩阵尺度 λ\lambda 是不同的量。

实验步骤与结果分析 #

采集棋盘格图片 #

实验记录使用华谷动力相机 WP-YTUT230M、镜头 WP-5M1614-C 和上述 9×12、单格边长 100 mm 的平面棋盘格,共采集 46 张不同位姿的图片。本文配图是示例,不构成这 46 张输入图的完整清单。

思考问题

  1. 一般五参数内参的线性初始化至少需要三幅非退化视图,因为每幅图提供两条约束;预设零 skew 后,两幅适当视图理论上可解。实验采用三张或七张子集比较,不代表已确定最优采集数量。
  2. 应改变棋盘朝向、俯仰、距离和图像中的覆盖位置,避免仅重复相似姿态。能否稳定求解还取决于约束独立性和角点质量。

提取棋盘格角点 #

实验记录使用 Python 的 OpenCV 包提取角点,保留以下两组示例。

棋盘格角点提取示例 img35

棋盘格角点提取示例 img13

叠加显示可用于检查漏检、错序和明显偏移,不能单凭视觉效果证明高精度或亚像素精度。需要结合角点细化方法、残差分布和独立验证来评价定位质量。

思考问题

  1. 每张图的角点数组必须与该张图的棋盘坐标数组逐项对应。规则网格的排序应与 patternSize 的行列约定一致;图上的红色起点不能自动充当跨视图的固定物理角点标记。对称棋盘旋转后尤其需要核对坐标约定。
  2. 常规完整棋盘检测要求所选内角点网格可见。标定的核心条件是每幅图中三维点和二维点数量一致、顺序对应,而不是所有标定方法都必须看到整块棋盘。本文未附角点数组和提取脚本,无法进一步核验实际索引。

求解单应性矩阵 #

原记录给出以下两个单应矩阵及一张示例图,未保存两个矩阵各自对应的完整图像编号与角点数据。

单应矩阵估计所附棋盘格示例 img1

[9.41341195.165331432.48161266.9741145.141156877.7661910.0141790.0108001.000000],[4.17252995.518424603.94582377.13446841.120396737.4513130.0169760.0201781.000000].\begin{bmatrix} -9.413411&95.165331&432.481612\\ -66.974114&5.141156&877.766191\\ 0.014179&0.010800&1.000000 \end{bmatrix},\qquad \begin{bmatrix} -4.172529&95.518424&603.945823\\ -77.134468&41.120396&737.451313\\ 0.016976&0.020178&1.000000 \end{bmatrix}.

矩阵末项均规范为 1。平面坐标的单位、原点和轴向会影响矩阵各元素;在缺少点数组时,不据这些数值推断物理尺度。

估计相机的内参和外参 #

1. 初始化内参 #

记录中的内参矩阵为

K=[3471.6513080.000000982.1242330.0000003474.180514599.3592460.0000000.0000001.000000].\mathbf{K}=\begin{bmatrix} 3471.651308&0.000000&982.124233\\ 0.000000&3474.180514&599.359246\\ 0.000000&0.000000&1.000000 \end{bmatrix}.

fx=3471.651308 pxf_x=3471.651308\ \mathrm{px}fy=3474.180514 pxf_y=3474.180514\ \mathrm{px},主点为 (cx,cy)=(982.124233,599.359246) px(c_x,c_y)=(982.124233,599.359246)\ \mathrm{px}

下面的物理量换算沿用原记录的像素间距 pixel_pitch4.8 μm=0.0048 mm4.8\ \mu\mathrm{m}=0.0048\ \mathrm{mm}、分辨率为 1920×12001920\times1200 的条件。相机规格出处、采集时是否缩放或裁剪尚未附齐,故这些是有条件的换算值,不是新的硬件测量。

fx,mm=3471.651308×0.004816.6639 mm,fy,mm=3474.180514×0.004816.6761 mm,sensor_width=1920×0.0048=9.2160 mm,sensor_height=1200×0.0048=5.7600 mm.\begin{aligned} f_{x,\mathrm{mm}}&=3471.651308\times0.0048\approx16.6639\ \mathrm{mm},\\ f_{y,\mathrm{mm}}&=3474.180514\times0.0048\approx16.6761\ \mathrm{mm},\\ \mathrm{sensor\_width}&=1920\times0.0048=9.2160\ \mathrm{mm},\\ \mathrm{sensor\_height}&=1200\times0.0048=5.7600\ \mathrm{mm}. \end{aligned}

视场角口径。 忽略畸变并近似主点居中时,水平视场使用 fxf_x,垂直视场使用 fyf_y

FOVx2arctansensor_width2fx,mm=2arctan19202fx,FOVy2arctansensor_height2fy,mm=2arctan12002fy.\begin{aligned} \mathrm{FOV}_x&\approx2\arctan\frac{\mathrm{sensor\_width}}{2f_{x,\mathrm{mm}}} =2\arctan\frac{1920}{2f_x},\\ \mathrm{FOV}_y&\approx2\arctan\frac{\mathrm{sensor\_height}}{2f_{y,\mathrm{mm}}} =2\arctan\frac{1200}{2f_y}. \end{aligned}

将弧度转为角度,原记录的参考焦距 fspec=16.0 mmf_{\mathrm{spec}}=16.0\ \mathrm{mm} 对应水平 32.13332.133^\circ、垂直 20.40820.408^\circ;由标定内参换算得到水平 30.91530.915^\circ、垂直 19.59719.597^\circ。后一个值须使用 fy,mm16.6761 mmf_{y,\mathrm{mm}}\approx16.6761\ \mathrm{mm},不能把水平焦距 16.6639 mm16.6639\ \mathrm{mm} 代入垂直公式。

若保留主点偏移,采用连续图像边界 [0,W]×[0,H][0,W]\times[0,H] 和零 skew 的无畸变模型,则

FOVx=arctancxfx+arctanWcxfx,FOVy=arctancyfy+arctanHcyfy.\begin{aligned} \mathrm{FOV}_x&=\arctan\frac{c_x}{f_x}+\arctan\frac{W-c_x}{f_x},\\ \mathrm{FOV}_y&=\arctan\frac{c_y}{f_y}+\arctan\frac{H-c_y}{f_y}. \end{aligned}

这里是在指定模型下计算图像边界张角;畸变、裁剪和去畸变后的有效区域会改变实际可用视场。下表保留原记录采用的居中近似,不与其他 FOV 口径混算。

参数对比

参数参考值(原记录)估计值(原记录)带符号差原记录百分比
fxf_x(px)3333.33 px3471.651 px+138.32 px+4.15%
fyf_y(px)3333.33 px3474.181 px+140.85 px+4.23%
ff(mm,使用水平焦距)16.00 mm16.6639 mm+0.6639 mm+4.15%
cxc_x(px)960.0 px982.124 px+22.12 px+1.152%
cyc_y(px)600.0 px599.359 px-0.64 px-0.053%
FOVx\mathrm{FOV}_x32.133°30.915°-1.218°-3.79%
MSE(定义、单位待核对)未记录0.463979未记录未记录

表中“带符号差”是估计值减参考值,不是数学上的绝对值。焦距和 FOV 的百分比以相应参考值为分母;cxc_x 的 +1.152% 以图像宽度 1920 为分母,cyc_y 的 -0.053% 以高度 1200 为分母,不能解读为相对主点参考值的百分比误差。主点取图像中心仅是参考假设,不是已知真值。

MSE 待核对。 0.463979 保持原记录标签。缺少计算代码时,不能判定它是均方误差、RMS 重投影误差或其他汇总量,也不能替它指定 px 或 px²。OpenCV calibrateCamera 的返回值定义为整体 RMS 重投影误差,但没有证据证明此数值就是该返回值。OpenCV 标定返回值

2. 计算外参 #

外参结果所附棋盘格示例 img1

以下数值按原记录保留:

rvec = (-0.1623, -0.8116, -1.6377)
tvec = (-5.9215, 2.9969, 37.3366)
rot_deg = 105.14
trans_norm = 37.92

按 Rodrigues 旋转向量约定,rvec 的模是旋转角(弧度),换算角度与所列 rot_deg 的舍入值相符。tvectrans_norm 的长度单位取决于棋盘三维点数组:输入若使用 mm,输出才是 mm;若使用单格为 1 的坐标,则输出是格长单位。由于未附点数组,暂不将 37.92 解释为某个实际长度。

Xc=RXw+t\mathbf{X}_c=\mathbf{R}\mathbf{X}_w+\mathbf{t} 的约定下,t\mathbf{t} 也不是相机中心的世界坐标;后者为 RTt-\mathbf{R}^T\mathbf{t}

分析标定误差 #

下表保留两种图像数量下的全部组别及数值。“重投影误差(px)”沿用原表名称;均值的计算流程、是否为 RMS、是否按角点加权,以及“±”是否表示标准差,现有材料均未说明。

标定图像数量组别重投影误差(px)主点坐标 [cx,cy][c_x,c_y]
3第一组1.5836[981.05, 635.81]
3第二组1.3101[883.89, 626.09]
3第三组0.4751[1006.99, 605.07]
3随机 50 次均值0.8243[970.88, 603.85] ± [54.79, 48.79]
7第一组0.4551[1010.55, 538.60]
7第二组0.3844[976.00, 557.00]
7第三组0.6414[1008.33, 583.30]
7随机 50 次均值0.49[979.58, 600.85] ± [38.03, 27.42]

为说明不同误差口径的区别,设 NN 个观测角点的二维像素残差为 ej\mathbf{e}_j

MSEpoint=1Nj=1Nej2,RMSpoint=1Nj=1Nej2,mean distance=1Nj=1Nej.\begin{aligned} \mathrm{MSE}_{\mathrm{point}}&=\frac{1}{N}\sum_{j=1}^{N}\|\mathbf{e}_j\|^2,\\ \mathrm{RMS}_{\mathrm{point}}&=\sqrt{\frac{1}{N}\sum_{j=1}^{N}\|\mathbf{e}_j\|^2},\\ \mathrm{mean\ distance}&=\frac{1}{N}\sum_{j=1}^{N}\|\mathbf{e}_j\|. \end{aligned}

这些是用于澄清口径的定义,不是对表中数值计算方式的追认。若按 2N2N 个标量坐标平均,MSE 又会相差一倍;先平均各图指标与合并全部角点计算也可能不同。

在原记录口径一致的前提下,七张子集的随机均值低于三张子集,主点后所列的“±”数值也较小,但个别组别仍有波动。缺少抽样索引、随机种子、各图误差和统计定义,不能进一步宣称差异具有统计显著性,也不能把训练图上的拟合误差当作独立测试精度。

可能的误差来源包括角点定位偏移、图像模糊、棋盘非平面、位姿覆盖不足,以及模型与镜头实际畸变不匹配;本页数据不足以判断哪一项占主导。

可改进的检查步骤:

  1. 逐图检查残差与角点对应,记录异常样本的原因;按事先明确的质量准则处理模糊或误检图片,不能只因误差较大就剔除以降低汇总数值。
  2. 增加朝向、俯仰、距离与画面边缘位置的覆盖,避免仅重复相近姿态。
  3. 保存每次子集索引和随机种子,重复比较参数稳定性;用未参与拟合的图像、明确的指标和误差分布评价泛化效果。

结论与讨论 #

现有记录包含棋盘格示例、两个单应矩阵、一组内参、一组外参,以及三张和七张图像子集的误差对比。它们可以支持对计算过程和报告数值的核查,但尚不足以验证完整的畸变校正流程:畸变系数、去畸变前后对照及逐视图残差没有随文给出。

内参对应的水平焦距约为 16.6639 mm、垂直焦距约为 16.6761 mm,与参考 16 mm 的差异约为 4.15% 和 4.23%。参考焦距并非独立标定真值,接近规格值不能单独证明模型正确或精度达标。主点偏移也不能仅凭数值归因为装配偏心,或直接判定为工业相机的正常误差范围。

后续核验需补齐输入图像清单、棋盘尺寸及内角点约定、完整脚本与参数、畸变系数、误差定义和抽样记录。在这些材料补齐前,本文作为实验记录与原理说明保留,不宣称可直接复现全部结果。

讨论

评论

正在加载评论…

输入关键词开始搜索。