From Wikipedia, the free encyclopedia
Jump to: navigation, search

Voxel colouring is a computer vision technique for volumetric scene reconstruction from a set of input images taken from a wide range of viewpoints. Steven M. Seitz and Charles R. Dyer first introduced voxel colouring in 1997[1].

As opposed to feature- and contour-based techniques that focus on reconstructing the shapes of the objects in the scene, voxel colouring approaches the problem as that of colour reconstruction. The core idea behind this technique is to find colour invariant voxels that constitute a complete scene with regards to the set of input images.

The ordinal visibility constraint that is a prerequisite for voxel colouring provides an inherent solution for the problem of occlusion in input images. This also makes it possible to implement voxel colouring as a one-pass algorithm.

Main concepts[edit]

Voxel colouring assumes that the scene to be reconstructed is approximately Lambertian.

Ordinal visibility constraint[edit]

In the context of computer vision, the effect of a certain scene point not being visible in a given image, because it is obstructed by another point in the scene, is called occlusion. Most of the scene reconstruction techniques are inefficient in handling significant occlusions in the input images[1].

Voxel colouring technique solves the problem of occlusion by introducing the ordinal visibility constraint, which is defined by Seitz & Dyer as follows:

There exists a norm such that for all scene points and , and input images , occludes in only if [1]

This constraint limits the type of camera configurations that can be used to take input images. In general, the ordinal visibility constraint is satisfied if none of the scene points are contained within the convex hull formed by the camera positions (also called camera volume). In such case, the norm of the ordinal visibility constraint can be specified as the distance from the given scene point to the camera volume.

For instance, a set of inward-facing cameras positioned on a circle and capturing a scene inside that circle would be incompatible with the ordinal visibility constraint, because, in this case the circle comprises the camera volume, which also includes the scene points. However, moving the scene either below or above the camera volume (and rotating the cameras downwards or upwards, respectively) would create the compatible configuration.

The ordinal visibility constraint makes it possible to partition the volume space into the layers of uniform distance from the camera volume. The definition of the constraint ensures that the voxels on each layer can only be occluded by the voxels from the previous layers, which are closer to the camera volume. This property is the key for voxel colouring technique.

Voxel consistency[edit]

For the purposes of voxel colouring, the input image is described as a set of infinitesimally small pixels : . Similarly, the scene that corresponds to the set of input images is described as a set of voxels (three-dimensional analogues of a pixel) : . The colour of a pixel is denoted by and the color information of a voxel is denoted by .

The voxel that is visible (not occluded) in image and is projected to the pixel is given by .

If for every voxel and image pixels and ,


then the set is said to be voxel-consistent with the set of images . In other words, if the set is voxel-consistent, then all image projections of each voxel have the same colour as the voxel itself.

Complete and consistent scenes[edit]

If for every image and every pixel exists voxel such that , then the scene is said to be complete with respect to the set of images .

The scene that is both complete and voxel-consistent with regards to the set of images is said to be consistent with that set of images. If we denote by the set of all voxels from the given scene that are closer to the camera volume than the given voxel , scene consistency can be defined more formally as follows:

Suppose is complete and, for each point is voxel-consistent. Then is a consistent scene.

The inverse statement is also true:

If is a consistent scene then is a voxel-consistent set for every .

Colour invariance[edit]

If for a given voxel and any scenes and that are consistent with the set of images implies that , then is said to be a colour invariant with regards to the set of image .

Let’s introduce the following notation:

for some

i.e. is the voxel, belonging to the scene(s) consistent with the set of input images, that projects to the pixel in the given image and is the closest to the camera volume compared to all the other voxels satisfying the previous criteria.

It is easy to notice that is a colour invariant, since implies that , by definition. As scene consistency requires voxel-consistency, will have the same colour in all of its image projections . Since image projections remain the same independent of the scene , voxel will have the same colour across all consistent scenes it belongs to. This conforms to the definition of the colour invariant.

