【问题标题】:How to rotate orientation in "Fast Approximated SIFT"?如何在“快速近似 SIFT”中旋转方向?
【发布时间】:2012-03-11 08:45:34
【问题描述】:

论文“Fast Approximated SIFT”(M Grabner, H Grabner, ACCV 2006) http://www.icg.tu-graz.ac.at/publications/pubobjects/mgrabner06FastApproxSIFT 展示了一种使用积分直方图从图像中提取 SIFT 描述符的改进方法。

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

在本文中,使用积分直方图可以轻松计算关键点周围 4*4 子块的直方图。但是,结果直方图不会随着关键点的方向旋转。传统的SIFT需要子块中的每个像素都随着方向旋转,然后计算直方图。但似乎论文中的这种新方法可以通过“将子补丁直方图相对于主方向移动”,使旋转得到非旋转直方图之后。 我不明白如何“相对于主方向移动子补丁直方图”?

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

例如,如果一个非旋转子补丁直方图有 8 个 bin,从 0 到 2pi,间隔 pi/4,每个 bin 的值是 2,4,5,3,6,8,7,1 ,关键点的方向是pi/6,如何知道旋转直方图中8个bin的新值?

【问题讨论】:

    标签: algorithm image-processing histogram pattern-recognition sift


    【解决方案1】:

    据我了解:它们将方向四舍五入到下一个 Pi/4 间隔。这样你就可以旋转整个数组和

    2 4 5 3 6 8 7 1 变为

    _ 4 5 3 6 8 7 1 2,表示旋转后的patch的直方图。

    【讨论】:

    • 感谢您的回复。如果关键点的方向是 Pi/4,你的答案是可以的,并且 2 4 5 3 6 8 7 1 变成 _ 4 5 3 6 8 7 1 2。但是,在我的问题中,关键点的方向是 Pi/ 6,不是 Pi/4 的整数倍,那我怎么能旋转数组呢?
    • 你不能正常。唯一的解决方法是使用插值,但据我了解,这不是他们的作者所主张的。线性插值将是(对于 Pi/6): newHistogram[i] = 1/3*oldHistogram[i] + 2/3*oldHistogram[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 特征不是精确的科学。您是否尝试过这种“不精确”的解决方案是否适用于您的项目?
    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多