2

我正在尝试将表面法线量化为 8 个 bin。

例如,当计算像HOG这样的特征 以将 2D 梯度量化[x,y]为 8 个 bin 时,我们只取与 y 平面的角度,即arctan(y/x)这将给我们一个介于 0-360 之间的角度。

我的问题是,给定 3D 方向[x,y,z],在这种情况下为表面法线,我们如何以类似的方式对其进行直方图?我们是否只是投影到一个平面上并使用该角度,例如[x,y,z]和的点积?[0,1,0]

谢谢

编辑

我最近还阅读了一篇论文,其中他们通过测量法线和预先计算的向量之间的角度来量化表面法线,这些向量围绕正圆锥形状排列。我在问题中添加了本文的链接(第 3.3.2 节最后一段),这是一种有效的方法吗?如果是这样,我们如何计算这些向量?

4

3 回答 3

4

量化连续拓扑空间对应于对其进行分区并为每个分区分配标签。这种情况的直接标准方法(量化法线)如下。

  1. 选择你最喜欢的均匀多面体:
  2. 开发一个从单位球面上的法线到法线相交的所选多面体面的映射函数。
    • 我建议在多面体面上做一个 argmax,取法线和每个多面体面法线的点积。给出最高点积的那个是你的法线应该被分箱的脸。
  3. 使用每个多面体面的法线作为该面的标签。

更喜欢这种方法,而不是其他人建议的映射到球坐标然后对它们进行分箱的方法。这种方法在球体两极附近的灵敏度过高。

编辑

在您添加到问题中的论文中,使用了相同的想法。然而,在那里,法线仅限于半球——图像中唯一直接可见的表面的表面法线与从表面到视点的矢量的距离不超过 90 度。

本文希望将这些表面法线量化为 8 个值,用 8 位整数表示,其中一位设置为 1,其余设置为 0。8 个预先计算的法线计算如下:

n t x = cos(a)*cos(t)

n t y = cos(a)*sin(t)

n t z = sin(a)

其中 a = pi/4 和 t = 0, pi/4, 2*pi/4, 3*pi/4, ..., 7*pi/4。

注意

[cos(a)*cos(t)] 2 + [cos(a)*sin(t)] 2 + [sin(a)] 2 = cos 2 (a)[cos 2 (t) + sin 2 (t )] + sin 2 (a) = cos 2 (a) + sin 2 (a) = 1

于 2013-08-19T17:42:08.147 回答
1

给定一个 3D 方向 [x,y,z],在这种情况下是一个表面法线,我们如何以类似的方式对其进行直方图呢?

在第一种情况下,您量化theta了梯度的极性方向。现在您需要在二维直方图中量化球面theta方向。phi

我们只是投影到一个平面上并使用那个角度吗

球体的分箱决定了您如何汇总信息以构建紧凑但描述性的直方图。

投影法线不是一个好主意,如果theta比 更重要phi,只需使用更多的 bintheta

编辑

Timothy Shields 在他的评论和他的回答中指出,定期分箱theta并且phi不会在球体上产生定期分箱,因为这些箱将朝着两极聚集。

他的回答给出了解决方案。或者,这里描述的非常规分箱可以被破解如下:

Phi在 中定期量化[0,pi]。因为theta不是[0,pi]对 range 进行量化,而是对 range[-1,1]进行量化;

对于 中的每个量化值u,计算为[-1,1]theta

theta = arcsin(sqrt(1 - u * u)) * sign(u)

sign(u)-1如果u为负,则返回,1否则。

计算theta以及phi在球体上产生规则量化。

要了解上面给出的等式,请查看这篇文章。它描述了随机抽样背景下的情况。

编辑

在上面的 hack 中,Timothy Shields 指出只考虑了垃圾箱的面积。由于极点奇点,顶点的化合价(相邻箱的交点)将不规则。

前一个 hack 的一个技巧是将 bin 重新划分为规则的四边形网格并保留规则区域。

可以从Integer-Grid Maps Quad Meshing中获得启发,以优化具有相同化合价和面积的全局约束的这个问题。

有了这两个技巧,与 Timothy Shields 的答案相比,这个答案太老套了,而且有点断章取义。

于 2013-08-19T17:42:12.150 回答
0

3 维法线不能像 2 维法线那样容易地量化为 1 维数组(例如,使用 arctan)。我建议将其直方图化为具有极角和方位角的二维空间。例如,使用r(半径)值始终为 1.0 的球坐标(因为您的表面法线已标准化,长度为 1.0)。在这种情况下,您可以丢弃 r 值,只使用极角 θ (theta) 和方位角 φ (phi) 来量化 3D 法线。

于 2013-08-19T17:38:25.013 回答