FME Form: 2024.2
Voxel Grid
A voxel grid geometry is a 3D grid of values organized into layers of rows and columns. Each row, column, and layer intersection in the grid is called a voxel or small 3D cube.
Voxel grids can be thought of as either a raster with multiple spatially stacked bands of the same row and column dimensions or as a regularly spaced point cloud where each point is a voxel.
Voxel grids may represent spatially stacked images or 3D data. Images are commonly from 3D scanners that produce data in multiple layers such as medical MRIs or general CT scanners.
Voxel grid data is stored in one or more bands (also known as channels or layers). A band stores a single value at each cell.
Voxel Grid Properties
Voxel Grid properties describe the voxel grid as a whole. These properties include:
- Name
- Number of rows, columns, and layers
- Number of voxels
- Extents
- Transformation Matrix
Voxel size is a constant distance in the x, y, and z dimensions between each voxel in the voxel grid and must be the same for all dimensions resulting in a small voxel cube.
The voxel origin is the center of the voxel and is the only currently supported voxel origin in FME.
Affine transformations are possible on the voxel grid and are captured in the transformation matrix.
Voxel Grid Components
Associated with each voxel are properties called components, which contain a value that describes the voxel. Components are similar to attributes, but at the voxel level instead of at the feature level and are parallel to components on points in a point cloud geometry. Note that all voxels in a voxel grid have the same schema (that is, the same set of components), but each voxel may have a different value for each component.
Voxel grid component properties describe one component on a voxel grid. These properties include:
- Name
- Type
- Nodata value
All components have a name and type, and may optionally have a NoData value. Possible component types are Real64, Real32, UInt64, UInt32, UInt16, UInt8, Int64, Int32, Int16, and Int8.
Some components may designate a special "Nodata" value. Voxels whose value is equal to the Nodata value are considered to be unknown or invalid data. Note that a second option for identifying unknown or invalid data is an alpha component that acts as a flag for each voxel, indicating whether the data is valid or not. Not all voxel grid formats support Nodata.
While components may have any name, there are a few common components that commonly exist to represent concepts like intensity or color. These components are described in the following table.
Note: This list is not exhaustive. A voxel grid may have any number of components not listed here and arbitrarily named components.
Component Name | Description |
---|---|
intensity | The magnitude of the intensity of the voxel. |
color_red | The red channel component value at the voxel. |
color_green | The green channel component value at the voxel. |
color_blue | The blue channel component value at the voxel. |
color_alpha | The alpha channel component value at the voxel. This component value represents the transparency of the voxel. |
Note that a voxel grid without any components is possible but considered uninteresting. Voxel grids are a spatial grid of voxels and generally have at least one component value at each voxel, even if the value is Nodata, indicating the voxel lacks a valid value for a component and may not be visible when rendered if no intensity or color components have valid values.
Voxel grids may also store a 4x4 Transformation Matrix, which is applied to the voxels.
Voxel Grid Attributes
fme_geometry = fme_polygon
fme_type = fme_voxel_grid