如何量化表面法线

Aly*_*Aly 2 math 3d geometry quantization computer-vision

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

例如,当计算HOG等特征 以将 2D 梯度量化[x,y]为 8 个容器时,我们只需取与 y 平面的角度,即arctan(y/x)这将为我们提供 0-360 之间的角度。

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

谢谢

编辑

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

Tim*_*lds 5

量化连续拓扑空间对应于对其进行分区并为每个分区分配标签。此场景(量化法线)的简单标准方法如下。

  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