下面开始来看 Orientation assignment。
文中提到文中采用的方法是多次试验的结果。
The scale of the keypoint
is used to select the Gaussian smoothed image, L, with the closest scale, so that all computations
are performed in a scale-invariant manner.
从上面这句话看出,现在的工作又回到L上来了,前面的计算都是在D上的。
L有5层,keypoint只有3层,怎么选取呢?with the closest scale.后面说,因此所有的计算就都是尺度不变的方式了,怎么so that出来的。不是很理解。
给关键点赋予梯度级和方向的公式参考原文。
文中说
An orientation histogram is formed from the gradient orientations of sample points within
a region around the keypoint.
用关键点附近一个区域内的样本点的梯度方向来形成一个方向直方图(每10度为一个刻度,共36个刻度--360度)。region怎么确定,这里没有说明,后面提到是取关键点附近16*16的区域。这个区域内的每个点都要按照本节的两个公式计算梯度和方向。目的是为了获得方向,梯度干什么用呢?Each sample added to the histogram is weighted by its gradient magnitude
and by a Gaussian-weighted circular window with a sigma that is 1.5 times that of the scale
of the keypoint.梯度是方向的权重,另外还有一个高斯权重圆形窗口,sigma是scale sigma的1.5倍。这两个权重值是怎么起作用的似乎没有说明,应该是两个权重值相乘吧。高斯权重圆形窗口怎么计算呢?回头看代码吧。
在方向直方图中取最大值对于的方向作为关键点的方向,如果次大值是最大值的80%以内,那么就再创建一个关键点,方向采用次大值对于的方向。所以,同一个位置,可能有多个关键点哦。这些关键点只是方向不同。文中说这样的概率是15%
下面这句话又不理解了Finally, a
parabola is fit to the 3 histogram values closest to each peak to interpolate the peak position
for better accuracy.
看到这里发现关键点现在失去作用了。我们要的是关键点附近16*16的区域。这个区域被分成4*4的小块,每个小块也是4*4共16个像素,计算(怎么计算看两个公式)16个像素的梯度和方向,形成(怎么形成看下面)这个小块的8个方向的梯度值,共4*4*8形成128维的向量。用于匹配。
文中有提到关键点的方向,关键点的方向是16*16像素的加权和,
后面计算128维的关键点描述子时,要根据这个方向来旋转,从而获得旋转不变性,前面计算关键点方向时已经计算过每个点的梯度和方向,现在计算描述子,只需要对方向做一个调整,梯度应该是不变的。
发现,现在讲的已经是第5,6节的内容混一起了。
6.1提到A Gaussian weighting function with sigma equal to one half the width of the descriptor window,按照这句话sigma是描述子窗口的宽度的1.5倍。描述子窗口宽度是16,还是4呢?第5节还说sigma是关键点scale的sigma的
1.5倍,这里有冲突吗?
下面就是如何消除光照影响了。
先归一化到单位长度。然后是通过设置大梯度的权值来减少非线性光照变换的影响。
最后匹配时采用nearest descriptor ,难道只要一个描述子?
关于论文中的疑问,还是来看下代码吧。