· 本篇你将学到
一、针孔投影:从相似三角形到内参矩阵
先统一三个术语(贯穿全系列):
针孔模型(pinhole model):把相机抽象成「过光心的直线投影」——3D 点沿其与光心的连线落在像平面上,忽略透镜聚焦等全部物理细节。OpenVINS 所有相机模型都以它为骨架(源码注释原文:All these models are pinhole cameras,CamBase.h:33-37)。
内参(intrinsics):相机自身的几何参数(焦距、主点、畸变系数),与相机在哪、朝哪无关,记 ζ\\boldsymbol\\zetaζ。
外参(extrinsics):相机与别的坐标系(IMU/世界)之间的位姿,OpenVINS 记 ICR{}^C_I\\mathbf RICR、CpI{}^C\\mathbf p_ICpI(相机-IMU 外参,IMU→相机,详见第 1 篇符号约定;第 11 篇起进入状态)。
第一步:相似三角形(物理事实:光沿直线传播)。 设路标在相机系下坐标 Cpf=[X,Y,Z]⊤{}^C\\mathbf p_f=[X,Y,Z]^\\topCpf=[X,Y,Z]⊤,ZZZ 沿光轴。在光心前方距离 fff(焦距,物理单位 mm)处放一个虚拟像平面(真实像面成倒像,把它对称翻到前方,符号就全为正,几何完全等价)。过光心的投影射线与该平面的交点,按比例 f/Zf/Zf/Z 缩放(相似三角形):
x′=fXZ,y′=fYZ x\’=f\\frac{X}{Z},\\qquad y\’=f\\frac{Y}{Z} x′=fZX,y′=fZY
第二步:物理坐标 → 像素。 像平面坐标的单位是 mm,图像存储的单位是像素,二者差一个比例;且像素 (0,0)(0,0)(0,0) 在图像角落而不在光轴落点。设像素物理边距 sx,sys_x,s_ysx,sy(mm/px),光轴与像平面交点——主点(principal point)——位于像素 (cx,cy)(c_x,c_y)(cx,cy),则
u=fsx⏟fxXZ+cx,v=fsy⏟fyYZ+cy u=\\underbrace{\\frac{f}{s_x}}_{f_x}\\frac{X}{Z}+c_x,\\qquad v=\\underbrace{\\frac{f}{s_y}}_{f_y}\\frac{Y}{Z}+c_y u=fx
sxfZX+cx,v=fy
syfZY+cy
直觉:fx=f/sxf_x=f/s_xfx=f/sx 是以像素为单位的焦距——小角度下 u−cx≈fxθu-c_x\\approx f_x\\thetau−cx≈fxθ,即「1 弧度张角 ≈ fxf_xfx 个像素」;cx,cyc_x,c_ycx,cy 只是「光轴落在图像第几列/行」。fxf_xfx 大 = 同一物体占更多像素 = 视野窄、放大倍率高。
写成矩阵形式(齐次坐标,两边同除 ZZZ):
[uv1]=1Z[fx0cx0fycy001]⏟K[XYZ] \\begin{bmatrix}u\\\\v\\\\1\\end{bmatrix}=\\frac{1}{Z} \\underbrace{\\begin{bmatrix}f_x&0&c_x\\\\0&f_y&c_y\\\\0&0&1\\end{bmatrix}}_{\\mathbf K} \\begin{bmatrix}X\\\\Y\\\\Z\\end{bmatrix}
uv1
=Z1K
fx000fy0cxcy1
XYZ
把 K\\mathbf KK 的线性部分剥掉,剩下的 zn=[xn,yn]⊤=[X/Z, Y/Z]⊤\\mathbf z_n=[x_n,y_n]^\\top=[X/Z,\\ Y/Z]^\\topzn=[xn,yn]⊤=[X/Z, Y/Z]⊤ 就是归一化坐标:虚拟像平面 Z=1Z=1Z=1(归一化平面,normalized plane)上的坐标,即「去掉这台相机自己的焦距和主点之后」的纯几何射线方向。于是完整投影链(与第 14 篇的五级链 hph_php
网硕互联帮助中心




评论前必须登录!
注册