2016-04-08 31 views

答えて

2

それが役に立つことができる場合、私は私の問題を解決しました。 Marching Cubesアルゴリズムは良いですが、2進化された配列ではうまく機能しません。そう: 1)ガウスフィルタは、3Dアレイ(scipy.filters) 2に適用される)マーチングキューブアルゴリズムが(scikit画像ツールを、それをメッシュに) 3)三角形の面積(scikit画像ツール)

1

アプリケーションによっては、3D凸包やマーチングキューブなど、いくつかのオプションがあります。

3D凸包

まず、あなたはすべてのボクセルの3Dの配列を取得する必要がありますあなたの配列が1

に等しい座標後で、scipy.spatial.ConvexHullを使用することができます。 Scipyメソッドは基本的にqhullライブラリのラッパーです。 qhullを使用する場合、出力オプション(FA)の1つは合計面積と体積を計算することです。

あなたがここにいくつかのより多くの情報を見つけることができます:マーチングキューブ

あなたは凹部を保持する必要がある場合 http://scipy.github.io/devdocs/generated/scipy.spatial.ConvexHull.html http://www.qhull.org/html/qconvex.htm

は、その後、前のオプションでは十分ではないだろう。マーチングキューブは良い選択肢になります。 scikit-imageには既にpythonの実装があります。

http://scikit-image.org/docs/dev/auto_examples/plot_marching_cubes.html

あなたは再び以前の場合のようにすべてのポイントを取得する必要があります。あなたは動詞を計算/で直面している:

http://scikit-image.org/docs/dev/api/skimage.measure.html#marching-cubes

そして、あなたがして面積を計算することができます

http://scikit-image.org/docs/dev/api/skimage.measure.html#mesh-surface-area

+0

を総括ありがとう、それはいいね。私は簡単に私が持っている座標の配列を取得することができます1.それは---座標 '= numpy.where(配列== 1)'です。今私はscipy.convexHullを勉強しようとしています。私はすぐに戻ってくるでしょう:-) –

+0

どうしたらいいのか教えてください。 – purpletentacle

+0

それは素晴らしいalghoritmであり、うまくいきます。この問題は、私の石に凹凸があるときに発生します。それはちょうど最短の方法を見つけるので、凹面を切り取ってください! –

関連する問題