绪论
计算机视觉
视觉:人类观察世界、认知世界的重要手段。人类获得的信息约有75%来自视觉系统
- 视感觉(眼):
- 光的物理特性
- 光刺激视觉感受器官的程度
- 光作用于视网膜后经视觉系统加工而产生的感觉
- 视知觉(脑):人们从客观世界接收到视觉刺激后如何反应以及反应采用的方式
- 视感觉(眼):
计算机视觉:用计算机实现人类的视觉功能
- 研究方法:
- 仿生学的方法:参照人类视觉系统的结构原理
- 工程方法:实现人类视觉系统的功能
- 研究目标:
- 建立计算机视觉来完成各种视觉任务
- 加深对人类视觉机理的掌握和理解
重要解决问题:
- 视觉信息的表达问题
视觉信息的加工问题
计算机视觉与其他学科的关系
- 研究方法:
图像理解
机器视觉
模式识别
人工智能
计算机图形学
机器人
心理学、神经科学
计算机视觉的应用领域
工业视觉
人机交互
安全监控
军事公安
遥感测绘
视觉导航
生物医学
虚拟现实
图像自动解释
计算机视觉的理论框架
马尔视觉理论框架
- 马尔视觉表示框架
- 基元表达(2-D表达):图像特征的集合
- 2.5-D表达:为适应计算机的运算功能而提出的
- 3-D表达:以物体为中心的表达形式
- 理论不足:
- 框架的输入是被动的,给什么图像,处理什么图像
- 框架的加工目的不变,总是恢复场景中物体的位置和形式
- 框架的信息加工过程自下而上,缺乏高层知识的指导作用
- 单向流动,没有反馈
改进方向
- 主动视觉
- 有目的的视觉
- 高层知识
反馈控制
计算机视觉的挑战
- 马尔视觉表示框架
视点变化
视觉亮度
比例对比
图像畸变
背景杂波噪声
对象类内变化
图像局部模糊
图像处理
图像基础
数字图像:把连续的模拟图像在坐标空间XY和性质空间F都离散化了的图像
通常用f(x, y)表示数字图像中像素(x, y)的性质
像素邻域:图像中相邻像素之间的关系
4-邻域:$N_4(p)$
对角邻域:$N_D(p)$(Diagonal:对角线,斜线)
8-邻域:$N_8(p)$
## 基元检测(特征检测)
### 边缘检测
#### 边缘与导数
####
阶梯状边缘
脉冲状边缘
屋顶状边缘
如上图所示,对边缘进行检测,即要找到边缘变化大的地方,即通过导数(微分)计算图像边缘
一阶导数算子(梯度算子)
一阶微分算子给出梯度,所以也称梯度算子,分别计算X和Y方向的两个偏导分量
Robert交叉算子
Prewitt算子
Sobel算子
二阶导数算子
二阶导数算子模板要求
中心像素的系数为正
中心像素邻近像素的系数为负
所有系数总和为0
Laplacian算子
马尔算子:在拉普拉斯算子的基础上实现的边缘检测算子
计算步骤:在每个分辨率上进行如下计算
- 用一个2-D的高斯平滑模板与原图卷积
- 计算卷积后图像的拉普拉斯值
- 检测拉普拉斯图像中的过零点作为边缘点
高斯加权平滑函数:$h(x, y) = e^{- \frac{x^2 + y^2}{2\sigma^2}}$
特征点检测(角点检测)
角点
通常是目标轮廓上曲率的局部极大值,对掌握目标的轮廓特征具有决定作用
通常认为角点是二维图像亮度变化剧烈的点,或两条线的交叉处
Susan算子
USAN原理
USAN原理(核同值区域):即与核有相同值的区域,可简称为核同值区
角点与边缘检测
模板:
检测方式:
- 核比较:将模板内的每个像素的灰度值与核的灰度值进行比较
- $x_0, y_0$:中心核灰度值,$x, y$:其他像素灰度值,$T$:阈值
- 计算输出的游程和:
- 判断是否为边缘区域:将游程和S与固定的几何阈值G进行比较得到边缘相应的$R(x_0, y_0)$
- 核比较:将模板内的每个像素的灰度值与核的灰度值进行比较
##### 特点
检测时不需要计算微分,有噪声时性能较好
对边缘的响应随着边缘的平滑或模糊而增强
能提供不依赖于模板尺寸的边缘精度
控制参数的选择很简单,任意性较小
Harris算子
海森矩阵
角点判定:根据海森矩阵M的特征值$\lambda_1, \lambda_2$大小关系判断角点
- $\lambda_1 \gg \lambda_2 \approx 0$:x方向梯度信息,y方向没有梯度,是边缘
- $\lambda_2 \gg \lambda_1 \approx 0$:y方向梯度信息,x方向没有梯度,是边缘
- $\lambda_1 \approx 0, \lambda_2 \approx 0$:x,y方向没有梯度,是平坦区域
$\lambda_1 \gg 0, \lambda_2 \gg 0$:x, y方向梯度信息,是角点
响应函数
响应函数:$R = det(M) - k(trace(M))^2$
- $det(M) = \lambda_1\lambda_2 = AC - B$
- $trace(M) = \lambda_1 + \lambda_2 = A + C$
- k:通常取0.04~0.06
角点判定:
- $R \gg 0$ :角点
- $|R| \approx 0$:平坦区域
$R \ll 0$:边缘
Sift算子
Sift算子原理
人眼对世界感知的特性:
- 近大远小:近处看感觉大,远处看感觉小
- 模糊(粗细):近处能看到更多物体的细节,远处只能看到物体的轮廓
图像高斯金字塔:用来模拟人眼对世界感知的特性
图像高斯金字塔
使用采样法(上采样、下采样)模拟图像的远近程度
- 比如对于一副图片,对于每一行,隔开一个像素点取一个像素。最后得到的图像就是原图像的行和列各$\frac{1}{2}$
- 上采样:简单理解就是把图片进行放大
- 下采样:简单理解就是把图片进行缩小
通过高斯核对图像的平滑处理模拟图像的粗细程度
特点
尺度不变性,当旋转图像,改变图像亮度,移动拍摄位置时,仍可得到较好的检测效果
常见的用于电子稳像、全景图拼接
立体视觉
相机几何成像模型
小孔成像(线性相机成像模型)
为什么要小孔:增加一个障碍物阻止大多数的光线,从而减少成像模糊
成像模型:任何点P在图像中的投影位置p,为小孔中心O与P点的连线OP与图像平面的交点
小孔的选择:
- 小孔越小,阻止大多数光线的进入,提取成像分辨率
- 当小孔小到一定程度,由于衍射效应的增强,成像能力反而变弱
增加凸透镜:
- 通过光心的光线不会偏离
平行光线会聚于焦距f
成像模型的坐标系统
世界坐标系XYZ:真实世界中一点为世界原点,选择方向为XYZ轴确立世界坐标系
相机坐标系xyz:以相机为中心建立的相机坐标系统
图像平面坐标系x'y':成像平面上的坐标系统
一般取图像平面与相机坐标系的xy平面平行,且x轴与x',y与y'重合
由三角形比例关系知$\frac{x}{X} = \frac{\lambda}{\lambda - Z},\frac{y}{Y} = \frac{\lambda}{\lambda - Z}$,所以$x = \frac{\lambda X}{\lambda - Z},y = \frac{\lambda Y}{\lambda - Z}$
相机的内参数
- 在相机坐标系和图像坐标系中,一般而言,取它们的x轴和y轴平行。然后我们需要进行相机坐标系和图像坐标系的坐标系转换
- u,v:以像素为坐标的图像坐标系
- x,y:以物理单位表示的图像坐标系
- 每一个像素在X轴与Y轴方向上的物理尺寸为dX,dY
- 由图像和上述关系可得xy和uv之间关系如下:
$u = \frac{X}{dX} + u_0 \
v = \frac{y}{dY} + v_0$
- 将上式转换为齐次方程组形式,可表示为:
- 因为:
- 将u,v带入上式中,得:
- 一般的,我们常把$M_1$矩阵称为相机的内参数
- 相机的内参数:
- f:焦距,单位毫米
- dx:像素x方向宽度,单位毫米,1/dx:x方向1毫米内有多少个像素
- f/dx:使用像素来描述x轴方向焦距的长度
- f/dy:使用像素来描述y轴方向焦距的长度
u0,v0:主点的实际位置,单位也是像素
相机的内参数是相机自身的参数信息,同一厂家出厂的同一型号的相机,因为工艺流程,所以一般是相同的
相机的畸变系数
- 光学畸变:由于相机的物镜系统设计、制作、装配所引起的像素点偏离其理想位置的点位误差
- 畸变分类:
- 径向畸变:像素点沿径向偏离理想位置(圆)
- 切向畸变:垂直于径向畸变的畸变
- 畸变模型:
- 径向畸变
- 偏心畸变(径向+切向畸变):光学中心与几何中心不一致
- 薄棱镜畸变(径向+切向畸变):镜头设计缺陷和安装加工误差造成的畸变
- 镜头畸变模型的综合表示方法:
- 径向畸变
- 畸变的矫正:
- x,y:理想像素坐标
- $\hat{x}, \hat{y}$:实际像素坐标
$\Delta_{\hat{x}},\Delta_{\hat{y}}$:畸变偏差
相机的外参数
在相机的内参数中,我们讨论了相机坐标系和图像坐标系的关系,其中空间点W表示在相机坐标系和图像坐标系中的空间点,但在实际的图像采集过程中,我们往往希望得到从世界坐标映射到图像坐标的关系,以此来研究真实世界的视觉信息。所以在这里我们需要将空间点W转换为世界坐标系中的点来探索世界坐标与像素坐标的关系。
- 通过如上关系式,我们可以完成对世界坐标和相机坐标的转换,其中$M_2$是相机的外参数矩阵。
- 相机外参数包括旋转矩阵R和平移向量t
- 给定空间中一点p,在世界坐标中,p点坐标为p(x, y, z),在相机坐标中为p'(x', y', z'),那么$p' = Rp + t$
由于世界坐标是由使用人员自己设置的。所以一旦世界坐标发生变化,相机的外参数就发生变化,相机的外参数本质上反映的是相机相对于世界坐标的位置关系。
成像模型的坐标系统之间的关系
在计算机视觉中有世界坐标、相机坐标、图片坐标三个坐标。成像系统的研究是希望找到世界坐标与图片坐标之间的关系。借图片坐标来研究真实世界的信息。
$s[u, v, 1]^T$:图像坐标
$M_1$:相机内参数,图像坐标与相机坐标的桥梁
$M_2$:相机外参数,相机坐标与世界坐标的桥梁
$X_w$:世界坐标
相机标定
计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体。
摄像机参数:空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。
在大多数条件下,摄像机参数必须通过实验与计算才能得到,这个过程被称为摄像机标定。
标定过程就是确定摄像机的几何和光学参数,摄像机相对于世界坐标系的方位。标定精度的大小,直接影响着计算机视觉 的精度。因此,只有做好了摄像机标定工作,后续工作才能正常展开。
传统标定方法的特点
需要已知结构信息的标定物(棋盘格)
可以使用于任意的摄像机模型,标定精度高
在实际应用中很多情况下无法使用标定块
DLT标定法(直线线性变换)
直接线性变换是将像点和物点的成像几何关系在齐次坐标下写成透视投影矩阵的形式
- s:未知尺度因子
- (u, v, 1):图像坐标系的齐次表示
- $P_{3 \times 4}$:透视投影矩阵
- $(X_w, Y_w, Z_w)$:世界坐标系
- s与(u, v, 1),P与(X,Y,Z)乘开
- 根据表达式3消去1和2中的s
如上所示,根据世界坐标中的一个点,我们得到了两个含P的方程式,当已知N个空间点时,我们能得到2N个相关的方程式:KP = 0,其中P为透视投影矩阵
相机标定的任务就是寻找合适的P,使得$||KP||$最小。
张氏标定法(棋盘格标定法)
针对单目相机,由于单个相机无法真实的获取深度信息。所以在单目相机中我,我们只能获得到世界坐标对应的x,y坐标。
定模板平面在世界坐标系Z=0 的平面上
- A:相机的内参数矩阵
- $[r_1, r_2, r_3]$:相机坐标系相对于世界坐标系的旋转矩阵
t:相机坐标系相对于世界坐标系的平移向量
算法描述
打印一张模板并贴在一个平面上
从不同角度拍摄若干张模板图象
检测出图象中的特征点
求出摄像机的内参数和外参数
求出畸变系数
优化求精
双目立体视觉
单目立体视觉的缺陷:光线OP上的任意点都投影在图像平面的p点上,深度感知存在歧义。所以,单目立体视觉只能反映世界坐标的x,y信息,无法反映z信息。
针对单目相机无法获得深度信息,采用双目相机能有效解决无法获得z信息的问题。
平行光轴立体视觉系统
特点:
- 左右相机的光轴平行
- 短基线
- 较大的公共视野区域
- 深度误差较大
- 长基线
- 公共视野区域较小
- 深度误差(不确定区域)较小
将光心$O_l$移动到$O_r$处,根据三角形比例关系可以得到$\frac{x_l - x_r}{B} = \frac{f}{Z}$,其中$d = x_l - x_r$称为视差,进一步可以得到$Z = \frac{fB}{d}$
根据深度信息,我们可以得到(以左光心为主光心:
- $x_l = f\frac{x}{Z}$
- $x_r = f\frac{x - B}{Z}$
$y_l = y_r = f\frac{y}{Z}$
双目横向会聚模型
特点:
- 两个单目系统绕各自中心相向旋转
- 会聚角度为$\theta$
- 公共视野区域大
- 由上图可知,根据三角形比例关系得:$\frac{\lambda}{x_1} = \frac{Xcos\theta}{r - Xsin\theta}$
由上图可知,根据三角形比例关系得:$\frac{\lambda}{x_2} = \frac{Xcos\theta}{r + Xsin\theta}$
联立可得:$r = \frac{B}{2sin\theta}$,可得$Z = Rcos\theta + \lambda cos\theta = \frac{Bcos\theta}{2sin\theta} + \frac{2x_1x_2sin\theta}{d}$
双目纵向模型
特点:
- 两个摄象机是沿光轴线依次排列
- 基本排除由于遮挡造成的3-D空间点仅被一个摄象机看到的问题
- 公共视场的边界很容易确定
由三角形比例关系可得:$\frac{X}{-x_1} = \frac{Z - \lambda}{\lambda},\frac{X}{-x_2} = \frac{Z - \lambda - \Delta\lambda}{\lambda}$
根据上式可推导出:$X = \frac{\Delta Z x_1x_2}{\lambda (x_1 - x_2)}, Z = \lambda + \frac{\Delta Z x_2}{x_2 - x_1}$
通用双目立体视觉
特点:
- 摄像机位置无特别要求
- 令左摄像机所在坐标系为世界坐标系:$o_l-x_ly_lz_l$,对应的图像平面坐标系为:$O_l - X_lY_l$,焦距为$f_l$
- 令右摄像机所在坐标系为世界坐标系:$o_r-x_ry_rz_r$,对应的图像平面坐标系为:$O_r - X_rY_r$,焦距为$f_r$
由摄像机透视变换模型可得:
- 左摄像机:
- 右摄像机:
- 左摄像机坐标系与右摄像机坐标系之间的位置关系可通过空间变换矩阵$M_{lr}$表示:
- 两摄像机成像平面点之间的对应关系为:
双目立体视觉——对极几何、消失点
- 对极几何,一定是对二幅图像而言。它是图像平面与以基线为轴的平面束的交的几何(这里的基线是指连接摄像机中心的直线)。以上图为例:对极几何描述的是左右两幅图像(点x和x'对应的图像)与以CC'为轴的平面束的交的几何!
- 对极平面束:以基线为轴的平面束,下图给出了包含两个平面的对极平面束
- 对极平面:任何包含基线的平面都称为对极平面,或者说是对极平面束中的平面,例如,下图中的平面$\pi$就是一个对极平面
对极点:摄像机的基线与每幅图像的交点,即上图中的点e和e'
对极线:对极平面与图像的交线;例如,上图中的直线l和l'
消失点:
- 当你沿着铁路线去看两条铁轨,沿着公路线去看两边排列整齐的树木时,两条平行的铁轨或两排树木连线交与很远很远的某一点,这点在透视图中叫做消失点
平行线的视觉相交点
立体匹配
概述
立体匹配:为左图像的每个像素点(xl, yl),在右图像中搜索对应点
匹配基元:参与立体匹配,计算相似测度的基本单元
- 常用的匹配基元:
- 像素
- 单个像素存在相似性歧义
- 需结合一行或整幅图像的所有像素同时完成匹配
- 局部窗口区域
- 具有较好的局部独特性
- 隐含假定:窗口内所有像素应能表征中心像素
- 特征
- 具有较好的独特性
- 稀疏且不均匀分布
- 像素
- 常用的匹配基元:
立体匹配分类:
- 根据立体匹配过程中涉及的像素范围:
- 局部立体匹配
- 通常以基于局部窗口的立体匹配方法为主
- 匹配基元:局部窗口
- 全局立体匹配
- 匹配过程中,求解一行或整幅图像中所有像素的相似测度和最大/最小
- 匹配基元:像素
- 局部立体匹配
根据立体匹配过程中采用的匹配基元:
- 致密匹配
- 搜索每个像素的对应点,构建致密视差图
- 匹配基元:像素
稀疏匹配
- 仅为特征搜索对应点,构建稀疏的视差图
匹配基元:特征
立体匹配
基于区域的立体匹配
- 致密匹配
- 根据立体匹配过程中涉及的像素范围:
以基准图的待匹配点为中心创建一个窗口,以待匹配图像中某一像素点为中心创建同样大小的滑动窗口,将该窗口内相邻像素的亮度值分布来表征中心像素
比较待匹配图中每个滑动窗口内容与基准图参考窗口内容的相似程度
搜索范围:对于已校正的双目立体图像对,则在扫描线上搜索
相似性测度:
- 距离测度:像素亮度差的绝对值和(SAD)、像素亮度差的绝对平方和(SSD)
- 相关系数:归一化互相关(NCC)、ZNCC
- 非参数化测度:RANK、Census
挑战:
- 重复场景
- 无纹理区域
- 遮挡
- 图像噪声、不同增益、不同对比度等等...
- 透视畸变
- 镜面反射
尺度、旋转变化
基于特征的立体匹配
主要思想:在左右两幅图像中寻找匹配特征
常用特征:
- 边缘点
- 线段
- 角点
匹配算法
- 在立体图对中抽取特征
- 定义相似度
- 利用相似度和极线几何寻找匹配
经典特征提取方法:
- SUSAN角点提取
- harris角点提取
SIFT、SURF尺度不变特征提取
其他约束
为克服匹配过程中存在的歧义性,需采用一些常用的匹配约束:
- 极线约束:匹配点必须在极线上
- 相似性约束:左、右图像的匹配点应具有相似的亮度或颜色。即,假定目标表面符合朗伯漫反射表面。
- 视差范围约束:仅在视差搜索内搜索。
- 唯一性约束:一幅图像中的一个像素,在另一幅图像中最多只有一个对应点像素。
- 顺序约束/单调性约束:若参考图中A点在B点的左边,则另一幅图像中A点匹配点也在B点匹配点的左边。
- 平滑性约束/一致性约束:除了遮挡或视差本身不连续区域外,小邻域范围内视差值变化量应很小或相似。换言之视差曲面应是分段连续的。
互对应约束:又称左右一致性,若以左图为基准图,左图上一像素点 pl 的搜索到右图上对应点像素为 pr ;那么若以右图为基准图,像素 pr 的对应点也应该是左图上的像素点 pl 。该约束常用于遮挡区的检测。
基于深度学习的图像匹配
MatchNet
运动结构恢复和同步定位与测绘
运动结构恢复(SFM)
SFM:
- 输入:带有匹配点的图像
- 输出:
- 3D位置每对匹配点
- 摄像机的参数
- 目标:最小化重投影误差
增量式SFM:
- 双目重建
- 添加相机通过3D-2D相关性交会
- 不断添加相机
- 运行时间分析:
- 重复进行BA
- 大部分时间花费在BA
- 结果分析:
- 当求解新增相机的参数时,一些相机固定
- 最后需同时求解所有相机
全局SFM:
- 求解成对的摄像机的运动(本质矩阵分解)
- 从输入的成对的运动,同时注册所有摄像机
BA所有摄像机
同步定位与测绘(SLAM)
SLAM:实现真正全自主移动机器人的关键
要想真正实现机器人,机器人至少需要知道以下几件事情:
- 我在哪里?
- 我周围的环境是什么样子?
- 我怎样到达指定地点(充电器)?
SLAM是当某种移动设备(如机器人)从一个未知环境里的未知地点出发,在运动过程中通过传感器观测定位自身位置、姿态、运动轨迹,再根据自身位置进行增量式的地图构建,从而达到同时定位和地图构建的目的。
定位和建图是两个相辅相成的过程,建图可以提供更好的定位,而定位也可以进一步扩建地图。
SLAM非常强调未知环境,也是自主移动机器人的核心技术。
在SLAM中非常强调移动、未知环境,需要可携带式的传感器。
特别的,当谈论视觉SLAM,主要是指如何用相机解决定位和建图问题。
SLAM中使用的相机比单反摄像头更加简单,是以一定速率拍摄周围的环境,形成一个连续的视频流。按照工作方式的不同,相机可以分为单目相机、双目相机和深度相机。
SLAM设备:
- 单目相机
- 双目相机
- 深度相机(RGB-D)
SLAM流程:
- 传感器信息读取
- 视觉里程计:关心的是相邻图像之间的相机运动
- 后端优化:指处理SLAM过程中噪声的问题,后端的任务主要是滤波和非线性优化算法
- 回环检测:主要解决位置估计随时间漂移的问题
建图:指构建地图的过程。地图是对环境的描述
- 度量地图
拓扑地图
运动分析(视频)
概述
运动分析主要针对视频进行展开处理(视频本质上就是一帧一帧连续运动的图片)
视频为时间序列上捕获的图像帧,可表示为图像数据空间(x, y) 和时间(t)的函数I(x, y, t)
应用:
- 运动检测
- 跟踪定位
- 视频压缩
- 视频去噪
- 立体景物重建和行为/场景理解
- 改进视频质量
运动的分类:
- 根据参考坐标系分类
- 摄像机禁止,景物运动
- 摄像机运动,景物静止
- 摄像机、景物都运动
- 根据研究、应用中的前景、背景分类
- 前景运动(目标运动、局部运动):目标在场景中运动
- 背景运动(全局运动、摄像机运动):摄像机的运动造成的图像帧内所有像素的整体移动
- 根据参考坐标系分类
运动的表达方式:
- 运动矢量场表达
- 运动既有大小也有方向,所以使用矢量来表示
- 运动直方图表达
- 目标运动比摄像机运动更不规范
- 只考虑运动方向
- 统计运动方向的分布
运动轨迹表达
- 目标在运动过程中的位置信息
由一系列关键点和一组在关键点之间进行插值的函数组成
全局运动检测
基于图像差的运动检测
- 运动矢量场表达
图像差的计算:
- 对时间上相邻的两帧图像求差
- 将图像中运动目标的位置和形状变化凸显出来
- 像素图像差的计算:
- 似然比:
基于模型的运动检测
- 通过对摄像机运动进行参数化建模来表示全局运动
- 参数估计:
- 从相邻帧中选取足够多的观测点,并进行图像匹配,得到匹配点对$(x_t, y_t)$和$(x_{t+1}, y_{t + 1})$
- 利用参数拟合求取摄像机运动模型参数
或
基于块的运动估计
基本思路:
- 将图像分成一个个规则的图像块
- 对每个块在视频序列中进行块匹配
- 模型参数估计
块匹配原则:
- 归一化互相关函数
- 均方误差
- 绝对值误差
匹配像素数
运动目标的检测与分割
基于背景差的运动检测
基本思路
- 初始背景建模
- 对视频中每一帧使用运动序列每一帧更新背景,将该帧作为背景
- 使用当前帧减去背景
- 当差异大于某一阈值,则该像素为前景
基于单高斯模型的方法:假设像素点的值在视频序列中服从一个高斯分布
- 计算N 帧图像序列中同一位置处的像素值的均值$\mu$和方差$\sigma$,作为单高斯背景模型
- 将待检测帧像素值f(x,y)与背景模型均值做差,进行比较:$|f(x, y) -\mu| < 3\sigma$
- 用当前像素值更新单高斯模型的均值$\mu$和方差$\sigma$
基于视频初始化方法:
- 以单高斯模型为基础
- 相对于单高斯背景模型,在模型更新时,考虑用来更新的像素是否为背景像素
- 使用像素值相对稳定的像素序列对背景建模、更新
基于高斯混合模型的方法:
- 基本思路:
- 对各个像素分别使用多个高斯模型来建模,即高斯混合模型
- 有的模型代表背景、有的模型代表前景
- 根据模型更新次数,赋予每个模型一个重要性权重
- 根据像素值所属的模型更新背景模型参数及权重
- 根据多高斯模型的参数确定当前像素属于背景还是前景
- 一个像素在时刻t具有灰度$f(t),t=1,2,…,N$,用K个高斯分布混合建模:$N(\mu_k, \sigma_k^2)(k = 1, 2, \cdots, K)$,并为每个高斯分布分配一个权重$w_k$
- 当读入一帧图像时:
- 若像素值落在其背景模型的某个高斯分布的均值的2.5倍方差内,就认为属于该高斯分布,更新该高斯分布的参数及其对应的权值
- 若未找到匹配,则对应最低权值的高斯分布用一个均值为f(t)的高斯分布代替
- 判断像素属于背景还是前景:对的多高斯模按照$\frac{w_k(t)}{\sigma_k(t)}$进行排序,对应值较高的为背景,较低的为前景。
- 模型更新:
- 基本思路:
- 权重更新:
基于运动估计的运动目标分割
运动场:3D场景运动在图像上的投影
估计方法:
- 直接的方法:
- 根据像素的时空亮度变化直接估计图像运动
- 稠密运动场(对外形变化敏感)
- 适合运动较小的视频
- 基于特征的方法:
- 提取视觉特征(角点、纹理),并在时间序列上跟踪——SIFT特征
- 稀疏的运动场(鲁棒的跟踪方法)
- 适合图像运动较大的情况
基于光流的运动估计:
- 光流:
- 观察动态物体时在视网膜上产生连续的光强变化,如同光的“流动”
- 在视频序列运动估计中,观察到的二维运动
- 视频序列空间坐标关于时间的变化率——像素的瞬时速度矢量
- 亮度守恒假设:运动物体点的亮度(或色度)在其运动轨迹上保持不变,变化的是物体的位置
光流方程:
光流方程的求解补充信息:
- 相邻像素具有相同的运动速度
若存在噪声,方程不能为零
- 通常采用最小化光流方程的误差来施加
- 光流约束:
- 光流方程的要求:亮度函数可微分
- 光流:
- 基于网格的运动估计:
- 基本思想:
- 将视频图像分割为多个区域
- 每个区域对应一个特定的运动
- 为每个区域估计运动参数
- 每个网格节点只有一个运动矢量,与其相邻的所有多边形单元共享此运动矢量
- 单元内像素的运动由节点的运动矢量内插得到
- 基本思想:
- 直接的方法:
二维运动估计存在的问题:
- 遮挡问题:由于物体的运动,被物体遮挡或新露出来的部分
- 通常只能确定与图像梯度方向一致的运动分量
噪声问题:
- 噪声不可避免
运动估计对噪声非常敏感
图像识别
图像分类概述
图像分类:根据图像信息中所反映出来的不同特征,把不同类别的目标区分开来的图像处理方法
分类的任务:给定一组离散标签,找到一个分类器将给定图片区分开来
分类面临的挑战:
- 视点变换
- 照明不良
- 变形
- 遮拦
- 背景杂乱
类内变化:如黑猫白猫
图像分类的方法
图像分类不像一般问题,没有简单明了的算法能够识别一种类别。所以一般的采用机器学习的相关方式对图像进行分类研究。
机器学习方法的一般步骤:
收集带有标签的图像数据库
使用机器学习算法训练图像分类器
用测试图像评估分类器的效果
最近邻分类器(NN)
NN分类器
- 训练:给出所有训练图像及其标签
- 预测:
- 找出最相似的训练图像
- 预测其标签为结果
NN分类器一般很少在实践中使用
K-NN
K-NN是NN的延申和增强,相比于NN
- K-NN从训练数据中查找k个最接近的点
- 对k个最近点的标签进行投票选择最合适的标签作为预测结果
K-NN的距离度量(如何找到最相似的训练图像)
- 曼哈顿距离:$d(I_1, I_2) = \sum_p|I_1^p - I_2^p|$
- 欧几里得距离:$d(I_1, I_2) = \sqrt{\sum_p(I_1^p - I_2^p)^2}$
超参数:在K-NN中,距离的度量和参数k的选择都不是由算法自动学习的,而是由我们来手动设置,所以我们将其称为超参
超参数的设置:
- 选择在训练集上表现最佳的参数。
- 因为在训练集上以学习了相同的数据,所以在训练集上选择,k=1永远是最佳参数,K-NN将退化为NN
- 将数据集划分为训练集和测试集,选择在测试集上表现最佳的参数。
- 由于超参是根据测试集选择的,且在训练集上一定可以获得一个完美的表现,但不知道该参数对于新数据的表现效果
- 将数据集训练集、验证集、测试集。选择在验证机上最佳的参数,在测试集上进行验证,可以获得对新数据的评估
使用k-折方法划分数据集(交叉验证):训练数据分为N折,将每一折作为验证集,其它折作为训练集,训练验证N次,结果取平均
线性分类器
- 选择在训练集上表现最佳的参数。
线性分类器:一个m维空间中的数据集,如果能够被一个超平面一分为二,那么这个数据集就是线性可分的,这个超平面就是决策边界。
- 如,一维被一个点分割成两条线、二维被一条线分割成两个面、三维被一个面分割成两个面
线性不可分情况:无法被一个超平面一分为二的情况
线性分类器的组成:评分函数+损失函数
- 评分函数:评分函数是原始图像数据到类别的映射
- 损失函数:损失函数评估现有分类器的优劣
- 使用线性分类器分类的问题可以转化为最优化问题:通过更新评分函数的参数值来最小化损失函数的值,从而找到最优解
- 在线性分类器中,输出是输入的加权和
损失函数的选择:
- 在线性分类器中,m维空间被超平面一分为二,但实际情况中,往往有许多种不同的超平面可以对空间进行分割,在这么多的分类器中,那个超平面最好,由损失函数来决定。
- SVM(支持向量机):寻找正例和反例之间具有最大间隔的超平面