volume¶
Submodule extending the vtkVolume
object functionality.
Volume¶

class
vtkplotter.volume.
Volume
(inputobj=None, c=('b', 'lb', 'lg', 'y', 'r'), alpha=(0.0, 0.0, 0.2, 0.4, 0.8, 1), alphaGradient=None, mode=0, origin=None, spacing=None, shape=None, mapperType='smart')[source]¶ Bases:
vtkRenderingCorePython.vtkVolume
,vtkplotter.base.ActorBase
Derived class of
vtkVolume
. Can be initialized with a numpy object, avtkImageData
or a list of 2D bmp files.See e.g.: numpy2volume.py
 Parameters
c (float, list) – sets colors along the scalar range, or a matplotlib color map name
alphas – sets transparencies along the scalar range
origin (list) – set volume origin coordinates
spacing (list) – voxel dimensions in x, y and z.
shape (list) – specify the shape.
mapperType (str) – either ‘gpu’, ‘opengl_gpu’, ‘fixed’ or ‘smart’
mode (int) –
define the volumetric rendering style:
0, Composite rendering
1, maximum projection rendering
2, minimum projection
3, average projection
4, additive mode
Hint
if a list of values is used for alphas this is interpreted as a transfer function along the range of the scalar.

alpha
(alpha)[source]¶ Assign a set of tranparencies to a volume along the range of the scalar value. A single constant value can also be assigned.
E.g.: say alpha=(0.0, 0.3, 0.9, 1) and the scalar range goes from 10 to 150. Then all voxels with a value close to 10 will be completely transparent, voxels at 1/4 of the range will get an alpha equal to 0.3 and voxels with value close to 150 will be completely opaque.

alphaGradient
(alphaGrad)[source]¶ Assign a set of tranparencies to a volume’s gradient along the range of the scalar value. A single constant value can also be assigned. The gradient function is used to decrease the opacity in the “flat” regions of the volume while maintaining the opacity at the boundaries between material types. The gradient is measured as the amount by which the intensity changes over unit distance.

append
(volumes, axis='z', preserveExtents=False)[source]¶ Take the components from multiple inputs and merges them into one output. Except for the append axis, all inputs must have the same extent. All inputs must have the same number of scalar components. The output has the same origin and spacing as the first input. The origin and spacing of all other inputs are ignored. All inputs must have the same scalar type.
 Parameters
preserveExtents (bool) – if True, the extent of the inputs is used to place the image in the output. The whole extent of the output is the union of the input whole extents. Any portion of the output not covered by the inputs is set to zero. The origin and spacing is taken from the first input.
from vtkplotter import load, datadir vol = load(datadir+'embryo.tif') vol.append(vol, axis='x').show()

center
(center=None)[source]¶ Set/get the volume coordinates of its center. Position is reset to (0,0,0).

color
(col)[source]¶ Assign a color or a set of colors to a volume along the range of the scalar value. A single constant color can also be assigned. Any matplotlib color map name is also accepted, e.g.
volume.color('jet')
.E.g.: say that your voxel scalar runs from 3 to 6, and you want 3 to show red and 1.5 violet and 6 green, then just set:
volume.color(['red', 'violet', 'green'])

correlationWith
(vol2, dim=2)[source]¶ Find the correlation between two volumetric data sets. Keyword dim determines whether the correlation will be 3D, 2D or 1D. The default is a 2D Correlation. The output size will match the size of the first input. The second input is considered the correlation kernel.

crop
(top=None, bottom=None, right=None, left=None, front=None, back=None, VOI=())[source]¶ Crop a
Volume
object. Parameters
top (float) – fraction to crop from the top plane (positive z)
bottom (float) – fraction to crop from the bottom plane (negative z)
front (float) – fraction to crop from the front plane (positive y)
back (float) – fraction to crop from the back plane (negative y)
right (float) – fraction to crop from the right plane (positive x)
left (float) – fraction to crop from the left plane (negative x)
VOI (list) –
extract Volume Of Interest expressed in voxel numbers
Eg.: vol.crop(VOI=(xmin, xmax, ymin, ymax, zmin, zmax)) # all integers nrs

