SIFT中高斯图像差异的极值检测
Extrema detection in difference of gaussian images in SIFT
我对 SIFT 算法的工作原理有疑问。因此,假设我通过将图像与各种大小的高斯滤波器进行卷积,在多个八度音程中对单个图像进行了比例 space 表示。此外,我还计算了每个八度音程的高斯 (DoG) 图像的各种差异。
让我们假设对于给定的八度音程我有 7 张 DoG 图像。我的问题是关于这些 DoG 图像中的最大值发现。根据文献,每个相邻的 DoG 图像与 8 个局部邻居和 9 个邻居进行比较。
所以,现在假设我正在处理这 7 张 DoG 图像,我将从索引 1 开始一直到索引 5。所以,类似于:
for (int i = 1; i <= 5; ++i)
{
for (int y = 1; y < image_height-1; ++y)
{
for (int x = 1; x < image_width-1; ++x)
{
current_pixel = image[x, y, i];
// Compare with the neighbours
// check if it is a maxima at loc (x, y, i)
}
}
}
因此,我在这里遍历图像并将检查它是否是该位置的最大值。我的问题是现在我将在每个尺度上得到最大值位置(在我的例子中是从 1 到 5)。因此,对于给定的 (x, y) 位置,可以有多个最大值(例如在比例 1、3 和 5 处)。那么,这是一个问题还是同一空间位置 (x, y) 可以关联多个关键点?有人可以向我解释算法如何继续改进这些关键点吗?
您还需要找到跨尺度的极值。
Scale-space 极值检测意味着找到跨越 "scale" 和跨越 "space." 的每个像素的极值 Space 是图像中的 xy 平面。 Space 是金字塔的索引。
你想做什么?
scale-space 极值检测的想法是找到特征具有最高响应的尺度。例如,如果图像中有一个小斑点。它的极值将处于一个很好的范围内。在粗尺度下,这个小斑点会被洗掉。
对于大 blob,以精细尺度计算分数不会产生极值。但是,如果比例足够粗糙,斑点就会突出。也就是说,对于金字塔的较粗层次,小斑点周围的较小结构将被洗掉,而大斑点将脱颖而出。
我对 SIFT 算法的工作原理有疑问。因此,假设我通过将图像与各种大小的高斯滤波器进行卷积,在多个八度音程中对单个图像进行了比例 space 表示。此外,我还计算了每个八度音程的高斯 (DoG) 图像的各种差异。
让我们假设对于给定的八度音程我有 7 张 DoG 图像。我的问题是关于这些 DoG 图像中的最大值发现。根据文献,每个相邻的 DoG 图像与 8 个局部邻居和 9 个邻居进行比较。
所以,现在假设我正在处理这 7 张 DoG 图像,我将从索引 1 开始一直到索引 5。所以,类似于:
for (int i = 1; i <= 5; ++i)
{
for (int y = 1; y < image_height-1; ++y)
{
for (int x = 1; x < image_width-1; ++x)
{
current_pixel = image[x, y, i];
// Compare with the neighbours
// check if it is a maxima at loc (x, y, i)
}
}
}
因此,我在这里遍历图像并将检查它是否是该位置的最大值。我的问题是现在我将在每个尺度上得到最大值位置(在我的例子中是从 1 到 5)。因此,对于给定的 (x, y) 位置,可以有多个最大值(例如在比例 1、3 和 5 处)。那么,这是一个问题还是同一空间位置 (x, y) 可以关联多个关键点?有人可以向我解释算法如何继续改进这些关键点吗?
您还需要找到跨尺度的极值。
Scale-space 极值检测意味着找到跨越 "scale" 和跨越 "space." 的每个像素的极值 Space 是图像中的 xy 平面。 Space 是金字塔的索引。
你想做什么?
scale-space 极值检测的想法是找到特征具有最高响应的尺度。例如,如果图像中有一个小斑点。它的极值将处于一个很好的范围内。在粗尺度下,这个小斑点会被洗掉。
对于大 blob,以精细尺度计算分数不会产生极值。但是,如果比例足够粗糙,斑点就会突出。也就是说,对于金字塔的较粗层次,小斑点周围的较小结构将被洗掉,而大斑点将脱颖而出。