A method of processing three-dimensional image data for volume-rendering from a viewpoint is described. Lower- and upper-bound-generating functions are used (7) to determine whether, across all possible values for the image voxels between respective lower and upper bounds, for each voxel (i) the voxel may be at least partially opaque under the opacity transfer function (8) and (ii) the voxel may be unoccluded from the viewpoint (9). A predetermined processing operation is then applied to these potentially-visible voxels, for which both determinations hold true (10) and the processed voxels may be rendered (11). The bound-generating functions and the processing operation are such that, for any three-dimensional image data, the value of a voxel after the processing operation will necessarily lie between the lower and upper bounds for that voxel.