Typst 文档 / stereo

stereo

" /ilm:2.1.0": cvimg(name) = image("../src/content/posts/CV/assets/" + name) camimg(name) = image("../src/content/posts/camera/" + name) tip(body) = { block( fill: rgb(" "), stroke: (left: 3pt + rgb(" ")), inset: 8pt, radius: (right: 4pt), width: 100%, body ) } warn(body) = { block( fill: rgb(" "), stroke: (left: 3pt + red), inset: 8pt, radius: (right: 4pt), width: 100%, body ) } formula(body) = { block( fill: luma(245), inset: (x: 12pt, y: 6pt), radius: 4pt, width: 100%, body ) } : ilm.with( title: [计算机视觉 开卷考试速查手册 — 立体视觉与 3D 篇], authors: "Biscuit · Alkaid", date: datetime(year: 2026, month: 07, day: 05), abstract: [ 本文档包含立体视觉与三维视觉内容,涵盖:立体视觉深度恢复( Z = f B/d )、对极几何、本质矩阵 E 与基础矩阵 F 、8 点法求解、立体校正与稠密匹配(SSD/NCC)、【补4】三角测量与张正友相机标定、3D 数据表示(点云/网格/隐式场)、NeRF 神经辐射场(体渲染方程)、3D 高斯泼溅(3DGS)、SfM 运动恢复结构。适合开卷考试快速查阅。 ], chapter-pagebreak: false, ) = 立体视觉深度恢复原理 深度恢复几何模型 假设两台相机水平放置,光轴平行,焦距 f ,基线 B (光心距离)。三维点 Q(X, Y, Z) 在左右像面的投影: [ x = f X/Z quad x' = f (B - X)/Z 视差: d = x' - x = (f B)/Z 深度: Z = (f B)/d ] [结论:]深度 Z 与视差 d 成 [反比](视差越大物体越近),与 f 和 B 成正比。 单目局限性 单目小孔成像 x = K [R|t] X 无法恢复深度,因为不同深度的点可能投影到同一像素坐标。双目通过引入第二个相机打破深度模糊。 = 对极几何(Epipolar Geometry) 基本元素 - [光心:] O 1, O 2 ,相机的光学中心。 - [基线:]连接 O 1 和 O 2 的直线。 - [极点(Epipole):] e 1 为 O 2 在左图的投影, e 2 为 O 1 在右图的投影。 - [极平面(Epipolar Plane):]空间点 X 与两光心决定的平面。 - [极线(Epipolar Line):]极平面与图像平面的交线 l 1, l 2 。 极线约束 若已知左图点 x 1 ,则右图对应点 x 2 必然在 [极线 l 2 ]上。搜索范围从 [2D 全图]缩小到 [1D 直线],极大提升效率。 (cvimg("image-9.png"), caption: [对极几何示意图 — 双目相机与空间点]) (cvimg("image-10.png"), caption: [对极几何元素:极点、极线、极平面]) = 本质矩阵与基础矩阵 本质矩阵(Essential Matrix, E ) 由共面条件推导极线约束 hat(x)^T E hat(x)' = 0 : [ E = [t] (times) R ] 其中 [t] (times) 为平移向量 t 的反对称矩阵, R 为旋转矩阵。 [性质:]需已知内参(归一化坐标);秩为 2;平移具有尺度模糊性(模长为 1)。 基础矩阵(Fundamental Matrix, F ) 将归一化坐标代回像素坐标,消去内参: [ F = K^(-T) E K'^(-1) 极线约束: x^T F x' = 0 秩约束: det(F) = 0 (自由度: 9 - 1 - 1 = 7 ) ] [性质:]无需已知内参;将左图像点映射到右图极线;精度不如 E 。 E vs F 对比 - [ F :]不需要内参,适用于粗匹配,精度不足。 - [ E :]需已知内参,可恢复旋转和平移,适用于精确三维重建。 基础矩阵与本质矩阵的转换 [ E = K^T F K' ] = 8 点法求解基础矩阵(含 RANSAC) 算法步骤 + 步骤 1(构方程组):对 8 组以上匹配点构建 A f = 0 ( f 为 F 的 9 个元素)。 + 步骤 2(SVD 初始解): A = U Sigma V^T , V 最后一列对应最小奇异值的向量为初始解。 + 步骤 3(强制秩约束):将 F ("alg") 的 SVD 分解中最小的奇异值 sigma 3 置为 0: F = U "diag"(sigma 1, sigma 2, 0) V^T 。 RANSAC 剔除异常值 + 随机抽取 8 对匹配点计算 F 。 + 代入剩余点计算误差 x^T F x' ,误差小于阈值为内点。 + 重复迭代,选内点最多的模型。 () = 立体图像校正与稠密匹配 (cvimg("image-11.png"), caption: [极线校正与立体匹配流程]) 立体校正(Stereo Rectification) 通过两个单应性矩阵将左右图像重投影,使 [极线水平对齐],对应点位于同一条水平扫描线上,搜索从 2D 降为 1D。 稠密匹配(基于相似性) 在左图沿水平极线取窗口 → 在右图同一水平线滑动 → 计算匹配代价。 [ SSD(平方差之和): sum (I 1 - I 2)^2 (越小越匹配) NCC(归一化互相关): sum (I 1 - bar(I) 1)(I 2 - bar(I) 2) / sqrt(sum (I 1 - bar(I) 1)^2 sum (I 2 - bar(I) 2)^2) (越接近 1 越匹配) ] 最终通过 Z = f B / d 恢复深度图。 = 【补4】三角测量与相机标定 [ [说明:]本章节为补充内容,PPT 中未涉及,但属于计算机视觉课程常见考点。 ] 三角测量(Triangulation) 已知两个相机的投影矩阵 P 1, P 2 及其匹配点对 (x 1, x 2) ,反算 3D 点 X 。 [线性方法(SVD 求解):] 从投影方程 x 1 = P 1 X , x 2 = P 2 X ,交叉积去齐次因子: [ x 1 times (P 1 X) = 0 quad x 2 times (P 2 X) = 0 ] 展开得 A X = 0 ( A 为 4 times 4 矩阵)。对 A 做 SVD, A = U Sigma V^T ,最小奇异值对应的 V 最后一列即为 X 的齐次坐标。 [几何意义:]两相机的反投影射线因噪声不一定完美相交时, X 为两条射线的"最近点"(最小化重投影误差)。 针孔相机模型(完整投影链) (camimg("小孔模型.png"), caption: [针孔相机成像模型 — 相似三角形关系]) 从世界坐标 X w 到像素坐标 (u,v) : [ s mat(u; v; 1) = K [R | t] mat(X w; Y w; Z w; 1) ] [内参矩阵 K (必考):] [ K = mat(f x, s, c x; 0, f y, c y; 0, 0, 1) ] - f x, f y :用像素单位表示的焦距( f x = f / p x , p x 为像素物理宽度)。 - c x, c y :主点坐标(光轴与像平面的交点,通常接近图像中心)。 - s :倾斜参数(通常为 0)。 [外参 [R|t] :]旋转矩阵 R + 平移向量 t ,将世界坐标变换到相机坐标。 张正友标定法(必考流程) 用 [平面棋盘格]采集多张不同位姿的图像,分为 [四步]: + [步骤 1 — 求单应性矩阵 H :]棋盘格为平面( Z w = 0 ),简化投影 s tilde(m) = K[r 1 r 2 t] tilde(M) ,每张图得一个 H 。 + [步骤 2 — 求内参 K :]利用旋转矩阵列的正交性约束 h 1^T K^(-T) K^(-1) h 2 = 0 及 h 1^T K^(-T) K^(-1) h 1 = h 2^T K^(-T) K^(-1) h 2 。至少 3 张图可解 K 。 + [步骤 3 — 求外参:]用 K 和 H 反算每张图的 R, t 。 + [步骤 4 — 求畸变系数:]考虑径向/切向畸变,做非线性优化(Levenberg-Marquardt)最小化重投影误差。 [径向畸变模型:] [ x c = x(1 + k 1 r^2 + k 2 r^4 + k 3 r^6) 其中 r^2 = x^2 + y^2 ] 畸变特征: k < 0 → 桶形畸变(广角); k > 0 → 枕形畸变(长焦)。 (camimg("相机畸变.png"), caption: [径向畸变示意:桶形畸变与枕形畸变]) = Lecture 13 核心速查(开卷考试直接抄用) [1. 视差与深度:] d = f B / Z , Z = f B / d ,深度与视差成反比 [2. 极线约束:]对应点必在极线上,2D→1D 搜索 [3. 本质矩阵 E :] E = [t] (times) R ,秩 2,需内参,可恢复旋转平移 [4. 基础矩阵 F :] F = K^(-T) E K'^(-1) , x^T F x' = 0 , det(F) = 0 ,自由度 7 [5. 8 点法:]SVD 解 A f = 0 ,最小奇异值置零强制秩约束 [6. 匹配代价:]SSD(平方差和)、NCC(归一化互相关,对光照鲁棒) () = 3D 数据表示分类 - [显式(Explicit):]直接定义空间位置或几何表面。如点云、网格、参数化曲面。 - [隐式(Implicit):]通过函数 f(x,y,z) = 0 描述几何。如体素、水平集、符号距离场、神经辐射场。 - [参数化:]通过有限控制参数定义形状。如贝塞尔曲面。 - [非参数化:]通过离散采样点逼近形状。 = 显式表示 点云(Point Clouds) 由三维坐标点 (x,y,z) 的集合组成,有时附带法向量(点元 Surfel)。优点:采集简单、灵活。缺点:噪声大、 [无拓扑结构]、难以渲染平滑表面。 网格(Mesh) 使用顶点、边和三角形面表示表面。拓扑操作:上采样(细分 Subdivision)、下采样(简化 Simplification)、正则化(改善网格质量)。 参数化曲线与曲面 [ 圆: bold(p)(t) = r (cos(t), sin(t)), quad t in [0, 2 pi) 球体: bold(s)(u, v) = r (cos(u) cos(v), sin(u) cos(v), sin(v)), quad (u,v) in [0, 2 pi) times [-pi/2, pi/2] ] - [贝塞尔曲线/曲面:]通过控制点定义光滑曲线/曲面,曲线被控制点"吸引"。 - [细分曲面:]从粗糙控制网格出发,递归细分生成光滑极限曲面。 显式特性 采样容易、存储位置关系、修改直观。缺点:细节受限于离散单元数量,内存占用大。 = 隐式表示 代数隐式 形状满足 f(x,y,z) = 0 (如球体 x^2 + y^2 + z^2 = 1 )。 [特性:]内外判断容易( f < 0 内部, f > 0 外部);采样困难;支持布尔操作(交/并/差);可实现平滑融合: [ phi = 1/k log(e^(k F 1) + e^(k F 2)) ] 体素(Voxel) 三维均匀网格,每格存储占据信息。类似 3D 像素。适合体积数据和医学成像。缺点:分辨率受限、存储量大。 隐式神经场(Neural Fields) 用 MLP 模拟连续函数,输入 3D 坐标(+ 观察方向),输出几何信息。 - [占据场(Occupancy Field):]输出点被占据的概率。 - [符号距离场(SDF):]输出点到最近表面的距离(内部为负,外部为正)。 优势:连续、无分辨率限制、可表达任意拓扑;缺点:渲染慢。 = NeRF(神经辐射场) 核心思想 NeRF(ECCV 2020)用于 [新视图合成]。输入多张 2D 图像,通过优化神经场渲染任意新视角。 输入:5D 坐标 (x,y,z,theta,phi) → 输出:RGB 颜色 bold(c) 和体积密度 sigma 。 [网络结构:]位置编码 → MLP → 密度 sigma + 特征;特征 + 方向编码 → MLP → RGB( [密度仅与位置相关,颜色与位置和方向相关])。 体渲染方程 [连续积分公式:] [ C(bold(r)) = integral (t n)^(t f) T(t) sigma(bold(r)(t)) bold(c)(bold(r)(t), bold(d)) dif t ] 其中透明度项 T(t) 为光线不碰到粒子的概率: [ T(t) = exp(-integral (t n)^t sigma(bold(r)(s)) dif s) ] [离散数值近似:] [ hat(C)(bold(r)) = sum (i=1)^N T i (1 - exp(-sigma i delta i)) bold(c) i T i = exp(-sum (j=1)^(i-1) sigma j delta j) ] 其中 delta i = t (i+1) - t i 为采样点间距。 粗-细采样 - [粗采样:]沿射线均匀采样 64 点,获粗略密度分布。 - [细采样:]根据密度分布做重要度采样(逆变换),额外采样 128 点,共 192 点恢复高频细节。 = 3D 高斯泼溅(3DGS) 核心思想 3DGS(2023)使用 [各向异性 3D 高斯分布(椭球)]表示场景,实现 [实时渲染]。 高斯体属性 - 位置 (mu x, mu y, mu z) 、协方差矩阵(拉伸与旋转)、不透明度 alpha 、球谐系数(方向相关颜色)。 渲染流程 + 从多视角图像用 SfM 初始化稀疏点云。 + 将 3D 高斯体投影到 2D 图像平面(椭圆光斑)。 + 按深度排序,通过 [Alpha 混合]合成像素颜色。 + 计算损失反向传播,优化高斯体属性;自适应 [分裂或克隆]高斯体以适应高频细节。 NeRF vs 3DGS - [质量:]3DGS 通常超越或持平 NeRF。 - [速度:]3DGS 100+ FPS(实时),NeRF 数秒/帧。 - [训练:]3DGS 分钟级,NeRF 小时/天级。 - [表示:]NeRF 隐式连续场,3DGS 显式离散高斯体集合。 = 七十三、SfM(运动恢复结构) 从无序 2D 照片反推相机位姿并生成 [稀疏 3D 点云]: + 特征检测与提取(SIFT)。 + 特征匹配。 + 几何验证与相机模型匹配(对极几何)。 + 稀疏重建:三角测量 + [光束法平差(Bundle Adjustment)]。 + 稠密重建(可选):MVS 多视图立体。 = 七十四、3D 数据集(代表性) - [ShapeNet:]300 万 3D 模型,51.3k(ShapeNetCore),55 类。 - [Objaverse / Objaverse-XL:]80 万 1000 万 3D 物体。 - [Object Scan:]10933 个 RGBD 样本,441 个高质量扫描。 - [MVImgNet:]数十万组多视角图像序列。 = 七十五、Lecture 13 3 核心速查(开卷考试直接抄用) [1. 显式 vs 隐式:]显式(点云/网格/参数化)直接定义几何;隐式( f(x,y,z)=0 )通过函数描述 [2. 参数化曲线:] bold(p)(t) = r(cos t, sin t) ,曲面 bold(s)(u,v) = r(cos u cos v, sin u cos v, sin v) [3. 隐式神经场:]占据场(概率)、SDF(带符号距离) [4. NeRF 体渲染:] C(bold(r)) = integral T(t) sigma bold(c) dif t , T(t) = exp(-integral sigma dif s) ,离散 hat(C) = sum T i (1 - e^(-sigma i delta i)) bold(c) i [5. 3DGS:]3D 高斯椭球 + Alpha 混合渲染,100+ FPS,分钟级训练 [6. SfM 流程:]SIFT → 匹配 → 几何验证 → 三角测量 + Bundle Adjustment → 稀疏点云