如何确定和提取3D物体的表面点?

时间:2016-04-14 10:43:24

标签: python 3d

我有一个非空心的3D物体,所以有很多3D点。你如何确定这样一个物体的哪些点(特别是表面非常曲线)在表面上?我理解如何提取它们,但我需要一个类似于libraryUNK.surfacePoint的函数......我不知道。

或者更好地理解被认为是表面点的东西,我不知道也不能(还)开发(对我自己)任何正确的定义。

我知道我可以做三角测量来获得表面。但我接下来不知道该做什么,因为我现在将留下一组三角形,其中一些是表面上的,其中一些不是......但是我再也没有定义如何考虑是什么表面和什么不是......

1 个答案:

答案 0 :(得分:0)

在我看来,你想要计算你的3D点云的凸包。

这不是一个简单的问题,但有很多解决方案(和算法)可以做到这一点。其中一个效率被称为“凸壳”。 scipy.spatial中有一个ConvexHull函数。

以下是一个示例的详细信息(2D,但它适用于任何维度)

http://scipy.github.io/devdocs/generated/scipy.spatial.ConvexHull.html

此函数使用QHull库

http://www.qhull.org/

QHull页面上有很多资源。还有一个维基百科页面(同样,这不是计算凸包的唯一方法,你可能想尝试别人):

https://en.wikipedia.org/wiki/Quickhull

编辑:重新阅读问题后,您的音量可能不会凸出。不幸的是,如果不是这样,就没有办法判断一个点是在体积内还是在表面内,而在体积或点云上没有其他信息。