ConvexHull在matlab和python中的命令不同

时间:2015-11-09 17:58:21

标签: python matlab convex-hull

我遇到了这个问题:我需要在我的Python代码中使用ConvexHull函数,我需要它与MATLAB中ConvHulln的工作方式完全相同,但它们会给出不同的结果。这是一个示例(我正在使用scipy.spatial.ConvexHull,但我已尝试使用cv2.convexHull和Python ConvexHull,但他们没有给出正确的结果。

使用的MATLAB命令是:k = convhulln([r, c]);,Python命令使用k = ConvexHull(rc,qhull_options='Qt').simplices

获得的结果不同:

MATLAB:

k= 
[[104 1] [1 8] [8 17] [17 103] [103 125] [125 136] [136 162] [162 166] [166 167] [167 163] [163 104]]

的Python:

k=[[ 16 102][103   0][  7   0][  7  16][162 166][162 103][124 102][124 135][161 135][165 166][165 161]]

结果是正确的(在Python中,索引是MATLAB-1),但顺序是不同的。有人有解决方案吗?我需要Python的顺序与MATLAB的顺序相同。

1 个答案:

答案 0 :(得分:0)

在3D Convexhull中遇到类似的问题。 我的走动是根据指标排序的 此外,Matlab凸包的方向始终一致,但是python并非如此。因此,您还应检查每个面的法线是否与凸面hull.euqations [:,[1,2,3]]一致,重新排列索引顺序,以便每个面的法线都一致,那么我们将拥有完全相同的面订单。

对于2d,我认为差异是起点。我相信Matlab总是从最小索引开始。