图像处理与视觉感知---期末复习重点(8)

文章目录


一、图像分类流程

流程:输入图像、预处理、特征提取、学习算法、类标。

二、梯度方向直方图

2.1 概述

1. 梯度方向直方图(Histogram of Oriented Gradient, HOG):是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。HOG特征结合SVM分类器被广泛应用于图像识别中,尤其在行人检测。

特征描述子就是将图像抽取部分有用信息,丢掉不相关的信息。特征描述子可以将一个 w e i g h t × h e i g h t × 3 weight×height×3 weight×height×3(宽×高×通道数量)的图像转换成一个长为 n n n 的向量或矩阵。例如:一幅 64 × 128 × 3 64×128×3 64×128×3 的图像,经过转换之后可以输出长度为 3780 3780 3780 的图像向量,相比 64 × 128 × 3 64×128×3 64×128×3 肯定是少了的。因为,特征描述子仅仅将所需要显示的图像保留下来了。
比如说,我们想知道一个人有没有带眼镜,在这种情况下,我们仅仅需要提取人的面部特征,并且进行边缘检测,这个时候,我们可以忽略掉图片的彩色特征,将照片转换成变成仅仅有边缘轮廓的特征图。这种特征图不仅仅数据量小,而且具有很强的目标指向性。

2. 算法思想:(1)HOG特征的核心思想是在一幅图像中,局部目标的表观和形状(appearance and shape)能够被梯度和边缘的方向密度很好地描述。(2)通过将整幅图像分为多个小的连通区域(单元,cells),并计算每个cell的梯度或边缘方向直方图,这些直方图的组合可用于构成特征描述子,为了提高准确率,可以将局部直方图在图像更大范围内(块,block)进行对比度归一化(constrast-normalized)。

2.2 计算梯度方向直方图

2.2.1 过程

1. 预处理:patch可以是任意的尺寸,但是有一个固定的比例,比如当patch长宽比1:2,那patch大小可以是100×200、128×256或者1000×2000,但不可以是101×205(比例关系不对)。这里有张图是720×475的,我们选100*200大小的patch来计算HOG特征,把这个patch从图片里面抠出来,然后再把大小调整成64×128。

2. 计算梯度图像:首先我们计算水平和垂直方向的梯度,再来计算梯度的直方图。

(1) x轴方向的梯度主要凸显了垂直方向的线条;y轴方向的梯度凸显了水平方向的线条。

(2) 梯度幅值凸显了像素值有剧烈变化的地方。

(3) 图像的梯度去掉了很多不必要的信息(比如不变的背景色),加重了轮廓。

3. 在每个单元(8×8大小像素)中计算梯度直方图:

(1) 图像会被分割成每个单元( 8×8大小像素)。每个单元都会计算一个梯度直方图。

(2) 提供一个紧凑或压缩的表示:一个8×8的图像有8×8×3=192个像素值;每个像素有两个值:幅值magnitude和方向direction,3个通道只会将最大的梯度值以及方向角记录下来,加起来就是8×8×2=128。所以说实际的梯度直方图应当含有8×8×2=128个值。

(3) 对于64×128的这幅图像来说,每个单元(8×8大小)已经足够大来表示有趣的特征比如脸,头等等。

(4) 直方图是有9个bin的向量,角度:0,20,40,60...160。bin的值:每个角度对应的幅值之和。

以下图为例,此过程是根据梯度和角度来确定bin的过程。蓝色和红色分别是两个过程,先看蓝色。我们可以看到蓝色像素梯度值是2,方向为80°角,于是在第5个bin中加2;对于红色,角度为10、梯度值为4,但是bin中没有10,只有0和20,于是将梯度值分2份各分到bin里面的1和2当中。

这里有个细节要注意,如果一个角度大于160度,也就是在160-180度之间,我们知道这里角度0,180度是一样的,所以在下面这个例子里,像素的角度为165度的时候,要把幅值按照比例放到0和160的bin里面去。

(5) 把这8*8的单元cell里面所有的像素点都分别加到这9个bin里面去,就构建了一个9-bin的直方图,上面的单元cell对应的直方图如下:

4. 16×16(像素)的块(block)归一化:进行归一化的原因是图像梯度对于光线很敏感。

(1) 可以对向量用L2进行归一化,公式如下所示:

(2) 一般不会在每一个9×1的直方图上面做归一化,而是从一个16×16的块上做归一化,也就是4个9×1的直方图组合成一个36×1的向量,然后做归一化,接着,窗口再朝后面挪8个像素。

5. 计算HOG特征向量:为了计算这整个patch的特征向量,需要把36×1的向量全部合并组成一个向量。向量的大小可以这么计算:

(1) 我们有多少个16×16的块?对于64×128的这幅patch:水平7个,垂直15个,总共有7*15=105次移动。

(2) 每个16×16的块代表了36×1的向量。所以把他们放在一起也就是36×105=3780维向量。

(3) 可视化HOG:通常HOG特征描述子是画出8×8网格中9×1归一化的直方图。直方图的主要方向捕捉了这个人的外形,特别是躯干和腿。

2.2.2 总结

三、SIFT

1. 核心步骤:将一幅图像映射(变换)为一个局部特征向量集;特征向量具有平移、缩放、旋转不变性,同时对光照变化、仿射及投影变换也有一定不变性。

2. SIFT算法主要有三大步骤:(1) 提取关键点。 (2) 对关键点附加详细的信息(局部特征)构建描述器。 (3) 通过两特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

相关推荐
代码不行的搬运工1 分钟前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
石小石Orz3 分钟前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
孤独且没人爱的纸鹤12 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭15 分钟前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~16 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码22 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
zhangfeng113322 分钟前
pytorch 的交叉熵函数,多分类,二分类
人工智能·pytorch·分类
Seeklike23 分钟前
11.22 深度学习-pytorch自动微分
人工智能·pytorch·深度学习
庞传奇24 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
华清远见IT开放实验室31 分钟前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