如何量化表面法线

如何量化表面法线

本文介绍了如何量化表面法线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将表面法线量化成8个箱子。例如,当计算诸如( 4面)
  • (6面) (8个面孔)

  • (12个面孔)

  • (20个面孔)


  • 将单位球上的法线映射到法线相交的所选多面体的面上。

    • 我建议在多面体表面做一个argmax,将正常面和每个多面体面的点积乘以正常值。提供最高点产品的就是您正常应该装入的面孔。


  • 使用每个多面体面的面法线作为该面孔的标签。

  • 这种方法适用于其他人建议的方法,即映射到球形坐标,然后对其进行装箱。这种方法在球体附近受到太多敏感。

    编辑



    在您添加的论文中对于你的问题,同样的想法正在被使用。然而在那里,法线限制在一个半球 - 在图像中直接可见的唯一曲面的表面法线距离从表面到视点的矢量不超过90度。



    本文想要将这些表面法线量化为8个值,由8位整数表示,其中一位设置为1,其余设置为0. 8个预先计算的法线计算公式为:
    $ b $ n 其中a = pi / 4和t = 0,pi / 4,2 * pi / 4其中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 / (t)+ sin 2(t)] + sin 2(cos)2 cos(t) (a)= cos 2(a)+ sin 2(a)= 1

    I am trying to quantize surface normals into let's say 8 bins.

    For example, when computing features like HOG to quantize 2D gradients [x,y] into 8 bins we just take the angle with the y plane i.e. arctan(y/x) which will give us an angle between 0-360.

    My question is, given a 3D direction [x,y,z], a surface normal in this case, how can we histogram it in a similar way? Do we just project onto one plane and use that angle i.e. the dot product of [x,y,z] and [0,1,0] for example?

    Thanks

    EDIT

    I also read a paper recently where they quantized surface normals by measuring angles between normal and precomputed vectors that which are arranged around a right circular cone shape. I have added a link to this paper in the question (section 3.3.2 last paragraph), is this an effective approach? And if so, how do we compute these vectors?

    解决方案

    Quantizing a continuous topological space corresponds to partitioning it and assigning labels to each partition. The straightforward standard approach for this scenario (quantizing normals) is as follows.

    1. Choose your favorite uniform polyhedron:
    2. Develop a mapping function from a normal on the unit sphere to the face of your chosen polyhedron that the normal intersects.
      • I would advise doing an argmax across polyhedron faces, taking the dot product of your normal and each polyhedron face normal. The one that gives the highest dot product is the face your normal should be binned into.
    3. Use the face normal for each polyhedron face as the label for that face.

    Prefer this approach to the approach suggested by others of mapping to spherical coordinates and then binning those. That approach suffers from too much sensitivity near the poles of the sphere.

    Edit

    In the paper you added to your question, the same idea is being used. There, however, the normals are restricted to a hemisphere - the only surfaces directly visible in an image have surface normals no more than 90 degrees away from the vector from the surface to the viewpoint.

    The paper wants to quantize these surface normals into 8 values, represented by 8-bit integers with exactly one bit set to 1 and the rest set to 0. The 8 precomputed normals are computed as:

    n = cos(a)*cos(t)

    n = cos(a)*sin(t)

    n = sin(a)

    where a = pi/4 and t = 0, pi/4, 2*pi/4, 3*pi/4, ..., 7*pi/4.

    Notice

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

    这篇关于如何量化表面法线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

    08-04 23:18