2d 图像点和 3d 网格之间的交点

2024-05-16

Given:网格,源相机 - 我有内在和外在参数,图像坐标 2d

Output:3D 点,是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点。 (我试图找到网格上的 3d 点)

This is the process: enter image description here

From Multiple View Geometry in Computer Vision book: enter image description here

我已经构建了方程(6.14).

我不知道如何继续并获取位于网格上的 3d 点(我还需要距离相机最近的点)。

我认为可以通过以下方式完成:

迭代所有顶点并找到顶点和线之间的距离以及距离最小的顶点位于线上(如果它们接近于零或零),并且找到最近的顶点我猜就是找到大小相机中心和壁橱顶点之间的最小点是否意味着该点最近?

快速更新:这个仓库似乎确实适用于光线:github.com/szabolcsdombi/python-mesh-raycast http://github.com/szabolcsdombi/python-mesh-raycast

我想现在的错误在于理解要点D right..


As 烧烤店员 https://stackoverflow.com/users/5707440/grillteller评论中指出,这是 3d 网格的光线相交问题。据我所知,人类还不知道一种快速的方法来确定任意网格的交集。在您的问题背景下,您应该光线追踪 https://en.wikipedia.org/wiki/Ray_tracing_(graphics),这也被指出烧烤店员,然而,这存在严重的性能问题,尽管它提供了很多着色的可能性。 为了找到光线和网格的交点,光线追踪算法通常使用不同的加速结构。通常,此类结构是由树划分的空间:

  • KD-tree用于光线追踪https://graphics.stanford.edu/papers/gpu_kdtree/kdtree.pdf https://graphics.stanford.edu/papers/gpu_kdtree/kdtree.pdf
  • BSP-tree用于光线追踪https://www.sci.utah.edu/publications/ize08/BSP_RT08.pdf https://www.sci.utah.edu/publications/ize08/BSP_RT08.pdf
  • Octree用于光线追踪https://www.researchgate.net/publication/3410767_Octree-R_An_Adaptive_Octree_for_Efficient_Ray_Tracing https://www.researchgate.net/publication/3410767_Octree-R_An_Adaptive_Octree_for_Efficient_Ray_Tracing

This 推介会 https://www.cs.utexas.edu/%7Etheshark/courses/cs354/lectures/cs354-8.pdf很好地解释了其中一些方法和其他方法。

P.S .:如果您只需要简单的可视化,那么最好反转问题:对于每个网格元素,执行光栅化 https://en.wikipedia.org/wiki/Rasterisation.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2d 图像点和 3d 网格之间的交点 的相关文章