cutWithPlane
(origin=(0, 0, 0), normal=(1, 0, 0))[source]¶ Cuts
Volume
with the plane defined by a point and a normal creating a tetrahedral mesh object. Makes sense only if the plane is not along any of the cartesian planes, otherwise usecrop()
which is way faster. Parameters
origin – the cutting plane goes through this point
normal – normal of the cutting plane

dilate
(neighbours=(2, 2, 2))[source]¶ Replace a voxel with the maximum over an ellipsoidal neighborhood of voxels. If neighbours of an axis is 1, no processing is done on that axis.
See example script: erode_dilate.py

erode
(neighbours=(2, 2, 2))[source]¶ Replace a voxel with the minimum over an ellipsoidal neighborhood of voxels. If neighbours of an axis is 1, no processing is done on that axis.
See example script: erode_dilate.py

euclideanDistance
(anisotropy=False, maxDistance=None)[source]¶ Implementation of the Euclidean DT (Distance Transform) using Saito’s algorithm. The distance map produced contains the square of the Euclidean distance values. The algorithm has a O(n^(D+1)) complexity over nxnx…xn images in D dimensions.
Check out also: https://en.wikipedia.org/wiki/Distance_transform
 Parameters
See example script: euclDist.py

frequencyPassFilter
(lowcutoff=None, highcutoff=None, order=1)[source]¶ Lowpass and highpass filtering become trivial in the frequency domain. A portion of the pixels/voxels are simply masked or attenuated. This function applies a high pass Butterworth filter that attenuates the frequency domain image with the function
The gradual attenuation of the filter is important. A simple highpass filter would simply mask a set of pixels in the frequency domain, but the abrupt transition would cause a ringing effect in the spatial domain.
 Parameters
Check out also this example:

gaussianSmooth
(sigma=(2, 2, 2), radius=None)[source]¶ Performs a convolution of the input Volume with a gaussian.

getDataArray
()[source]¶ Get readwrite access to voxels of a Volume object as a numpy array.
When you set values in the output image, you don’t want numpy to reallocate the array but instead set values in the existing array, so use the [:] operator. Example: arr[:] = arr*2 + 15
If the array is modified call:
volume.imagedata().GetPointData().GetScalars().Modified()
when all your modifications are completed.

isosurface
(threshold=True, connectivity=False)[source]¶ Return an
Mesh
isosurface extracted from theVolume
object. Parameters

jittering
(status=None)[source]¶ If jittering is True, each ray traversal direction will be perturbed slightly using a noisetexture to get rid of woodgrain effects.

legosurface
(vmin=None, vmax=None, invert=False, cmap='afmhot_r')[source]¶ Represent a
Volume
as lego blocks (voxels). By default colors correspond to the volume’s scalar. Returns anMesh
. Parameters

medianSmooth
(neighbours=(2, 2, 2))[source]¶ Median filter that replaces each pixel with the median value from a rectangular neighborhood around that pixel.

mirror
(axis='x')[source]¶ Mirror flip along one of the cartesian axes.
Note
axis='n'
, will flip only mesh normals.

mode
(mode=None)[source]¶ Define the volumetric rendering style.
0, Composite rendering
1, maximum projection rendering
2, minimum projection
3, average projection
4, additive mode

operation
(operation, volume2=None)[source]¶ Perform operations with
Volume
objects.volume2 can be a constant value.
Possible operations are:
+
,
,/
,1/x
,sin
,cos
,exp
,log
,abs
,**2
,sqrt
,min
,max
,atan
,atan2
,median
,mag
,dot
,gradient
,divergence
,laplacian
.

permuteAxes
(x, y, z)[source]¶ Reorder the axes of the Volume by specifying the input axes which are supposed to become the new X, Y, and Z.

resample
(newSpacing, interpolation=1)[source]¶ Resamples a
Volume
to be larger or smaller.This method modifies the spacing of the input. Linear interpolation is used to resample the data.

threshold
(vmin=None, vmax=None, replaceWith=0)[source]¶ Binary or continuous volume thresholding. Find the voxels that contain the value below/above or inbetween [vmin, vmax] and replaces it with the provided value (default is 0).

toPoints
()[source]¶ Extract all image voxels as points. This function takes an input
Volume
and creates anMesh
that contains the points and the point attributes.See example script: vol2points.py