计算机视觉课程总结
第一章 绪论
数字图像处理 vs. 计算机视觉
• 图像处理: 关注底层操作,输入为图像,输出仍为图像。
• 计算机视觉: 包含中层、高层分析与理解,输入为图像,输出可以是图像或表征属性。
• 关系: 图像处理是计算机视觉的子集。计算机视觉是一项采用机器学习进行图像处理和模式识别的技术,是人工智能的重要分支。
常见的挑战场景
• 视角变换
• 非刚性形变
• 遮挡问题
• 光照变化
• 快速移动 (导致运动模糊)
• 类间与类内差异
第二章 图像直方图和平面几何变换
图像直方图
• 定义: 图像直方图 h ( g ) h(g) h(g) 定义为数值为 g g g 的像素值的个数。其统计意义为图像中随机一个像素具有像素值 g g g 的概率。
• 计算复杂性: O ( N ) O(N) O(N),与像素个数成正比。
• 累积直方图: H ( g ) H(g) H(g) 表示满足条件 x ≤ g x \le g x≤g 的像素个数。
图像直方图变换
• 基于线性函数的点变换:
• 调整亮度:增大/减小。
• 调整对比度:增大/减小。
• 对比度翻转。
• 输出需要截断,保持范围在 [0, 255]。
• 图像像素值的概率密度函数变换: 映射前和映射后区域面积相等,即像素个数相同。
• 直方图均衡化:
• 目标: 使得直方图的每个柱条内的高度,即对应每个像素值的像素个数相等, h b ( b ) = 常数 h_b(b) = \text{常数} hb(b)=常数 (const)。
• 通过求解微分方程得到变换函数,使输出直方图均匀分布。
图像几何变换
• 几何变换 T T T: 将图像从一个坐标系映射到另一个坐标系。
• 平移变换: 图像在平面上移动。
• 仿射变换: 线性变换加上平移,包括缩放、旋转、剪切和反射。
• 图像插值:
• 最近邻插值: 取新坐标位置在空间上最近的邻居的像素值作为其像素值。
• 双线性插值: 按顺序在 x 和 y 方向分别进行线性插值,新分配的值是 4 个相邻坐标像素值的加权。
• 图像扭曲:
• 前向扭曲映射: 为源图像中的每一个像素计算其在目标图像中的位置及对应的像素值。可能导致目标图像中有部分像素没有值。
• 反向扭曲映射: 为目标图像中的每一个像素在源图像中找到其相应的位置及对应的像素值。常用反向扭曲,因为可以确保目标图像所有像素都有值。
第三章 图像滤波-边缘检测
线性滤波器
• 二维离散卷积: 翻转 -> 移位 -> 相乘 -> 相加。
• 二维离散互相关: 移位 -> 相乘 -> 相加。
• 卷积性质: 具有交换律、结合律、分配律、倍乘性。
• 可分离卷积核: 可以分解为两个一维卷积核,提高计算效率。
• 平滑滤波器:
• 类型: 盒式滤波器、二项滤波器。
• 性质: 滤波器所有元素都为正值;所有元素之和为 1;平滑程度和滤波器尺寸成正比;相当于一个低通滤波器。
• 梯度滤波器:
• 性质: 滤波器元素有正有负;元素和为 0。
• 一维信号一阶梯度近似: 步长为 1 或 2。
• 二维图像的梯度: g x , g y g_x, g_y gx,gy。梯度的幅值和方向。
• 常用梯度滤波器:
• 索贝尔算子 (Sobel Operator): 3x3 窗口计算梯度,是二项滤波器和梯度滤波器的组合。
• 拉普拉斯算子 (Laplacian operator): 二阶导数,更准确地边缘检测。
边缘检测
• 什么是边缘?: 图像中发生像素值较剧烈变化的区域。
• 为什么会产生边缘?: 图像中物体、材质、光照等的变化会导致像素值剧烈变化。
• 噪声污染后的边缘: 为了增强对噪声的鲁棒性,通常先进行高斯平滑,即卷上高斯核卷积。
• 边缘算子属性: 边缘定位、边缘强度(幅度)、边缘方向。
• 优秀的边缘算子特性: 高检测率、准确定位、噪声鲁棒。
• 基于梯度提取边缘: 通过计算梯度幅值和方向来检测边缘。
• Canny 边缘检测器:
- 用高斯导数滤波器卷积图像得到 x 和 y 方向梯度。
- 计算梯度的幅值和方向。
- 对梯度幅值图像非最大值抑制。
- 对梯度幅值图像进行滞后阈值化: 先用较大阈值得到强边缘,然后用较小阈值得到部分弱边缘,使得强边缘附近的弱边缘也被保留。
第四章 模板匹配和拟合
模板匹配
• 方法:
- 零均值模板滤波 (Zero-Mean Filter): 速度最快,但误匹配多。
- 距离平方和 (Sum of Squared Distance, SSD): 速度第二快,但对光照不鲁棒。
- 归一化互相关 (Normalized cross-correlation): 速度最慢,但准确且对光照鲁棒。
拟合 (Fitting)
• 好的拟合模型应满足:
• 相似性度量应反映任务本身的目标。
• 对离群点和噪声有鲁棒性。
• 拟合方法: 最小均方拟合、鲁棒最小均方拟合、迭代最近点。
• 最小均方直线拟合:
• 斜截式 ( y = m x + b y = mx + b y=mx+b): 无法描述竖直的直线,也不能很鲁棒地衡量点和直线的拟合程度。
• 一般式 ( a x + b y + c = 0 ax + by + c = 0 ax+by+c=0): 能够描述竖直直线,对点到直线的距离衡量更鲁棒。当 a 2 + b 2 = 1 a^2+b^2=1 a2+b2=1 时,点 ( x i , y i ) (x_i, y_i) (xi,yi) 到直线的距离为 ∣ a x i + b y i + c ∣ |ax_i + by_i + c| ∣axi+byi+c∣。
• 优化目标的解对应的是 A T A A^TA ATA 的最小特征值的特征向量 (瑞利熵)。
• 最小均方拟合对噪声的鲁棒性: 会受到离群点的严重影响,使得拟合的直线发生较大偏差。
• 随机抽样一致性 (Random Sample Consensus, RANSAC): - 随机采样 s s s 个点。
- 根据假设点拟合直线。
- 计算误差函数。
- 选出误差较小的在群点 (根据距离阈值 t t t 判断)。
- 如果有 d d d 或者更多在群点,接受该拟合直线,并用所有在群点再次拟合。
• 超参数: 初始点数 s s s (拟合模型所需最少点数)、距离阈值 t t t (使得在群点个数达到一定比例)、采样轮数 N N N。
霍夫变换 (Hough Transform)
• 早期投票策略: 将参数空间离散化成多个箱 (bin);对图像中的每个特征点,为每个对该特征点有贡献的箱投一票;找到有最多票数的箱。
• 直线霍夫变换参数空间表示: 极坐标 ( r , θ ) (r, \theta) (r,θ)。
• 图像空间的一个点对应参数空间中的一条正弦曲线。
• 图像空间的一条直线对应参数空间中的多条正弦曲线的交点。
• 圆霍夫变换参数空间表示:
• 半径 r r r 未知时,图像空间的一个点对应参数空间中的一条圆锥曲线。
• 半径 r r r 已知时,图像空间的一个圆,对应着参数空间中多个圆的交点。
第五章 特征点及其描述子
特征点检测 (Keypoint Detection)
• 角点检测 (Corner Detection):
• 角点定义: 在一个以角点为中心的局部窗口内沿着任意方向移动都会给亮度带来显著变化。
• 角点的数学化表示: 利用二阶矩矩阵 H H H 来描述窗口内部亮度变化。椭圆的长短轴长度由二阶矩矩阵的特征值决定,椭圆的角度由特征向量决定。
• 角点分类: 用二阶矩矩阵的特征值或哈里斯角点响应函数 R = det ( H ) − k ( trace ( H ) ) 2 R = \det(H) - k(\text{trace}(H))^2 R=det(H)−k(trace(H))2 对图像中的点进行分类。
• 流程总结:
- 计算图像梯度 (如 Sobel 算子)。
- 根据图像梯度为每个点计算二阶矩矩阵特征值或 Harris 角点响应函数。
- 寻找具有较大响应的点 ($ \lambda_{\min} $ 或 R R R 大于阈值)。
- 选择那些 $ \lambda_{\min} $ 或 R R R 是局部最大值的点作为关键点 (非最大值抑制)。
• 角点性质: 旋转不变性、亮度值偏移变换不变性 (图像整体变换),但空间尺度不具有不变性。
• 尺度不变特征变换 (Scale-Invariant Feature Transform, SIFT):
• 基本思想: 用一个突出区域滤波器 (blob filter) 对图像在多个尺度上进行卷积并在尺度空间寻找滤波器响应的极值。
• 高斯拉普拉斯 (Laplacian of Gaussian, LoG): LoG 响应随着高斯平滑尺度的增加而减小;当 blob 尺度和 LoG 高斯平滑尺度接近时,其响应最大。
• 高斯差分算子 (Difference of Gaussian, DoG): 可以替代 LoG,计算复杂度更低。
特征描述子 (Keypoint Descriptor)
• 好的特征描述子的性质:
• 鲁棒性: 对多种几何变换和光照变换具有一定的不变性。
• 独特性: 一个区域的特征描述子和其他区域能很好地区分开。
• 紧致性: 仅用较低维的向量就可以对该特征进行鲁棒和独特的描述。
• 计算高效: 可以快速地计算特征描述子并进行高效的比较。
• SIFT 描述子:
• 根据尺度空间中局部极值所在的位置和尺度,以及其所在的邻域范围内的梯度计算得到的一个 128 维向量。
• 匹配原则: 对于图 1 中的兴趣点 q q q,在图 2 中找到和其的描述子欧式距离最近的两个兴趣点 p 1 p_1 p1 和 p 2 p_2 p2;验证最近距离是否小于某个指定的阈值 T T T;验证最近距离是否显著小于次近距离。
• 二进制描述子:
• 生成可以高效计算且易于比较的二进制串。
• 生成步骤: 1. 为兴趣点选择一个邻域图像块;2. 在图像块内选择一系列像素点对;3. 对于每一对像素点,比较它们之间的亮度;4. 把所有比较值拼接起来得到一个二进制串。
• 比较: 通过汉明距离 (Hamming Distance) 快速比较。
• 注意事项: 邻域内像素对要用同样的选择方式;像素对的选择顺序也要保持一致。
第六章 运动估计
运动估计
• 运动场 (motion field): 三维相对速度矢量在二维图像平面上的投影。图像点的速度和场景点的距离及运动方向有关。
• 光流 (Optical Flow): 图像中亮度模式产生的运动。光流由箭头表示,箭头长度表示光流的幅度,箭头方向表示光流的方向。
• 运动场和光流: 理想情况下相等,但有时不等价。例如,固定光源旋转球体有运动场但无光流;固定球体移动光源无运动场但有光流 (理发店三色柱错觉)。
光流估计 (Optical Flow Estimation)
• 任务定义: 给定两个连续的帧,计算对应点之间的位移。
• 关键假设:
• 亮度一致性: 物体上同一个点在不同帧上的亮度是相同的。
• 运动幅度小: 物体上的点在两帧内的运动较小。
• 空间连续性: 一个点的运动和其周围点的运动相近。
• 光流基本方程: I t + ∇ I ⋅ [ u , v ] T ≈ 0 I_t + \nabla I \cdot [u, v]^T \approx 0 It+∇I⋅[u,v]T≈0。对于每个像素点有一个方程,两个未知数 ( u , v ) (u, v) (u,v)。沿着垂直梯度的方向 (即边缘方向) 的运动分量无法被观测 (孔径问题)。
• 孔径问题 (Aperture Problem):
• 条纹的方向和孔径的形状决定了感知到的运动方向,是条纹终止处的主导方向,即孔径的最长边。
• 当条纹终止处没有主导方向 (如孔径为圆) 时,由条纹的方向决定感知到的运动方向。
• Lucas-Kanade 方法:
• 求解欠定问题的核心想法: 为每个像素点找到更多方程。
• 空间一致性约束: 假设每个像素点的邻域具有相同的运动 ( u , v ) (u, v) (u,v)。通过最小均方算法求解超定方程。
• 方程可解条件: A T A A^TA ATA 是可逆的; A T A A^TA ATA 的所有特征值都不能很小; A T A A^TA ATA 是良态的 (条件数不能太大)。
• A T A A^TA ATA 是二阶矩矩阵,因此适合跟踪的点即对应于检测到的角点。
第七章 相机基础
数字相机的基本工作原理
• 相机用于生成二维图像,最小单元是像素。
• 图像中的每个像素对应三维世界中的某个特定方向。
• 相机度量某一时刻每个像素的光照强度/颜色,并保存在图像中对应像素位置处。
• 像素值衡量了某一时刻来自某一方向上的光照强度。
数字相机的基本组成元素
• 镜头 (Lens)、光圈 (Aperture)、快门 (Shutter)、感光元件 (Sensor)、模数转换器 (A/D Converter)、后处理单元 (Post-Processing Units)。
图像传感器
• 将光学影像转换成电子信号的设备。
• 常见类型: CCD 和 CMOS。
• 彩色图像生成: 采用 RGB 颜色模型。
• 色彩分辨方式:
• 3CCD 传感器: 将入射光采用分光器进行分光。
• 拜尔 (Bayer) 传感器: RGB 滤色器排列在感光元件之上形成马赛克彩色滤色阵列,通过去马赛克内插恢复彩色图像,容易引起摩尔纹、拉链噪声等失真。
快门 (Shutter)
• 通过调整快门速度 (Shutter Speed) 控制光线照射感光元件的时间,即曝光时间 (Exposure Time)。
• 更长的曝光时间 → 更多的入射光 → 图像亮度更亮。
• 更长的曝光时间容易引起运动模糊 (长曝光摄影)。
• 分为卷帘快门和全局快门。
卷帘与全局快门的区别
• 卷帘快门: 采用逐行扫描方式曝光,同一行像素同时记录,不同行像素曝光时间点不同,当相机或物体快速移动时会引起畸变。
• 全局快门: 所有像素在同一时间曝光,不会造成卷帘快门式的畸变,更适用于 3D 重构任务 (如 SLAM),造价更昂贵。
针孔相机 (Pinhole Camera)
• 假设小孔是一个点,从物体的每个点发出的光线只有一条能通过小孔。
• 用于近似图像的形成过程。
• 缺点与改进: 图像较锐化但光线少需更多曝光时间;扩大孔径可减少曝光时间但图像模糊。解决方法是用镜头 (透镜) 替换针孔。
薄透镜相机 (Thin Lens Camera)
• 对针孔相机的近似。
• 理想情况下物点、像点、光心三点共线。
• 光线与光心距离越远,误差越大。
• 采用光圈屏蔽距离光心较远的光线,控制误差。
光圈 (Aperture) 与景深 (DoF)
• 光圈限制了光线与光心的最大距离,即小孔的孔径。
• 景深: 相机焦平面前后相对清晰的成像范围,描述在空间中可以清楚成像的距离范围。
• 光圈越大,景深越浅。
像差 (Aberrations)
• 真实成像过程中 3D 场景到 2D 图像的投影关系与理想薄透镜相机模型中的投影关系的偏差。
• 表现为图像的形变与失真,有多种具体形式:
• 畸变: 直线变曲线。
• 球面像差: 透镜球面折射率不均导致成像模糊。
• 色相差: 透镜折射率随光的波长而变化。
• 像散: 水平和竖直方向的焦点不同。
• 光晕: 图像外围部分的亮度或饱和度比中心区域低。
第八章 齐次坐标与相机内外参
透视投影及其性质
• 针孔模型将 3D 场景投影至 2D 平面,是典型的透视投影。
• 性质:
• 直线投影后仍是直线 (Line-preserving)。
• 物体投影后的大小与原大小不一定相同,与距离成反比,近大远小 (Not length-preserving)。
• 投影前后角度也会发生变化 (Not angle-preserving)。
• Not angle-preserving 导致平行线投影后不再平行,同一方向上的所有平行线相交于一点,即消逝点 (Vanishing point)。
• 数学推导: 3D 坐标 ( X c , Y c , Z c ) (X_c, Y_c, Z_c) (Xc,Yc,Zc) 到 2D 坐标 ( x i , y i ) (x_i, y_i) (xi,yi) 变换关系: x i = f X c Z c , y i = f Y c Z c x_i = f \frac{X_c}{Z_c}, y_i = f \frac{Y_c}{Z_c} xi=fZcXc,yi=fZcYc。
齐次坐标系的概念
• 齐次 (Homogenous) 的概念: 对于表征 x ~ \mathbf{\tilde{x}} x~,如果 x ~ = λ x ~ \mathbf{\tilde{x}} = \lambda \mathbf{\tilde{x}} x~=λx~ 对于任意 λ ≠ 0 \lambda \ne 0 λ=0 都成立,则该表征方式是齐次的。
• 齐次坐标系采用 n + 1 n+1 n+1 维向量表示笛卡尔坐标系中的 n n n 维向量,并将第 n + 1 n+1 n+1 维元素设为 1。
• 笛卡尔坐标系 ↔ \leftrightarrow ↔ 齐次坐标系转换:
• 笛卡尔坐标系点 ( x , y ) → (x, y) \rightarrow (x,y)→ 齐次坐标 ( x , y , 1 ) (x, y, 1) (x,y,1)。
• 笛卡尔坐标系中无穷远点 → \rightarrow → 齐次坐标 ( x , y , 0 ) (x, y, 0) (x,y,0)。
• 齐次坐标 ( u , v , w ) (u, v, w) (u,v,w) 且 w ≠ 0 → w \ne 0 \rightarrow w=0→ 笛卡尔坐标 ( u / w , v / w ) (u/w, v/w) (u/w,v/w)。
点与直线的齐次坐标形式
• 笛卡尔坐标系中的 2D 点可以通过补 1 得到齐次坐标形式。
• 笛卡尔坐标系中 2D 直线方程 a x + b y + c = 0 ax + by + c = 0 ax+by+c=0 的系数 [ a , b , c ] [a, b, c] [a,b,c] 满足齐次性。
• 2D 直线可以用齐次坐标表示: l ~ = [ a , b , c ] T \mathbf{\tilde{l}} = [a, b, c]^T l~=[a,b,c]T。
• 点在直线上: x ~ ⋅ l ~ = 0 \mathbf{\tilde{x}} \cdot \mathbf{\tilde{l}} = 0 x~⋅l~=0。
• 求解两条直线的交点: 已知直线 l ~ , m ~ \mathbf{\tilde{l}}, \mathbf{\tilde{m}} l~,m~,交点的解 x ~ = l ~ × m ~ \mathbf{\tilde{x}} = \mathbf{\tilde{l}} \times \mathbf{\tilde{m}} x~=l~×m~ (叉积)。
• 求解通过两点的直线: 已知两点 x ~ , y ~ \mathbf{\tilde{x}}, \mathbf{\tilde{y}} x~,y~,直线的解 l ~ = x ~ × y ~ \mathbf{\tilde{l}} = \mathbf{\tilde{x}} \times \mathbf{\tilde{y}} l~=x~×y~。
• 齐次坐标系下直线与点的对偶性: 二维笛卡尔坐标系的点、线都可用三维齐次坐标表示,求解方法统一且形式简洁。
平移变换
• 2D 平移变换: 笛卡尔坐标系 x ′ = x + t x' = x + t x′=x+t;齐次坐标系 x ~ ′ = ( I t 0 T 1 ) x ~ \mathbf{\tilde{x}}' = \begin{pmatrix} I & t \ 0^T & 1 \end{pmatrix} \mathbf{\tilde{x}} x~′=(It 0T1)x~。
• 3D 平移变换: 齐次坐标系 x ~ ′ = ( I t 0 T 1 ) x ~ \mathbf{\tilde{x}}' = \begin{pmatrix} I & t \ 0^T & 1 \end{pmatrix} \mathbf{\tilde{x}} x~′=(It 0T1)x~。
旋转 + 平移 (刚性/欧式变换)
• 2D 旋转 + 平移: 笛卡尔坐标系 x ′ = R x + t x' = R x + t x′=Rx+t;齐次坐标系 x ~ ′ = ( R t 0 T 1 ) x ~ \mathbf{\tilde{x}}' = \begin{pmatrix} R & t \ 0^T & 1 \end{pmatrix} \mathbf{\tilde{x}} x~′=(Rt 0T1)x~。
• 3D 旋转 + 平移: 齐次坐标系 x ~ ′ = ( R t 0 T 1 ) x ~ \mathbf{\tilde{x}}' = \begin{pmatrix} R & t \ 0^T & 1 \end{pmatrix} \mathbf{\tilde{x}} x~′=(Rt 0T1)x~。
• 旋转矩阵 R R R 为正交阵 ( R R T = I , det R = 1 R R^T = I, \det R = 1 RRT=I,detR=1)。
反变换与级联变换
• 几何变换的齐次坐标表示: x ~ ′ = H x ~ \mathbf{\tilde{x}}' = H \mathbf{\tilde{x}} x~′=Hx~。
• 反变换: x ~ = H − 1 x ~ ′ \mathbf{\tilde{x}} = H^{-1} \mathbf{\tilde{x}}' x~=H−1x~′。
• 多个变换级联: x ~ ′ = H 2 H 1 x ~ \mathbf{\tilde{x}}' = H_2 H_1 \mathbf{\tilde{x}} x~′=H2H1x~。
• 级联变换不满足交换律: H 2 H 1 x ~ ≠ H 1 H 2 x ~ H_2 H_1 \mathbf{\tilde{x}} \ne H_1 H_2 \mathbf{\tilde{x}} H2H1x~=H1H2x~。
相机成像所涉及的坐标系
• 世界坐标系: 描述 3D 场景中物体的坐标,三维物理单位。
• 相机坐标系: 以相机中心为原点的坐标系,三维物理单位。
• 图像坐标系: 图像平面上的坐标系,以图像左上角作为原点,二维像素单位。
• 成像过程实质: 从世界坐标系到图像坐标系的映射,映射过程采用相机外参 (Extrinsic) 和内参 (Intrinsic) 描述。
• 世界坐标系 → \rightarrow → 相机坐标系 (外参)。
• 相机坐标系 → \rightarrow → 图像坐标系 (内参)。
相机内外参数
• 相机外参: 描述世界坐标系到相机坐标系的旋转矩阵 R ∈ R 3 × 3 R \in \mathbb{R}^{3 \times 3} R∈R3×3 和平移向量 T ∈ R 3 × 1 T \in \mathbb{R}^{3 \times 1} T∈R3×1。共 6 个自由度。
• P ~ ( c ) = ( R T 0 1 ) P ~ ( w ) \mathbf{\tilde{P}}^{(c)} = \begin{pmatrix} R & T \ 0 & 1 \end{pmatrix} \mathbf{\tilde{P}}^{(w)} P~(c)=(RT 01)P~(w)。
• 相机内参: 描述相机坐标系到图像坐标系的变换关系,由矩阵 K K K 表示。
• p ~ ( i ) = K ( I 0 ) P ~ ( c ) \mathbf{\tilde{p}}^{(i)} = K \begin{pmatrix} I & 0 \end{pmatrix} \mathbf{\tilde{P}}^{(c)} p~(i)=K(I0)P~(c),其中 K = ( α 0 c x 0 0 β c y 0 0 0 1 0 ) K = \begin{pmatrix} \alpha & 0 & c_x & 0 \ 0 & \beta & c_y & 0 \ 0 & 0 & 1 & 0 \end{pmatrix} K=(α0cx0 0βcy0 0010)。
• 从世界坐标系到图像坐标系: p ~ ( i ) = K ( R T ) P ~ ( w ) = K ( R P ( w ) + T ) \mathbf{\tilde{p}}^{(i)} = K \begin{pmatrix} R & T \end{pmatrix} \mathbf{\tilde{P}}^{(w)} = K(R P^{(w)} + T) p~(i)=K(RT)P~(w)=K(RP(w)+T)。
第九章 相机标定与对极几何
相机标定 (Camera Calibration)
• 通过实验方法计算和估计相机内外参数的过程。
• 应用: 矫正透镜畸变 (内参标定);建立相机成像几何模型,实现三维重构。
• 意义: 相机标定是关键环节,标定结果精度直接影响后续工作准确性,是后续工作的前提。
常见相机标定方法总结
• 直接线性法 (DLT):
• 已知量/所需工具: 至少 6 个观测点的世界坐标和图像坐标。
• 求解量: 内参与外参。
• 基本思路: 将相机内外参融合为 3 × 4 3 \times 4 3×4 矩阵 M M M,共 11 个未知数。寻找至少 6 对观测点,列出至少 12 个关于 M M M 的方程。利用 SVD 分解求解矩阵 M M M,并将其拆分为两个子矩阵。对 3 × 3 3 \times 3 3×3 方阵 M 1 M_1 M1 进行 QR 分解,求出相机内参矩阵 K K K 与旋转矩阵 R R R,计算平移向量 t = K − 1 M 2 t = K^{-1} M_2 t=K−1M2。
• 张氏标定法:
• 已知量/所需工具: 尺寸已知的标定板,采用角点检测算法检测观测点位置,需要至少 3 张图像,每张图至少包含 4 个观测点。
• 求解量: 内参。
• P3P: (考试不做要求)
对极几何的基本设定
• I 1 , I 2 I_1, I_2 I1,I2 是同一场景拍摄的两张图像, O 1 , O 2 O_1, O_2 O1,O2 是拍摄时的相机中心。
• 相机的相对运动/姿态为 R , t R, t R,t。
• 空间中的点 P P P 在两图中投影为 p 1 , p 2 p_1, p_2 p1,p2。
• 极平面 (Epipolar Plane): 平面 O 1 O 2 P O_1 O_2 P O1O2P。
• 基线 (Baseline): O 1 O 2 O_1 O_2 O1O2。
• 极点 (Epipole): 基线与 I 1 , I 2 I_1, I_2 I1,I2 的交点 e 1 , e 2 e_1, e_2 e1,e2。
• 极线 (Epipolar Line): 极平面与两张图像的交线 ( p 1 e 1 , p 2 e 2 p_1 e_1, p_2 e_2 p1e1,p2e2)。
极线的物理意义
• 在仅已知投影点 p 1 p_1 p1 坐标的情况下,无法获得 3D 点 P P P 的具体位置,只能推断出点 P P P 在投影射线 O 1 p 1 O_1 p_1 O1p1 上。
• 直线 O 1 p 1 O_1 p_1 O1p1 在图像 I 2 I_2 I2 上的投影就是极线 p 2 e 2 p_2 e_2 p2e2。
• 空间中投影在图像 I 1 I_1 I1 上 p 1 p_1 p1 位置的点在图像 I 2 I_2 I2 上对应点位于直线 p 2 e 2 p_2 e_2 p2e2 上。
• 图像 I 1 I_1 I1 上的一个点 p 1 p_1 p1 与图像 I 2 I_2 I2 上的一条直线 p 2 e 2 p_2 e_2 p2e2 对应。
本质矩阵与基础矩阵
• 本质矩阵 (Essential Matrix) E = t × R E = t^\times R E=t×R: 描述了一个点在两个相机坐标下的坐标关系。
• P 2 T E P 1 = 0 P_2^T E P_1 = 0 P2TEP1=0。
• 基础矩阵 (Fundamental Matrix) F = K − T t × R K − 1 = K − T E K − 1 F = K^{-T} t^\times R K^{-1} = K^{-T} E K^{-1} F=K−Tt×RK−1=K−TEK−1: 描述了一个点在两个相机拍摄的图像中像素坐标位置的关系。
• p ~ 2 T F p ~ 1 = 0 \tilde{p}_2^T F \tilde{p}_1 = 0 p~2TFp~1=0。
• 以上两式称为对极约束。
相机相对位姿估计与对极约束
• 给定两张图 8 个以上对应点,可以通过 8 点法求解线性齐次系统求出基础矩阵 F F F。
• 如果相机已进行标定 (即 K K K 已知),可以求出本质矩阵 E E E,并进一步求出两个相机的相对位姿 R , t R, t R,t。
• 如果已知两个相机的相对位姿 R , t R, t R,t,可以求出基础矩阵 F F F,进而获得极线 p 2 e 2 p_2 e_2 p2e2 的位置。
• p 1 p_1 p1 点在图像 I 2 I_2 I2 上的对应点搜索空间可以从整幅图像缩小到极线上。
第十章 深度学习与图像分类
视觉算法设计流程的演化
• 传统视觉算法: 采用手工设计特征与浅层模型。手工设计特征依赖专业知识,泛化性能差。
• 深度学习: 改变了这一状况,为视觉问题提供了端到端的解决方案。设计网络 (特征 + 模型) 训练模型。
深度网络模型的特性
• 深度模型更适合处理大数据,随训练数据规模增大,性能不断提升。
• 经过大规模数据集的训练,深度特征具有更强的泛化性能 (可迁移到其他任务)。
• 层次化的特性:
• 浅层: 学习到图像的底层 (Low-level) 特征,如颜色、边缘、纹理。
• 深层: 学习到图像的高层 (High-level) 特征,如物体位置、语义类别。
全连接网络 (多层感知机 Multi-Layer Perceptron)
• 单层感知机/全连接层: 线性变换后接非线性激活单元。
• 非线性激活单元: ReLU, Leaky ReLU, PReLU, ELU 等。
卷积层
• 利用“卷积核/滤波器”,以滑动窗形式对整张图像一个区域一个区域地扫描,获得新的图像特征。
• 局部连接: 每个神经元只和上一层的一小部分神经元相连,显著降低网络参数量。
• 权值共享: 不同位置处的神经元共享同一组权重 (滤波器),进一步降低网络参数量。
• 平移不变性: 滤波器可捕获与图像空间位置无关的区域特征。
提升感知野的方法
• 步幅大于 1 的卷积层: 成倍缩小卷积输出的空间尺寸,缩小倍数等于 Stride。
• 池化层: 使用某一位置相邻区域的总体统计特性作为该位置的输出,实现特征图降采样。
• 空洞卷积: 在卷积核中均匀插入“空洞”,在保持计算复杂度不变的同时提升感受野。
提升分辨率的方法
• 反卷积: 卷积的逆过程,会造成棋盘格效应。
• Resize Conv: Resize 常采用最近邻/双线性插值,避免棋盘效应。
• PixelShuffle: 用特征维度换取空间分辨率,输入尺寸 H × W × r 2 C → H \times W \times r^2C \rightarrow H×W×r2C→ 输出尺寸 r H × r W × C rH \times rW \times C rH×rW×C。
• Un-Pooling: 最大池化的逆过程,非最大值用 0 填充。
批量归一化 (Batch Normalization, BN)
• 训练阶段: 计算 mini-batch 的均值 μ b \mu_b μb 和方差 σ b 2 \sigma_b^2 σb2,进行归一化并进行缩放和平移 y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β。同时更新全局均值和方差的滑动平均。
• 测试阶段: 使用训练阶段估计的全局均值和方差进行归一化。
• 优点: 降低模型性能对参数初始化方式的依赖;降低梯度爆炸风险,可以适当增加学习率;增加模型泛化性能 (类似 Dropout)。
• 缺点: 性能依赖于 batch size 大小,batch size 较小时,均值方差计算不稳定,收敛较慢,模型性能变差。
其他归一化层
• Layer Norm (LN): 以一个样本为单位计算均值、方差,并进行归一化。
• Instance Norm (IN): 以一个样本的一个特征通道为单位,计算均值、方差,并进行归一化。
• Group Norm (GN): 以一个样本的多个通道为单位,计算均值、方差,并进行归一化。
• 与 BN 的差异: 训练和测试阶段计算方式相同,不受 batch size 的影响。
自注意力 (Self-Attention) 与 Transformer
• Transformer 最核心的模块是自注意力机制模块,通过将输入特征间的相关性作为权重,对输入特征进行加权,实现全局关系建模。
• 计算流程:
- 计算 Query ( Q Q Q), Key ( K K K), Value ( V V V) 矩阵。
- 计算权重 A = softmax ( Q K T d ) A = \text{softmax}(\frac{QK^T}{\sqrt{d}}) A=softmax(dQKT)。
- 计算注意力机制输出 O = V A O = VA O=VA。
常见损失函数与优化器
• 网络参数学习步骤: 前向传递计算损失函数 → \rightarrow → 后向传递计算梯度 → \rightarrow → 用梯度更新参数。
• 损失函数种类:
• 回归问题: L1 范数 ∣ ∣ x − y ∣ ∣ 1 ||x - y||_1 ∣∣x−y∣∣1, L2 范数 ∣ ∣ x − y ∣ ∣ 2 2 ||x - y||_2^2 ∣∣x−y∣∣22。
• 分类问题: 交叉熵 − 1 n ∑ i y i log p i -\frac{1}{n} \sum_i y_i \log p_i −n1∑iyilogpi (标签 y i y_i yi 采用 one-hot 表示)。
• 优化器: 多数均为基于梯度的优化器。常用的有 Momentum, Adam 等。
Swin Transformer 的主要特性
• 提出 Window based Self-Attention: 将输入图像分成互不重叠的 Window,自注意机制在每一个 Window 中独立计算,从而降低计算量。
• 引入 CNN 层次化特征提取方式,通过不断提升窗口尺度,构建层次化 Transformer。
• 为解决跨窗口间的信息传播问题,进一步提出 Shifted Window based Self-Attention。
第十一章 语义分割与实例分割
语义分割 (Semantic Segmentation)
• 定义: 一种密集标注任务,为图像中每个像素赋予一个语义标签。
• 标签: 可以是一通道的 ( H × W × 1 H \times W \times 1 H×W×1),每个未知处的取值代表对应像素的类别;也可以采用 one-hot 形式 ( H × W × C H \times W \times C H×W×C),每个位置处保存对应像素属于 C C C 种类别的概率。
• 评价指标: 平均交并比 (mIoU)。
• I o U = T P T P + F P + F N IoU = \frac{TP}{TP+FP+FN} IoU=TP+FP+FNTP。
• T P TP TP: 正确地判断为某类别的像素个数。
• F P FP FP: 错误地判断为某类别的像素个数。
• F N FN FN: 错误地判断为属于其他类别的像素个数。
• 针对每一类单独计算 IoU,再对所有类别的 IoU 求平均,得出算法整体的交并比。
• 语义分割方法: 全卷积网络 (Fully Convolutional Networks, FCN),通常包含上采样结构 (通过拼接 concatenation、相加等操作进行融合)。
实例分割 (Instance Segmentation)
• 定义: 面向可数物体类别,既要判断像素的语义类别,又要预测其所属的实例标签。
• 可以将实例分割看作目标检测与语义分割的结合,其中目标检测算法以矩形框的形式预测实例标签,在此基础上对每一个矩形框内像素进行语义分割。
• Mask R-CNN 与 Faster R-CNN 的对比:
• Faster R-CNN 是物体检测的主流方法,Mask R-CNN 主要用于实例分割。
• Faster R-CNN 采用 RoI Pooling 提取候选框特征,并归一化到固定尺寸。
• Mask R-CNN 采用 RoI Align 技术提取候选框特征,RoI Align 利用双线性插值拟合候选框内特征,较 RoI Pooling 更为精准。
• Faster R-CNN 在候选框特征后构建了分类和目标框回归两个分支。
• Mask R-CNN 在此基础上增加了 Mask Prediction 分支,用于预测实例的分割结果。
第十二章 图像恢复
图像恢复 (Image Restoration)
• 任务定义: 从退化图像中恢复原始清晰图像。
• 通用简单退化模型: Y = H X + N Y = HX + N Y=HX+N,其中 Y Y Y 是退化观测图像, H H H 是退化变换矩阵, X X X 是原始清晰图像, N N N 是加性噪声。
• 图像去噪 (denoising): 当 H H H 是单位阵时, N N N 是一种加性噪声。
• 加性噪声类型: 拍摄噪声 (服从泊松分布)、读取噪声 (服从高斯分布)、暗电流噪声 (和器件本身有关)。
• 图像去模糊 (deblurring): H H H 是模糊核的矩阵表示,可以是与位置无关的,也可以是与位置有关的。
• 图像超分辨率 (Super-Resolution): H H H 是集合了模糊和下采样两种操作的矩阵表示。
• 病态问题: 很多图像恢复问题是病态问题 (ill-posed problem),即解不存在、不唯一或对输入数据敏感。
• 常用评价标准:
• 峰值信噪比 (PSNR)。
• 结构相似性 (SSIM)。
图像超分辨率 (Super-Resolution)
• 任务: 从低分辨率图像恢复原始的高分辨率图像,产生逼真的、有细节的图像,忠实于低分辨率图像的内容。
• 传统方法: 插值方法、基于外部字典学习的方法、基于内部字典学习的方法 (自相似性)。
• 基于深度学习的方法:
• 常用损失函数:
• 保真度 (Fidelity) 损失函数: L1 损失和 L2 损失。
• 感观损失函数:
• 感知损失函数 (Perceptual Loss): 对两幅图的特征图计算 L2 损失。
• 纹理匹配损失函数 (Texture matching loss): 对两幅图的 Gram Matrix 计算 L2 损失。
• 对抗损失函数 (adversarial loss)。
• 真实数据集采集: 通过变焦获取同一场景在不同焦段下的图片,并把相对应的区域裁剪出来作为不同分辨率的图像对。
第十三章 深度估计
深度 (Depth) 的概念
• 深度指场景中物体表面到相机的距离,即图中 P ( c ) P^{(c)} P(c) 点的 Z ( c ) Z^{(c)} Z(c) 坐标。
• 采用深度图 (Depth Map) 表征,图中每点的取值代表对应像素的深度值。
深度的度量方式与设备
• 结构光:
• 原理: 将特殊结构图案投影到空间物体表面上,用另一个相机观察在三维物理表面成像的畸变情况,进行图像匹配比较并计算出深度。
• 特点: 主动光探测方案;技术成熟、便携、低延时,适用于较近距离。
• Time-of-Flight (ToF):
• 原理: 向目标连续发送光脉冲,用传感器接收从物体返回的光,通过探测光脉冲的往返飞行时间测距。
• 特点: 主动光探测方案;适用于较远距离,传感器复杂、成本高、深度图稀疏。
• 双目视觉技术:
• 原理: 利用两个标定好的 RGB 摄像头采集图像,通过匹配对应点,获取的二维图像像素点的深度。
• 特点: 被动光探测方案;精度依赖于双目匹配算法,易受到光照变化等因素影响,适用于较近距离。
机器视觉中的深度估计任务
• 深度估计: 设计计算机视觉算法,从输入图像估计出深度图。
• 分类: 根据输入图像的数目分为单目深度估计 (Monocular)、双目深度估计 (Binocular)、多视角立体视觉 (Multi-View Stereo, MVS)。
• 优点: 软件算法的深度估计方案成本较低。
• 主要应用: 自动驾驶、机器人导航、3D 重构、增强现实、图像渲染与生成。
单目深度估计
• 目标: 利用能够反映深度的线索/提示信息 (Cues),从单幅图像中预测出对应的深度图。
• 对弱纹理等挑战区域具有更强的鲁棒性。
• 单目深度估计本身具有较强挑战性。
单目深度线索
• 近大远小: 根据常见物体在图像中的大小判断相对位置/距离。
• 近距离的区域更为清晰,纹理也较为丰富。
• 被遮挡的背景物体距离较远,前景距离较近。
• 在远离相机的过程中,3D 空间的平行线在 2D 图像上的投影逐渐接近,直至相交于消失点。
• 通过光影、明暗与纹理变化,可以推断出物体的三维形状。
单目深度估计的基本方法
• 常见模型结构: 卷积神经网络、全卷积神经网络、Transformer 等。
• 通过优化预测与真值深度图的 L1/L2 损失,实现网络训练。
基于多任务学习的单目深度估计
• 网络同时预测输入图像的语义分割、深度图、法线方向图、边界图等。
• 通过多任务学习的方式利用任务间的相关性。
弱监督学习/相对单目深度估计
• 解决问题: 单目深度估计真实值不易获取、场景单一。
• 弱监督学习: 人工标注稀疏深度真值 (如随机选两点,人工标出前后顺序),利用 Ranking Loss 进行弱监督网络训练。
• 相对深度估计: 通过双目或多目算法计算相对深度图 (Relative Depth Maps),作为单目深度估计的真值。
• Ranking Loss 解释: 利用 z z z 为预测深度值, r r r 为真值标签 (点 i i i 深度大于点 j j j 深度时 r = 1 r=1 r=1,小于时 r = − 1 r=-1 r=−1,近似相同时 r = 0 r=0 r=0) 来实现深度估计网络的弱监督学习。
常见的深度估计评价指标
• 绝对误差: RMSE、RMSE(log)。
• 相对误差: Abs Rel、Sq Rel。
• 精度: Pn (n=1,2,3)。
双目/多目深度估计
• 原理: I 1 , I 2 I_1, I_2 I1,I2 是同一场景拍摄的两张图像, O 1 , O 2 O_1, O_2 O1,O2 是拍摄时的相机中心,相机的相对运动/姿态 R , t R, t R,t 已知,空间中的点 P P P 在两图中投影为 p 1 , p 2 p_1, p_2 p1,p2。
• p 1 p_1 p1 在 I 2 I_2 I2 中的对应点落在极线 p 2 e 2 p_2 e_2 p2e2 上,双目/多目深度估计转换为沿极线的像素匹配问题。
• 特殊校准后的视差: 对于已校准的两个相机 (极线水平且在同一行),视差 d d d 与深度 Z Z Z 成反比。
• 对于未校准相机,采用 Plane Sweep 方式构建 Cost Volume 估计深度。
• 视差: 同一点在两幅校准后图像中的水平平移量 x l − x r x_l - x_r xl−xr。