2016-05-23 3 views
2

Я пытаюсь представить 3D-массив через Mayavi в Python. Я просто хочу создать структурированную трехмерную воксельную сетку, в которой я могу показать некоторые заранее заданные точки заполнения воксела. Я не думаю, что хочуБазовая 3D-сетка вокселей в Mayavi

Единственный пример, который я могу найти, что я считаю относительно актуальным, - this MRI example. Я могу использовать следующий код, чтобы получить несколько работоспособный пример:

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() 

Это может генерировать следующие изображения: enter image description here enter image description here Как вы можете видеть, не все стороны коробок генерируются, даже если эти точки имеют то же значение, что и стороны создаваемых ящиков.

Есть ли способ визуализировать каждую точку в массиве numpy со значением, равным 1? Я в порядке, если нет визуализации изоповерхности - на самом деле, я бы предпочел некоторую визуальную визуальную визуализацию Minecraft-esque.

ответ

5

Hi

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

Смежные вопросы