机器视觉期末复习整理
一、像素和滤波
1、图片类型:二值图(黑0白1),灰度图(0-255),彩色图(RGB三通道)
2、直方图 Histogram:图像的直方图提供图像中亮度(强度)值的频率。
3、图像滤波:用相邻像素的线性组合替换每个像素。
目标是从图像中提取有用的信息,或将图像转换到另一个领域,在那里我们可以修改/增强图像属性
-
增强图像(去噪、调整大小、增加对比度等)
-
提取信息(纹理、边缘、兴趣点等)
-
检测模式(模板匹配)
4、噪声的类型:
-
椒盐噪声:黑白像素的随机出现
-
脉冲噪声:白色像素的随机出现
-
高斯噪声:从高斯正态分布得出的强度变化
5、相关滤波: g = h ⨂ f g=h⨂f g=h⨂f
滤波器“kernel内核”或“mask掩码”h[u,v]是线性组合中权重的规定。
6、高斯滤波器:希望最近的相邻像素对输出的影响最大
高斯滤波器重要的影响参数:
- 核的大小
- 高斯方差variance(决定平滑程度,方差越大越平滑)
高斯滤波器的特性:平滑性
- 高斯核是正值,且总和为1
- 平滑量与mask大小成比例
- 是低通滤波器(移除高频部分)
7、卷积Convolution: g = h ∗ f g=h*f g=h∗f 先翻转再进行互相关
8、水平梯度:-1 0 1
垂直梯度:
-1
0
1
9、中值滤波器:通过选择窗口中的中值(排序后位于中间的值)对窗口进行操作
特点:
- 没有引入新的像素值
- 去除尖峰:适合脉冲、椒盐噪声(因为噪声点在像素值排序后会位于序列的两端,而中值是序列的中间值。)
- 非线性滤波器(输出与输入之间不存在线性关系。与线性滤波器(如均值滤波器)不同,非线性滤波器不遵循叠加原理,即输入信号的各个部分不会简单地叠加来影响输出)
二、图像梯度和边缘
1、边缘检测目的:将图像从二维像素阵列映射到一组曲线、线段或轮廓。
原理:
- 图像中的大多数语义和形状信息都可以编码在边缘中
- 边缘比像素更紧凑
2、σ对导数的影响:
表观结构因高斯尺度参数的不同而不同。
- 较大的值:检测到较大的边缘
- 较小的值:检测到更精细的特征
三、边缘和二值图像分析
1、“最佳”边缘检测器的标准:
-
良好的检测:最佳检测器必须将假阳性(检测噪声引起的伪边缘)和假阴性(丢失真实边缘)的概率降至最低
-
良好的定位:检测到的边缘必须尽可能接近真实边缘
-
单一响应:检测器必须为每个真正的边缘点只返回一个点;也就是说,最小化真实边缘周围的局部最大值的数量
2、边缘检测主要步骤:
- 平滑:抑制噪声
- 边缘增强:用于对比度的滤波
- 边缘定位:确定滤波器输出的哪些局部最大值实际上是边缘还是噪声
3、阈值设置
- 选择阈值t
- 将小于t的任何像素设置为零(关闭)
- 将大于或等于t的任何像素设置为1(启用)
4、Sobel算子
通过计算图像中每个像素点的梯度幅度来检测图像中的边缘,梯度幅度越大,表示该点的亮度变化越剧烈,因此越有可能是边缘
Sobel算子包含两组3x3的矩阵,分别为横向(水平方向)和纵向(垂直方向)。这些矩阵与图像进行卷积操作,以计算图像在水平和垂直方向上的亮度差分近似值。通过这两个方向的差分值,可以确定每个像素点的梯度方向和幅度。
Sobel算子的横向矩阵和纵向矩阵分别如下:
5、Sobel滤波器的问题
-
边缘定位不准(边缘的响应在多个相邻像素中被触发)
-
方向上存在局限性(应用阈值处理时,某些方向的边缘比其他方向更容易被检测到。由于Sobel算子的设计,它对水平方向和垂直方向的边缘更敏感,而对斜向边缘的检测能力较弱)
- 斜向边遗漏
- 边缘容易被忽略
6、Canny 边缘检测步骤:
- 滤波:使用高斯滤波器平滑图像,以减少噪声的影响。
- 梯度计算:计算图像在水平和垂直方向的一阶导数,得到梯度的幅度和方向。
- 非极大值抑制(NMS):对梯度图像进行非极大值抑制,将宽度大于一个像素的边缘细化到单个像素宽度,使得边缘更加细化,更符合实际边缘。
- 滞后阈值化:应用两个阈值(高阈值和低阈值)进行滞后阈值化处理,以连接边缘并去除虚假的边缘。
7、检测器比较
-
梯度检测器倾向于引入许多噪声边缘
-
Sobel检测器则倾向于产生较宽的边缘
8、二值图像分析基本步骤
- 将图像转换为二值形式:
通过阈值处理,根据像素的亮度将其分为前景(白色)和背景(黑色)。 - 清理阈值化后的图像:
使用腐蚀和膨胀等形态学操作去除噪声和小连通区域。 - 提取单独的团块(blobs):
通过形态学操作分离图像中的不同对象。
连接组件(Connected components):
识别图像中所有相互连接的像素点集合。 - 使用区域属性描述团块:
计算面积(区域中的像素数)、质心(区域中像素的平均x和y位置)、边界框(最小和最大坐标)、圆度(平均偏差与质心与标准偏差之比)等属性,用于进一步分析。
9、膨胀(Dilation)
通过结构化元素对图像进行膨胀操作,可以扩大前景区域,填补空洞,使对象的边界更加平滑。
10、腐蚀(Erosion)
通过结构化元素对图像进行腐蚀操作,可以缩小前景区域,去除图像中的小碎片,使对象更加紧凑。
11、开操作:先腐蚀再膨胀,消除小目标,保持目标原来的形状
12、闭操作:先膨胀再腐蚀,填充空洞,保持原有形状
四、纹理
- 纹理是反映材料外观特征的重要属性:
- 纹理指的是物体表面的微观结构,它可以是视觉上可见的图案、色彩或光泽等。这些特征帮助我们识别和区分不同的材料和物体。
- 纹理表示旨在总结局部结构的重复模式:
- 纹理表示是一种方法,它通过识别和编码图像中重复出现的局部结构(如边缘、斑点、线条等)来捕捉纹理信息。这种表示通常用于图像处理和计算机视觉中,以便于分析和理解图像内容。
- 滤波器组用于测量局部邻域内结构的冗余多样性:
- 滤波器组是一组预定义的数学滤波器,它们可以用来检测图像中的不同纹理特征。通过应用这些滤波器,可以提取出图像中局部区域的结构信息,如方向、频率和对比度等,从而量化纹理的多样性。
- 特征空间可以构建为多维以捕捉更多的纹理信息:
- 特征空间是一个由多个特征维度组成的数学空间,每个维度代表图像中的一个特定纹理属性。多维特征空间可以提供更全面的纹理描述,因为它结合了多个属性来区分不同的纹理模式。
- 邻域统计信息可用于采样或合成新的纹理区域:
- 邻域统计信息指的是图像中每个像素周围局部区域的统计特性,如平均值、方差、相关性等。这些信息可以用来估计新的纹理区域的特性,或者用于从现有纹理中生成新的纹理样本。
- 基于示例的技术是一种常见的纹理分析手段:
- 基于示例的技术是一种方法,它通过比较新的纹理样本与已知纹理样本之间的相似性来进行纹理分析。这种技术通常涉及到机器学习和模式识别,它可以通过学习已知的纹理模式来识别和分类新的纹理。
五、局部不变特征检测
1、局部特征主要组成部分
-
检测:识别兴趣点
-
描述:提取每个兴趣点周围的向量特征描述符
-
匹配:确定两个视图中描述符之间的对应关系
2、局部特征所需特性
- 重复性:特征在不同图像中一致出现,即使经过几何和光度变换。
- 显著性:每个特征都有独特的描述,便于区分。
- 紧凑性和效率:特征数量远少于图像像素,提高处理效率。
- 局部性:特征只占据图像的相对小区域,对杂乱和遮挡具有鲁棒性。
3、角点:向任何方向移动窗口都会使强度发生很大变化
4、Harris 角点检测步骤:
-
计算每个像素的梯度
-
在每个像素周围的高斯窗口中计算二阶矩阵M
M = ∑ w ( x , y ) [ I x I x I x I y I x I y I y I y ] M=\sum w(x,y){\begin{bmatrix}I_xI_x&I_xI_y\\I_xI_y&I_yI_y\end{bmatrix}} M=∑w(x,y)[IxIxIxIyIxIyIyIy] -
计算角点响应函数R
R = d e t M − k ( t r a c e M ) 2 R = det M - k(traceM)^2 R=detM−k(traceM)2 -
找到响应值大于设置阈值的点(R>阈值)
-
将局部最大响应值作为检测到的特征点(即,R大于所有4个或8个邻居的像素)
5、当图像缩放时,角点的位置会随之改变
6、尺度不变特征变换(Scale-Invariant Feature Transform)
DoG (Difference of Gaussian) 高斯差分
7、Histogram of Oriented Gradients方向梯度直方图步骤
- 预处理
- 计算图像梯度
- 计算8*8大小的梯度
- 16*16区域归一化
- 计算方向梯度直方图特征向量
六、拟合:投票和霍夫变换
霍夫变换目标是找到图像中线条的位置
主要思想:对每个边点,所在的每条可能的线,进行投票表决
七、拟合变换:基于特征的对齐
1、只有2D线性变换才可以被2*2的矩阵表示
缩放变换(scaling)、旋转变换(rotation)、剪辑(shear)、镜像变换(mirror)
[
x
′
y
′
]
=
[
a
b
c
d
]
[
x
y
]
\begin{bmatrix}x^{\prime}\\y^{\prime}\end{bmatrix}=\begin{bmatrix}a&b\\c&d\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}
[x′y′]=[acbd][xy]
2、仿射变换:线性变换和平移变换的组合
3、RANSAC(Random Sample Consensus,随机抽样一致)算法
方法:我们希望避免异常值的影响,所以让我们寻找“内部值”,并仅使用这些值。
主要流程(以线性拟合为例):
- 随机选择点的最小子集
- 假设一个模型
- 计算误差函数
- 选择与模型一致的点
- 重复假设并验证循环
八、索引局部特征和实例识别
k-means聚类算法:找到k个聚类中心,将点分配给聚类中心,以最小化每个点与其分配的聚类中心之间的距离
步骤:
- 随机初始化K个聚类中心
- 迭代直到收敛:
- 将每个数据点分配到其最近的中心
- 将每个聚类中心重新计算为分配给它的所有点的平均值
九、通用对象识别和机器学习
1、词袋模型
- 提取局部特征
- 学习“视觉词汇”
- 使用视觉词汇量化局部特征
- 用“视觉单词”的频率表示图像
2、K近邻分类器
- 对于新点,从训练数据中找到最接近的k个点
- 投票给带有k点标签的类标签
3、k近邻和线性分类器的比较
-
K近邻分类器
优势
- 易于实施
- 决策边界不一定是线性的
- 适用于任意数量的类
- 非参数方法
缺点
- 需要良好的距离功能
- 测试时速度较慢(训练快)
-
线性分类器
优势
-
低维参数表示
-
测试时速度非常快
缺点
-
适用于两类
-
如何训练线性函数?
-
如果数据不是线性可分离的呢?
-
为问题选择最佳内核函数可能很棘手
-
学习大规模问题可能需要很长时间
-
-
svm分类器
优势
- 基于内核的框架非常强大、灵活
- 训练是凸优化,可以找到全局最优解
- 适用于理论分析
- SVM在实践中运行得非常好,即使训练样本量非常小
缺点
- 没有“直接”的多类SVM,必须组合两类SVM(例如,一类SVM与另一类SVM)
- 计算、内存(尤其是非线性SVM)
4、泛化是指对从未见过的例子进行正确分类的能力
十、图像分割和聚类
1、Mean shift algorithm
-
初始确定一个中心点center,计算在设置的半径为hr的圆形空间内所有的点(xi)与中心点center的向量
-
计算整个圆形空间内所有向量梯度的平均值,得到一个偏移均值;
-
将中心点center移动到偏移均值位置;
-
重复移动,直到满足一定条件结束;
优点
-
不需要预设簇的大小
-
一个参数选择(窗口大小,又称“带宽”)
-
通用技术
-
找到多种模式
缺点
-
窗口大小的选择
-
一个参数选择(窗口大小,又称“带宽”)
十一、三维视觉
1、成像原理
2、把真实物体装进相机,需要分3步
-
世界坐标系 ->相机坐标系(刚体变换)
- 刚体变换:物体无形变,仅有坐标系的旋转与平移
-
相机坐标系 -> 图像坐标系(透视投影)
-
图像坐标系 -> 像素坐标系(仿射变换)
- 仿射变换——旋转、平移、缩放、剪切
3、对极几何
对极几何描述的是两幅视图之间的内在映射关系,与外部场景无关,只依赖于摄像机内参数和这两幅视图之间的相对位姿。
基线(base line) :两个相机中心的连线CC’
极点(epipolar point) :基线与两个成像平面的交点ee’
极面(epipolar plane) :过基线的平面都称之为极面
极线(epipolar line):极面和成像平面的交线,所有的极线都相交于极点
4、深度与位移差
5、三维感知
计算机视觉领域的重要分支,是感知真实世界的必要手段,泛指涉及三维信息的感知任务,例如三维目标检测、跟踪、场景流估计等。
6、三维数据的表现形式:
深度图 (Depth Map)
视差图 (Disparity Map)
点云 (Point Cloud):
- 三维空间中点的集合,除位置坐标信息外,还可包括颜色、强度等信息。
- 可由激光雷达扫描采集获得,也可由图片结合相机参数获得。
- 数据分布非常稀疏。
体素 (Voxel):
- 体积像素的简称,是二维图像空间的最小单位(像素)的三维化。
- 与像素一样,体素不包含任何位置信息,只有和其他体素的相对距离信息。
多边形网格 (Polygon Mesh):
- 在计算机图形学和实体建模中,多边形网格是定义多面体对象形状的顶点、边和面的集合,
- 面通常由三角形、四边形或其他简单的多边形组成。
视锥 (View Frustum):
包含透视视角可见范围的六面体,其中近截面与远截面平行(类似将头平切掉的金字塔)。
体柱 (Point Pillar):
- 用二维网格将点云划分为高度不限的立体柱。
- 若点云中的点可表示为(x,y,z,r),其中(x,y,z)为空间坐标,r为反射率,
- 则体柱中的点可表示为 ( x , y , z , r , x c , y c , z c , x p , y p ) (x, y, z, r, x_c, y_c, z_c, x_p, y_p) (x,y,z,r,xc,yc,zc,xp,yp),
- 其中 ( x c , y c , z c ) ( x_c, y_c, z_c) (xc,yc,zc)表示该点到所在体柱中心的距离,
- ( x p , y p ) (x_p, y_p) (xp,yp)表示二维栅格的坐标。
鸟瞰视图 (Bird’s Eye View, BEV):
- 场景在垂直于高度方向的平面上的投影。
- 在自动驾驶领域,鸟瞰视图通常由车身环视相机进行视角变换得到,可替代激光雷达实现结构信息感知。
形状的顶点、边和面的集合,
- 面通常由三角形、四边形或其他简单的多边形组成。
视锥 (View Frustum):
包含透视视角可见范围的六面体,其中近截面与远截面平行(类似将头平切掉的金字塔)。
体柱 (Point Pillar):
- 用二维网格将点云划分为高度不限的立体柱。
- 若点云中的点可表示为(x,y,z,r),其中(x,y,z)为空间坐标,r为反射率,
- 则体柱中的点可表示为 ( x , y , z , r , x c , y c , z c , x p , y p ) (x, y, z, r, x_c, y_c, z_c, x_p, y_p) (x,y,z,r,xc,yc,zc,xp,yp),
- 其中 ( x c , y c , z c ) ( x_c, y_c, z_c) (xc,yc,zc)表示该点到所在体柱中心的距离,
- ( x p , y p ) (x_p, y_p) (xp,yp)表示二维栅格的坐标。
鸟瞰视图 (Bird’s Eye View, BEV):
- 场景在垂直于高度方向的平面上的投影。
- 在自动驾驶领域,鸟瞰视图通常由车身环视相机进行视角变换得到,可替代激光雷达实现结构信息感知。