Algorithm 如何在“中旋转方向”;快速近似筛选;?

Algorithm 如何在“中旋转方向”;快速近似筛选;?,algorithm,image-processing,histogram,pattern-recognition,sift,Algorithm,Image Processing,Histogram,Pattern Recognition,Sift,论文“快速近似SIFT”(M Grabner,H Grabner,ACCV 2006) 给出了一种改进的利用积分直方图从图像中提取SIFT描述符的方法 它说“对于描述符,我们相对于方向旋转每个子面片的中点,并计算重叠子面片的直方图,而不对齐平方区域,而是相对于主方向移动子面片直方图。” 在本文中,使用积分直方图可以方便地计算关键点周围4*4子面片的直方图。但是,结果直方图不随关键点的方向旋转。传统的SIFT需要子面片中的每个像素按方向旋转,然后计算直方图。但是,本文提出的这种新方法似乎可以在“相

论文“快速近似SIFT”(M Grabner,H Grabner,ACCV 2006) 给出了一种改进的利用积分直方图从图像中提取SIFT描述符的方法

它说“对于描述符,我们相对于方向旋转每个子面片的中点,并计算重叠子面片的直方图,而不对齐平方区域,而是相对于主方向移动子面片直方图。”

在本文中,使用积分直方图可以方便地计算关键点周围4*4子面片的直方图。但是,结果直方图不随关键点的方向旋转。传统的SIFT需要子面片中的每个像素按方向旋转,然后计算直方图。但是,本文提出的这种新方法似乎可以在“相对于主方向移动子面片直方图”得到非旋转直方图后,使旋转我不明白如何“相对于主方向移动子面片直方图”?

我在这里引用:“对于描述符,我们相对于方向旋转每个子面片的中点,并计算重叠子面片的直方图,而不对齐平方区域,而是相对于主方向移动子面片直方图。”


例如,如果一个非旋转子面片直方图有8个从0到2pi的单元,间隔为pi/4,每个单元的值为2,4,5,3,6,8,7,1,关键点的方向为pi/6,如何知道旋转直方图中8个单元的新值?据我所知:它们将方向四舍五入到下一个pi/4间隔。这样,您就可以旋转整个阵列并

24536871


\u4 5 3 6 8 7 1 2
表示旋转面片的直方图。

感谢您的回复。如果关键点的方向为π/4,则答案为ok,2 4 5 3 6 8 7 1变为4 5 3 6 7 1 2。然而,在我的问题中,关键点的方向是π/6,而不是π/4的整数倍,那么我如何旋转阵列呢?你不能正确地旋转。唯一的解决办法是使用插值,但据我所知,这并不是作者们提出的。线性插值(对于Pi/6):newHistogram[i]=1/3*oldchistogram[i]+2/3*oldchistogram[i+1];我以前用matlab做过线性插值,结果直方图与真实直方图不太接近。作者提出的方法是什么?如果关键点的方向为PI/6,他们只需使用原始直方图(2 4 5 3 6 8 7)或方向为PI/4(4 5 3 6 8 7 1 2)的直方图来近似真实直方图?这不是太不精确了吗?如果你把Pi/6四舍五入到最接近的Pi/4,你会得到Pi/4,因为Pi/6更接近Pi/4而不是0。因此,作者可能会使用Pi/4。这是否足够好取决于应用程序。如果您需要更高的分辨率,您可以增加直方图箱的数量,但这是一种折衷。不要忘记,SIFT特征不是精确的科学。您是否尝试过这种“不精确”的解决方案是否适用于您的项目?