昨天我们了解了卷积在FIST之中的作用。接下来我们继续品读这篇文章。
根据文章的整理,我们大致可以了解到尺度空间滤波的作用。
-
构建高斯差分金字塔(Gaussian Difference Pyramid):首先对原始图像进行一定程度的高斯模糊处理,得到一系列不同尺度的图像。然后对相邻两个不同尺度的图像进行差分,得到一系列高斯差分图像,构成高斯差分金字塔。高斯差分金字塔中的每一层代表一个不同的尺度,层数越高,尺度越小,图像分辨率越低。
-
构建尺度空间函数(Scale-Space Function):对于高斯差分金字塔中的每一层,将其平滑处理,得到一系列不同尺度的图像。然后将这些图像放在同一个坐标系中,得到尺度空间函数 L(x,y,sigma),其中 x 和 y 是空间坐标,sigma 是尺度参数,表示在该尺度下的图像特征。
-
计算尺度不变特征(Scale-Invariant Features):根据尺度空间函数 L(x,y,sigma),可以计算出一系列尺度不变的特征,例如极值点(extrema)、尺度空间极值(scale-space extrema)等,这些特征在不同尺度下都具有相似的性质,因此具有尺度不变性。
-
特征匹配和物体识别:利用尺度不变特征进行图像匹配和物体识别,可以实现对图像中物体的自动识别和跟踪。
为了计算尺度不变特征,作者用了如下方法:
通过检测尺度空间函数 L(x,y,sigma) 中的极值点来获取尺度不变特征。具体来说,其方法包括以下几个步骤:
-
构建尺度空间函数:对于原始图像 f(x,y),使用高斯核函数 G(x,y,sigma) 进行平滑操作,得到一系列不同尺度的图像 f(x,y,sigma)。将这些图像构成尺度空间函数 L(x,y,sigma)。具体的公式为:L(x,y,sigma) = G(x,y,sigma) * f(x,y)
-
计算高斯差分:对于尺度空间函数中相邻的两个尺度 sigma_1 和 sigma_2,计算它们的高斯差分图像 D(x,y,sigma) = L(x,y,sigma_2) - L(x,y,sigma_1)。
-
检测极值点:在每个高斯差分图像 D(x,y,sigma) 中检测极值点。具体来说,对于每个像素点 (x,y),比较它的值与它周围 3 * 3 * 3 个像素点的值,如果它是其中最大或最小的,就将其标记为一个极值点。
-
精确定位极值点:对于每个检测到的极值点,使用二阶泰勒展开式对其进行精确定位,以获取更准确的位置和尺度信息。
-
剔除低对比度的极值点:对于低对比度的极值点,往往由于噪声等原因而不稳定,容易引起误检测。因此,需要剔除这些极值点,保留高对比度的极值点。
看完这一部分,我有一些我问题:首先是高斯差分图像,为什么需要求高斯差分图像,求出来的图像要怎么用?
高斯差分图像可以用于检测和描述图像中的局部特征,原理基于以下两个方面:
1、尺度空间的构建
尺度空间可以看作是一个图像的不同尺度下的平滑版本,通过对图像在不同尺度下进行平滑处理,可以提取不同尺度下的图像特征。在高斯金字塔中,每一层的图像是前一层图像的下采样版本,因此可以通过高斯差分图像提取不同尺度下的特征。
2、关键点的检测和描述
在高斯差分图像中,局部极值点对应的位置就是图像中的关键点。在SIFT算法中,通过检测高斯差分图像中的极值点来确定关键点的位置。同时,为了描述关键点的局部特征,需要利用高斯差分图像来计算关键点周围像素的梯度和方向,生成关键点的局部特征描述符。这些描述符具有尺度不变性和旋转不变性,可以用于实现图像匹配和目标识别等应用。
综上所述,高斯差分图像提供了一种多尺度的描述和分析图像的方法,通过检测和描述图像中的局部特征,可以实现尺度不变性和旋转不变性,并提高图像匹配和目标识别的准确性和稳定性。
那么如何用高斯差分图像来计算关键点周围像素的梯度和方向,生成关键点的局部特征描述符呢?
在SIFT算法中,可以通过以下步骤来计算关键点周围像素的梯度和方向,生成关键点的局部特征描述符:
1、关键点检测
首先,使用高斯差分金字塔检测图像中的关键点。具体来说,可以通过在高斯差分金字塔的每一层中找到极值点来确定关键点的位置。
2、方向分配
针对每个关键点,可以根据其周围像素的梯度方向分配主方向,用于构建关键点的局部特征描述符。具体来说,可以在关键点的尺度下,计算其周围像素的梯度幅值和方向,并将这些值按照方向分配到多个方向的直方图中,最后选取直方图中的峰值作为主方向。这样就能够确定关键点的主方向,并用于后续的局部特征描述符计算。
3、局部特征描述
通过将关键点周围的像素分配到不同的子区域中,可以构建关键点的局部特征描述符。具体来说,可以将关键点周围的像素划分为16个子区域,并在每个子区域内计算像素的梯度和方向,并将这些值加入到对应的子区域的直方图中。最后将所有的子区域直方图连接起来,就得到了关键点的局部特征描述符。该描述符具有128维,其中每个子区域对应8维,表示该区域内梯度方向的统计信息。
综上所述,通过高斯差分图像提取关键点,再根据关键点周围像素的梯度和方向构建局部特征描述符,可以实现图像的特征提取和匹配,为图像处理和计算机视觉应用提供了基础技术。
总的来说,所谓的高斯金字塔就是由一系列高斯图像和对应的高斯差分图像组成的。具体来说,对于一幅输入图像,我们可以先对其进行不同尺度的高斯滤波,得到一系列高斯图像。然后,对每个相邻的高斯图像进行差分操作,得到对应的高斯差分图像。这样就得到了一组高斯差分金字塔。
高斯差分图像在SIFT算法中的作用是通过不同尺度的高斯滤波和差分操作来检测图像中的关键点,并计算关键点周围像素的梯度和方向,生成关键点的局部特征描述符。具体来说,高斯差分图像可以在不同尺度下提取图像中的局部特征,因为在不同的尺度下,高斯差分图像中的特征对应着不同大小的空间结构。因此,使用高斯差分金字塔可以在多个尺度下提取图像中的关键点,从而增强图像的特征描述和匹配的准确性。
总之,高斯差分金字塔是SIFT算法中的一项关键技术,通过对输入图像进行高斯滤波和差分操作,可以检测图像中的关键点,并计算关键点周围像素的梯度和方向,生成关键点的局部特征描述符。
图像金字塔
那么为什么要求高斯模糊呢?
通过查资料得知原因:
由金字塔底依次到金字塔顶端,图像的尺寸都是在缩小的,这就会导致了同样个数的像素(单个或在某一范围内的)相邻两层之间所描述的信息是不一样的,即越小的图 相对应的单个像素点包含的信息越多。举一个极端的例子,在图像金子塔顶端,图像被缩小成了一个像素 那么这一个像素就理应包含了整个图像的信息。
而高斯模糊就有效的解决的这个问题,通过高斯模糊(也就是将图面的像素加权平均 来增强大图中一个像素所包含的信息量从而达到可以对应的关系)