2016-05-23 13 views
2

私はPythonでMayaviを通して3D配列を視覚化しようとしています。私は、構造化された3Dボクセルグリッドを作成して、あらかじめ指定されたボクセル空間充填点を表示できるようにしたいだけです。私が望むとは思わないMayaviの基本的な3Dボクセルグリッド

私が比較的関連性が高いと思う唯一の例はthis MRI exampleです。にもかかわらず、あなたはボックスのすべての側面が生成され、ない見ることができるように enter image description here enter image description here :これは、以下の画像を生成することができる

import numpy as np 
from mayavi import mlab 

data = (100, 100, 100) 
data = np.zeros(data) 
data[0:50, 50:70, 0:50] = 1 
data[0:50, 0:20, 0:50] = 1 

src = mlab.pipeline.scalar_field(data) 
outer = mlab.pipeline.iso_surface(src) 

mlab.show() 

:私はやや実用例を取得するには、次のコードを使用することができますこれらの点は、生成されるボックスの辺と同じ値を持ちます。

numpy配列の値が1に等しいすべての単一点を視覚化する方法はありますか?等表面の視覚化がない場合、私はうまくいきます - 実際、私は、Minecraft-esque blockyボクセルの視覚化を好むでしょう。答えを

答えて

5

こんにちは

import mayavi.mlab 
import numpy 

data = (100, 100, 100) 
data = numpy.zeros(data) 
data[0:50, 50:70, 0:50] = 1 
data[0:50, 0:20, 0:50] = 1 

xx, yy, zz = numpy.where(data == 1) 

mayavi.mlab.points3d(xx, yy, zz, 
        mode="cube", 
        color=(0, 1, 0), 
        scale_factor=1) 

mayavi.mlab.show() 

enter image description here

+0

感謝。ボクセルを個別に色付けする方法はありますか? – scicalculator

+0

私が知る限り、カスタムカラーマップを使用することができます。あるいは、各ボクセルグループを異なる色で繰り​​返しプロットすることもできます。 – Geodor

+0

いいですが、やりとりが非常に遅いです。 – martinako

関連する問題