Finally, if we denote by the set of all , i.e. the closest colour invariants corresponding to each of the pixels we will get a complete scene (contains voxels for each of the pixels in input images) that is consistent with the set of input images (each voxel belongs to at least one consistent scene, i.e. each voxel has the same colour as all of its projections). constitutes the voxel colouring of the input images.

Voxel colouring algorithm[edit]

In general, the voxel colouring algorithm consists of the following three steps:

If is the set of voxels that are located at distance from the camera volume and is the set of all voxels, the idea of partitioning the space can be formalized as follows:

where is an increasing sequence of numbers.
  • Step 2: Find the colour invariant voxels in each layer.

In the simplest case this can be achieved by iterating through all voxels in the layer, projecting them to each of the images to identify their footprint[2][3] (the set of all pixels included in the image projections of a voxel) and performing a voxel consistency test.

The projection here corresponds to "the intersection with the image plane of all rays from the camera center intersecting the voxel" [2].

Without noise or quantization effects, a consistent voxel should project to a set of pixels with equal color values. In the presence of these effects, the correlation of the pixel colors is evaluated to measure the likelihood of voxel consistency[2]. While there are different heuristics for choosing the correlation function, in the simplest case the standard deviation of the pixel colour values in the visible (unoccluded) voxel projections can be used as and thresholded by the maximum allowable error in the colour space (selected heuristically).

  • Step 3: Mark all image pixels corresponding to the detected colour invariant voxel, if they have not been marked previously.

Marking of the pixels is necessary to account for occlusions. All pixels in input images are initially unmarked. We will denote the set of unmarked pixels from the footprint of voxel in image with and if the voxel passes the consistency test, the pixels from will be marked as corresponding to this voxel. If a part of the voxel’s footprint has already been marked, it means that the voxel is occluded in that image by another voxel(s), which has already been tested, because it is closer to the camera volume and therefore belongs to one of the previous layers (this is ensured by the ordinal visibility constraint).

Since occlusions are explicitly accounted for in the partitioning and marking steps, one pass through the voxel layers of increasing depth is enough to obtain the voxel colouring of the input images.

Pseudo-code implementation[edit]

Here is the pseudo-code of the one-pass voxel colouring algorithm by Seitz and Dyer[2]:

                                              //Initialize the reconstruction
for i = 1,...,M do                                  //Iterate through the layers
 for every  do                              //Iterate through voxels in the layer
  for j = 1,...,N do                                //Project the voxel to each image
   compute footprint  of  in 
  end for j
  compute                                         //Evaluate voxel consistency
  if  is not empty and  then
                                     //Color the voxel
                                    //Remember image pixels to mark
  end if
 end for 
 mark pixels in  
end for i

Since all of the voxels are presumed to be transparent at the beginning and are changed to opaque only after passing the consistency test, Dyer compares it to the process of clay modelling.[4]


Seitz & Dyer[1][2] presented the results of applying the voxel colouring technique to the scene reconstruction from both real and synthetic scene images. The famous examples used in the relevant literature are the reconstructions of the dinosaur toy and a rose from 21 input images taken by 360° rotation of each of the objects from the downward facing camera fixed above the object level.

Voxel colouring was shown to be efficient in re-projecting the scene views from the input images, preserving most of the fine features of the scene, as well as in reconstructing scene images from new viewpoints.

See also[edit]


  1. ^ a b c d S. M. Seitz and C. R. Dyer, "Photorealistic Scene Reconstruction by Voxel Coloring", Proc. Computer Vision and Pattern Recognition Conf., pp. 1067-1073, 1997.
  2. ^ a b c d e S. M. Seitz and C. R. Dyer, "Photorealistic Scene Reconstruction by Voxel Coloring", International Journal of Computer Vision, 35(2), pp. 151-173, 1999.
  3. ^ L. Westover, "Footprint evaluation for volume rendering", Proc. SIGGRAPH 90, pp. 367–376, 1990.
  4. ^ C. R. Dyer, "Volumetric scene reconstruction from multiple views" in "Foundations of Image Understanding", L. S. Davis, ed., Kluwer, Boston, pp. 469-489, 2001.

External links[edit]

Category:Image processing