二维图像点与三维网格的交点

Intersection between 2d image point and 3d mesh(二维图像点与三维网格的交点)

本文介绍了二维图像点与三维网格的交点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定:网格,源Camera-I具有内部和外部参数,图像坐标2D

输出:3D点,即光线从摄像头中心到图像平面上的2D点和网格的交点。(我正在尝试查找网格上的3D点)

这是流程

摘自《计算机视觉中的多视图几何》一书:

我已构造等式(6.14)

我不确定如何继续获取位于网格上的3D点(我还需要靠近相机的点)。

我认为可以这样做:

遍历所有顶点,找出顶点到直线的距离,距离最小的顶点位于直线上(如果它们接近零或零),我猜找到最接近的顶点就是找到相机中心和最接近的顶点之间的大小,最小的一个意味着该点是最近的?

快速更新:此回购似乎确实适用于射线:github.com/szabolcsdombi/python-mesh-raycast

我想现在的错误在于正确理解了D..

推荐答案

如Grillteller在评论中指出的,这是3D网格的光线相交问题。据我所知,人类还不知道如何快速确定任意网格的交点。在您的问题上下文中,您应该Ray TracingGrilleller也指出了这一点,但是这有严重的性能问题,尽管它提供了许多阴影可能性。 为了找到光线和网格的交点,光线跟踪算法通常使用不同的加速结构。通常,这样的结构是由树划分的空间:

  • KD树光线跟踪https://graphics.stanford.edu/papers/gpu_kdtree/kdtree.pdf
  • 用于光线跟踪的BSP-treehttps://www.sci.utah.edu/publications/ize08/BSP_RT08.pdf
  • 八叉树光线跟踪https://www.researchgate.net/publication/3410767_Octree-R_An_Adaptive_Octree_for_Efficient_Ray_Tracing

这篇presentation很好地解释了其中的一些方法。

附注:如果您只需要简单的可视化,那么最好是反转问题:对于每个网格元素,执行rasterisation。

这篇关于二维图像点与三维网格的交点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:二维图像点与三维网格的交点