[英]geodesic distance on 3d triangular mesh using scikit-fmm or gdist
我正在嘗試評估 TOSCA 數據集上的測地線距離矩陣。 例如下面的 3d 網格-
我試過使用兩個 python 實現。
另一個是gdist包,不幸的是,它適用於他們提供的玩具示例,但不適用於我的網格,它只有 10,000 個面和 5000 個頂點。
使用 gdist 庫時出現以下錯誤:
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) --------CODE SNIPPET---------- c = sio.loadmat('raw_data/TOSCA/cat0.mat') c = c['surface'][0][0] X = c[0] Y = c[1] Z = c[2] TRIV = c[3].astype(np.int32) vertices = np.array(zip(X, Y, Z)).astype(np.float64) vertices = np.reshape(vertices, (vertices.shape[0], 3)) src = np.array([1], dtype=np.int32) trg = np.array([2], dtype=np.int32) np.random.shuffle(TRIV) a = gdist.compute_gdist(vertices,TRIV[:5000], source_indices = src, target_indices = trg)
還有其他解決方案嗎? 我是否以錯誤的方式使用 gdist 或 scikit-fmm?
另一種解決方案是使用帶有 python 接口的MeshLib庫。 通過pip
安裝后:
import meshlib.mrmeshpy as mr
從 TOSCA 數據集中以 OFF 格式加載網格:
mesh = mr.loadMesh("centaur1.off").value()
我在這里找到了這個數據集中的網格: https ://vision.in.tum.de/data/datasets/partial
然后您會對以下兩個功能感興趣。
mr.computeSurfaceDistances(mesh, surfacePoint)
,它返回從給定表面點到網格中由Fast Marching 方法計算的每個頂點的距離。 例如,這里計算的距離通過顏色和等值線可視化:mr.computeGeodesicPath(mesh, surfacePoint1, surfacePoint2)
,計算兩個表面點之間的精確測地線路徑。 計算從 Dijkstra 或 Fast Marching 方法給出的路徑近似開始,然后迭代減少長度直到收斂。 兩點之間的測地線路徑示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.