我对SIFT算法的工作方式有疑问。因此,假设我通过将图像与各种大小的高斯滤波器卷积来对多个八度音阶中的各个图像进行缩放空间表示。此外,我已经计算了每个八度音阶的高斯(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)?有人可以向我解释算法如何改进这些关键点吗?
答案 0 :(得分:2)
您也希望在比例范围内找到极值。
比例空间极值检测意味着在“比例”和“空间”之间找到每个像素的极值。空间是图像中的xy平面。空间是金字塔的索引。
你想做什么?
尺度空间极值检测的想法是找到特征具有最高响应的尺度。例如,如果图像中有一个小blob。它的极值将是一个很好的规模。在粗糙的范围内,这个小小的斑点会被冲刷掉。
对于大型斑点,以精细尺度计算得分不会产生极值。但是,如果规模足够粗糙,那么blob就会脱颖而出。也就是说,对于较粗糙的金字塔,较小的斑点周围的较小结构将被冲刷掉,而大斑点将会脱颖而出。