Matlab:获得凸包的正确方法是什么

时间:2015-10-13 20:27:40

标签: matlab image-processing convex-hull

我有一个3D数据数组,显示一个凹面图。我想找到所有不属于该图的点,但是在凸包内。我该怎么办?

我知道我应该使用convhull函数,但我不确定(输入是一个大小为m by n的数组,其中m是点数并且n是维度的数量,因此在我的情况下为3)。另外,我不确定如何处理此函数的输出 - 它与输入矩阵的大小相同。

我很欣赏任何例子。

1 个答案:

答案 0 :(得分:1)

[K, V] = convhull(YourArray);

K是与凸包上的点对应的点的索引,V只是该凸包所跨越的体积。因此,您可以使用此行索引在YourArray中找回您的点。

使用以下示例:

YourArray= rand(1e3,3);
[K, V] = convhull(YourArray);

K给了我一个140x3 'double',其中包含我的点数和V=0.9291的指数,这是我的凸包所覆盖的音量。只需调用

,即可从YourArray返回凸包上的点
YourArray(K)

Documentation link

不出所料,更多的人一直在努力获取凸包内的点数并实际为此编写代码,请参阅约翰D' Errico的MathWorks Central代码。