import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import nibabel as nib
img = nib.load('ds107_sub001_highres.nii.gz')
data = img.get_data()
data = data[90:-90, 90:-90,10:130]
data.shape
(76, 76, 120)
data_1d = data.ravel()
pct_99 = np.percentile(data, 99)
plt.imshow(data[:, :, 50])
<matplotlib.image.AxesImage at 0x10a5acf50>
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from skimage import measure
verts, faces = measure.marching_cubes(data, pct_99)
fig = plt.figure(figsize=(10, 12))
ax = fig.add_subplot(111, projection='3d')
# Fancy indexing: `verts[faces]` to generate a collection of triangles
mesh = Poly3DCollection(verts[faces], linewidths=0, alpha=0.5)
ax.add_collection3d(mesh)
ax.set_xlim(0, data.shape[0])
ax.set_ylim(0, data.shape[1])
ax.set_zlim(0, data.shape[2])
(0, 120)