Difference between revisions of "VOL"

From BRL-CAD
(Created VOL guide, but I ran into a crash at the end)
(No difference)

Revision as of 01:35, 4 December 2014

A VOL primitive represents a three-dimensional grid of cells, also referred to as voxels, which are each either solid or empty. It is defined by a three-dimensional array of unsigned char values, where each value represents a cell that is solid if the value lies between the primitive's given upper and lower thresholds, inclusively.

Specific information about the creation of a VOL primitive is available in the list of primitives.

Inserting volume data of a CT scan

Stanford hosts an archive of volume data for testing purposes.

For this example, let's use the first set of data: "CT study of a cadaver head". It contains 113 files of two-dimensional data with a resolution of 256x256. Each file represents one slice, so we'll need to concatenate them into one file to be able to import it into MGED. In addition, the data is in the form of 16-bit unsigned integers, so we'll need to use cv to convert it into unsigned chars.

First, download the archive and extract its contents into a directory, which we'll call scanslices:

$ wget http://graphics.stanford.edu/data/voldata/CThead.tar.gz
$ mkdir scanslices
$ tar -zxvf CThead.tar.gz -C scanslices

Formatting the data

Next, concatenate them into one file, scandata16:

$ cat $(ls -v scanslices/*) > scandata16

Convert scandata16 from 16-bit little-endian unsigned integers to big-endian unsigned chars using cv and write the data to scandata8:

$ cv hu16 nuc scandata16 scandata8

Importing into MGED

The data in scandata8 should now be ready to be imported into MGED.

mged> in
Enter name of solid: scan
Enter solid type: vol
Enter name of file containing voxel data: scandata8
Enter X, Y, Z dimensions of file (number of cells): 256 256 113
Enter lower threshold value: 8 255
Enter X, Y, Z dimensions of a cell: 1 1 1

ERROR: bad pointer 0x1cd74f0: s/b rt_ebm_internal(xf901b231), was rt_vol_internal(x987ba1d0), file /home/jordi/Escriptori/brlcad-7.24.2/src/librt/primitives/vol/vol.c, line 760

Whoops. I must have done something wrong.